summaryrefslogtreecommitdiff
path: root/rt/share/html
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/html')
-rw-r--r--rt/share/html/Admin/Articles/Classes/CustomFields.html64
-rw-r--r--rt/share/html/Admin/Articles/Classes/GroupRights.html73
-rw-r--r--rt/share/html/Admin/Articles/Classes/Modify.html199
-rw-r--r--rt/share/html/Admin/Articles/Classes/Objects.html154
-rw-r--r--[-rwxr-xr-x]rt/share/html/Admin/Articles/Classes/Topics.html (renamed from rt/share/html/User/Groups/index.html)29
-rw-r--r--[-rwxr-xr-x]rt/share/html/Admin/Articles/Classes/UserRights.html (renamed from rt/share/html/Admin/Elements/ToolTabs)44
-rw-r--r--[-rwxr-xr-x]rt/share/html/Admin/Articles/Classes/index.html (renamed from rt/share/html/User/Elements/GroupTabs)65
-rw-r--r--rt/share/html/Admin/Articles/Elements/Topics215
-rw-r--r--rt/share/html/Admin/Articles/index.html50
-rw-r--r--rt/share/html/Admin/CustomFields/GroupRights.html58
-rw-r--r--rt/share/html/Admin/CustomFields/Modify.html115
-rw-r--r--rt/share/html/Admin/CustomFields/Objects.html13
-rw-r--r--rt/share/html/Admin/CustomFields/UserRights.html54
-rw-r--r--rt/share/html/Admin/CustomFields/index.html11
-rwxr-xr-xrt/share/html/Admin/Elements/AddCustomFieldValue10
-rw-r--r--rt/share/html/Admin/Elements/ConfigureMyRT2
-rwxr-xr-xrt/share/html/Admin/Elements/CreateUserCalled2
-rw-r--r--rt/share/html/Admin/Elements/CustomFieldTabs121
-rwxr-xr-xrt/share/html/Admin/Elements/EditCustomField2
-rwxr-xr-xrt/share/html/Admin/Elements/EditCustomFieldValues11
-rw-r--r--rt/share/html/Admin/Elements/EditCustomFieldValuesSource2
-rwxr-xr-xrt/share/html/Admin/Elements/EditCustomFields5
-rw-r--r--rt/share/html/Admin/Elements/EditQueueWatcherGroup56
-rwxr-xr-xrt/share/html/Admin/Elements/EditQueueWatchers2
-rw-r--r--rt/share/html/Admin/Elements/EditRights175
-rw-r--r--rt/share/html/Admin/Elements/EditRightsCategoryTabs129
-rwxr-xr-xrt/share/html/Admin/Elements/EditScrip29
-rwxr-xr-xrt/share/html/Admin/Elements/EditScrips10
-rwxr-xr-xrt/share/html/Admin/Elements/EditTemplates2
-rwxr-xr-xrt/share/html/Admin/Elements/EditUserComments2
-rwxr-xr-xrt/share/html/Admin/Elements/GroupTabs102
-rwxr-xr-xrt/share/html/Admin/Elements/Header2
-rwxr-xr-xrt/share/html/Admin/Elements/ListGlobalCustomFields4
-rwxr-xr-xrt/share/html/Admin/Elements/ListGlobalScrips7
-rwxr-xr-xrt/share/html/Admin/Elements/ModifyTemplate41
-rw-r--r--rt/share/html/Admin/Elements/ObjectCustomFields111
-rw-r--r--rt/share/html/Admin/Elements/PickCustomFields2
-rw-r--r--rt/share/html/Admin/Elements/PickObjects2
-rw-r--r--[-rwxr-xr-x]rt/share/html/Admin/Elements/Portal (renamed from rt/share/html/Approvals/Elements/Tabs)18
-rwxr-xr-xrt/share/html/Admin/Elements/QueueRightsForUser4
-rwxr-xr-xrt/share/html/Admin/Elements/QueueTabs123
-rw-r--r--rt/share/html/Admin/Elements/SelectCustomField2
-rw-r--r--rt/share/html/Admin/Elements/SelectCustomFieldLookupType2
-rw-r--r--rt/share/html/Admin/Elements/SelectCustomFieldRenderType70
-rwxr-xr-xrt/share/html/Admin/Elements/SelectCustomFieldType4
-rwxr-xr-xrt/share/html/Admin/Elements/SelectGroups4
-rwxr-xr-xrt/share/html/Admin/Elements/SelectModifyGroup4
-rwxr-xr-xrt/share/html/Admin/Elements/SelectModifyQueue4
-rwxr-xr-xrt/share/html/Admin/Elements/SelectModifyUser6
-rwxr-xr-xrt/share/html/Admin/Elements/SelectNewGroupMembers79
-rwxr-xr-xrt/share/html/Admin/Elements/SelectRights17
-rwxr-xr-xrt/share/html/Admin/Elements/SelectScrip2
-rwxr-xr-xrt/share/html/Admin/Elements/SelectScripAction15
-rwxr-xr-xrt/share/html/Admin/Elements/SelectScripCondition16
-rwxr-xr-xrt/share/html/Admin/Elements/SelectSingleOrMultiple2
-rw-r--r--rt/share/html/Admin/Elements/SelectStage2
-rwxr-xr-xrt/share/html/Admin/Elements/SelectTemplate20
-rwxr-xr-xrt/share/html/Admin/Elements/SelectUsers8
-rw-r--r--rt/share/html/Admin/Elements/ShowKeyInfo3
-rwxr-xr-xrt/share/html/Admin/Elements/SystemTabs99
-rwxr-xr-xrt/share/html/Admin/Elements/UserTabs116
-rw-r--r--rt/share/html/Admin/Global/CustomFields/Class-Article.html54
-rw-r--r--rt/share/html/Admin/Global/CustomFields/Groups.html7
-rwxr-xr-xrt/share/html/Admin/Global/CustomFields/Queue-Tickets.html7
-rwxr-xr-xrt/share/html/Admin/Global/CustomFields/Queue-Transactions.html7
-rw-r--r--rt/share/html/Admin/Global/CustomFields/Queues.html7
-rw-r--r--rt/share/html/Admin/Global/CustomFields/Users.html7
-rw-r--r--rt/share/html/Admin/Global/CustomFields/index.html9
-rwxr-xr-xrt/share/html/Admin/Global/GroupRights.html80
-rw-r--r--rt/share/html/Admin/Global/MyRT.html7
-rwxr-xr-xrt/share/html/Admin/Global/Scrip.html29
-rwxr-xr-xrt/share/html/Admin/Global/Scrips.html23
-rwxr-xr-xrt/share/html/Admin/Global/Template.html50
-rwxr-xr-xrt/share/html/Admin/Global/Templates.html23
-rw-r--r--rt/share/html/Admin/Global/Topics.html63
-rwxr-xr-xrt/share/html/Admin/Global/UserRights.html54
-rwxr-xr-xrt/share/html/Admin/Global/index.html42
-rwxr-xr-xrt/share/html/Admin/Groups/GroupRights.html62
-rw-r--r--rt/share/html/Admin/Groups/History.html11
-rwxr-xr-xrt/share/html/Admin/Groups/Members.html42
-rwxr-xr-xrt/share/html/Admin/Groups/Modify.html72
-rwxr-xr-xrt/share/html/Admin/Groups/UserRights.html56
-rwxr-xr-xrt/share/html/Admin/Groups/index.html53
-rwxr-xr-xrt/share/html/Admin/Queues/CustomField.html21
-rwxr-xr-xrt/share/html/Admin/Queues/CustomFields.html11
-rwxr-xr-xrt/share/html/Admin/Queues/GroupRights.html88
-rw-r--r--rt/share/html/Admin/Queues/History.html11
-rwxr-xr-xrt/share/html/Admin/Queues/Modify.html79
-rwxr-xr-xrt/share/html/Admin/Queues/People.html108
-rwxr-xr-xrt/share/html/Admin/Queues/Scrip.html28
-rwxr-xr-xrt/share/html/Admin/Queues/Scrips.html21
-rwxr-xr-xrt/share/html/Admin/Queues/Template.html98
-rwxr-xr-xrt/share/html/Admin/Queues/Templates.html26
-rwxr-xr-xrt/share/html/Admin/Queues/UserRights.html58
-rwxr-xr-xrt/share/html/Admin/Queues/index.html10
-rw-r--r--rt/share/html/Admin/Tools/Configuration.html68
-rw-r--r--rt/share/html/Admin/Tools/Queries.html129
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Dumps/dhandler7
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/DumpFileLink2
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/Error/NoRights8
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/Error/NoStorage11
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Attachment7
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Ticket4
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--User4
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/ObjectCheckBox2
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/PluginArguments4
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/PluginHelp4
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/SelectObjects2
-rw-r--r--rt/share/html/Admin/Tools/Shredder/Elements/SelectPlugin4
-rw-r--r--rt/share/html/Admin/Tools/Shredder/autohandler2
-rw-r--r--rt/share/html/Admin/Tools/Shredder/index.html16
-rw-r--r--rt/share/html/Admin/Tools/Theme.html309
-rw-r--r--rt/share/html/Admin/Tools/index.html13
-rw-r--r--rt/share/html/Admin/Users/CustomFields.html9
-rw-r--r--rt/share/html/Admin/Users/GnuPG.html9
-rw-r--r--rt/share/html/Admin/Users/History.html11
-rw-r--r--rt/share/html/Admin/Users/Memberships.html15
-rwxr-xr-xrt/share/html/Admin/Users/Modify.html74
-rw-r--r--rt/share/html/Admin/Users/MyRT.html14
-rwxr-xr-xrt/share/html/Admin/Users/index.html94
-rw-r--r--rt/share/html/Admin/autohandler2
-rwxr-xr-xrt/share/html/Admin/index.html56
-rwxr-xr-xrt/share/html/Approvals/Display.html7
-rwxr-xr-xrt/share/html/Approvals/Elements/Approve18
-rwxr-xr-xrt/share/html/Approvals/Elements/PendingMyApproval74
-rwxr-xr-xrt/share/html/Approvals/Elements/ShowDependency2
-rw-r--r--rt/share/html/Approvals/autohandler2
-rwxr-xr-xrt/share/html/Approvals/index.html14
-rw-r--r--rt/share/html/Articles/Article/Delete.html106
-rw-r--r--rt/share/html/Articles/Article/Display.html92
-rw-r--r--rt/share/html/Articles/Article/Edit.html334
-rw-r--r--rt/share/html/Articles/Article/Elements/EditBasics73
-rw-r--r--rt/share/html/Articles/Article/Elements/EditCustomFields83
-rw-r--r--rt/share/html/Articles/Article/Elements/EditLinks113
-rw-r--r--rt/share/html/Articles/Article/Elements/EditTopics144
-rw-r--r--rt/share/html/Articles/Article/Elements/LinkEntryInstructions49
-rw-r--r--rt/share/html/Articles/Article/Elements/Preformatted127
-rw-r--r--rt/share/html/Articles/Article/Elements/SearchByCustomField70
-rw-r--r--rt/share/html/Articles/Article/Elements/SelectSavedSearches (renamed from rt/share/html/Elements/DashboardTabs)79
-rw-r--r--rt/share/html/Articles/Article/Elements/SelectSearchPrivacy62
-rw-r--r--rt/share/html/Articles/Article/Elements/ShowHistory (renamed from rt/share/html/Tools/Reports/ResolvedByOwner.html)48
-rw-r--r--rt/share/html/Articles/Article/Elements/ShowLinks92
-rw-r--r--rt/share/html/Articles/Article/Elements/ShowSavedSearches85
-rw-r--r--rt/share/html/Articles/Article/Elements/ShowSearchCriteria171
-rw-r--r--rt/share/html/Articles/Article/Elements/ShowTopics58
-rw-r--r--rt/share/html/Articles/Article/ExtractFromTicket.html105
-rw-r--r--rt/share/html/Articles/Article/ExtractIntoClass.html76
-rw-r--r--rt/share/html/Articles/Article/ExtractIntoTopic.html (renamed from rt/share/html/Download/Tabular/dhandler)50
-rw-r--r--rt/share/html/Articles/Article/History.html (renamed from rt/share/html/NoAuth/css/3.4-compat/footer.css)24
-rw-r--r--rt/share/html/Articles/Article/PreCreate.html62
-rw-r--r--rt/share/html/Articles/Article/Search.html269
-rw-r--r--rt/share/html/Articles/Elements/BeforeMessageBox239
-rw-r--r--rt/share/html/Articles/Elements/CheckSkipCreate (renamed from rt/share/html/Prefs/Elements/Tabs)46
-rw-r--r--rt/share/html/Articles/Elements/CreateArticle59
-rw-r--r--rt/share/html/Articles/Elements/GotoArticle73
-rw-r--r--rt/share/html/Articles/Elements/IncludeArticle99
-rw-r--r--rt/share/html/Articles/Elements/NewestArticles80
-rw-r--r--rt/share/html/Articles/Elements/QuickSearch59
-rw-r--r--[-rwxr-xr-x]rt/share/html/Articles/Elements/SelectClass (renamed from rt/share/html/Admin/Elements/Tabs)86
-rw-r--r--rt/share/html/Articles/Elements/ShowTopic (renamed from rt/share/html/NoAuth/css/3.4-compat/misc.css)46
-rw-r--r--rt/share/html/Articles/Elements/ShowTopicLink27
-rw-r--r--rt/share/html/Articles/Elements/UpdatedArticles81
-rw-r--r--rt/share/html/Articles/Topics.html203
-rw-r--r--rt/share/html/Articles/index.html63
-rw-r--r--rt/share/html/Callbacks/RTx-Calendar/Elements/Header/Head3
-rw-r--r--rt/share/html/Callbacks/RTx-Calendar/Elements/Tabs/Privileged73
-rw-r--r--rt/share/html/Callbacks/RTx-Calendar/Ticket/Elements/Tabs/Default2
-rw-r--r--rt/share/html/Dashboards/Elements/DashboardsForObject2
-rw-r--r--rt/share/html/Dashboards/Elements/Deleted2
-rw-r--r--rt/share/html/Dashboards/Elements/HiddenSearches2
-rw-r--r--rt/share/html/Dashboards/Elements/ListOfDashboards30
-rw-r--r--rt/share/html/Dashboards/Elements/SelectPrivacy2
-rw-r--r--rt/share/html/Dashboards/Elements/ShowDashboards85
-rw-r--r--rt/share/html/Dashboards/Elements/ShowPortlet/component2
-rw-r--r--rt/share/html/Dashboards/Elements/ShowPortlet/dashboard2
-rw-r--r--rt/share/html/Dashboards/Elements/ShowPortlet/search2
-rwxr-xr-xrt/share/html/Dashboards/Modify.html70
-rw-r--r--rt/share/html/Dashboards/Queries.html22
-rw-r--r--rt/share/html/Dashboards/Render.html43
-rw-r--r--rt/share/html/Dashboards/Subscription.html166
-rw-r--r--rt/share/html/Dashboards/dhandler2
-rw-r--r--rt/share/html/Dashboards/index.html64
-rw-r--r--rt/share/html/Download/CustomFieldValue/dhandler2
-rwxr-xr-xrt/share/html/Elements/BevelBoxRaisedEnd2
-rwxr-xr-xrt/share/html/Elements/BevelBoxRaisedStart2
-rw-r--r--[-rwxr-xr-x]rt/share/html/Elements/CSRF (renamed from rt/share/html/NoAuth/css/3.5-default/misc.css)71
-rw-r--r--rt/share/html/Elements/CalendarEvent8
-rwxr-xr-xrt/share/html/Elements/Callback2
-rwxr-xr-xrt/share/html/Elements/Checkbox2
-rw-r--r--rt/share/html/Elements/CollectionAsTable/Header8
-rw-r--r--rt/share/html/Elements/CollectionAsTable/ParseFormat3
-rw-r--r--rt/share/html/Elements/CollectionAsTable/Row7
-rw-r--r--rt/share/html/Elements/CollectionList20
-rw-r--r--rt/share/html/Elements/CollectionListPaging14
-rw-r--r--rt/share/html/Elements/ColumnMap16
-rwxr-xr-xrt/share/html/Elements/CreateTicket12
-rw-r--r--rt/share/html/Elements/CustomerFields16
-rw-r--r--rt/share/html/Elements/Dashboards19
-rw-r--r--rt/share/html/Elements/EditCustomField4
-rw-r--r--rt/share/html/Elements/EditCustomFieldAutocomplete47
-rw-r--r--rt/share/html/Elements/EditCustomFieldBinary2
-rw-r--r--rt/share/html/Elements/EditCustomFieldCombobox2
-rw-r--r--rt/share/html/Elements/EditCustomFieldDate38
-rw-r--r--rt/share/html/Elements/EditCustomFieldDateTime62
-rw-r--r--rt/share/html/Elements/EditCustomFieldFreeform2
-rw-r--r--rt/share/html/Elements/EditCustomFieldIPAddress (renamed from rt/share/html/Admin/Groups/CustomFields.html)6
-rw-r--r--rt/share/html/Elements/EditCustomFieldIPAddressRange (renamed from rt/share/html/NoAuth/css/3.5-default/local.css)8
-rw-r--r--rt/share/html/Elements/EditCustomFieldImage2
-rw-r--r--rt/share/html/Elements/EditCustomFieldSelect53
-rw-r--r--rt/share/html/Elements/EditCustomFieldText2
-rw-r--r--rt/share/html/Elements/EditCustomFieldWikitext2
-rwxr-xr-xrt/share/html/Elements/EditLinks3
-rw-r--r--rt/share/html/Elements/EditPassword2
-rw-r--r--rt/share/html/Elements/EditTimeValue6
-rw-r--r--rt/share/html/Elements/EmailInput4
-rwxr-xr-xrt/share/html/Elements/Error6
-rwxr-xr-xrt/share/html/Elements/Footer4
-rw-r--r--rt/share/html/Elements/Framekiller (renamed from rt/share/html/NoAuth/css/3.5-default/ticket-search.css)53
-rw-r--r--rt/share/html/Elements/GnuPG/KeyIssues2
-rw-r--r--rt/share/html/Elements/GnuPG/SelectKeyForEncryption2
-rw-r--r--rt/share/html/Elements/GnuPG/SelectKeyForSigning2
-rw-r--r--rt/share/html/Elements/GnuPG/SignEncryptWidget33
-rwxr-xr-xrt/share/html/Elements/GotoTicket2
-rwxr-xr-xrt/share/html/Elements/Header55
-rw-r--r--rt/share/html/Elements/HeaderJavascript90
-rwxr-xr-xrt/share/html/Elements/ListActions2
-rw-r--r--rt/share/html/Elements/ListMenu46
-rwxr-xr-xrt/share/html/Elements/Login17
-rw-r--r--rt/share/html/Elements/Logo30
-rw-r--r--rt/share/html/Elements/MakeClicky14
-rwxr-xr-xrt/share/html/Elements/Menu123
-rwxr-xr-xrt/share/html/Elements/MessageBox20
-rw-r--r--rt/share/html/Elements/MyAdminQueues8
-rw-r--r--rt/share/html/Elements/MyRT4
-rwxr-xr-xrt/share/html/Elements/MyReminders34
-rwxr-xr-xrt/share/html/Elements/MyRequests2
-rw-r--r--rt/share/html/Elements/MySupportQueues12
-rwxr-xr-xrt/share/html/Elements/MyTickets2
-rwxr-xr-xrt/share/html/Elements/PageLayout203
-rw-r--r--rt/share/html/Elements/PersonalQuickbar12
-rw-r--r--rt/share/html/Elements/QueriesAsComment58
-rw-r--r--rt/share/html/Elements/QueryString2
-rw-r--r--rt/share/html/Elements/QueueSummaryByLifecycle145
-rw-r--r--rt/share/html/Elements/QueueSummaryByStatus139
-rw-r--r--rt/share/html/Elements/QuickCreate10
-rwxr-xr-xrt/share/html/Elements/Quicksearch24
-rw-r--r--[-rwxr-xr-x]rt/share/html/Elements/RT__Article/ColumnMap (renamed from rt/share/html/Admin/Elements/GlobalCustomFieldTabs)102
-rw-r--r--rt/share/html/Elements/RT__Class/ColumnMap76
-rw-r--r--rt/share/html/Elements/RT__CustomField/ColumnMap10
-rw-r--r--rt/share/html/Elements/RT__Dashboard/ColumnMap134
-rw-r--r--rt/share/html/Elements/RT__Group/ColumnMap2
-rw-r--r--rt/share/html/Elements/RT__Queue/ColumnMap7
-rw-r--r--rt/share/html/Elements/RT__SavedSearch/ColumnMap6
-rw-r--r--rt/share/html/Elements/RT__Scrip/ColumnMap2
-rw-r--r--rt/share/html/Elements/RT__Template/ColumnMap2
-rw-r--r--rt/share/html/Elements/RT__Ticket/ColumnMap7
-rw-r--r--rt/share/html/Elements/RT__User/ColumnMap90
-rwxr-xr-xrt/share/html/Elements/Refresh2
-rw-r--r--rt/share/html/Elements/RefreshHomepage2
-rw-r--r--rt/share/html/Elements/SavedSearches116
-rw-r--r--rt/share/html/Elements/ScrubHTML28
-rwxr-xr-xrt/share/html/Elements/Section2
-rwxr-xr-xrt/share/html/Elements/SelectAttachmentField4
-rwxr-xr-xrt/share/html/Elements/SelectBoolean2
-rwxr-xr-xrt/share/html/Elements/SelectCustomFieldOperator2
-rwxr-xr-xrt/share/html/Elements/SelectCustomFieldValue2
-rwxr-xr-xrt/share/html/Elements/SelectDate6
-rwxr-xr-xrt/share/html/Elements/SelectDateRelation2
-rwxr-xr-xrt/share/html/Elements/SelectDateType2
-rwxr-xr-xrt/share/html/Elements/SelectEqualityOperator2
-rwxr-xr-xrt/share/html/Elements/SelectGroups2
-rw-r--r--rt/share/html/Elements/SelectIPRelation64
-rwxr-xr-xrt/share/html/Elements/SelectLang2
-rwxr-xr-xrt/share/html/Elements/SelectLinkType2
-rwxr-xr-xrt/share/html/Elements/SelectMatch2
-rwxr-xr-xrt/share/html/Elements/SelectNewTicketQueue9
-rwxr-xr-xrt/share/html/Elements/SelectOwner84
-rw-r--r--[-rwxr-xr-x]rt/share/html/Elements/SelectOwnerAutocomplete (renamed from rt/share/html/Dashboards/Elements/Tabs)109
-rw-r--r--rt/share/html/Elements/SelectOwnerDropdown99
-rw-r--r--rt/share/html/Elements/SelectPriority2
-rwxr-xr-xrt/share/html/Elements/SelectQueue36
-rwxr-xr-xrt/share/html/Elements/SelectResultsPerPage2
-rwxr-xr-xrt/share/html/Elements/SelectSortOrder2
-rwxr-xr-xrt/share/html/Elements/SelectStatus67
-rwxr-xr-xrt/share/html/Elements/SelectTicketSortBy4
-rwxr-xr-xrt/share/html/Elements/SelectTicketTypes2
-rwxr-xr-xrt/share/html/Elements/SelectTimeUnits4
-rw-r--r--rt/share/html/Elements/SelectTimezone25
-rwxr-xr-xrt/share/html/Elements/SelectUsers17
-rwxr-xr-xrt/share/html/Elements/SelectWatcherType4
-rw-r--r--rt/share/html/Elements/ServiceFields161
-rwxr-xr-xrt/share/html/Elements/SetupSessionCookie2
-rw-r--r--rt/share/html/Elements/ShowCustomFieldBinary4
-rw-r--r--rt/share/html/Elements/ShowCustomFieldDate36
-rw-r--r--rt/share/html/Elements/ShowCustomFieldDateTime57
-rw-r--r--rt/share/html/Elements/ShowCustomFieldImage4
-rw-r--r--rt/share/html/Elements/ShowCustomFieldText2
-rw-r--r--rt/share/html/Elements/ShowCustomFieldWikitext2
-rw-r--r--rt/share/html/Elements/ShowCustomFields19
-rw-r--r--rt/share/html/Elements/ShowLink19
-rwxr-xr-xrt/share/html/Elements/ShowLinks53
-rw-r--r--rt/share/html/Elements/ShowMemberships6
-rw-r--r--rt/share/html/Elements/ShowRelationLabel2
-rw-r--r--rt/share/html/Elements/ShowReminders (renamed from rt/share/html/Elements/QueueSummary)95
-rw-r--r--rt/share/html/Elements/ShowSearch21
-rw-r--r--rt/share/html/Elements/ShowUser9
-rw-r--r--rt/share/html/Elements/ShowUserConcise7
-rw-r--r--rt/share/html/Elements/ShowUserEmailFrequency2
-rw-r--r--rt/share/html/Elements/ShowUserVerbose28
-rwxr-xr-xrt/share/html/Elements/SimpleSearch2
-rwxr-xr-xrt/share/html/Elements/Submit40
-rwxr-xr-xrt/share/html/Elements/Tabs909
-rw-r--r--rt/share/html/Elements/TicketList2
-rw-r--r--rt/share/html/Elements/TitleBox2
-rw-r--r--rt/share/html/Elements/TitleBoxEnd2
-rw-r--r--rt/share/html/Elements/TitleBoxStart2
-rw-r--r--rt/share/html/Elements/ValidateCustomFields29
-rw-r--r--rt/share/html/Elements/WidgetBar58
-rw-r--r--rt/share/html/Helpers/Autocomplete/CustomFieldValues87
-rw-r--r--rt/share/html/Helpers/Autocomplete/Groups (renamed from rt/share/html/Tools/Reports/Elements/Tabs)67
-rw-r--r--rt/share/html/Helpers/Autocomplete/Owners150
-rw-r--r--rt/share/html/Helpers/Autocomplete/Users130
-rw-r--r--rt/share/html/Helpers/CalPopup.html143
-rw-r--r--rt/share/html/Helpers/TicketHistory67
-rw-r--r--rt/share/html/Helpers/Toggle/ShowRequestor65
-rw-r--r--rt/share/html/Helpers/Toggle/TicketBookmark2
-rw-r--r--rt/share/html/Install/Basics.html11
-rw-r--r--rt/share/html/Install/DatabaseDetails.html2
-rw-r--r--rt/share/html/Install/DatabaseType.html4
-rw-r--r--rt/share/html/Install/Elements/Errors2
-rw-r--r--rt/share/html/Install/Elements/Wrapper9
-rw-r--r--rt/share/html/Install/Finish.html11
-rw-r--r--rt/share/html/Install/Global.html5
-rw-r--r--rt/share/html/Install/Initialize.html13
-rw-r--r--rt/share/html/Install/Sendmail.html2
-rw-r--r--rt/share/html/Install/autohandler2
-rw-r--r--rt/share/html/Install/index.html15
-rw-r--r--rt/share/html/NoAuth/Calendar/dhandler6
-rw-r--r--rt/share/html/NoAuth/Helpers/CustomLogo/dhandler61
-rwxr-xr-xrt/share/html/NoAuth/Login.html2
-rwxr-xr-xrt/share/html/NoAuth/Logout.html4
-rwxr-xr-xrt/share/html/NoAuth/Reminder.html2
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckcontextmenu.js223
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdataprocessor.js119
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_gecko.js53
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_ie.js58
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange.js935
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_gecko.js104
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_ie.js199
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrangeiterator.js327
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckeditingarea.js368
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckelementpath.js89
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckenterkey.js708
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckevents.js71
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckhtmliterator.js142
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckicon.js103
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckiecleanup.js68
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckimagepreloader.js64
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckkeystrokehandler.js141
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublock.js153
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublockpanel.js54
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenuitem.js161
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckpanel.js463
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckplugin.js56
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckspecialcombo.js376
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckstyle.js1500
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbar.js103
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js36
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js38
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbutton.js81
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js198
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js139
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js98
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js76
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js103
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js146
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js200
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckw3crange.js451
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml.js108
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_gecko.js106
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_ie.js93
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fck_othercommands.js634
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckblockquotecommand.js281
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckcorestylecommand.js61
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js213
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckindentcommands.js282
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckjustifycommands.js173
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcklistcommands.js382
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js39
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js40
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js40
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckremoveformatcommand.js45
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckshowblocks.js94
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js49
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js72
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckstylecommand.js60
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktablecommand.js106
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js201
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckconstants.js56
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckeditorapi.js179
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckjscoreextensions.js159
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckscriptloader.js122
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck.js1256
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_contextmenu.js345
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_gecko.js497
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_ie.js456
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckbrowserinfo.js61
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcodeformatter.js100
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcommands.js172
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckconfig.js237
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug.js59
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug_empty.js31
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdialog.js239
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdocumentprocessor.js270
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdomtools.js1057
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklanguagemanager.js165
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklisthandler.js152
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklistslib.js63
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckplugins.js46
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckregexlib.js100
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection.js42
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_gecko.js228
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_ie.js287
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckstyles.js381
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler.js863
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js56
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_ie.js64
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbaritems.js124
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbarset.js399
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools.js749
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_gecko.js282
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_ie.js234
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckundo.js223
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckurlparams.js39
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_gecko.js114
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_ie.js213
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtmlentities.js357
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/disablehandles.htc15
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/showtableborders.htc36
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_editorarea.css110
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_internal.css199
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_showtableborders_gecko.css49
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_address.pngbin288 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_blockquote.pngbin293 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_div.pngbin229 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h1.pngbin218 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h2.pngbin220 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h3.pngbin219 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h4.pngbin229 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h5.pngbin236 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h6.pngbin216 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_p.pngbin205 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_pre.pngbin223 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_anchor.gifbin184 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_flashlogo.gifbin599 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_hiddenfield.gifbin105 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_pagebreak.gifbin54 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_plugin.gifbin1709 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.css85
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.js347
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/locked.gifbin74 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/reset.gifbin104 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/unlocked.gifbin75 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about.html161
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fckeditor.gifbin2044 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fredck.gifbin920 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gifbin1447 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_anchor.html220
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_button.html104
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_checkbox.html104
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_colorselector.html172
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_div.html396
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops.html600
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html113
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash.html152
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash.js300
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html50
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_form.html109
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_hiddenfield.html115
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image.html258
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image.js512
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image_preview.html72
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link.html295
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link/fck_link.js893
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_listprop.html120
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_paste.html347
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_radiobutton.html104
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_replace.html650
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select.html180
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select/fck_select.js194
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_smiley.html111
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_source.html68
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_specialchar.html121
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages.html70
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html0
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js87
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html153
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm148
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php199
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl181
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js461
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html71
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css49
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js272
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_table.html439
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_tablecell.html293
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template.html242
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template1.gifbin375 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template2.gifbin333 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template3.gifbin422 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textarea.html94
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textfield.html136
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_dtd_test.html41
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10strict.js116
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10transitional.js140
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdebug.html153
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdialog.html819
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.html317
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.original.html424
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/anchor.gifbin184 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_ltr.gifbin49 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_rtl.gifbin49 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angel_smile.gifbin445 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angry_smile.gifbin453 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/broken_heart.gifbin423 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cake.gifbin453 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/confused_smile.gifbin322 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cry_smile.gifbin473 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/devil_smile.gifbin444 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/embaressed_smile.gifbin1077 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/envelope.gifbin1030 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/heart.gifbin1012 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/kiss.gifbin978 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/lightbulb.gifbin303 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/omg_smile.gifbin342 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/regular_smile.gifbin1036 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/sad_smile.gifbin1039 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/shades_smile.gifbin1059 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/teeth_smile.gifbin1064 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_down.gifbin992 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_up.gifbin989 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/tounge_smile.gifbin1055 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gifbin1034 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/wink_smile.gifbin1041 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckadobeair.js176
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_gecko.js108
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_ie.js109
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/_translationstatus.txt79
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/af.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ar.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bg.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bn.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bs.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ca.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/cs.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/da.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/de.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/el.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-au.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-ca.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-uk.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eo.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/es.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/et.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eu.js535
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fa.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fi.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fo.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr-ca.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gl.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gu.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/he.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hi.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hr.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hu.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/is.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/it.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ja.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/km.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ko.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lt.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lv.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/mn.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ms.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nb.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nl.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/no.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pl.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt-br.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ro.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ru.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sk.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sl.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr-latn.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sv.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/th.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/tr.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/uk.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/vi.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh-cn.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh.js534
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/autogrow/fckplugin.js111
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.config.js26
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.html67
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/fckplugin.js123
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/dragresizetable/fckplugin.js529
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fck_placeholder.html105
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fckplugin.js187
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/de.js27
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/en.js27
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/es.js27
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/fr.js27
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/it.js27
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/pl.js27
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/placeholder.gifbin96 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/simplecommands/fckplugin.js29
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/tablecommands/fckplugin.js33
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/_fckviewstrips.html121
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog.css402
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog_ie6.js110
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_editor.css464
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_strip.gifbin5175 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.gifbin959 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.pngbin3250 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.arrowright.gifbin53 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gifbin46 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.collapse.gifbin152 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.end.gifbin43 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.expand.gifbin152 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.separator.gifbin58 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog.css402
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog_ie6.js110
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_editor.css476
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_strip.gifbin9668 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.gifbin48 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.pngbin203 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.rtl.pngbin205 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.gifbin959 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.pngbin3305 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.arrowright.gifbin53 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.bg.gifbin73 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.buttonarrow.gifbin46 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.collapse.gifbin152 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.end.gifbin124 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.expand.gifbin152 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.separator.gifbin67 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.start.gifbin99 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog.css402
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog_ie6.js110
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_editor.css473
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_strip.gifbin5175 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.gifbin48 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.pngbin198 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.rtl.pngbin200 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.gifbin959 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.pngbin3278 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.arrowright.gifbin53 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonarrow.gifbin46 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonbg.gifbin829 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.collapse.gifbin152 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.end.gifbin43 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.expand.gifbin152 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.separator.gifbin58 -> 0 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/tmpFrameset.html67
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/w.html227
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/fckconfig.js327
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/fckeditor.js330
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/fckpackager.xml262
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/fckstyles.xml111
-rw-r--r--rt/share/html/NoAuth/RichText/FCKeditor/fcktemplates.xml103
-rw-r--r--rt/share/html/NoAuth/RichText/autohandler4
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/LICENSE.html (renamed from rt/share/html/NoAuth/RichText/FCKeditor/license.txt)2580
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/adapters/jquery.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/ckeditor.js135
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/config.js47
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/contents.css35
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/images/spacer.gif (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/images/spacer.gif)bin43 -> 43 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/_languages.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt60
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/af.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ar.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/bg.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/bn.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/bs.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ca.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/cs.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/cy.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/da.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/de.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/el.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/en-au.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/en-ca.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/en-gb.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/en.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/eo.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/es.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/et.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/eu.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/fa.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/fi.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/fo.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/fr.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/gl.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/gu.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/he.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/hi.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/hr.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/hu.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/is.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/it.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ja.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/km.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ko.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/lt.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/lv.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/mn.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ms.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/nb.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/nl.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/no.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/pl.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/pt-br.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/pt.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ro.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/ru.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/sk.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/sl.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/sr.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/sv.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/th.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/tr.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/uk.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/vi.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/lang/zh.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js4
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js8
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js9
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js9
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js9
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js13
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js11
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js10
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js8
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js9
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js8
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js76
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/ciframe.html)114
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html52
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css9
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css12
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons.pngbin0 -> 4918 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.pngbin0 -> 4935 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.gif (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.gif)bin48 -> 48 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.png (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.png)bin178 -> 178 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides_rtl.png (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.rtl.png)bin181 -> 181 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gifbin0 -> 183 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.pngbin0 -> 2115 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.pngbin0 -> 7086 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.pngbin0 -> 2724 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/toolbar_start.gif (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.start.gif)bin105 -> 105 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js7
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css9
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css13
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.pngbin0 -> 4918 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.pngbin0 -> 4935 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gifbin0 -> 48 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.pngbin0 -> 178 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.pngbin0 -> 181 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gifbin0 -> 183 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.pngbin0 -> 2115 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.pngbin0 -> 6119 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.pngbin0 -> 2715 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css8
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css12
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons.pngbin0 -> 4918 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.pngbin0 -> 4935 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gifbin0 -> 48 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.pngbin0 -> 178 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.pngbin0 -> 181 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gifbin0 -> 183 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.pngbin0 -> 2115 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.pngbin0 -> 5389 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.pngbin0 -> 492 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/toolbar_start.gif (renamed from rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.start.gif)bin105 -> 105 bytes
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css6
-rw-r--r--rt/share/html/NoAuth/RichText/ckeditor/themes/default/theme.js8
-rw-r--r--rt/share/html/NoAuth/RichText/dhandler4
-rw-r--r--rt/share/html/NoAuth/css/3.4-compat/transactions.css83
-rw-r--r--rt/share/html/NoAuth/css/3.5-default/approvals.css97
-rw-r--r--rt/share/html/NoAuth/css/3.5-default/footer.css91
-rw-r--r--rt/share/html/NoAuth/css/3.5-default/header.css152
-rw-r--r--rt/share/html/NoAuth/css/3.5-default/login.css85
-rw-r--r--rt/share/html/NoAuth/css/3.5-default/nav-left.css86
-rw-r--r--rt/share/html/NoAuth/css/3.5-default/nav.css163
-rwxr-xr-xrt/share/html/NoAuth/css/3.5-default/transactions.css146
-rw-r--r--rt/share/html/NoAuth/css/aileron/InHeader64
-rw-r--r--rt/share/html/NoAuth/css/aileron/base.css (renamed from rt/share/html/NoAuth/css/3.5-default/logo.css)20
-rw-r--r--rt/share/html/NoAuth/css/aileron/boxes.css184
-rw-r--r--[-rwxr-xr-x]rt/share/html/NoAuth/css/aileron/forms.css (renamed from rt/share/html/NoAuth/css/3.5-default/body.css)50
-rw-r--r--rt/share/html/NoAuth/css/aileron/images/dhandler8
-rw-r--r--rt/share/html/NoAuth/css/aileron/layout.css174
-rw-r--r--rt/share/html/NoAuth/css/aileron/login.css (renamed from rt/share/html/NoAuth/css/3.4-compat/ticket.css)6
-rw-r--r--rt/share/html/NoAuth/css/aileron/main.css (renamed from rt/share/html/NoAuth/css/3.5-default/main.css)26
-rw-r--r--rt/share/html/NoAuth/css/aileron/misc.css (renamed from rt/share/html/NoAuth/css/3.5-default/ticket.css)17
-rw-r--r--[-rwxr-xr-x]rt/share/html/NoAuth/css/aileron/msie.css (renamed from rt/share/html/NoAuth/css/3.5-default/forms.css)172
-rw-r--r--rt/share/html/NoAuth/css/aileron/msie6.css (renamed from rt/share/html/NoAuth/css/3.4-compat/quickbar.css)52
-rw-r--r--rt/share/html/NoAuth/css/aileron/nav.css164
-rw-r--r--rt/share/html/NoAuth/css/aileron/ticket-lists.css236
-rw-r--r--rt/share/html/NoAuth/css/aileron/ticket-search.css242
-rw-r--r--rt/share/html/NoAuth/css/aileron/ticket.css289
-rw-r--r--rt/share/html/NoAuth/css/autohandler10
-rw-r--r--rt/share/html/NoAuth/css/ballard/InHeader54
-rw-r--r--rt/share/html/NoAuth/css/ballard/base.css62
-rw-r--r--rt/share/html/NoAuth/css/ballard/boxes.css (renamed from rt/share/html/NoAuth/css/3.5-default/titlebox.css)174
-rw-r--r--rt/share/html/NoAuth/css/ballard/images/dhandler8
-rw-r--r--rt/share/html/NoAuth/css/ballard/layout.css173
-rw-r--r--rt/share/html/NoAuth/css/ballard/main.css62
-rw-r--r--rt/share/html/NoAuth/css/ballard/misc.css58
-rw-r--r--rt/share/html/NoAuth/css/ballard/msie.css242
-rw-r--r--rt/share/html/NoAuth/css/ballard/msie6.css (renamed from rt/share/html/NoAuth/css/3.4-compat/header.css)58
-rw-r--r--rt/share/html/NoAuth/css/ballard/nav.css189
-rw-r--r--rt/share/html/NoAuth/css/ballard/ticket-lists.css236
-rw-r--r--rt/share/html/NoAuth/css/ballard/ticket-search.css243
-rw-r--r--rt/share/html/NoAuth/css/ballard/ticket.css275
-rw-r--r--rt/share/html/NoAuth/css/base/admin.css97
-rw-r--r--rt/share/html/NoAuth/css/base/articles.css54
-rw-r--r--rt/share/html/NoAuth/css/base/collection.css (renamed from rt/share/html/NoAuth/css/web2/collection.css)3
-rw-r--r--rt/share/html/NoAuth/css/base/farbtastic.css (renamed from rt/share/html/NoAuth/css/3.4-compat/forms.css)100
-rw-r--r--[-rwxr-xr-x]rt/share/html/NoAuth/css/base/forms.css (renamed from rt/share/html/NoAuth/css/web2/forms.css)39
-rw-r--r--rt/share/html/NoAuth/css/base/history-folding.css91
-rw-r--r--rt/share/html/NoAuth/css/base/jquery-ui.css50
-rw-r--r--rt/share/html/NoAuth/css/base/jquery-ui.custom.modified.css454
-rw-r--r--rt/share/html/NoAuth/css/base/login.css (renamed from rt/share/html/NoAuth/css/web2/login.css)20
-rw-r--r--rt/share/html/NoAuth/css/base/main.css (renamed from rt/share/html/NoAuth/css/3.4-compat/main.css)40
-rw-r--r--rt/share/html/NoAuth/css/base/misc.css60
-rw-r--r--rt/share/html/NoAuth/css/base/nav.css (renamed from rt/share/html/NoAuth/css/web2/admin.css)24
-rw-r--r--rt/share/html/NoAuth/css/base/portlets.css (renamed from rt/share/html/NoAuth/css/web2/portlets.css)9
-rw-r--r--rt/share/html/NoAuth/css/base/rights-editor.css177
-rw-r--r--rt/share/html/NoAuth/css/base/superfish-navbar.css93
-rw-r--r--rt/share/html/NoAuth/css/base/superfish-vertical.css23
-rw-r--r--rt/share/html/NoAuth/css/base/superfish.css136
-rw-r--r--rt/share/html/NoAuth/css/base/tablesorter.css52
-rw-r--r--rt/share/html/NoAuth/css/base/theme-editor.css (renamed from rt/share/html/NoAuth/css/3.5-default/quickbar.css)77
-rw-r--r--rt/share/html/NoAuth/css/base/ticket-form.css (renamed from rt/share/html/NoAuth/css/3.4-compat/nav.css)105
-rw-r--r--rt/share/html/NoAuth/css/base/ticket.css146
-rw-r--r--rt/share/html/NoAuth/css/base/tools.css (renamed from rt/share/html/NoAuth/css/web2/tools.css)6
-rw-r--r--rt/share/html/NoAuth/css/base/ui.timepickr.css56
-rw-r--r--rt/share/html/NoAuth/css/base/ui.timepickr.custom.css54
-rw-r--r--rt/share/html/NoAuth/css/base/yui-fonts.css (renamed from rt/share/html/NoAuth/css/web2/yui-fonts.css)0
-rw-r--r--rt/share/html/NoAuth/css/calendar.css10
-rw-r--r--rt/share/html/NoAuth/css/dhandler27
-rw-r--r--rt/share/html/NoAuth/css/freeside3/InHeader (renamed from rt/share/html/Dashboards/Elements/DashboardsForObjects)54
-rw-r--r--rt/share/html/NoAuth/css/freeside3/base.css62
-rw-r--r--rt/share/html/NoAuth/css/freeside3/boxes.css180
-rw-r--r--rt/share/html/NoAuth/css/freeside3/forms.css79
-rw-r--r--rt/share/html/NoAuth/css/freeside3/images/dhandler8
-rw-r--r--rt/share/html/NoAuth/css/freeside3/layout.css181
-rw-r--r--rt/share/html/NoAuth/css/freeside3/login.css (renamed from rt/share/html/NoAuth/css/3.4-compat/login.css)10
-rw-r--r--rt/share/html/NoAuth/css/freeside3/main.css63
-rw-r--r--rt/share/html/NoAuth/css/freeside3/misc.css58
-rw-r--r--rt/share/html/NoAuth/css/freeside3/msie-pie.css58
-rw-r--r--rt/share/html/NoAuth/css/freeside3/msie.css (renamed from rt/share/html/NoAuth/css/3.4-compat/titlebox.css)163
-rw-r--r--rt/share/html/NoAuth/css/freeside3/msie6.css86
-rw-r--r--rt/share/html/NoAuth/css/freeside3/nav.css171
-rw-r--r--rt/share/html/NoAuth/css/freeside3/ticket-lists.css236
-rw-r--r--rt/share/html/NoAuth/css/freeside3/ticket-search.css242
-rw-r--r--rt/share/html/NoAuth/css/freeside3/ticket.css289
-rw-r--r--rt/share/html/NoAuth/css/images/arrow.down.black.pngbin0 -> 168 bytes
-rw-r--r--rt/share/html/NoAuth/css/images/arrows-ffffff.gifbin0 -> 114 bytes
-rw-r--r--rt/share/html/NoAuth/css/images/arrows-ffffff.pngbin0 -> 244 bytes
-rw-r--r--rt/share/html/NoAuth/css/images/arrows-grey.gifbin0 -> 114 bytes
-rw-r--r--rt/share/html/NoAuth/css/images/arrows-grey.pngbin0 -> 256 bytes
-rw-r--r--rt/share/html/NoAuth/css/images/shadow.gifbin0 -> 807 bytes
-rw-r--r--rt/share/html/NoAuth/css/images/shadow.pngbin0 -> 1698 bytes
-rw-r--r--rt/share/html/NoAuth/css/print.css149
-rw-r--r--rt/share/html/NoAuth/css/web2/InHeader23
-rw-r--r--rt/share/html/NoAuth/css/web2/base.css5
-rw-r--r--rt/share/html/NoAuth/css/web2/boxes.css27
-rw-r--r--rt/share/html/NoAuth/css/web2/layout.css148
-rw-r--r--rt/share/html/NoAuth/css/web2/main.css13
-rw-r--r--rt/share/html/NoAuth/css/web2/misc.css30
-rw-r--r--rt/share/html/NoAuth/css/web2/msie.css46
-rw-r--r--rt/share/html/NoAuth/css/web2/msie6.css14
-rw-r--r--rt/share/html/NoAuth/css/web2/nav.css288
-rw-r--r--rt/share/html/NoAuth/css/web2/ticket-lists.css80
-rw-r--r--rt/share/html/NoAuth/css/web2/ticket-search.css67
-rw-r--r--rt/share/html/NoAuth/css/web2/ticket.css74
-rw-r--r--rt/share/html/NoAuth/iCal/dhandler4
-rw-r--r--rt/share/html/NoAuth/images/css/rollup-arrow.gifbin82 -> 97 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/farbtastic/marker.pngbin0 -> 652 bytes
-rw-r--r--rt/share/html/NoAuth/images/farbtastic/mask.pngbin0 -> 2020 bytes
-rw-r--r--rt/share/html/NoAuth/images/farbtastic/wheel.pngbin0 -> 11733 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gifbin0 -> 1553 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.pngbin0 -> 384 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.pngbin0 -> 251 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.pngbin0 -> 180 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.pngbin0 -> 178 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.pngbin0 -> 178 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.pngbin0 -> 104 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.pngbin0 -> 125 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.pngbin0 -> 120 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.pngbin0 -> 105 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.pngbin0 -> 111 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.pngbin0 -> 110 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.pngbin0 -> 119 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.pngbin0 -> 3762 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.pngbin0 -> 90 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.pngbin0 -> 101 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.pngbin0 -> 129 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.pngbin0 -> 4369 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.pngbin0 -> 4369 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.pngbin0 -> 1936 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.pngbin0 -> 4369 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.pngbin0 -> 5355 bytes
-rw-r--r--rt/share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xrt/share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.pngbin0 -> 4369 bytes
-rw-r--r--rt/share/html/NoAuth/images/tablesorter/asc.gifbin0 -> 54 bytes
-rw-r--r--rt/share/html/NoAuth/images/tablesorter/bg.gifbin0 -> 64 bytes
-rw-r--r--rt/share/html/NoAuth/images/tablesorter/desc.gifbin0 -> 54 bytes
-rw-r--r--rt/share/html/NoAuth/js/IE7/IE7.js2
-rw-r--r--rt/share/html/NoAuth/js/IE7/IE8.js2
-rw-r--r--rt/share/html/NoAuth/js/IE7/ie7-recalc.js2
-rw-r--r--rt/share/html/NoAuth/js/IE7/ie7-squish.js36
-rw-r--r--rt/share/html/NoAuth/js/ahah.js51
-rw-r--r--rt/share/html/NoAuth/js/autohandler2
-rw-r--r--rt/share/html/NoAuth/js/cascaded.js4
-rw-r--r--rt/share/html/NoAuth/js/combobox.js2
-rw-r--r--rt/share/html/NoAuth/js/dhandler65
-rw-r--r--rt/share/html/NoAuth/js/farbtastic.js347
-rw-r--r--rt/share/html/NoAuth/js/history-folding.js73
-rw-r--r--rt/share/html/NoAuth/js/jquery-1.4.2.min.js154
-rw-r--r--rt/share/html/NoAuth/js/jquery-ui-1.8.4.custom.min.js224
-rw-r--r--rt/share/html/NoAuth/js/jquery-ui-patch-datepicker.js61
-rw-r--r--rt/share/html/NoAuth/js/jquery.event.hover-1.0.js85
-rw-r--r--rt/share/html/NoAuth/js/jquery.supposition.js83
-rw-r--r--rt/share/html/NoAuth/js/jquery.tablesorter.min.js16
-rw-r--r--rt/share/html/NoAuth/js/jquery_noconflict.js51
-rw-r--r--rt/share/html/NoAuth/js/late.js49
-rw-r--r--rt/share/html/NoAuth/js/prototype/prototype.js4320
-rw-r--r--rt/share/html/NoAuth/js/scriptaculous/controls.js971
-rw-r--r--rt/share/html/NoAuth/js/scriptaculous/effects.js1130
-rw-r--r--rt/share/html/NoAuth/js/scriptaculous/scriptaculous.js60
-rw-r--r--rt/share/html/NoAuth/js/superfish.js121
-rw-r--r--rt/share/html/NoAuth/js/supersubs.js90
-rw-r--r--rt/share/html/NoAuth/js/titlebox-state.js4
-rw-r--r--rt/share/html/NoAuth/js/ui.timepickr.js941
-rw-r--r--rt/share/html/NoAuth/js/userautocomplete.js110
-rw-r--r--rt/share/html/NoAuth/js/util.js393
-rw-r--r--rt/share/html/NoAuth/rss/dhandler2
-rw-r--r--rt/share/html/Prefs/Calendar.html15
-rw-r--r--rt/share/html/Prefs/MyRT.html20
-rw-r--r--rt/share/html/Prefs/Other.html14
-rw-r--r--rt/share/html/Prefs/Quicksearch.html13
-rw-r--r--rt/share/html/Prefs/Search.html10
-rw-r--r--rt/share/html/Prefs/SearchOptions.html10
-rw-r--r--rt/share/html/REST/1.0/Forms/attachment/default4
-rw-r--r--rt/share/html/REST/1.0/Forms/group/customfields4
-rw-r--r--rt/share/html/REST/1.0/Forms/group/default4
-rw-r--r--rt/share/html/REST/1.0/Forms/group/ns4
-rw-r--r--rt/share/html/REST/1.0/Forms/queue/customfields4
-rwxr-xr-xrt/share/html/REST/1.0/Forms/queue/default4
-rwxr-xr-xrt/share/html/REST/1.0/Forms/queue/ns4
-rw-r--r--rt/share/html/REST/1.0/Forms/queue/ticketcustomfields6
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/attachments9
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/comment4
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/default61
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/history11
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/links11
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/merge6
-rwxr-xr-xrt/share/html/REST/1.0/Forms/ticket/take4
-rw-r--r--rt/share/html/REST/1.0/Forms/transaction/default14
-rwxr-xr-xrt/share/html/REST/1.0/Forms/user/default4
-rwxr-xr-xrt/share/html/REST/1.0/Forms/user/ns4
-rwxr-xr-xrt/share/html/REST/1.0/NoAuth/mail-gateway2
-rwxr-xr-xrt/share/html/REST/1.0/autohandler2
-rwxr-xr-xrt/share/html/REST/1.0/dhandler2
-rwxr-xr-xrt/share/html/REST/1.0/logout2
-rwxr-xr-xrt/share/html/REST/1.0/search/dhandler2
-rwxr-xr-xrt/share/html/REST/1.0/search/ticket42
-rwxr-xr-xrt/share/html/REST/1.0/ticket/comment4
-rwxr-xr-xrt/share/html/REST/1.0/ticket/link9
-rwxr-xr-xrt/share/html/REST/1.0/ticket/merge4
-rw-r--r--rt/share/html/Search/Article.html52
-rw-r--r--rt/share/html/Search/Build.html90
-rwxr-xr-xrt/share/html/Search/Bulk.html44
-rw-r--r--rt/share/html/Search/Calendar.html9
-rw-r--r--rt/share/html/Search/Chart8
-rw-r--r--rt/share/html/Search/Chart.html61
-rwxr-xr-xrt/share/html/Search/Edit.html16
-rw-r--r--rt/share/html/Search/Elements/Article64
-rw-r--r--rt/share/html/Search/Elements/BuildFormatString16
-rw-r--r--rt/share/html/Search/Elements/Chart82
-rw-r--r--rt/share/html/Search/Elements/ConditionRow2
-rw-r--r--rt/share/html/Search/Elements/DisplayOptions87
-rw-r--r--rt/share/html/Search/Elements/EditFormat31
-rw-r--r--rt/share/html/Search/Elements/EditQuery2
-rw-r--r--rt/share/html/Search/Elements/EditSearches21
-rw-r--r--rt/share/html/Search/Elements/EditSort142
-rw-r--r--rt/share/html/Search/Elements/Graph2
-rw-r--r--rt/share/html/Search/Elements/NewListActions2
-rw-r--r--rt/share/html/Search/Elements/PickBasics10
-rw-r--r--rt/share/html/Search/Elements/PickCFs36
-rw-r--r--rt/share/html/Search/Elements/PickCriteria7
-rw-r--r--rt/share/html/Search/Elements/PickCustomerFields8
-rw-r--r--rt/share/html/Search/Elements/ResultsRSSView6
-rw-r--r--rt/share/html/Search/Elements/SearchPrivacy2
-rw-r--r--rt/share/html/Search/Elements/SearchesForObject2
-rw-r--r--rt/share/html/Search/Elements/SelectAndOr2
-rw-r--r--rt/share/html/Search/Elements/SelectChartType2
-rw-r--r--rt/share/html/Search/Elements/SelectGroup4
-rw-r--r--rt/share/html/Search/Elements/SelectGroupBy2
-rw-r--r--rt/share/html/Search/Elements/SelectLinks2
-rw-r--r--rt/share/html/Search/Elements/SelectPersonType2
-rw-r--r--rt/share/html/Search/Elements/SelectSearchObject2
-rw-r--r--rt/share/html/Search/Elements/SelectSearchesForObjects8
-rw-r--r--rt/share/html/Search/Graph.html2
-rwxr-xr-xrt/share/html/Search/Results.html63
-rw-r--r--rt/share/html/Search/Results.rdf2
-rw-r--r--rt/share/html/Search/Results.tsv156
-rw-r--r--rt/share/html/Search/Simple.html47
-rw-r--r--rt/share/html/SelfService/Article/Display.html73
-rw-r--r--[-rwxr-xr-x]rt/share/html/SelfService/Article/Search.html (renamed from rt/share/html/User/Elements/DelegateRights)98
-rw-r--r--rt/share/html/SelfService/Article/autohandler58
-rwxr-xr-xrt/share/html/SelfService/Attachment/dhandler2
-rwxr-xr-xrt/share/html/SelfService/Closed.html4
-rwxr-xr-xrt/share/html/SelfService/Create.html6
-rwxr-xr-xrt/share/html/SelfService/CreateTicketInQueue.html2
-rwxr-xr-xrt/share/html/SelfService/Display.html18
-rwxr-xr-xrt/share/html/SelfService/Elements/GotoTicket6
-rwxr-xr-xrt/share/html/SelfService/Elements/Header6
-rwxr-xr-xrt/share/html/SelfService/Elements/MyRequests24
-rw-r--r--rt/share/html/SelfService/Elements/SearchArticle51
-rwxr-xr-xrt/share/html/SelfService/Elements/Tabs113
-rwxr-xr-xrt/share/html/SelfService/Error.html2
-rwxr-xr-xrt/share/html/SelfService/Prefs.html2
-rwxr-xr-xrt/share/html/SelfService/Update.html31
-rwxr-xr-xrt/share/html/SelfService/index.html4
-rw-r--r--rt/share/html/Ticket/Attachment/WithHeaders/dhandler4
-rwxr-xr-xrt/share/html/Ticket/Attachment/dhandler8
-rwxr-xr-xrt/share/html/Ticket/Create.html240
-rwxr-xr-xrt/share/html/Ticket/Display.html185
-rw-r--r--rt/share/html/Ticket/Elements/AddAttachments61
-rw-r--r--rt/share/html/Ticket/Elements/AddCustomers37
-rwxr-xr-xrt/share/html/Ticket/Elements/AddWatchers2
-rw-r--r--rt/share/html/Ticket/Elements/Bookmark6
-rwxr-xr-xrt/share/html/Ticket/Elements/BulkLinks2
-rw-r--r--rt/share/html/Ticket/Elements/ClickToShowHistory (renamed from rt/share/html/NoAuth/css/3.4-compat/body.css)43
-rwxr-xr-xrt/share/html/Ticket/Elements/EditBasics172
-rwxr-xr-xrt/share/html/Ticket/Elements/EditCustomFields56
-rw-r--r--rt/share/html/Ticket/Elements/EditCustomers45
-rwxr-xr-xrt/share/html/Ticket/Elements/EditDates2
-rwxr-xr-xrt/share/html/Ticket/Elements/EditPeople2
-rw-r--r--rt/share/html/Ticket/Elements/EditTransactionCustomFields42
-rwxr-xr-xrt/share/html/Ticket/Elements/EditWatchers23
-rw-r--r--rt/share/html/Ticket/Elements/FindAttachments2
-rw-r--r--rt/share/html/Ticket/Elements/FindTransactions (renamed from rt/share/html/Dashboards/Elements/ShowSubscription)47
-rw-r--r--rt/share/html/Ticket/Elements/FoldStanzaJS50
-rw-r--r--rt/share/html/Ticket/Elements/LoadTextAttachments2
-rwxr-xr-xrt/share/html/Ticket/Elements/PreviewScrips268
-rw-r--r--rt/share/html/Ticket/Elements/Reminders170
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowAttachments6
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowBasics47
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowCustomFields2
-rw-r--r--rt/share/html/Ticket/Elements/ShowCustomers17
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowDates49
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowDependencies2
-rw-r--r--rt/share/html/Ticket/Elements/ShowGnuPGStatus2
-rw-r--r--rt/share/html/Ticket/Elements/ShowGroupMembers2
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowHistory62
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowMembers2
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowMessageHeaders2
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowMessageStanza149
-rw-r--r--rt/share/html/Ticket/Elements/ShowParents2
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowPeople2
-rw-r--r--rt/share/html/Ticket/Elements/ShowPriority2
-rw-r--r--rt/share/html/Ticket/Elements/ShowQueue12
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowRequestor166
-rw-r--r--[-rwxr-xr-x]rt/share/html/Ticket/Elements/ShowRequestorExtraInfo (renamed from rt/share/html/User/Elements/Tabs)84
-rw-r--r--rt/share/html/Ticket/Elements/ShowRequestorTickets (renamed from rt/share/html/Tools/Elements/Tabs)67
-rw-r--r--rt/share/html/Ticket/Elements/ShowRequestorTicketsActive (renamed from rt/share/html/Elements/Logout)24
-rw-r--r--rt/share/html/Ticket/Elements/ShowRequestorTicketsAll53
-rw-r--r--rt/share/html/Ticket/Elements/ShowRequestorTicketsInactive60
-rw-r--r--rt/share/html/Ticket/Elements/ShowSimplifiedRecipients100
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowSummary68
-rw-r--r--rt/share/html/Ticket/Elements/ShowTime2
-rwxr-xr-xrt/share/html/Ticket/Elements/ShowTransaction62
-rw-r--r--rt/share/html/Ticket/Elements/ShowTransactionAttachments90
-rw-r--r--rt/share/html/Ticket/Elements/ShowUpdateStatus4
-rw-r--r--rt/share/html/Ticket/Elements/ShowUserEntry2
-rw-r--r--rt/share/html/Ticket/Elements/UpdateCc26
-rw-r--r--rt/share/html/Ticket/Forward.html30
-rw-r--r--rt/share/html/Ticket/GnuPG.html10
-rw-r--r--rt/share/html/Ticket/Graphs/Elements/EditGraphProperties4
-rw-r--r--rt/share/html/Ticket/Graphs/Elements/ShowGraph3
-rw-r--r--rt/share/html/Ticket/Graphs/Elements/ShowLegends2
-rw-r--r--rt/share/html/Ticket/Graphs/dhandler3
-rw-r--r--rt/share/html/Ticket/Graphs/index.html8
-rwxr-xr-xrt/share/html/Ticket/History.html8
-rwxr-xr-xrt/share/html/Ticket/Modify.html9
-rwxr-xr-xrt/share/html/Ticket/ModifyAll.html61
-rwxr-xr-xrt/share/html/Ticket/ModifyDates.html7
-rwxr-xr-xrt/share/html/Ticket/ModifyLinks.html9
-rwxr-xr-xrt/share/html/Ticket/ModifyPeople.html55
-rwxr-xr-xrt/share/html/Ticket/Reminders.html18
-rw-r--r--rt/share/html/Ticket/ShowEmailRecord.html4
-rwxr-xr-xrt/share/html/Ticket/Update.html245
-rw-r--r--rt/share/html/Ticket/autohandler20
-rw-r--r--rt/share/html/Tools/MyDay.html11
-rw-r--r--rt/share/html/Tools/MyReminders.html55
-rw-r--r--rt/share/html/Tools/Offline.html6
-rw-r--r--rt/share/html/Tools/Reports/CreatedByDates.html94
-rw-r--r--rt/share/html/Tools/Reports/ResolvedByDates.html95
-rw-r--r--rt/share/html/Tools/Reports/index.html76
-rw-r--r--rt/share/html/Tools/index.html37
-rwxr-xr-xrt/share/html/User/Delegation.html107
-rwxr-xr-xrt/share/html/User/Groups/Members.html160
-rwxr-xr-xrt/share/html/User/Groups/Modify.html157
-rwxr-xr-xrt/share/html/User/Prefs.html95
-rw-r--r--rt/share/html/Widgets/BulkEdit2
-rw-r--r--rt/share/html/Widgets/BulkProcess2
-rw-r--r--rt/share/html/Widgets/ComboBox6
-rw-r--r--rt/share/html/Widgets/FinalizeWidgetArguments9
-rw-r--r--rt/share/html/Widgets/Form/Boolean4
-rw-r--r--rt/share/html/Widgets/Form/Integer13
-rw-r--r--rt/share/html/Widgets/Form/Select6
-rw-r--r--rt/share/html/Widgets/Form/String4
-rw-r--r--rt/share/html/Widgets/SavedSearch10
-rw-r--r--rt/share/html/Widgets/SelectionBox2
-rw-r--r--rt/share/html/Widgets/TitleBox10
-rwxr-xr-xrt/share/html/Widgets/TitleBoxEnd2
-rwxr-xr-xrt/share/html/Widgets/TitleBoxStart27
-rwxr-xr-xrt/share/html/autohandler7
-rw-r--r--rt/share/html/dhandler4
-rwxr-xr-xrt/share/html/index.html37
-rwxr-xr-xrt/share/html/l4
-rw-r--r--rt/share/html/l_unsafe52
-rw-r--r--rt/share/html/m/_elements/footer10
-rw-r--r--rt/share/html/m/ticket/autohandler8
-rw-r--r--rt/share/html/m/ticket/create58
-rw-r--r--rt/share/html/m/ticket/show12
-rw-r--r--rt/share/html/m/tickets/search2
1187 files changed, 25984 insertions, 88479 deletions
diff --git a/rt/share/html/Admin/Articles/Classes/CustomFields.html b/rt/share/html/Admin/Articles/Classes/CustomFields.html
new file mode 100644
index 000000000..868c288b8
--- /dev/null
+++ b/rt/share/html/Admin/Articles/Classes/CustomFields.html
@@ -0,0 +1,64 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, Object => $Object, ObjectType => 'RT::Class', SubType => 'RT::Article' &>
+<%INIT>
+my $Object = RT::Class->new( $session{'CurrentUser'} );
+
+$Object->Load($id) || Abort( loc( "Couldn't load object [_1]", $id ) );
+my $FriendlySubTypes =
+ RT::CustomField->new( $session{'CurrentUser'} )
+ ->FriendlyLookupType( $Object->CustomFieldLookupType );
+
+my $title = loc( 'Edit Custom Fields for [_1]', $Object->Name );
+
+</%INIT>
+<%ARGS>
+$id => undef
+</%ARGS>
diff --git a/rt/share/html/Admin/Articles/Classes/GroupRights.html b/rt/share/html/Admin/Articles/Classes/GroupRights.html
new file mode 100644
index 000000000..092ea4b23
--- /dev/null
+++ b/rt/share/html/Admin/Articles/Classes/GroupRights.html
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => loc('Modify group rights for Class [_1]', $ClassObj->Name) &>
+<& /Elements/Tabs &>
+<& /Elements/ListActions, actions => \@results &>
+
+<form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
+<input type="hidden" name="id" value="<% $ClassObj->id %>" />
+
+ <& /Admin/Elements/EditRights, Context => $ClassObj, Principals => \@principals &>
+
+ <& /Elements/Submit, Label => loc('Save Changes') &>
+</form>
+<%INIT>
+
+if (!defined $id) {
+ $m->comp("/Elements/Error", Why => loc("No Class defined"));
+}
+
+my $ClassObj = RT::Class->new($session{'CurrentUser'});
+$ClassObj->Load($id) || $m->comp("/Elements/Error", Why => loc("Couldn't load Class [_1]",$id));
+
+my @results = ProcessACLs(\%ARGS);
+my @principals = GetPrincipalsMap($ClassObj, qw(System Groups));
+</%INIT>
+<%ARGS>
+$id => undef
+</%ARGS>
diff --git a/rt/share/html/Admin/Articles/Classes/Modify.html b/rt/share/html/Admin/Articles/Classes/Modify.html
new file mode 100644
index 000000000..8dbd2897d
--- /dev/null
+++ b/rt/share/html/Admin/Articles/Classes/Modify.html
@@ -0,0 +1,199 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& /Elements/ListActions, actions => \@results &>
+
+<form name="ModifyClass" action="<% RT->Config->Get('WebPath') %>/Admin/Articles/Classes/Modify.html" method="post">
+<input type="hidden" name="Submitted" value="1" />
+%if ($Create ) {
+<input type="hidden" name="id" value="new" />
+% } else {
+<input type="hidden" name="id" value="<%$ClassObj->Id%>" />
+% }
+
+<table>
+<tr>
+<td align="right"><&|/l&>Class Name</&>: </td>
+<td><input name="Name" value="<% $ClassObj->Name || $Name || ''%>" /></td>
+</tr>
+<tr>
+<td align="right"><&|/l&>Description</&>:</td>
+<td><input name="Description" value="<% $ClassObj->Description || $Description || '' %>" size=60 /></td>
+</tr>
+<tr>
+<td>&nbsp;</td>
+<td><input type="checkbox" name="Enabled" value="1" <%$EnabledChecked%>> <&|/l&>Enabled (Unchecking this box disables this class)</&></td>
+</tr>
+<tr>
+<td>&nbsp;</td>
+<td><input type="checkbox" name="HotList" value="1" <%$HotListChecked%>> <&|/l&>All Articles in this class should be listed in a dropdown of the ticket reply page</&></td>
+</tr>
+</table>
+
+<h3>When inserting articles in this class into emails:</h3>
+<ul>
+<li><input type="checkbox" name="Include-Name" value="1" <% $include{Name} %>> Include article name</li>
+<li><input type="checkbox" name="Include-Summary" value="1" <% $include{Summary} %>> Include article summary</li>
+% if ( $cfs ) {
+% while (my $cf = $cfs->Next) {
+<li>Include custom field '<% $cf->Name %>'
+ <ul>
+ <li><input type="checkbox" name="Include-CF-Title-<% $cf->Id %>" <% $include{"CF-Title-".$cf->Id} %> />Title</li>
+ <li><input type="checkbox" name="Include-CF-Value-<% $cf->Id %>" <% $include{"CF-Value-".$cf->Id} %> />Value</li>
+ </ul>
+</li>
+% } }
+</ul>
+
+%$m->callback( CallbackName => 'BeforeSubmit', CustomFields => $cfs, ClassObj => $ClassObj );
+
+% if ( $Create ) {
+<& /Elements/Submit, Label => loc('Create') &>
+% } else {
+<& /Elements/Submit, Label => loc('Save Changes') &>
+% }
+</form>
+
+<%INIT>
+
+my $ClassObj = RT::Class->new($session{'CurrentUser'});
+my ($title, @results, $Disabled);
+
+if ($Create) {
+ $title = loc("Create a Class");
+} else {
+ my ( $val, $msg );
+ if ($id eq 'new') {
+ ($val, $msg) = $ClassObj->Create(Name => $Name);
+ if ( $val ) {
+ push @results, $msg;
+ }
+ else {
+ push @results, loc('Class could not be created: [_1]', $msg);
+ }
+ } else {
+ $ClassObj->Load($id) || $ClassObj->Load($Name) || $m->comp("/Elements/Error", Why => "Couldn't load class '$Name'");
+ $val = $ClassObj->id;
+ }
+
+ if ( $val ) {
+ $title = loc('Modify the Class [_1]', $ClassObj->Name);
+ }
+ else {
+ $title = loc("Create a Class");
+ $Create = 1;
+ }
+}
+
+if ($ClassObj->Id()) {
+ $ARGS{HotList} ||= 0 if $Submitted;
+ my @attribs= qw(Description Name HotList);
+ $m->callback( CallbackName => 'AttributeList', Attributes => \@attribs, ARGSRef => \%ARGS );
+ push @results, UpdateRecordObject( AttributesRef => \@attribs,
+ Object => $ClassObj,
+ ARGSRef => \%ARGS);
+}
+
+#we're asking about enabled on the web page but really care about disabled.
+if ((defined $Enabled && $Enabled == 1) or (not defined $Enabled and $Create)) {
+ $Disabled = 0;
+} else {
+ $Disabled = 1;
+}
+
+my %include = (Name => 1, Summary => 1);
+
+my $cfs;
+if ( $ClassObj->id ) {
+ $cfs = $ClassObj->ArticleCustomFields;
+ $include{"CF-Title-".$_->Id} = $include{"CF-Value-".$_->Id} = 1 while $_ = $cfs->Next;
+}
+
+if ( $ClassObj->id && $Submitted ) {
+ if ( $Disabled != $ClassObj->Disabled) {
+ my ($code, $msg) = $ClassObj->SetDisabled($Disabled);
+ push @results, loc('Enabled status [_1]', loc_fuzzy($msg));
+ }
+
+ for (keys %include) {
+ if ($ARGS{"Include-$_"}) {
+ $ClassObj->DeleteAttribute("Skip-$_");
+ } else {
+ $ClassObj->SetAttribute(Name => "Skip-$_", Content => 1);
+ }
+ }
+}
+
+# This code does automatic redirection if any updates happen.
+MaybeRedirectForResults(
+ Actions => \@results,
+ Arguments => { id => $ClassObj->Id },
+) if $ClassObj->id;
+
+
+if ( $ClassObj->id ) {
+ $include{$_} = not $ClassObj->FirstAttribute("Skip-$_") for keys %include;
+}
+
+$include{$_} = $include{$_} ? " CHECKED" : "" for keys %include;
+
+my $EnabledChecked = ($Create ? $Disabled : $ClassObj->Disabled()) ? "" : "CHECKED";
+my $HotListChecked = $ClassObj->id && $ClassObj->HotList ? "CHECKED" : "";
+</%INIT>
+
+
+<%ARGS>
+$id => undef
+$result => undef
+$Name => undef
+$Create => undef
+$Description => undef
+$Submitted => undef
+$Enabled => undef
+</%ARGS>
diff --git a/rt/share/html/Admin/Articles/Classes/Objects.html b/rt/share/html/Admin/Articles/Classes/Objects.html
new file mode 100644
index 000000000..f7be9f598
--- /dev/null
+++ b/rt/share/html/Admin/Articles/Classes/Objects.html
@@ -0,0 +1,154 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& /Elements/ListActions, actions => \@results &>
+
+<form action="Objects.html" method="post">
+<input type="hidden" class="hidden" name="id" value="<% $id %>" />
+
+% if ( $is_global ) {
+<h2><&|/l&>Applies to all objects</&></h2>
+<input type="checkbox" name="RemoveClass-<% $Class->id %>" value="0" />
+<&|/l&>check this box to remove this Class globally and be able to choose specific Queues.</&>
+% } else {
+<h2><&|/l&>Apply globally</&></h2>
+
+<input type="checkbox" name="AddClass-<% $Class->id %>" value="0" />
+<&|/l&>check this box to apply this Class globally to all Queues.</&>
+
+<h2><&|/l&>Selected Queues</&></h2>
+<& /Elements/CollectionList,
+ OrderBy => 'id',
+ Order => 'ASC',
+ %ARGS,
+ Collection => $applied,
+ Rows => 0,
+ Page => 1,
+ Format => $format,
+ DisplayFormat => "'__CheckBox.{RemoveClass-". $Class->id ."}__',". $format,
+ AllowSorting => 0,
+ ShowEmpty => 0,
+ PassArguments => [
+ qw(id Format Rows Page Order OrderBy),
+ ],
+&>
+
+<h2><&|/l&>Unselected Queues</&></h2>
+<& /Elements/CollectionList,
+ OrderBy => 'id',
+ Order => 'ASC',
+ %ARGS,
+ Collection => $not_applied,
+ Rows => 50,
+ Format => $format,
+ DisplayFormat => "'__CheckBox.{AddClass-". $Class->id ."}__',". $format,
+ AllowSorting => 1,
+ ShowEmpty => 0,
+ PassArguments => [
+ qw(id Format Rows Page Order OrderBy),
+ ],
+&>
+
+% }
+
+<& /Elements/Submit, Name => 'UpdateObjs' &>
+</form>
+
+<%INIT>
+my $Class = RT::Class->new($session{'CurrentUser'});
+$Class->Load($id) or Abort(loc("Could not load Class [_1]"), $id);
+
+my (@results);
+
+if ( $UpdateObjs ) {
+ if ( defined (my $del = $ARGS{'RemoveClass-'.$Class->id}) ) {
+ foreach my $id ( ref $del? (@$del) : ($del) ) {
+ my $object = RT::Queue->new( $session{'CurrentUser'} );
+ if ( $id ) {
+ $object->Load( $id );
+ next unless $object->id;
+ }
+
+ my ($status, $msg) = $Class->RemoveFromObject( $object );
+ push @results, $msg;
+ }
+ }
+ if ( defined (my $add = $ARGS{'AddClass-'.$Class->id}) ) {
+ foreach my $id ( ref $add? (@$add) : ($add) ) {
+ my $object = RT::Queue->new( $session{'CurrentUser'} );
+ if ( $id ) {
+ $object->Load( $id );
+ next unless $object->id;
+ }
+
+ my ($status, $msg) = $Class->AddToObject( $object );
+ push @results, $msg;
+ }
+ }
+}
+
+my $is_global = $Class->IsApplied(0);
+
+my $applied = $Class->AppliedTo;
+my $not_applied = $Class->NotAppliedTo;
+
+my $collection_class = ref($applied);
+$collection_class =~ s/^RT:://;
+
+my $format = RT->Config->Get('AdminSearchResultFormat')->{$collection_class}
+ || '__id__,__Name__';
+
+my $title = loc('Modify associated objects for [_1]', $Class->Name);
+
+</%INIT>
+<%ARGS>
+$id => undef
+$FindDisabledObjects => 0
+$UpdateObjs => 0
+</%ARGS>
diff --git a/rt/share/html/User/Groups/index.html b/rt/share/html/Admin/Articles/Classes/Topics.html
index 08c2b506a..5418d81a5 100755..100644
--- a/rt/share/html/User/Groups/index.html
+++ b/rt/share/html/Admin/Articles/Classes/Topics.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,23 +45,24 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => $title &>
-<& /User/Elements/GroupTabs,
- current_subtab => 'User/Groups/index.html',
- Title => $title &>
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
-<% $title %>:<br />
-<ul>
-%while ( my $Group = $Groups->Next) {
-<li><a href="Modify.html?id=<%$Group->id%>"><%$Group->Name || loc('(empty)')%></a><br />
-%}
-</ul>
+<& /Admin/Articles/Elements/Topics, title => $title, RootObj => $ClassObj, %ARGS &>
<%INIT>
-my $Groups = RT::Groups->new($session{'CurrentUser'});
-$Groups->LimitToPersonalGroupsFor($session{'CurrentUser'}->PrincipalId());
-my $title = loc('Personal Groups');
+
+my $ClassObj = RT::Class->new($session{'CurrentUser'});
+$ClassObj->Load($ARGS{'id'}) || $m->comp("/Elements/Error", Why => "Couldn't load class '$id'");
+
+my $title = $Modify
+ ? loc("Modify topic for [_1]", $ClassObj->Name)
+ : loc("Edit topic hierarchy for [_1]", $ClassObj->Name);
</%INIT>
+
+
<%ARGS>
+$id => undef
+$Modify => ""
</%ARGS>
diff --git a/rt/share/html/Admin/Elements/ToolTabs b/rt/share/html/Admin/Articles/Classes/UserRights.html
index c3cb6e397..c1aedeb33 100755..100644
--- a/rt/share/html/Admin/Elements/ToolTabs
+++ b/rt/share/html/Admin/Articles/Classes/UserRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,38 +45,28 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
- Title => $Title,
- current_tab => 'Admin/Tools/',
- subtabs => $tabs,
- current_subtab => $current_tab,
-&>
+<& /Admin/Elements/Header, Title => loc('Modify user rights for class [_1]', $ClassObj->Name) &>
+<& /Elements/Tabs &>
+<& /Elements/ListActions, actions => \@results &>
+<form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
+<input type="hidden" name="id" value="<% $ClassObj->id %>" />
+ <& /Admin/Elements/EditRights, Context => $ClassObj, Principals => \@principals &>
+
+ <& /Elements/Submit, Label => loc('Save Changes') &>
<%INIT>
- my $tabs = {
- A => { title => loc('System Configuration'),
- path => 'Admin/Tools/Configuration.html',
- },
- E => { title => loc('Shredder'),
- path => 'Admin/Tools/Shredder/',
- },
- };
+my @results = ProcessACLs(\%ARGS);
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
+if (!defined $id) {
+ $m->comp("/Elements/Error", Why => loc("No Class defined"));
+}
- foreach my $tab ( values %{$tabs} ) {
- next unless $tab->{'path'} eq $current_tab;
+my $ClassObj = RT::Class->new($session{'CurrentUser'});
+$ClassObj->Load($id) || $m->comp("/Elements/Error", Why => loc("Couldn't load Class [_1]",$id));
- $tab->{"subtabs"} = $subtabs;
- $tab->{"current_subtab"} = $current_subtab;
- }
-</%INIT>
+my @principals = GetPrincipalsMap($ClassObj, 'Users');
+</%INIT>
<%ARGS>
$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$Title => undef
</%ARGS>
diff --git a/rt/share/html/User/Elements/GroupTabs b/rt/share/html/Admin/Articles/Classes/index.html
index 3704087ed..8c32677c9 100755..100644
--- a/rt/share/html/User/Elements/GroupTabs
+++ b/rt/share/html/Admin/Articles/Classes/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,40 +45,47 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /User/Elements/Tabs,
- subtabs => $tabs,
- current_tab => 'User/Groups/',
- current_subtab => $current_subtab,
- Title => $Title &>
+<& /Admin/Elements/Header, Title => loc("Select a Class") &>
+<& /Elements/Tabs &>
+<h1><%$caption%>:</h1>
+<p><&|/l&>Select a Class</&>:</p>
+% unless ($Classes->Count) {
+<em><&|/l&>No Classes matching search criteria found.</&></em>
+% } else {
+<& /Elements/CollectionList,
+ OrderBy => 'Name',
+ Order => 'ASC',
+ %ARGS,
+ Format => $Format,
+ Collection => $Classes,
+ AllowSorting => 1,
+ PassArguments => [qw( Format Rows Page Order OrderBy FindDisabledClasses )],
+&>
+% }
+
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Articles/Classes/index.html">
+<input type="checkbox" name="FindDisabledClasses" value="1" /><&|/l&>Include disabled classes in listing.</&><br />
+<div align="right"><input type="submit" value="<&|/l&>Go!</&>" /></div>
+</form>
<%INIT>
-my $tabs;
-if ( $GroupObj and $GroupObj->id ) {
- $tabs->{"this"} = {
- title => $GroupObj->Name,
- path => "User/Groups/Modify.html?id=" . $GroupObj->id,
- subtabs => {
- Basics => { title => loc('Basics'),
- path => "User/Groups/Modify.html?id=" . $GroupObj->id
- },
+my $caption;
+my $Classes = RT::Classes->new($session{'CurrentUser'});
- Members => { title => loc('Members'),
- path => "User/Groups/Members.html?id=" . $GroupObj->id
- },
+if ($FindDisabledClasses) {
+ $caption = loc("All Classes");
+ $Classes->{'find_disabled_rows'} = 1;
+ $Classes->UnLimit();
+} else {
+ $caption = loc("Enabled Classes");
+ $Classes->LimitToEnabled();
- } };
- $tabs->{'this'}->{'current_subtab'} = $current_subtab;
- $current_subtab = "User/Groups/Modify.html?id=" . $GroupObj->id,
}
-$tabs->{"A"} = { title => loc('Select group'),
- path => "User/Groups/index.html" };
-$tabs->{"B"} = { title => loc('New group'),
- path => "User/Groups/Modify.html?Create=1",
- separator => 1 };
+
+$Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Classes'};
</%INIT>
<%ARGS>
-$GroupObj => undef
-$current_subtab => undef
-$Title => undef
+$FindDisabledClasses => 0
+$Format => undef
</%ARGS>
diff --git a/rt/share/html/Admin/Articles/Elements/Topics b/rt/share/html/Admin/Articles/Elements/Topics
new file mode 100644
index 000000000..43ca9562c
--- /dev/null
+++ b/rt/share/html/Admin/Articles/Elements/Topics
@@ -0,0 +1,215 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/ListActions, actions => \@results &>
+
+<form action="<%RT->Config->Get('WebPath')%><% $m->request_comp->path |n %>" method="post">
+<input type="hidden" name="id" value="<%$RootObj->Id%>" />
+
+% if (!$Modify) {
+<table>
+<tr>
+<td><&|/l&>Topic Name</&></td>
+<td><input type="text" name="Name" size="30" /></td>
+</tr>
+<tr>
+<td><&|/l&>Description</&></td>
+<td><input type="text" name="Description" size="50" /></td>
+</tr>
+</table>
+% } else {
+<a href="Topics.html">New topic</a>
+% }
+
+<& .tree, Element => $tree, Action => $Modify ? "Move" : "Add", Prefix => $Modify ? "Topic-$Modify-Parent" : "Insert", RootObj => $RootObj, Modify => $Modify &>
+
+</form>
+
+<%def .edit>
+&nbsp;
+<table style="margin-top: -0.75em">
+<tr>
+ <td>Topic Name:</td>
+ <td><input type="text" name="Topic-<%$topic->Id%>-Name" size="20" value="<%$topic->Name%>" /></td>
+ <td><input type="submit" name="Update" value="Update"><br /></td>
+</tr>
+<tr>
+ <td>Description:</td>
+ <td> <input type="text" name="Topic-<%$topic->Id%>-Description" size="20" value="<%$topic->Description%>" /></td>
+ <td><input type="submit" name="Delete-Topic-<%$topic->Id%>" value="Delete" /></td>
+</tr>
+</table>
+<%args>
+$topic
+</%args>
+</%def>
+
+<%def .tree>
+% my $topic = $Element->getNodeValue;
+% unless ($Element->isRoot) {
+% if ($Modify and $topic->Id == $Modify) {
+% $Action = "";
+<& .edit, topic => $topic &>
+% } else {
+<a href="<%RT->Config->Get('WebPath')%><% $m->request_comp->path |n %>?id=<%$RootObj->Id%>&Modify=<%$topic->Id%>"
+ title="<%$topic->Description%>"><%$topic->Name || loc("(no name)") %></a>
+% }
+% }
+<ul>
+% for my $e (sort {$a->getNodeValue->Name cmp $b->getNodeValue->Name} $Element->getAllChildren) {
+<li><& .tree, Element => $e, Action => $Action, Prefix => $Prefix, RootObj => $RootObj, Modify => $Modify &></li>
+% }
+% if ($Action) {
+% unless ($Action eq "Move" and grep {$_->getNodeValue->Id == $Modify} $Element->getAllChildren) {
+<li><input type="submit" name="<%$Prefix%>-<%$topic eq "root" ? 0 : $topic->Id%>" value="<% $Action eq 'Move' ? loc('Move here') : loc('Add here') %>" /></li>
+% }
+% }
+</ul>
+<%args>
+$Element
+$Action
+$Prefix
+$RootObj
+$Modify
+</%args>
+</%def>
+
+<%INIT>
+
+my @results;
+
+for my $k (keys %ARGS) {
+ if ($k =~ /^Topic-(\d+)-(Name|Description)/) {
+ my $topic = RT::Topic->new($session{'CurrentUser'});
+ $topic->Load($1);
+ if ($topic->Id) {
+ next if $ARGS{$k} eq $topic->$2;
+ my $proc = "Set$2";
+ my ($val, $msg) = $topic->$proc($ARGS{$k});
+ push @results, $msg;
+ } else {
+ $m->comp("/Elements/Error", Why => loc("Topic not found"));
+ }
+ } elsif ($k =~ /^Topic-(\d+)-Parent-(\d+)/) {
+ my $topic = RT::Topic->new($session{'CurrentUser'});
+ $topic->Load($1);
+ if ($topic->Id) {
+ next if $2 eq $topic->Parent;
+ my $old = $topic->Parent;
+ my $new = "$2";
+ my ($val, $msg) = $topic->setParent($new);
+ push @results, $msg;
+ } else {
+ $m->comp("/Elements/Error", Why => loc("Topic not found"));
+ }
+ } elsif ($k =~ /^Insert-(\d+)/) {
+ my $topic = RT::Topic->new($session{'CurrentUser'});
+ my ($id, $msg) = $topic->Create(
+ Parent => $1,
+ Name => $ARGS{'Name'},
+ Description => $ARGS{'Description'},
+ ObjectType => ref($RootObj),
+ ObjectId => $RootObj->Id,
+ );
+ push @results, $msg;
+ }
+}
+for my $k (keys %ARGS) {
+ next unless $k =~ /^Delete-Topic-(\d+)/;
+ my $topic = RT::Topic->new($session{'CurrentUser'});
+ $topic->Load($1);
+ if ($topic->Id) {
+ my ($val, $msg) = $topic->DeleteAll();
+ push @results, $msg;
+ } else {
+ $m->comp("/Elements/Error", Why => loc("Topic not found"));
+ }
+}
+
+my $topics = RT::Topics->new($session{'CurrentUser'});
+$topics->LimitToObject($RootObj);
+$topics->OrderByCols({FIELD => 'Parent'}, {FIELD => 'id'});
+
+use Tree::Simple;
+my $tree = Tree::Simple->new(Tree::Simple->ROOT);
+my %lookup = (0 => $tree);
+
+my @todo;
+while (my $topic = $topics->Next) {
+ push @todo, $topic;
+}
+
+{
+ my $changed = 0;
+ my @work = @todo;
+ @todo = ();
+ for my $topic (@work) {
+ if (defined $lookup{$topic->Parent}) {
+ $lookup{$topic->Id} = Tree::Simple->new($topic, $lookup{$topic->Parent});
+ $changed = 1;
+ } else {
+ push @todo, $topic;
+ }
+ }
+ redo unless $changed == 0;
+}
+
+for my $topic (@todo) {
+ $topic->setParent(0);
+ $lookup{$topic->Id} = Tree::Simple->new($topic, $tree);
+ push @results, "Reparented orphan ".$topic->Id." to root";
+}
+
+</%INIT>
+
+
+<%ARGS>
+$RootObj => undef
+$title => ""
+$Modify => ""
+</%ARGS>
+
diff --git a/rt/share/html/Admin/Articles/index.html b/rt/share/html/Admin/Articles/index.html
new file mode 100644
index 000000000..d697dc3e0
--- /dev/null
+++ b/rt/share/html/Admin/Articles/index.html
@@ -0,0 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('Article Administration') &>
+<& /Elements/Tabs &>
+<& /Elements/ListMenu, menu => Menu()->child('tools')->child('config')->child('articles') &>
diff --git a/rt/share/html/Admin/CustomFields/GroupRights.html b/rt/share/html/Admin/CustomFields/GroupRights.html
index 2c516d0b2..31c09afc0 100644
--- a/rt/share/html/Admin/CustomFields/GroupRights.html
+++ b/rt/share/html/Admin/CustomFields/GroupRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,54 +46,16 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/CustomFieldTabs,
- id => $id,
- current_tab => "Admin/CustomFields/GroupRights.html?id=".$id,
- Title => $title
-&>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="GroupRights.html">
+ <form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
<input type="hidden" class="hidden" name="id" value="<% $CustomFieldObj->id %>" />
-
-
-<h1><&|/l&>System groups</&></h1>
-<table>
-% my $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToSystemInternalGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% loc($Group->Type) %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $CustomFieldObj &>
- </td>
- </tr>
-% }
-</table>
-<h1><&|/l&>User defined groups</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToUserDefinedGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% $Group->Name %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $CustomFieldObj &>
- </td>
- </tr>
-% }
-</table>
-
- <& /Elements/Submit, Caption => loc("Be sure to save your changes"), Reset => 1 &>
-
+
+ <& /Admin/Elements/EditRights, Context => $CustomFieldObj, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
</form>
-
+
<%INIT>
if (!defined $id) {
@@ -103,10 +65,12 @@ if (!defined $id) {
my $CustomFieldObj = RT::CustomField->new($session{'CurrentUser'});
$CustomFieldObj->Load($id) || $m->comp("/Elements/Error", Why => loc("Couldn't load CustomField [_1]",$id));
-my @results = ProcessACLChanges( \%ARGS );
+my @results = ProcessACLs( \%ARGS );
my $title = loc('Modify group rights for custom field [_1]', $CustomFieldObj->Name);
-
+
+# Principal collections
+my @principals = GetPrincipalsMap($CustomFieldObj, qw(System Groups));
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/CustomFields/Modify.html b/rt/share/html/Admin/CustomFields/Modify.html
index 249fdb1b4..4ed86b60b 100644
--- a/rt/share/html/Admin/CustomFields/Modify.html
+++ b/rt/share/html/Admin/CustomFields/Modify.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,23 +46,20 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/CustomFieldTabs,
- id => $CustomFieldObj->Id ,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="Modify.html" name="ModifyCustomField">
+<form method="post" action="Modify.html" name="ModifyCustomField" id="ModifyCustomField">
<input type="hidden" class="hidden" name="id" value="<% $id %>" />
<table>
<tr><td class="label"><&|/l&>Name</&></td>
-<td><input name="Name" value="<% $CustomFieldObj->Name || '' %>" size="20" /></td></tr>
+<td><input name="Name" value="<% $CustomFieldObj->Name || $Name || '' %>" size="20" /></td></tr>
<tr><td class="label"><&|/l&>Description</&></td>
-<td><input name="Description" value="<% $CustomFieldObj->Description || '' %>" size="80" /></td></tr>
+<td><input name="Description" value="<% $CustomFieldObj->Description || $Description || '' %>" size="80" /></td></tr>
<tr><td class="label"><&|/l&>Type</&></td>
<td><& /Admin/Elements/SelectCustomFieldType,
@@ -70,6 +67,19 @@
Default => $CustomFieldObj->TypeComposite, &>
</td></tr>
+% if ( $CustomFieldObj->Id and $CustomFieldObj->HasRenderTypes ) {
+<tr>
+ <td class="label"><&|/l&>Render Type</&></td>
+ <td>
+ <& /Admin/Elements/SelectCustomFieldRenderType,
+ Name => "RenderType",
+ TypeComposite => $CustomFieldObj->TypeComposite,
+ Default => $CustomFieldObj->RenderType,
+ BasedOn => $CustomFieldObj->BasedOnObj->id, &>
+ </td>
+</tr>
+% }
+
% if ( $CustomFieldObj->Id and $CustomFieldObj->IsSelectionType and RT->Config->Get('CustomFieldValuesSources') and ( scalar(@{RT->Config->Get('CustomFieldValuesSources')}) > 0 ) ) {
<tr><td class="label"><&|/l&>Field values source:</&></td><td>
<& /Admin/Elements/EditCustomFieldValuesSource, CustomField => $CustomFieldObj &>
@@ -79,7 +89,7 @@
<tr><td class="label"><&|/l&>Applies to</&></td>
<td><& /Admin/Elements/SelectCustomFieldLookupType,
Name => "LookupType",
- Default => $CustomFieldObj->LookupType, &>
+ Default => $CustomFieldObj->LookupType || $LookupType, &>
</td></tr>
% if ( $CustomFieldObj->Id
@@ -90,42 +100,44 @@
</td></tr>
% }
-<tr><td class="label"><&|/l&>Validation</&></td>
+<tr class="edit_validation"><td class="label"><&|/l&>Validation</&></td>
<td><& /Widgets/ComboBox,
Name => 'Pattern',
- Default => $CustomFieldObj->Pattern,
+ Default => $CustomFieldObj->Pattern || $Pattern,
Size => 20,
Values => \@CFvalidations,
&></td></tr>
<tr><td class="label"><&|/l&>Link values to</&></td><td>
-<input size="60" name="LinkValueTo" value="<% $CustomFieldObj->LinkValueTo || '' %>" />
+<input size="60" name="LinkValueTo" value="<% $CustomFieldObj->LinkValueTo || $LinkValueTo || '' %>" />
<div class="hints">
<&|/l&>RT can make this custom field's values into hyperlinks to another service.</&>
<&|/l&>Fill in this field with a URL.</&>
-<&|/l&>RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively</&>
+<&|/l_unsafe, '<tt>__id__</tt>', '<tt>__CustomField__</tt>' &>RT will replace [_1] and [_2] with the record's id and the custom field's value, respectively.</&>
</div></td></tr>
<tr><td class="label"><&|/l&>Include page</&></td><td>
-<input size="60" name="IncludeContentForValue" value="<% $CustomFieldObj->IncludeContentForValue || '' %>" />
+<input size="60" name="IncludeContentForValue" value="<% $CustomFieldObj->IncludeContentForValue || $IncludeContentForValue || '' %>" />
<div class="hints">
<&|/l&>RT can include content from another web service when showing this custom field.</&>
<&|/l&>Fill in this field with a URL.</&>
-<&|/l&>RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively</&>
+<&|/l_unsafe, '<tt>__id__</tt>', '<tt>__CustomField__</tt>' &>RT will replace [_1] and [_2] with the record's id and the custom field's value, respectively.</&>
<i><&|/l&>Some browsers may only load content from the same domain as your RT server.</&></i>
</div></td></tr>
% if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) {
-<tr><td class="label"><&|/l&>Categories are based on</&></td><td>
+<tr class="categoriesbasedon"><td class="label"><&|/l&>Categories are based on</&></td><td>
<& /Admin/Elements/SelectCustomField,
Name => "BasedOn",
LookupType => $CustomFieldObj->LookupType,
- Default => $CustomFieldObj->BasedOnObj,
+ Default => $CustomFieldObj->BasedOnObj || $BasedOn,
Not => $CustomFieldObj->id,
&>
</td></tr>
% }
+% $m->callback(CallbackName => 'BeforeEnabled', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations);
+
<tr><td class="label">&nbsp;</td><td>
<input type="checkbox" class="checkbox" name="Required" value="1" <% $RequiredChecked |n%> />
<&|/l&>Required for ticket resolution</&>
@@ -137,6 +149,8 @@
<&|/l&>Enabled (Unchecking this box disables this custom field)</&>
</td></tr>
+% $m->callback(CallbackName => 'EndOfTable', CustomField => $CustomFieldObj, CFvalidations => \@CFvalidations);
+
</table>
% if ( $CustomFieldObj->Id && $CustomFieldObj->IsSelectionType && !$CustomFieldObj->IsExternalValues ) {
@@ -151,15 +165,15 @@
</form>
<%INIT>
-my ($title, @results, $Disabled);
+my ($title, @results);
my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} );
-my $current_tab = 'Admin/CustomFields/Modify.html';
+
+$m->callback(CallbackName => 'Initial', Pattern => \$Pattern, ARGSRef => \%ARGS);
unless ( $id ) {
$title = loc("Create a CustomField");
$id = 'new';
- $current_tab .= '?Create=1';
}
else {
if ( $id eq 'new' ) {
@@ -172,20 +186,27 @@ else {
LinkValueTo => $LinkValueTo,
IncludeContentForValue => $IncludeContentForValue,
BasedOn => $BasedOn,
+ Disabled => !$Enabled,
);
- $m->comp( "/Elements/Error", Why => loc( "Could not create CustomField", $msg ) ) unless $val;
- push @results, $msg;
- $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name );
+ if (!$val) {
+ push @results, loc("Could not create CustomField: [_1]", $msg);
+ $title = loc( 'Create a CustomField');
+ }
+ else {
+ push @results, loc("Object created");
+ $title = loc( 'Created CustomField [_1]', $CustomFieldObj->Name );
+ }
} else {
- $CustomFieldObj->Load( $id ) || $m->comp("/Elements/Error", Why => loc('No CustomField') );
+ push @results, loc('No CustomField')
+ unless $CustomFieldObj->Load( $id );
+
$title = loc( 'Editing CustomField [_1]', $CustomFieldObj->Name );
}
- $current_tab .= "?id=$id";
}
if ( $ARGS{'Update'} && $id ne 'new' ) {
#we're asking about enabled on the web page but really care about disabled.
- $ARGS{'Disabled'} = $Disabled = $Enabled? 0 : 1;
+ $ARGS{'Disabled'} = $Enabled? 0 : 1;
$ARGS{'Required'} ||= 0;
@@ -197,7 +218,32 @@ if ( $ARGS{'Update'} && $id ne 'new' ) {
);
$CustomFieldObj->SetValuesClass( $ValuesClass );
- $CustomFieldObj->SetBasedOn( $BasedOn );
+ # Set the render type if we have it, but unset it if the new type doesn't
+ # support render types
+ if ( $CustomFieldObj->HasRenderTypes($TypeComposite) ) {
+ my $original = $CustomFieldObj->RenderType;
+
+ if ( defined $RenderType and $RenderType ne $original ) {
+ # It's changed! Let's update it.
+ my ($good, $msg) = $CustomFieldObj->SetRenderType( $RenderType );
+
+ if ( $good ) {
+ $msg = loc("[_1] changed from '[_2]' to '[_3]'",
+ loc("Render Type"), $original, $RenderType );
+ }
+
+ push @results, $msg;
+ }
+ }
+ else {
+ # Delete it if we no longer support render types
+ $CustomFieldObj->SetRenderType( undef );
+ }
+
+ if (($CustomFieldObj->BasedOn||'') ne ($BasedOn||'')) {
+ my ($good, $msg) = $CustomFieldObj->SetBasedOn( $BasedOn );
+ push @results, $msg;
+ }
$CustomFieldObj->SetUILocation( $UILocation );
@@ -227,10 +273,12 @@ if ( $ARGS{'Update'} && $id ne 'new' ) {
$ARGS{$param} =~ s/^\s+//;
$ARGS{$param} =~ s/\s+$//;
next if ($value->$attr()||'') eq ($ARGS{$param}||'');
+
my $mutator = "Set$attr";
my ($id, $msg) = $value->$mutator( $ARGS{$param} );
push (@results, $msg);
}
+ $m->callback(CallbackName => 'AfterUpdateCustomFieldValue', CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $value, ARGSRef => \%ARGS );
}
# Add any new values
@@ -242,11 +290,23 @@ if ( $ARGS{'Update'} && $id ne 'new' ) {
$_ => $ARGS{ $paramtag ."-new-$_" } } qw/ Name Description SortOrder Category/
);
push (@results, $msg);
+
+ my $cfv = RT::CustomFieldValue->new( $session{CurrentUser} );
+ $cfv->Load($id);
+ $m->callback(CallbackName => 'AfterCreateCustomFieldValue',
+CustomFieldObj => $CustomFieldObj, CustomFieldValueObj => $cfv, ARGSRef => \%ARGS );
}
}
$id = $CustomFieldObj->id if $CustomFieldObj->id;
+# This code does automatic redirection if any updates happen.
+MaybeRedirectForResults(
+ Actions => \@results,
+ Arguments => { id => $id },
+) if $CustomFieldObj->id;
+
+
my $EnabledChecked = qq[checked="checked"];
$EnabledChecked = '' if $CustomFieldObj->Disabled;
@@ -274,6 +334,7 @@ $Name => undef
$SetEnabled => undef
$Enabled => 0
$ValuesClass => 'RT::CustomFieldValues'
+$RenderType => undef
$LinkValueTo => undef
$IncludeContentForValue => undef
$BasedOn => undef
diff --git a/rt/share/html/Admin/CustomFields/Objects.html b/rt/share/html/Admin/CustomFields/Objects.html
index 8fb00a812..91dc5dcfb 100644
--- a/rt/share/html/Admin/CustomFields/Objects.html
+++ b/rt/share/html/Admin/CustomFields/Objects.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/CustomFieldTabs,
- id => $id,
- current_tab => "Admin/CustomFields/Objects.html?id=".$id,
- Title => $title
- &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
@@ -67,6 +63,7 @@
<input type="checkbox" name="AddCustomField-<% $CF->id %>" value="0" />
<&|/l&>check this box to apply this Custom Field to all objects.</&>
+% unless ( $CF->ApplyGlobally ) {
<h2><&|/l&>Selected objects</&></h2>
<& /Elements/CollectionList,
OrderBy => 'id',
@@ -102,12 +99,14 @@
% }
+% }
+
<& /Elements/Submit, Name => 'UpdateObjs' &>
</form>
<%INIT>
my $CF = RT::CustomField->new($session{'CurrentUser'});
-$CF->Load($id) or Abort(loc("Could not load CustomField [_1]"), $id);
+$CF->Load($id) or Abort(loc("Could not load CustomField [_1]", $id));
my $class = $CF->RecordClassFromLookupType;
Abort(loc("Something wrong. Contact system administrator"))
diff --git a/rt/share/html/Admin/CustomFields/UserRights.html b/rt/share/html/Admin/CustomFields/UserRights.html
index f581588a8..608d5dc40 100644
--- a/rt/share/html/Admin/CustomFields/UserRights.html
+++ b/rt/share/html/Admin/CustomFields/UserRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,43 +46,17 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/CustomFieldTabs, id => $id,
-current_tab => "Admin/CustomFields/UserRights.html?id=".$id,
-Title => $title, &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="UserRights.html">
+ <form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
<input type="hidden" class="hidden" name="id" value="<% $CustomFieldObj->id %>" />
-
-
-<table>
-
-% while (my $Member = $Users->Next()) {
-% my $UserObj = $Member->MemberObj->Object();
-% my $group = RT::Group->new($session{'CurrentUser'});
-% $group->LoadACLEquivalenceGroup($Member->MemberObj);
- <tr align="right">
- <td valign="top"><& /Elements/ShowUser, User => $UserObj &></td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId=> $group->PrincipalId,
- Object => $CustomFieldObj &>
- </td>
- </tr>
-% }
- </table>
-
- <& /Elements/Submit, Caption => loc("Be sure to save your changes"), Reset => 1 &>
-
+ <& /Admin/Elements/EditRights, Context => $CustomFieldObj, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
</form>
-
<%INIT>
-
-#Update the acls.
-my @results = ProcessACLChanges( \%ARGS );
-
-# {{{ Deal with setting up the display of current rights.
-
-
+# Update the acls.
+my @results = ProcessACLs( \%ARGS );
if (!defined $id) {
$m->comp("/Elements/Error", Why => loc("No Class defined"));
@@ -91,20 +65,12 @@ if (!defined $id) {
my $CustomFieldObj = RT::CustomField->new($session{'CurrentUser'});
$CustomFieldObj->Load($id) || $m->comp("/Elements/Error", Why => loc("Couldn't load Class [_1]",$id));
-# Find out which users we want to display ACL selects for
-my $Privileged = RT::Group->new($session{'CurrentUser'});
-$Privileged->LoadSystemInternalGroup('Privileged');
-my $Users = $Privileged->MembersObj();
-
my $title = loc('Modify user rights for custom field [_1]', $CustomFieldObj->Name);
-
-# }}}
-
+
+# Principal collections
+my @principals = GetPrincipalsMap($CustomFieldObj, qw(Users));
</%INIT>
<%ARGS>
$id => undef
-$UserString => undef
-$UserOp => undef
-$UserField => undef
</%ARGS>
diff --git a/rt/share/html/Admin/CustomFields/index.html b/rt/share/html/Admin/CustomFields/index.html
index 2835b1292..b8bc447d2 100644
--- a/rt/share/html/Admin/CustomFields/index.html
+++ b/rt/share/html/Admin/CustomFields/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/CustomFieldTabs,
- current_tab => 'Admin/CustomFields/',
- Title => $title,
-&>
+<& /Elements/Tabs &>
% my $tmp = RT::CustomField->new( $session{'CurrentUser'} );
% if ( $Type ) {
@@ -84,6 +81,8 @@
<&|/l&>Include disabled custom fields in listing.</&>
<br />
+% $m->callback(CallbackName => 'BeforeSubmit');
+
<input type="submit" value="<% loc('Go!') %>" />
</form>
@@ -107,6 +106,8 @@ $CustomFields->UnLimit;
$CustomFields->FindAllRows if $ShowDisabled;
$CustomFields->LimitToLookupType( $Type ) if $Type;
+$m->callback(CallbackName => 'MassageCustomFields', CustomFields => $CustomFields);
+
$Format ||= RT->Config->Get('AdminSearchResultFormat')->{'CustomFields'};
</%INIT>
diff --git a/rt/share/html/Admin/Elements/AddCustomFieldValue b/rt/share/html/Admin/Elements/AddCustomFieldValue
index 4871f7a17..4a68c369d 100755
--- a/rt/share/html/Admin/Elements/AddCustomFieldValue
+++ b/rt/share/html/Admin/Elements/AddCustomFieldValue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@
<th><&|/l&>Name</&></th>
<th><&|/l&>Description</&></th>
% if ( $CustomField->Type ne 'Combobox' ) {
-<th><&|/l&>Category</&></th>
+<th class="categoryheader"><&|/l&>Category</&></th>
% }
</tr>
@@ -68,16 +68,18 @@
% my $BasedOnObj = $CustomField->BasedOnObj;
% if ( $BasedOnObj and $BasedOnObj->id ) {
% my $Categories = $BasedOnObj->Values;
-<select name="<% $paramtag %>-Category" size="1">
+<select class="editcategory" name="<% $paramtag %>-Category" size="1">
<option value=""><&|/l&>(no value)</&></option>
% while (my $Value = $Categories->Next) {
<option value="<% $Value->Name %>"><% $Value->Name %></option>
% }
% } else {
-<input type="text" size="10" name="<% $paramtag %>-Category" value="" />
+<input type="text" size="10" class="editcategory" name="<% $paramtag %>-Category" value="" />
% }
</td>
% }
+
+% $m->callback(CallbackName => 'AfterCustomFieldValueInput', CustomFieldObj => $CustomField, ARGSRef => \%ARGS );
</tr>
</table>
diff --git a/rt/share/html/Admin/Elements/ConfigureMyRT b/rt/share/html/Admin/Elements/ConfigureMyRT
index f9b472d99..8b625a901 100644
--- a/rt/share/html/Admin/Elements/ConfigureMyRT
+++ b/rt/share/html/Admin/Elements/ConfigureMyRT
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/CreateUserCalled b/rt/share/html/Admin/Elements/CreateUserCalled
index bf994be85..5f83f4b3d 100755
--- a/rt/share/html/Admin/Elements/CreateUserCalled
+++ b/rt/share/html/Admin/Elements/CreateUserCalled
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/CustomFieldTabs b/rt/share/html/Admin/Elements/CustomFieldTabs
deleted file mode 100644
index 17b241cb7..000000000
--- a/rt/share/html/Admin/Elements/CustomFieldTabs
+++ /dev/null
@@ -1,121 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
- current_tab => 'Admin/CustomFields/',
- subtabs => $tabs,
- current_subtab => $current_tab,
- Title => $Title &>
-<%INIT>
-my $tabs;
-
-if ($id) {
- my $cf = RT::CustomField->new( $session{'CurrentUser'} );
- $cf->Load($id);
- $tabs = {
- this => {
- title => $cf->Name,
- path => "Admin/CustomFields/Modify.html?id=" . $id,
- current_subtab => $current_tab,
-
- subtabs => {
-
- C => { title => loc('Basics'),
- path => "Admin/CustomFields/Modify.html?id=" . $id,
- },
- F => { title => loc('Group Rights'),
- path => "Admin/CustomFields/GroupRights.html?id="
- . $id, },
- G => {
- title => loc('User Rights'),
- path => "Admin/CustomFields/UserRights.html?id=" . $id,
- },
-
- } }
-
- };
-
-
- if ($cf->LookupType =~ /^RT::(?:Queue|Group)(?:\Z|-)/i) {
- $tabs->{'this'}->{subtabs}->{D} = {
- title => loc('Applies to'),
- path => "Admin/CustomFields/Objects.html?id=" . $id,
- };
- }
-}
-
-if ( $session{'CurrentUser'}->HasRight( Object => $RT::System, Right => 'AdminCustomField')
- || $session{'CurrentUser'}->HasRight( Object => $RT::System, Right => 'AdminCustomFieldValues') ) {
- $tabs->{"A"} = { title => loc('Select'),
- path => "Admin/CustomFields/",
- };
-}
-if ($session{'CurrentUser'}->HasRight( Object => $RT::System, Right => 'AdminCustomField')) {
- $tabs->{"B"} = { title => loc('Create'),
- path => "Admin/CustomFields/Modify.html?Create=1",
- separator => 1,
- };
-}
-
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
-
-foreach my $tab (sort keys %{$tabs->{'this'}->{'subtabs'}}) {
- if ($tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab) {
- $tabs->{'this'}->{'subtabs'}->{$tab}->{'subtabs'} = $subtabs;
- $tabs->{'this'}->{'subtabs'}->{$tab}->{'current_subtab'} = $current_subtab;
- }
-}
-if( $id ) { $current_tab = "Admin/CustomFields/Modify.html?id=" . $id }
-</%INIT>
-<%ARGS>
-$Title => undef
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-</%ARGS>
diff --git a/rt/share/html/Admin/Elements/EditCustomField b/rt/share/html/Admin/Elements/EditCustomField
index 920698d98..632b3d8f8 100755
--- a/rt/share/html/Admin/Elements/EditCustomField
+++ b/rt/share/html/Admin/Elements/EditCustomField
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/EditCustomFieldValues b/rt/share/html/Admin/Elements/EditCustomFieldValues
index c2a027b81..4d0dc51b8 100755
--- a/rt/share/html/Admin/Elements/EditCustomFieldValues
+++ b/rt/share/html/Admin/Elements/EditCustomFieldValues
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -58,7 +58,7 @@
<th><&|/l&>Name</&></th>
<th><&|/l&>Description</&></th>
% if ($CustomField->Type ne 'Combobox') {
-<th><&|/l&>Category</&></th>
+<th class="categoryheader"><&|/l&>Category</&></th>
% }
</tr>
@@ -68,22 +68,23 @@
<td><input type="checkbox" class="checkbox" name="Delete-<% $paramtag %>" /></td>
<td><input type="text" size="3" name="<% $paramtag %>-SortOrder" value="<% $value->SortOrder %>" /></td>
<td><input type="text" size="25" name="<% $paramtag %>-Name" value="<% $value->Name %>" /></td>
-<td><input type="text" size="45" name="<% $paramtag %>-Description" value="<% $value->Description %>" /></td>
+<td><input type="text" size="45" name="<% $paramtag %>-Description" value="<% $value->Description || '' %>" /></td>
% if ( $CustomField->Type ne 'Combobox' ) {
<td>
% if ( $Categories ) {
% my $selected = $value->Category;
% $selected = '' unless defined $selected;
-<select name="<% $paramtag %>-Category" size="1">
+<select class="editcategory" name="<% $paramtag %>-Category" size="1">
<option value=""<% $selected eq '' ? q[ selected="selected"] : "" |n%>><&|/l&>(no value)</&></option>
% while (my $Value = $Categories->Next) {
<option value="<% $Value->Name %>"<% $selected eq $Value->Name ? q[ selected="selected"] : "" |n%>><% $Value->Name %></option>
% }
% } else {
-<input type="text" size="10" name="<% $paramtag %>-Category" value="<% $value->Category || '' %>" />
+<input type="text" size="10" class="editcategory" name="<% $paramtag %>-Category" value="<% $value->Category || '' %>" />
% }
</td>
% }
+% $m->callback(CallbackName => 'AfterCustomFieldValueInput', CustomFieldObj => $CustomField, CustomFieldValueObj => $value, ARGSRef => \%ARGS );
</tr>
% }
diff --git a/rt/share/html/Admin/Elements/EditCustomFieldValuesSource b/rt/share/html/Admin/Elements/EditCustomFieldValuesSource
index 9455c74db..5b11ec8e0 100644
--- a/rt/share/html/Admin/Elements/EditCustomFieldValuesSource
+++ b/rt/share/html/Admin/Elements/EditCustomFieldValuesSource
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/EditCustomFields b/rt/share/html/Admin/Elements/EditCustomFields
index 91d5cffaa..d9d9134e7 100755
--- a/rt/share/html/Admin/Elements/EditCustomFields
+++ b/rt/share/html/Admin/Elements/EditCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -128,6 +128,7 @@ if ( $MoveCustomFieldDown ) { {
if ( $UpdateCFs ) {
foreach my $cf_id ( @AddCustomField ) {
my $CF = RT::CustomField->new( $session{'CurrentUser'} );
+ $CF->SetContextObject( $Object );
$CF->Load( $cf_id );
unless ( $CF->id ) {
push @results, loc("Couldn't load CustomField #[_1]", $cf_id);
@@ -138,6 +139,7 @@ if ( $UpdateCFs ) {
}
foreach my $cf_id ( @RemoveCustomField ) {
my $CF = RT::CustomField->new( $session{'CurrentUser'} );
+ $CF->SetContextObject( $Object );
$CF->Load( $cf_id );
unless ( $CF->id ) {
push @results, loc("Couldn't load CustomField #[_1]", $cf_id);
@@ -153,6 +155,7 @@ $m->callback(CallbackName => 'UpdateExtraFields', Results => \@results, Object =
my $applied_cfs = RT::CustomFields->new( $session{'CurrentUser'} );
$applied_cfs->LimitToLookupType($lookup);
$applied_cfs->LimitToGlobalOrObjectId($id);
+$applied_cfs->SetContextObject( $Object );
$applied_cfs->ApplySortOrder;
my $not_applied_cfs = RT::CustomFields->new( $session{'CurrentUser'} );
diff --git a/rt/share/html/Admin/Elements/EditQueueWatcherGroup b/rt/share/html/Admin/Elements/EditQueueWatcherGroup
new file mode 100644
index 000000000..8bc1de29a
--- /dev/null
+++ b/rt/share/html/Admin/Elements/EditQueueWatcherGroup
@@ -0,0 +1,56 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%ARGS>
+$Label
+$QueueObj
+$Watchers
+</%ARGS>
+<span><% $Label %>:</span>
+
+<& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $Watchers &>
+
diff --git a/rt/share/html/Admin/Elements/EditQueueWatchers b/rt/share/html/Admin/Elements/EditQueueWatchers
index 017c9ec8e..073278c9e 100755
--- a/rt/share/html/Admin/Elements/EditQueueWatchers
+++ b/rt/share/html/Admin/Elements/EditQueueWatchers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/EditRights b/rt/share/html/Admin/Elements/EditRights
new file mode 100644
index 000000000..e67359313
--- /dev/null
+++ b/rt/share/html/Admin/Elements/EditRights
@@ -0,0 +1,175 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%args>
+$Context
+$Principals
+$AddPrincipal => undef
+</%args>
+<%init>
+use Scalar::Util qw(blessed);
+
+# Let callbacks get at principals and context before we do anything with them
+$m->callback( Principals => $Principals, Context => $Context );
+
+# Try to detect if we want to include an add user/group box
+unless ( $AddPrincipal ) {
+ my $last = $Principals->[-1];
+ if ( $last->[0] =~ /Groups/i ) {
+ $AddPrincipal = 'group'; # loc
+ }
+ elsif ( $last->[0] =~ /Users/i ) {
+ $AddPrincipal = 'user'; # loc
+ }
+}
+</%init>
+%# Principals is an array of arrays, where the inner arrays are like:
+%# [ 'Category name' => $CollectionObj => 'DisplayColumn' => 1 ]
+%# The last value is a boolen determining if the value of DisplayColumn
+%# should be loc()-ed before display.
+
+<script type="text/javascript">
+ jQuery(function() {
+ jQuery(".rights-editor").tabs({
+ select: function(ev, ui) {
+ window.location.hash = ui.tab.hash;
+ }
+ });
+ jQuery(".rights-editor .category-tabs").tabs();
+ });
+</script>
+
+<div class="rights-editor clearfix">
+ <ul>
+<%perl>
+for my $category (@$Principals) {
+ my ($name, $collection, $col, $loc) = @$category;
+</%perl>
+<li class="category"><% loc($name) %></li>
+<%perl>
+ while ( my $obj = $collection->Next ) {
+ my $display = ref $col eq 'CODE' ? $col->($obj) : $obj->$col;
+ my $id = "acl-$name-" . $obj->PrincipalId;
+ $id =~ s/[^a-zA-Z0-9\-]/_/g;
+</%perl>
+<li><a href="#<% $id %>"><% $loc ? loc($display) : $display %></a></li>
+<%perl>
+ }
+}
+</%perl>
+% if ( $AddPrincipal ) {
+ <li class="category"><&|/l, loc($AddPrincipal) &>Add [_1]</&></li>
+ <li class="addprincipal">
+ <a href="#acl-AddPrincipal">
+ <input type="text" value=""
+ name="AddPrincipalForRights-<% lc $AddPrincipal %>"
+ id="AddPrincipalForRights-<% lc $AddPrincipal %>" />
+ <script type="text/javascript">
+ jQuery(function() {
+ jQuery("#AddPrincipalForRights-"+<% lc $AddPrincipal |n,j%>).keyup(function(){
+ toggle_addprincipal_validity(this, true);
+ });
+
+% if (lc $AddPrincipal eq 'group') {
+ jQuery("#AddPrincipalForRights-"+<% lc $AddPrincipal |n,j%>).autocomplete({
+ source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Groups",
+ select: addprincipal_onselect,
+ change: addprincipal_onchange
+ });
+% }
+ });
+ </script>
+% my $type = lc $AddPrincipal eq 'user' ? loc('username') : loc($AddPrincipal);
+ <span class="warning"><&|/l, $type &>Invalid [_1]</&></span>
+ </a>
+ </li>
+% }
+ </ul>
+
+<%perl>
+# Now generate our rights panels for each principal
+for my $category (@$Principals) {
+ my ($name, $collection, $col, $loc) = @$category;
+ while ( my $obj = $collection->Next ) {
+ my $display = ref $col eq 'CODE' ? $col->($obj) : $obj->$col;
+ my $id = "acl-$name-" . $obj->PrincipalId;
+ $id =~ s/[^a-zA-Z0-9\-]/_/g;
+</%perl>
+
+ <div id="<% $id %>">
+ <h3>
+ <% $loc ? loc($display) : $display %>
+<%perl>
+if ($obj->isa('RT::Group') and $obj->Domain eq 'UserDefined') {
+ my $subgroups = $obj->GroupMembersObj( Recursively => 1 );
+ $subgroups->LimitToUserDefinedGroups;
+ $subgroups->Limit( FIELD => 'Name', OPERATOR => '!=', VALUE => $obj->Name );
+
+ if ( $subgroups->Count ) {
+ my $inc = join ", ", map $_->Name, @{$subgroups->ItemsArrayRef};
+</%perl>
+ <span class="subgroups"><&|/l, $inc &>includes [_1]</&></span>\
+<%perl>
+ }
+}
+</%perl>
+ </h3>
+ <& EditRightsCategoryTabs, Context => $Context, Principal => $obj, id => $id &>
+ </div>
+<%perl>
+ }
+}
+
+if ( $AddPrincipal ) {
+</%perl>
+ <div id="acl-AddPrincipal">
+ <h3><&|/l, loc($AddPrincipal) &>Add rights for this [_1]</&></h3>
+ <& EditRightsCategoryTabs, Context => $Context, id => 'acl-AddPrincipal' &>
+ </div>
+% }
+
+</div>
diff --git a/rt/share/html/Admin/Elements/EditRightsCategoryTabs b/rt/share/html/Admin/Elements/EditRightsCategoryTabs
new file mode 100644
index 000000000..786cafdd8
--- /dev/null
+++ b/rt/share/html/Admin/Elements/EditRightsCategoryTabs
@@ -0,0 +1,129 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%args>
+$Context
+$Principal => undef
+$id
+$acldesc => ''
+</%args>
+<%init>
+# XXX OPTIMIZATION: Moving the calls to AvailableRights and RightCategories up
+# one component to avoid calling them for every principal would be a win, but
+# it's cleaner to do it here. The values can really be computed once per
+# $Context.
+
+# Find all our available rights...
+my (%available_rights, %categories);
+if ( blessed($Context) and $Context->can('AvailableRights') ) {
+ %available_rights = %{$Context->AvailableRights};
+} else {
+ %available_rights = ( loc('System Error') => loc("No rights found") );
+}
+
+# ...and their categories
+if ( blessed($Context) and $Context->can('RightCategories') ) {
+ my %right_categories = %{$Context->RightCategories};
+
+ for my $right (keys %available_rights) {
+ push @{$categories{$right_categories{$right}}}, $right;
+ }
+}
+
+# Find all the current rights for this principal
+my %current_rights;
+if ($Principal) {
+ my $acls = RT::ACL->new($session{'CurrentUser'});
+ $acls->LimitToObject( $Context );
+ $acls->LimitToPrincipal( Id => $Principal->PrincipalId );
+
+ while ( my $ace = $acls->Next ) {
+ my $right = $ace->RightName;
+ $current_rights{$right} = 1;
+ }
+}
+
+my %category_desc = (
+ 'General' => loc('General rights'),
+ 'Staff' => loc('Rights for Staff'),
+ 'Admin' => loc('Rights for Administrators'),
+ 'Status' => loc('Status changes'),
+);
+
+my %catsort = ( General => 1, Staff => 2, Admin => 3, Status => 4 );
+
+$acldesc ||= join '-', ($Principal ? $Principal->PrincipalId : 'addprincipal'),
+ ref($Context), $Context->Id;
+</%init>
+ <div class="category-tabs">
+ <ul>
+% for my $category (sort { $catsort{$a} <=> $catsort{$b} } keys %categories) {
+ <li><a href="#<% "$id-$category" %>"><% $category_desc{$category} || loc('Miscellaneous') %></a></li>
+% }
+ </ul>
+% for my $category (sort { $catsort{$a} <=> $catsort{$b} } keys %categories) {
+ <div id="<% "$id-$category" %>">
+ <ul class="rights-list">
+% for my $right (sort { $available_rights{$a} cmp $available_rights{$b} } @{$categories{$category}}) {
+ <li>
+ <input type="checkbox" class="checkbox"
+ name="SetRights-<% $acldesc %>"
+ id="SetRights-<% $acldesc %>-<% $right %>"
+ value="<% $right %>"
+ <% $current_rights{$right} ? 'checked' : '' %> />
+ <label for="SetRights-<% $acldesc %>-<% $right %>" title="<% loc($right) %>">
+ <% loc($available_rights{$right}) %>
+ <span class="separator">&mdash;</span>
+ <span class="rightname"><% loc($right) %></span>
+ </label>
+ </li>
+% }
+ </ul>
+ </div>
+% }
+ </div>
+ <input type="hidden" name="CheckACL" value="<% $acldesc %>" />
diff --git a/rt/share/html/Admin/Elements/EditScrip b/rt/share/html/Admin/Elements/EditScrip
index c2e9de19f..858ab9d9b 100755
--- a/rt/share/html/Admin/Elements/EditScrip
+++ b/rt/share/html/Admin/Elements/EditScrip
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,7 +47,7 @@
%# END BPS TAGGED BLOCK }}}
<& /Elements/ListActions, actions => \@actions &>
-<form method="post" action="Scrip.html">
+<form method="post" action="Scrip.html" id="ModifyScrip" name="ModifyScrip">
<input type="hidden" class="hidden" name="id" value="<% $id %>" />
<input type="hidden" class="hidden" name="Queue" value="<% $Queue %>" />
@@ -55,12 +55,13 @@
<table>
<tr><td align="right"><&|/l&>Description</&>:</td><td>
-<input name="Scrip-<% $id %>-Description"
- size="60"
+<tr><td class="label"><&|/l&>Description</&>:</td><td class="value">\
+<input name="Scrip-<% $id %>-Description" \
+ size="60" \
value="<% $ARGS{"Scrip-$id-Description"} || $scrip->Description || '' %>" />
</td></tr>
-<tr><td align="right"><&|/l&>Condition</&>:</td><td>
+<tr><td class="label"><&|/l&>Condition</&>:</td><td class="value">\
<& /Admin/Elements/SelectScripCondition,
Name => "Scrip-$id-ScripCondition",
Default => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id,
@@ -75,7 +76,7 @@
ScripX => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id,
&>
-<tr><td align="right"><&|/l&>Action</&>:</td><td>
+<tr><td class="label"><&|/l&>Action</&>:</td><td class="value">\
<& /Admin/Elements/SelectScripAction,
Name => "Scrip-$id-ScripAction",
Default => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id,
@@ -90,14 +91,14 @@
ScripX => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id,
&>
-<tr><td align="right"><&|/l&>Template</&>:</td><td>
+<tr><td class="label"><&|/l&>Template</&>:</td><td class="value">\
<& /Admin/Elements/SelectTemplate,
Name => "Scrip-$id-Template",
Default => $ARGS{"Scrip-$id-Template"} || $scrip->TemplateObj->Id,
Queue => $Queue,
&></td></tr>
-<tr><td align="right"><&|/l&>Stage</&>:</td><td>
+<tr><td class="label"><&|/l&>Stage</&>:</td><td class="value">\
<& /Admin/Elements/SelectStage,
Name => "Scrip-$id-Stage",
Default => $ARGS{"Scrip-$id-Stage"} || $scrip->Stage,
@@ -106,6 +107,7 @@
</table>
</&>
+% if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) {
<& /Elements/Submit,
Label => $SubmitLabel,
Reset => 1,
@@ -117,21 +119,21 @@
<i><&|/l&>(Use these fields when you choose 'User Defined' for a condition or action)</&></i>
</td></tr>
-<tr><td class="labeltop"><&|/l&>Custom condition</&>:</td><td>
+<tr><td class="labeltop"><&|/l&>Custom condition</&>:</td><td class="value">
% my $code = $ARGS{"Scrip-$id-CustomIsApplicableCode"} || $scrip->CustomIsApplicableCode || '';
% my $lines = @{[ $code =~ /\n/gs ]} + 3;
% $lines = $min_lines if $lines < $min_lines;
<textarea cols="80" rows="<% $lines %>" name="Scrip-<% $id %>-CustomIsApplicableCode"><% $code %></textarea>
</td></tr>
-<tr><td class="labeltop"><&|/l&>Custom action preparation code</&>:</td><td>
+<tr><td class="labeltop"><&|/l&>Custom action preparation code</&>:</td><td class="value">
% $code = $ARGS{"Scrip-$id-CustomPrepareCode"} || $scrip->CustomPrepareCode || '';
% $lines = @{[ $code =~ /\n/gs ]} + 3;
% $lines = $min_lines if $lines < $min_lines;
<textarea cols="80" rows="<% $lines %>" name="Scrip-<% $id %>-CustomPrepareCode"><% $code %></textarea>
</td></tr>
-<tr><td class="labeltop"><&|/l&>Custom action cleanup code</&>:</td><td>
+<tr><td class="labeltop"><&|/l&>Custom action cleanup code</&>:</td><td class="value">
% $code = $ARGS{"Scrip-$id-CustomCommitCode"} || $scrip->CustomCommitCode || '';
% $lines = @{[ $code =~ /\n/gs ]} + 3;
% $lines = $min_lines if $lines < $min_lines;
@@ -141,6 +143,8 @@
</table>
</&>
+% }
+
<& /Elements/Submit,
Label => $SubmitLabel,
Reset => 1,
@@ -167,6 +171,9 @@ unless ( $id ) {
my $min_lines = 10;
+my ($ok, $msg) = $scrip->CompileCheck;
+push @actions, $msg if !$ok;
+
</%init>
<%ARGS>
diff --git a/rt/share/html/Admin/Elements/EditScrips b/rt/share/html/Admin/Elements/EditScrips
index be208d6c4..2fdcae670 100755
--- a/rt/share/html/Admin/Elements/EditScrips
+++ b/rt/share/html/Admin/Elements/EditScrips
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -89,12 +89,14 @@ if ( $id ) {
if ($QueueObj->id) {
$Scrips->LimitToQueue($id);
+ $Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Scrips'};
}
else {
$Scrips->LimitToGlobal();
+ $Format ||= RT->Config->Get('AdminSearchResultFormat')->{'GlobalScrips'};
}
-# {{{ deal with modifying and deleting existing scrips
+# deal with modifying and deleting existing scrips
# we still support DeleteScrip-id format but array is preferred
foreach my $id ( grep $_, @DeleteScrip, map /^DeleteScrip-(\d+)/, keys %ARGS ) {
my $scrip = RT::Scrip->new($session{'CurrentUser'});
@@ -107,10 +109,6 @@ foreach my $id ( grep $_, @DeleteScrip, map /^DeleteScrip-(\d+)/, keys %ARGS ) {
push @actions, $msg;
}
}
-# }}}
-
-$Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Scrips'};
-
</%init>
<%ARGS>
diff --git a/rt/share/html/Admin/Elements/EditTemplates b/rt/share/html/Admin/Elements/EditTemplates
index 5839720e0..2f681aca3 100755
--- a/rt/share/html/Admin/Elements/EditTemplates
+++ b/rt/share/html/Admin/Elements/EditTemplates
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/EditUserComments b/rt/share/html/Admin/Elements/EditUserComments
index 9fb2230e8..28563c6a4 100755
--- a/rt/share/html/Admin/Elements/EditUserComments
+++ b/rt/share/html/Admin/Elements/EditUserComments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/GroupTabs b/rt/share/html/Admin/Elements/GroupTabs
deleted file mode 100755
index 7a677ee3c..000000000
--- a/rt/share/html/Admin/Elements/GroupTabs
+++ /dev/null
@@ -1,102 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
- subtabs => $tabs,
- current_tab => 'Admin/Groups/',
- current_subtab => $current_tab,
- Title => $Title &>
-<%INIT>
-my $tabs;
-
-if ( $GroupObj and $GroupObj->id ) {
-$tabs->{"this"} = { class => "currentnav",
- path => "Admin/Groups/Modify.html?id=" . $GroupObj->id,
- title => $GroupObj->Name,
- current_subtab => $current_subtab,
- subtabs => {
- C => { title => loc('Basics'),
- path => "Admin/Groups/Modify.html?id=" . $GroupObj->id },
-
- D => { title => loc('Members'),
- path => "Admin/Groups/Members.html?id=" . $GroupObj->id },
-
- F => { title => loc('Group Rights'),
- path => "Admin/Groups/GroupRights.html?id=" . $GroupObj->id, },
- G => { title => loc('User Rights'),
- path => "Admin/Groups/UserRights.html?id=" . $GroupObj->id, },
- H => { title => loc('History'),
- path => "Admin/Groups/History.html?id=" . $GroupObj->id },
- }
-}
-}
-$tabs->{"A"} = { title => loc('Select'),
- path => "Admin/Groups/", };
-$tabs->{"B"} = { title => loc('Create'),
- path => "Admin/Groups/Modify.html?Create=1",
- separator => 1, };
-
-# Now let callbacks add their extra tabs
-$m->callback( %ARGS, tabs => $tabs );
-foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {
- if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
- $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab;
- }
-}
- $tabs->{'this'}->{"current_subtab"} = $current_tab;
- $current_tab = "Admin/Groups/Modify.html?id=".$GroupObj->id if $GroupObj;
-
-</%INIT>
-<%ARGS>
-$GroupObj => undef
-$subtabs => undef
-$current_subtab => undef
-$current_tab => undef
-$Title => undef
-</%ARGS>
-
diff --git a/rt/share/html/Admin/Elements/Header b/rt/share/html/Admin/Elements/Header
index fac422520..afb745e0d 100755
--- a/rt/share/html/Admin/Elements/Header
+++ b/rt/share/html/Admin/Elements/Header
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/ListGlobalCustomFields b/rt/share/html/Admin/Elements/ListGlobalCustomFields
index 1fd8b768b..1d1cd392d 100755
--- a/rt/share/html/Admin/Elements/ListGlobalCustomFields
+++ b/rt/share/html/Admin/Elements/ListGlobalCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,6 +56,6 @@
% }
<%init>
-my $CustomFields = new RT::CustomFields ($session{'CurrentUser'});
+my $CustomFields = RT::CustomFields->new ($session{'CurrentUser'});
$CustomFields->LimitToGlobal();
</%INIT>
diff --git a/rt/share/html/Admin/Elements/ListGlobalScrips b/rt/share/html/Admin/Elements/ListGlobalScrips
index 7f1039ed9..701ffbfa7 100755
--- a/rt/share/html/Admin/Elements/ListGlobalScrips
+++ b/rt/share/html/Admin/Elements/ListGlobalScrips
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,15 +56,12 @@
%ARGS,
Format => $Format,
Collection => $Scrips,
- ShowHeader => 0,
&>
% }
<%init>
-my $Format = q{'<a href="__WebPath__/Admin/Global/Scrip.html?id=__id__&Queue=0">__id__</a>/TITLE:#'}
- .q{,'<a href="__WebPath__/Admin/Global/Scrip.html?id=__id__&Queue=0">__AutoDescription__</a>/TITLE:Condition, Action and Template'}
- .q{__NEWLINE__,'','<small>__Description__</small>'};
+my $Format = RT->Config->Get('AdminSearchResultFormat')->{'GlobalScrips'};
my $Scrips = RT::Scrips->new( $session{'CurrentUser'} );
$Scrips->LimitToGlobal;
diff --git a/rt/share/html/Admin/Elements/ModifyTemplate b/rt/share/html/Admin/Elements/ModifyTemplate
index 062090531..ebe7c73bc 100755
--- a/rt/share/html/Admin/Elements/ModifyTemplate
+++ b/rt/share/html/Admin/Elements/ModifyTemplate
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,38 +47,35 @@
%# END BPS TAGGED BLOCK }}}
<table>
<tr>
-<td align="right">
-<&|/l&>Name</&>:
-</td>
-<td>
-<input name="Name" value="<%$Name%>" size="20" /><br />
-</td>
+<td class="label"><&|/l&>Name</&>:</td>
+<td class="value"><input name="Name" value="<%$Name||''%>" size="20" /></td>
</tr>
<tr>
-<td align="right">
-<&|/l&>Description</&>:
-</td>
-<td>
-<input name="Description" value="<%$Description%>" size="80" /><br />
-</td>
+<td class="label"><&|/l&>Description</&>:</td>
+<td class="value"><input name="Description" value="<%$Description||''%>" size="80" /></td>
</tr>
<tr>
-<td align="right" valign="top">
-<&|/l&>Content</&>:<br />
-</td>
-<td>
-<textarea name="Content" rows="25" cols="80" wrap="soft">
-<%$Content%></textarea>
+<td class="label"><&|/l&>Type</&>:</td>
+<td class="value">
+<input type="radio" name="Type" value="Perl" <% $Type eq "Perl" ? 'checked="checked"' : "" |n %>><&|/l&>Perl</&></input><br />
+<input type="radio" name="Type" value="Simple" <% $Type eq "Simple" ? 'checked="checked"' : "" |n %>><&|/l&>Simple</&></input><br />
</td>
</tr>
+<tr>
+<td class="label" valign="top"><&|/l&>Content</&>:</td>
+<td class="value"><textarea name="Content" rows="25" cols="80" wrap="soft"><%$Content||''%></textarea></td>
+</tr>
</table>
<%INIT>
+$Type = 'Perl' if !$Type;
+
</%INIT>
<%ARGS>
-$Name => undef
-$Description => undef
-$Content => undef
+$Name => ''
+$Description => ''
+$Content => ''
+$Type => 'Perl'
</%ARGS>
diff --git a/rt/share/html/Admin/Elements/ObjectCustomFields b/rt/share/html/Admin/Elements/ObjectCustomFields
deleted file mode 100644
index 7798b8ea8..000000000
--- a/rt/share/html/Admin/Elements/ObjectCustomFields
+++ /dev/null
@@ -1,111 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Header, Title => $title &>
-<& $ObjectTabs,
-$id ? (
- id => $Object->id,
- current_tab => "Admin/$Types/CustomFields.html?$sub_type_url&id=".$id,
- current_subtab => "Admin/$Types/CustomFields.html?$sub_type_url&id=".$id,
- "${Type}Obj" => $Object,
-) : (
- current_tab => "Admin/Global/CustomFields/${QualifiedType}s.html",
-),
- Title => $title
- &>
-
-<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, Object => $Object &>
-<%INIT>
-# XXX TODO: Validate here?
-#$ObjectType =~ /^RT::(Queue|User|Group)$/
-# or Abort(loc("Object of type [_1] cannot take custom fields", $ObjectType), SuppressHeader => 1);
-
-
-
-my $Type = $1;
-my $Types = $Type.'s';
-my $ObjectTabs;
-my $Object = $ObjectType->new($session{'CurrentUser'});
-
-
-my $QualifiedType;
-my $FriendlySubTypes;
-if (defined $SubType && $SubType =~/^RT::(.*)$/) {
- $FriendlySubTypes = RT::CustomField->new($session{'CurrentUser'})->FriendlyLookupType($Object->CustomFieldLookupType);
- $QualifiedType = "$Type-$1";
-} else {
- $QualifiedType = $Type;
-}
-
-if ($id) {
- $Object->Load($id) || Abort(loc("Couldn't load object [_1]", $id), SuppressHeader => 1);
- $ObjectTabs = "/Admin/Elements/${Type}Tabs";
-} else {
- $ObjectTabs = "/Admin/Elements/GlobalCustomFieldTabs";
-
-}
-
-my $title;
-if ($id) {
-$title = loc('Edit Custom Fields for [_1]', $Object->Name);
-}
-elsif ($SubType) {
-
- $title= loc("Modify Custom Fields which apply to [_1] for all [_2]", loc(lc($FriendlySubTypes)), loc(lc($Types)));
-} else {
- $title =loc("Modify Custom Fields which apply to all [_1]", loc(lc($Types)));
-
-}
-my $sub_type_url;
-$sub_type_url = "SubType=$SubType" if $SubType;
-
-</%INIT>
-<%ARGS>
-$id => undef
-$ObjectType
-$SubType => undef
-</%ARGS>
diff --git a/rt/share/html/Admin/Elements/PickCustomFields b/rt/share/html/Admin/Elements/PickCustomFields
index 10699421d..1c58b6ab4 100644
--- a/rt/share/html/Admin/Elements/PickCustomFields
+++ b/rt/share/html/Admin/Elements/PickCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/PickObjects b/rt/share/html/Admin/Elements/PickObjects
index dbf84cb1d..24a9e69a4 100644
--- a/rt/share/html/Admin/Elements/PickObjects
+++ b/rt/share/html/Admin/Elements/PickObjects
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Approvals/Elements/Tabs b/rt/share/html/Admin/Elements/Portal
index b17fa03ce..821ed5728 100755..100644
--- a/rt/share/html/Approvals/Elements/Tabs
+++ b/rt/share/html/Admin/Elements/Portal
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,14 +45,8 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs,
- tabs => $tabs,
- current_toptab => 'Approvals/',
- current_tab => $current_tab,
- Title => $Title &>
-
-<%ARGS>
-$tabs => undef
-$current_tab => undef
-$Title => undef
-</%ARGS>
+<div id="rt-portal">
+<&| /Widgets/TitleBox, title => 'RT Portal' &>
+<iframe src="https://bestpractical.com/rt/integration/news?utm_source=rt&utm_medium=iframe&utm_campaign=<%$RT::VERSION%>"></iframe>
+</&>
+</div>
diff --git a/rt/share/html/Admin/Elements/QueueRightsForUser b/rt/share/html/Admin/Elements/QueueRightsForUser
index 9acf98fc5..b8ef1b1d8 100755
--- a/rt/share/html/Admin/Elements/QueueRightsForUser
+++ b/rt/share/html/Admin/Elements/QueueRightsForUser
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@
</ul>
<%INIT>
-my $ACL = new RT::ACL($session{'CurrentUser'});
+my $ACL = RT::ACL->new($session{'CurrentUser'});
$ACL->LimitToQueue($QueueObj->id);
$ACL->LimitPrincipalToUser($PrincipalId);
</%INIT>
diff --git a/rt/share/html/Admin/Elements/QueueTabs b/rt/share/html/Admin/Elements/QueueTabs
deleted file mode 100755
index 8ce08dfd3..000000000
--- a/rt/share/html/Admin/Elements/QueueTabs
+++ /dev/null
@@ -1,123 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
- subtabs => $tabs,
- current_tab => 'Admin/Queues/',
- current_subtab => $current_tab,
- Title => $Title &>
-
-<%INIT>
-my $tabs;
-if ($id) {
- $tabs->{'this'} = {
- title => $QueueObj->Name,
- path => "Admin/Queues/Modify.html?id=".$id,
- current_subtab => $current_tab,
- subtabs => {
- C => { title => loc('Basics'),
- path => "Admin/Queues/Modify.html?id=".$id,
- },
- D => { title => loc('Watchers'),
- path => "Admin/Queues/People.html?id=".$id,
- },
-
- E => { title => loc('Scrips'),
- path => "Admin/Queues/Scrips.html?id=".$id,
- },
- F => { title => loc('Templates'),
- path => "Admin/Queues/Templates.html?id=".$id,
- },
-
- G1 => { title => loc('Ticket Custom Fields'),
- path => 'Admin/Queues/CustomFields.html?SubType=RT::Ticket&id='.$id,
- },
-
- G2 => { title => loc('Transaction Custom Fields'),
- path => 'Admin/Queues/CustomFields.html?SubType=RT::Ticket-RT::Transaction&id='.$id,
- },
-
- H => { title => loc('Group Rights'),
- path => "Admin/Queues/GroupRights.html?id=".$id,
- },
- I => { title => loc('User Rights'),
- path => "Admin/Queues/UserRights.html?id=".$id,
- },
- J => { title => loc('History'),
- path => "Admin/Queues/History.html?id=" . $QueueObj->id
- },
- }
- };
-}
-if ($session{'CurrentUser'}->HasRight( Object => $RT::System, Right => 'AdminQueue')) {
- $tabs->{"A"} = { title => loc('Select'),
- path => "Admin/Queues/",
- };
- $tabs->{"B"} = { title => loc('Create'),
- path => "Admin/Queues/Modify.html?Create=1",
- separator => 1, };
-}
-
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
-foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {
- if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
- $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab;
- }
-}
- $current_tab = "Admin/Queues/Modify.html?id=".$id if $id;
-</%INIT>
-
-<%ARGS>
-$QueueObj => undef
-$id => undef
-$subtabs => undef
-$current_subtab => undef
-$current_tab => undef
-$Title => undef
-</%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectCustomField b/rt/share/html/Admin/Elements/SelectCustomField
index fac69fad5..7f4e45eb5 100644
--- a/rt/share/html/Admin/Elements/SelectCustomField
+++ b/rt/share/html/Admin/Elements/SelectCustomField
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/SelectCustomFieldLookupType b/rt/share/html/Admin/Elements/SelectCustomFieldLookupType
index e124dfb64..514264b2e 100644
--- a/rt/share/html/Admin/Elements/SelectCustomFieldLookupType
+++ b/rt/share/html/Admin/Elements/SelectCustomFieldLookupType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/SelectCustomFieldRenderType b/rt/share/html/Admin/Elements/SelectCustomFieldRenderType
new file mode 100644
index 000000000..5034c4dfb
--- /dev/null
+++ b/rt/share/html/Admin/Elements/SelectCustomFieldRenderType
@@ -0,0 +1,70 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<select name="<%$Name%>">
+%for my $option (@types) {
+<option value="<%$option%>"<%$option eq $Default && qq[ selected="selected"] |n%>><% $option %></option>
+%}
+</select>
+<%INIT>
+my $cf = RT::CustomField->new($session{'CurrentUser'});
+$Default ||= $cf->DefaultRenderType($TypeComposite);
+
+my @types = $cf->RenderTypes($TypeComposite);
+
+# XXX: We currently don't support cascaded select CFs when
+# rendering as a list, so don't offer it for now.
+if ( $BasedOn ) {
+ @types = grep { not /List/ } @types;
+}
+</%INIT>
+<%ARGS>
+$Default => undef
+$TypeComposite => 'Select-0'
+$Name => 'RenderType'
+$BasedOn => 0
+</%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectCustomFieldType b/rt/share/html/Admin/Elements/SelectCustomFieldType
index 6eb149764..50175cab9 100755
--- a/rt/share/html/Admin/Elements/SelectCustomFieldType
+++ b/rt/share/html/Admin/Elements/SelectCustomFieldType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,7 +52,7 @@
</select>
<%INIT>
my $cf = RT::CustomField->new($session{'CurrentUser'});
-
+$Default = "Freeform-1" if $Default eq "-0";
</%INIT>
<%ARGS>
$Default=>undef
diff --git a/rt/share/html/Admin/Elements/SelectGroups b/rt/share/html/Admin/Elements/SelectGroups
index d6888adf1..e839f754a 100755
--- a/rt/share/html/Admin/Elements/SelectGroups
+++ b/rt/share/html/Admin/Elements/SelectGroups
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,7 +52,7 @@
</select>
<%INIT>
-my $groups = new RT::Groups($session{'CurrentUser'});
+my $groups = RT::Groups->new($session{'CurrentUser'});
$groups->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => $Domain);
</%INIT>
diff --git a/rt/share/html/Admin/Elements/SelectModifyGroup b/rt/share/html/Admin/Elements/SelectModifyGroup
index 85dee9e16..8e51fa6b7 100755
--- a/rt/share/html/Admin/Elements/SelectModifyGroup
+++ b/rt/share/html/Admin/Elements/SelectModifyGroup
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,7 +50,7 @@
%}
<%INIT>
my ($Group);
-my $Groups = new RT::Groups($session{'CurrentUser'});
+my $Groups = RT::Groups->new($session{'CurrentUser'});
$Groups->UnLimit;
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectModifyQueue b/rt/share/html/Admin/Elements/SelectModifyQueue
index d676d0178..e0f7d22b3 100755
--- a/rt/share/html/Admin/Elements/SelectModifyQueue
+++ b/rt/share/html/Admin/Elements/SelectModifyQueue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,7 +50,7 @@
%}
<%INIT>
my ($queue);
-my $queues = new RT::Queues($session{'CurrentUser'});
+my $queues = RT::Queues->new($session{'CurrentUser'});
$queues->UnLimit;
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectModifyUser b/rt/share/html/Admin/Elements/SelectModifyUser
index 2941064dc..f170b824f 100755
--- a/rt/share/html/Admin/Elements/SelectModifyUser
+++ b/rt/share/html/Admin/Elements/SelectModifyUser
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,9 +50,9 @@
%}
<%INIT>
my ($user);
-my $users = new RT::Users($session{'CurrentUser'});
+my $users = RT::Users->new($session{'CurrentUser'});
$users->Limit(FIELD => 'id',
- VALUE => $RT::SystemUser->id,
+ VALUE => RT->SystemUser->id,
OPERATOR => '!=' );
if (defined $IdLike) {
diff --git a/rt/share/html/Admin/Elements/SelectNewGroupMembers b/rt/share/html/Admin/Elements/SelectNewGroupMembers
index 04e99e578..8778daec0 100755
--- a/rt/share/html/Admin/Elements/SelectNewGroupMembers
+++ b/rt/share/html/Admin/Elements/SelectNewGroupMembers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,58 +46,41 @@
%#
%# END BPS TAGGED BLOCK }}}
% if ( $Show ne 'Groups' ) {
-<b><&|/l&>Users</&></b>
-<br />
-<select multiple="multiple" name="<% $Name %>Users" size="10">
-<%perl>
-my @users = sort { lc($a->[0]) cmp lc($b->[0]) }
- map { [$m->scomp("/Elements/ShowUser", User => $_), $_] }
- @{ $users->ItemsArrayRef };
-</%perl>
-% for (@users) {
-% my ($rendered, $user) = @$_;
-% next if $SkipUsers->{ $user->id };
-<option value="User-<% $user->id %>"><% $rendered |n%></option>
-% }
-</select>
-<br />
+<label for="<% $Name %>Users"><&|/l&>Add user</&>:</label>
+<input type="text" value="" name="<% $Name %>Users" id="<% $Name %>Users" /><br />
+<script type="text/javascript">
+jQuery(function(){
+ jQuery("#"+<% $Name |n,j%>+"Users").autocomplete({
+ source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Users?return=Name;privileged=1;exclude="+<% $user_ids |n,u,j %>,
+ // Auto-submit once a user is chosen
+ select: function( event, ui ) {
+ jQuery(event.target).val(ui.item.value);
+ jQuery(event.target).closest("form").submit();
+ }
+ });
+});
+</script>
% }
% if ( $Show ne 'Users' ) {
-<b><&|/l&>Groups</&></b>
-<br />
-<select multiple="multiple" name="<% $Name %>Groups" size="10">
-% while ( my $group = $groups->Next ) {
-% next if $SkipGroups->{ $group->id };
-<option value="Group-<% $group->id %>"><% $group->Name %></option>
-% }
-</select>
+<label for="<% $Name %>Groups"><&|/l&>Add group</&>:</label>
+<input type="text" value="" name="<% $Name %>Groups" id="<% $Name %>Groups" /><br />
+<script type="text/javascript">
+jQuery(function(){
+ jQuery("#"+<% $Name |n,j%>+"Groups").autocomplete({
+ source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Groups?exclude="+<% $group_ids |n,u,j %>,
+ // Auto-submit once a user is chosen
+ select: function( event, ui ) {
+ jQuery(event.target).val(ui.item.value);
+ jQuery(event.target).closest("form").submit();
+ }
+ });
+});
+</script>
% }
-
<%INIT>
-my $users = new RT::Users($session{'CurrentUser'});
-
-$users->Limit(
- FIELD => 'id',
- VALUE => $RT::SystemUser->id,
- OPERATOR => '!=',
- ENTRYAGGREGATOR => 'AND'
-);
-$users->Limit(
- FIELD => 'id',
- VALUE => $RT::Nobody->id,
- OPERATOR => '!=',
- ENTRYAGGREGATOR => 'AND'
-);
-$users->LimitToPrivileged();
-
-my $groups = new RT::Groups($session{'CurrentUser'});
-
-# self-recursive group membership considered harmful!
-$groups->Limit(FIELD => 'id', VALUE => $Group->id, OPERATOR => '!=' );
-$groups->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'UserDefined');
-
-
+my $user_ids = join(',', grep { $SkipUsers->{$_} } keys %$SkipUsers);
+my $group_ids = join(',', grep { $SkipGroups->{$_} } keys %$SkipGroups);
</%INIT>
<%ARGS>
$Name => 'Users'
diff --git a/rt/share/html/Admin/Elements/SelectRights b/rt/share/html/Admin/Elements/SelectRights
index 7ec8d1b42..73f5bced3 100755
--- a/rt/share/html/Admin/Elements/SelectRights
+++ b/rt/share/html/Admin/Elements/SelectRights
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -95,21 +95,20 @@ while ( my $ace = $ACLObj->Next ) {
}
- my $ACLObj = new RT::ACL($session{'CurrentUser'});
- my $ACE = new RT::ACE($session{'CurrentUser'});
+ my $ACLObj = RT::ACL->new($session{'CurrentUser'});
+ my $ACE = RT::ACE->new($session{'CurrentUser'});
$ACLObj->LimitToObject( $Object);
$ACLObj->LimitToPrincipal( Id => $PrincipalId);
$ACLObj->OrderBy(FIELD=>'RightName');
- if (ref($Object) && UNIVERSAL::can($Object, 'AvailableRights')) {
+ eval {
%Rights = %{$Object->AvailableRights};
- }
-
- else {
- %Rights = ( loc('System Error') => loc("No rights found") );
- }
+ };
+ if ($@) {
+ %Rights = ( loc('System Error') => loc("No rights found") );
+ }
$ACLDesc = "$PrincipalId-".ref($Object)."-".$Object->Id;
</%INIT>
diff --git a/rt/share/html/Admin/Elements/SelectScrip b/rt/share/html/Admin/Elements/SelectScrip
index 7e070df8e..f0adab10a 100755
--- a/rt/share/html/Admin/Elements/SelectScrip
+++ b/rt/share/html/Admin/Elements/SelectScrip
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/SelectScripAction b/rt/share/html/Admin/Elements/SelectScripAction
index 4dd39f55b..750815b07 100755
--- a/rt/share/html/Admin/Elements/SelectScripAction
+++ b/rt/share/html/Admin/Elements/SelectScripAction
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -62,10 +62,19 @@ form.submit()">
<%INIT>
my $ScripActions = RT::ScripActions->new($session{'CurrentUser'});
-$ScripActions->UnLimit;
-$ScripActions->OrderBy(FIELD => 'Name');
+# hide user-defined if the user can't execute code
+if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) {
+ $ScripActions->UnLimit;
+} else {
+ $ScripActions->Limit(
+ FIELD => 'ExecModule',
+ OPERATOR => '!=',
+ VALUE => 'UserDefined',
+ );
+}
+$ScripActions->OrderBy(FIELD => 'Name');
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectScripCondition b/rt/share/html/Admin/Elements/SelectScripCondition
index 67438a72a..1023df6e0 100755
--- a/rt/share/html/Admin/Elements/SelectScripCondition
+++ b/rt/share/html/Admin/Elements/SelectScripCondition
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -62,9 +62,19 @@ form.submit()">
<%INIT>
my $ScripConditions = RT::ScripConditions->new($session{'CurrentUser'});
-$ScripConditions->UnLimit;
-$ScripConditions->OrderBy(FIELD => 'Name');
+# hide user-defined if the user can't execute code
+if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) {
+ $ScripConditions->UnLimit;
+} else {
+ $ScripConditions->Limit(
+ FIELD => 'ExecModule',
+ OPERATOR => '!=',
+ VALUE => 'UserDefined',
+ );
+}
+
+$ScripConditions->OrderBy(FIELD => 'Name');
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectSingleOrMultiple b/rt/share/html/Admin/Elements/SelectSingleOrMultiple
index 1a2667840..bf2824397 100755
--- a/rt/share/html/Admin/Elements/SelectSingleOrMultiple
+++ b/rt/share/html/Admin/Elements/SelectSingleOrMultiple
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/SelectStage b/rt/share/html/Admin/Elements/SelectStage
index 38a7f18a5..369dee9af 100644
--- a/rt/share/html/Admin/Elements/SelectStage
+++ b/rt/share/html/Admin/Elements/SelectStage
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Elements/SelectTemplate b/rt/share/html/Admin/Elements/SelectTemplate
index ffaebeeb7..8d45c7de1 100755
--- a/rt/share/html/Admin/Elements/SelectTemplate
+++ b/rt/share/html/Admin/Elements/SelectTemplate
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,19 +47,12 @@
%# END BPS TAGGED BLOCK }}}
<select name="<%$Name%>">
<option value=""
-<% defined($Default) && $Default eq 'none' && qq[ selected="selected"] |n %>
->-</option>
+<% defined($Default) && $Default eq 'none' && qq[ selected="selected"] |n %>>-</option>
%while (my $Template = $PrimaryTemplates->Next) {
-<option value="<%$Template->Id%>"
-<% ($Template->Id == $Default) && qq[ selected="selected"] |n %>
-><% loc($Template->Name) %>
-</option>
+<option value="<%$Template->Id%>" <% ($Template->Id == $Default) && qq[ selected="selected"] |n %>><% loc($Template->Name) %></option>
%}
%while (my $Template = $OtherTemplates->Next) {
-<option value="<%$Template->Id%>"
-<% defined($Default) && ($Template->Id == $Default) && qq[ selected="selected"] |n %>
-><&|/l, loc($Template->Name) &>Global template: [_1]</&>
-</option>
+<option value="<%$Template->Id%>" <% defined($Default) && ($Template->Id == $Default) && qq[ selected="selected"] |n %>><&|/l, loc($Template->Name) &>Global template: [_1]</&></option>
%}
</select>
@@ -73,15 +66,12 @@ $PrimaryTemplates->OrderBy(FIELD => 'Name');
}
my $OtherTemplates = RT::Templates->new($session{'CurrentUser'});
-$OtherTemplates->LimitToGlobal($DefaultQueue);
+$OtherTemplates->LimitToGlobal;
$OtherTemplates->OrderBy(FIELD => 'Name');
</%INIT>
<%ARGS>
-
$Queue => undef
$Default => 'none'
-$DefaultQueue => undef
$Name => 'Template'
-
</%ARGS>
diff --git a/rt/share/html/Admin/Elements/SelectUsers b/rt/share/html/Admin/Elements/SelectUsers
index 14ebf822c..1851f23f8 100755
--- a/rt/share/html/Admin/Elements/SelectUsers
+++ b/rt/share/html/Admin/Elements/SelectUsers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,10 +54,10 @@
</select>
<%INIT>
-my $users = new RT::Users($session{'CurrentUser'});
+my $users = RT::Users->new($session{'CurrentUser'});
-$users->Limit(FIELD => 'id', VALUE => $RT::SystemUser->id, OPERATOR => '!=' );
-$users->Limit(FIELD => 'id', VALUE => $RT::Nobody->id, OPERATOR => '!=' );
+$users->Limit(FIELD => 'id', VALUE => RT->SystemUser->id, OPERATOR => '!=' );
+$users->Limit(FIELD => 'id', VALUE => RT->Nobody->id, OPERATOR => '!=' );
$users->LimitToPrivileged();
</%INIT>
diff --git a/rt/share/html/Admin/Elements/ShowKeyInfo b/rt/share/html/Admin/Elements/ShowKeyInfo
index acb51c5de..2ec319a63 100644
--- a/rt/share/html/Admin/Elements/ShowKeyInfo
+++ b/rt/share/html/Admin/Elements/ShowKeyInfo
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -80,6 +80,7 @@ $EmailAddress
$Type => 'public'
</%ARGS>
<%INIT>
+return if ($m->cache_self( key => join("||",$EmailAddress,$Type, $$), expires_in => '2 minutes'));
require RT::Crypt::GnuPG;
my %res = RT::Crypt::GnuPG::GetKeyInfo( $EmailAddress, $Type );
diff --git a/rt/share/html/Admin/Elements/SystemTabs b/rt/share/html/Admin/Elements/SystemTabs
deleted file mode 100755
index 66183efd2..000000000
--- a/rt/share/html/Admin/Elements/SystemTabs
+++ /dev/null
@@ -1,99 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs, subtabs => $tabs,
- current_tab => 'Admin/Global/',
- current_subtab => $current_tab,
- Title => $Title &>
-
-<%INIT>
- my $tabs = {
-
- A => { title => loc('Scrips'),
- path => 'Admin/Global/Scrips.html',
- },
- B => { title => loc('Templates'),
- path => 'Admin/Global/Templates.html',
- },
-
- F => { title => loc('Custom Fields'),
- path => 'Admin/Global/CustomFields/index.html',
- },
-
- G => { title => loc('Group Rights'),
- path => 'Admin/Global/GroupRights.html',
- },
- H => { title => loc('User Rights'),
- path => 'Admin/Global/UserRights.html',
- },
- I => { title => loc('RT at a glance'),
- path => 'Admin/Global/MyRT.html',
- },
-
-};
-
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
-
- if ($current_tab) {
- foreach my $tab (sort keys %{$tabs}) {
- if ($tabs->{$tab}->{'path'} eq $current_tab) {
- $tabs->{$tab}->{"subtabs"} = $subtabs || {};
- $tabs->{$tab}->{"current_subtab"} = $current_subtab;
- }
- }
- }
-</%INIT>
-
-
-<%ARGS>
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$Title => undef
-</%ARGS>
diff --git a/rt/share/html/Admin/Elements/UserTabs b/rt/share/html/Admin/Elements/UserTabs
deleted file mode 100755
index 330c442b5..000000000
--- a/rt/share/html/Admin/Elements/UserTabs
+++ /dev/null
@@ -1,116 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Tabs,
- subtabs => $tabs,
- current_tab => 'Admin/Users/',
- current_subtab => $current_tab,
- Title => $Title &>
-<%INIT>
-my $tabs;
-if ($id) {
-$tabs->{'this'} = { title => eval { $UserObj->Name },
-
- path => "Admin/Users/Modify.html?id=".$id,
-subtabs => {
- Basics => { title => loc('Basics'),
- path => "Admin/Users/Modify.html?id=".$id
- },
- Memberships => { title => loc('Memberships'),
- path => "Admin/Users/Memberships.html?id=".$id
- },
- History => { title => loc('History'),
- path => "Admin/Users/History.html?id=".$id
- },
- 'MyRT' => { title => loc('RT at a glance'),
- path => "Admin/Users/MyRT.html?id=".$id
- },
- }
-};
- if ( RT->Config->Get('GnuPG')->{'Enable'} ) {
- $tabs->{'this'}{'subtabs'}{'GnuPG'} = {
- title => loc('GnuPG'),
- path => "Admin/Users/GnuPG.html?id=".$id,
- };
- }
-}
-
-if ($session{'CurrentUser'}->HasRight( Object => $RT::System, Right => 'AdminUsers')) {
- $tabs->{"A"} = { title => loc('Select'),
- path => "Admin/Users/",
- };
- $tabs->{"B"} = { title => loc('Create'),
- path => "Admin/Users/Modify.html?Create=1",
- separator => 1,
- };
-}
-
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
-
-#foreach my $tab ( sort keys %{$tabs} ) {
-# if ( $tabs->{$tab}->{'path'} eq $current_subtab ) {
-# $tabs->{$tab}->{"current_subtab"} = $current_subtab;
-# }
-#}
-foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {
- if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
- $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab;
- }
-}
-$tabs->{'this'}->{"current_subtab"} = $current_tab;
-$current_tab = "Admin/Users/Modify.html?id=".$id if $id;
-</%INIT>
-<%ARGS>
-$UserObj => undef
-$id => undef
-$current_tab => undef
-$subtabs => undef
-$current_subtab => undef
-$Title => undef
-</%ARGS>
diff --git a/rt/share/html/Admin/Global/CustomFields/Class-Article.html b/rt/share/html/Admin/Global/CustomFields/Class-Article.html
new file mode 100644
index 000000000..771e9efac
--- /dev/null
+++ b/rt/share/html/Admin/Global/CustomFields/Class-Article.html
@@ -0,0 +1,54 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => 'RT::Class', Object => $object, SubType => 'RT::Article' &>
+<%INIT>
+ my $title = loc( 'Edit Custom Fields for articles in all classes');
+ my $object = RT::Class->new($session{'CurrentUser'});
+</%INIT>
diff --git a/rt/share/html/Admin/Global/CustomFields/Groups.html b/rt/share/html/Admin/Global/CustomFields/Groups.html
index ef83f8c91..3356a21d4 100644
--- a/rt/share/html/Admin/Global/CustomFields/Groups.html
+++ b/rt/share/html/Admin/Global/CustomFields/Groups.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GlobalCustomFieldTabs,
- current_tab => "Admin/Global/CustomFields/Groups.html",
- current_subtab => "Admin/Global/CustomFields/Groups.html",
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => 'RT::Group', Object=> $object &>
<%INIT>
diff --git a/rt/share/html/Admin/Global/CustomFields/Queue-Tickets.html b/rt/share/html/Admin/Global/CustomFields/Queue-Tickets.html
index 6f5370b65..371b3d6ea 100755
--- a/rt/share/html/Admin/Global/CustomFields/Queue-Tickets.html
+++ b/rt/share/html/Admin/Global/CustomFields/Queue-Tickets.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GlobalCustomFieldTabs,
- current_tab => "Admin/Global/CustomFields/Queue-Tickets.html",
- current_subtab => "Admin/Global/CustomFields/Queue-Tickets.html",
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => 'RT::Queue', Object=> $object, SubType => 'RT::Ticket' &>
<%INIT>
diff --git a/rt/share/html/Admin/Global/CustomFields/Queue-Transactions.html b/rt/share/html/Admin/Global/CustomFields/Queue-Transactions.html
index 4c51b9dc8..ce642935f 100755
--- a/rt/share/html/Admin/Global/CustomFields/Queue-Transactions.html
+++ b/rt/share/html/Admin/Global/CustomFields/Queue-Transactions.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GlobalCustomFieldTabs,
- current_tab => "Admin/Global/CustomFields/Queue-Transactions.html",
- current_subtab => "Admin/Global/CustomFields/Queue-Transactions.html",
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => 'RT::Queue', Object=> $object, SubType => 'RT::Ticket-RT::Transaction' &>
<%INIT>
diff --git a/rt/share/html/Admin/Global/CustomFields/Queues.html b/rt/share/html/Admin/Global/CustomFields/Queues.html
index bc0652ada..6eda3840f 100644
--- a/rt/share/html/Admin/Global/CustomFields/Queues.html
+++ b/rt/share/html/Admin/Global/CustomFields/Queues.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GlobalCustomFieldTabs,
- current_tab => "Admin/Global/CustomFields/Queues.html",
- current_subtab => "Admin/Global/CustomFields/Queues.html",
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => 'RT::Queue', Object=> $object &>
<%INIT>
diff --git a/rt/share/html/Admin/Global/CustomFields/Users.html b/rt/share/html/Admin/Global/CustomFields/Users.html
index 719a44c1d..a1046d1da 100644
--- a/rt/share/html/Admin/Global/CustomFields/Users.html
+++ b/rt/share/html/Admin/Global/CustomFields/Users.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GlobalCustomFieldTabs,
- current_tab => "Admin/Global/CustomFields/Users.html",
- current_subtab => "Admin/Global/CustomFields/Users.html",
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, ObjectType => 'RT::User', Object=> $object &>
<%INIT>
diff --git a/rt/share/html/Admin/Global/CustomFields/index.html b/rt/share/html/Admin/Global/CustomFields/index.html
index 93cea10c3..e27e93a1d 100644
--- a/rt/share/html/Admin/Global/CustomFields/index.html
+++ b/rt/share/html/Admin/Global/CustomFields/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,7 +47,7 @@
%# END BPS TAGGED BLOCK }}}
% $m->callback( %ARGS, tabs => $tabs );
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GlobalCustomFieldTabs, Title => $title &>
+<& /Elements/Tabs &>
<ul>
% foreach my $key (sort keys %$tabs) {
@@ -91,7 +91,12 @@ my $tabs = {
loc('Select custom fields for transactions on tickets in all queues'),
path => 'Queue-Transactions.html',
},
+ H => {
+ title => loc('Articles'),
+ text => loc('Select Custom Fields for Articles in all Classes'),
+ path => 'Class-Article.html'
+ },
};
diff --git a/rt/share/html/Admin/Global/GroupRights.html b/rt/share/html/Admin/Global/GroupRights.html
index 19ead1ca4..702a2e933 100755
--- a/rt/share/html/Admin/Global/GroupRights.html
+++ b/rt/share/html/Admin/Global/GroupRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,78 +46,18 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Modify global group rights') &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/GroupRights.html',
- Title => loc('Modify global group rights') &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="GroupRights.html">
-
-<&| /Widgets/TitleBox, title => loc('Modify global group rights.')&>
-
-<h1><&|/l&>System groups</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToSystemInternalGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% loc($Group->Type) %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object =>$RT::System &>
- </td>
- </tr>
-% }
-</table>
-<h1><&|/l&>Roles</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToRolesForSystem();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% loc($Group->Type) %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $RT::System &>
- </td>
- </tr>
-% }
-</table>
-<h1><&|/l&>User defined groups</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToUserDefinedGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% $Group->Name %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $RT::System &>
- </td>
- </tr>
-% }
-</table>
-
- </&>
- <& /Elements/Submit, Label => loc('Modify Group Rights'), Reset => 1 &>
-
- </form>
+<form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
+ <& /Admin/Elements/EditRights, Context => $RT::System, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
+</form>
<%INIT>
-
- #Update the acls.
- my @results = ProcessACLChanges(\%ARGS);
+# Update the acls.
+my @results = ProcessACLs(\%ARGS);
-
-my $Groups;
-
+# Principal collections
+my @principals = GetPrincipalsMap($RT::System, qw(System Roles Groups));
</%INIT>
-
-<%ARGS>
-</%ARGS>
diff --git a/rt/share/html/Admin/Global/MyRT.html b/rt/share/html/Admin/Global/MyRT.html
index edee2df27..3dca78fad 100644
--- a/rt/share/html/Admin/Global/MyRT.html
+++ b/rt/share/html/Admin/Global/MyRT.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc("RT at a glance") &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/MyRT.html',
- Title => loc("RT at a glance"),
-&>
+<& /Elements/Tabs &>
<& /Widgets/SelectionBox:header, nojs => 1 &>
diff --git a/rt/share/html/Admin/Global/Scrip.html b/rt/share/html/Admin/Global/Scrip.html
index d5aa9ffd6..3a6ed107d 100755
--- a/rt/share/html/Admin/Global/Scrip.html
+++ b/rt/share/html/Admin/Global/Scrip.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,41 +46,18 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/Scrips.html',
- current_subtab => $current_subtab,
- subtabs => $subtabs,
- Title => $title &>
-
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
<& /Admin/Elements/EditScrip, title => $title, %ARGS, id => $id &>
<%init>
-my $subtabs = {
- A => {
- title => loc('Select'),
- path => "Admin/Global/Scrips.html",
- },
- B => {
- title => loc('New'),
- path => "Admin/Global/Scrip.html?create=1&Queue=0",
- separator => 1,
- },
-};
-
my ($id, @results) = $m->comp( '/Admin/Elements/EditScrip:Process', %ARGS );
-my ($title, $current_subtab);
+my ($title);
if ( $id ) {
- $current_subtab = "Admin/Global/Scrip.html?id=$id&Queue=0";
$title = loc("Modify a scrip that applies to all queues");
- $subtabs->{"C"} = {
- title => loc('Scrip #[_1]', $id),
- path => "Admin/Global/Scrip.html?id=$id&Queue=0",
- };
}
else {
- $current_subtab = "Admin/Global/Scrip.html?create=1&Queue=0";
$title = loc("Add a scrip which will apply to all queues");
}
</%init>
diff --git a/rt/share/html/Admin/Global/Scrips.html b/rt/share/html/Admin/Global/Scrips.html
index 2ee58f770..808913ba2 100755
--- a/rt/share/html/Admin/Global/Scrips.html
+++ b/rt/share/html/Admin/Global/Scrips.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,32 +46,13 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/Scrips.html',
- current_subtab => 'Admin/Global/Scrips.html',
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Admin/Elements/EditScrips, title => $title, id => $id, %ARGS &>
</form>
<%init>
-
-my $subtabs = {
- A => { title => loc('Select'),
- path => "Admin/Global/Scrips.html",
- },
- B => { title => loc('New'),
- path => "Admin/Global/Scrip.html?create=1&Queue=0",
- separator => 1,
- }
- };
my $title = loc("Modify scrips which apply to all queues");
-
my (@actions);
-
</%init>
-
-
-
<%ARGS>
$id => 0
</%ARGS>
diff --git a/rt/share/html/Admin/Global/Template.html b/rt/share/html/Admin/Global/Template.html
index c7652e6aa..70b69053b 100755
--- a/rt/share/html/Admin/Global/Template.html
+++ b/rt/share/html/Admin/Global/Template.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,14 +46,10 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/Templates.html',
- current_subtab => $current_subtab,
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="Template.html">
+<form method="post" name="ModifyTemplate" id="ModifyTemplate" action="Template.html">
%if ($Create ) {
<input type="hidden" class="hidden" name="Template" value="new" />
% } else {
@@ -62,30 +58,23 @@
%# hang onto the queue id
<input type="hidden" class="hidden" name="Queue" value="<%$Queue%>" />
-<& /Admin/Elements/ModifyTemplate, Name => $TemplateObj->Name, Description =>
-$TemplateObj->Description, Content => $TemplateObj->Content &>
+<& /Admin/Elements/ModifyTemplate,
+ Name => $TemplateObj->Name,
+ Description => $TemplateObj->Description,
+ Content => $TemplateObj->Content,
+ Type => $TemplateObj->Type
+&>
<& /Elements/Submit, Label => $SubmitLabel, Reset => 1 &>
</form>
<%INIT>
-my $TemplateObj = new RT::Template($session{'CurrentUser'});
-my ($title, @results, $current_subtab, $SubmitLabel);
-
-my $subtabs = {
- A => { title => loc('Select'),
- path => "Admin/Global/Templates.html"
- },
- B => { title => loc('New'),
- path => "Admin/Global/Template.html?Create=1&Queue=0",
- separator => 1,
- }
- };
+my $TemplateObj = RT::Template->new($session{'CurrentUser'});
+my ($title, @results, $SubmitLabel);
if ($Create) {
$title = loc("Create a template");
- $current_subtab = "Admin/Global/Template.html?Create=1&Queue=0";
$SubmitLabel = loc('Create');
}
@@ -103,21 +92,20 @@ else {
}
if ($TemplateObj->Id()) {
- my @attribs = qw( Description Content Queue Name);
+ my @attribs = qw( Description Content Queue Name Type );
my @aresults = UpdateRecordObject( AttributesRef => \@attribs,
Object => $TemplateObj,
ARGSRef => \%ARGS);
- $current_subtab = "Admin/Global/Template.html?Queue=0&Template=".$TemplateObj->Id();
- $subtabs->{"C"} = { title => loc('Template #[_1]', $TemplateObj->Id()),
- path => "Admin/Global/Template.html?Queue=0&Template=".$TemplateObj->Id(),
- };
push @results, @aresults;
+
+ my ($ok, $msg) = $TemplateObj->CompileCheck;
+ push @results, $msg if !$ok;
}
</%INIT>
<%ARGS>
-$Queue => undef
-$Template => undef
-$Create => undef
-$Name => undef
+$Queue => ''
+$Template => ''
+$Create => ''
+$Name => ''
</%ARGS>
diff --git a/rt/share/html/Admin/Global/Templates.html b/rt/share/html/Admin/Global/Templates.html
index 30ad24418..2ff1393cf 100755
--- a/rt/share/html/Admin/Global/Templates.html
+++ b/rt/share/html/Admin/Global/Templates.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,32 +46,13 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title, FeedURI => 'templates' &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/Templates.html',
- current_subtab => 'Admin/Global/Templates.html',
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Admin/Elements/EditTemplates, title => $title, %ARGS &>
</form>
<%init>
-
-my $subtabs = {
- A => { title => loc('Select'),
- path => "Admin/Global/Templates.html"
- },
- B => { title => loc('New'),
- path => "Admin/Global/Template.html?Create=1&Queue=0",
- separator => 1,
- }
- };
my $title = loc("Modify templates which apply to all queues");
-
my (@actions);
-
</%init>
-
-
-
<%ARGS>
$id => undef
</%ARGS>
diff --git a/rt/share/html/Admin/Global/Topics.html b/rt/share/html/Admin/Global/Topics.html
new file mode 100644
index 000000000..b1a1d9796
--- /dev/null
+++ b/rt/share/html/Admin/Global/Topics.html
@@ -0,0 +1,63 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& /Admin/Articles/Elements/Topics, RootObj => $RT::System, title => $title, %ARGS &>
+
+<%INIT>
+
+my $title = $Modify
+ ? loc("Modify global topics")
+ : loc("Edit global topic hierarchy");
+
+</%INIT>
+
+<%ARGS>
+$id => undef
+$Modify => ""
+</%ARGS>
diff --git a/rt/share/html/Admin/Global/UserRights.html b/rt/share/html/Admin/Global/UserRights.html
index 8011c9b66..f0d094dd4 100755
--- a/rt/share/html/Admin/Global/UserRights.html
+++ b/rt/share/html/Admin/Global/UserRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,54 +46,14 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Modify global user rights') &>
-<& /Admin/Elements/SystemTabs,
- current_tab => 'Admin/Global/UserRights.html',
- Title => loc('Modify global user rights') &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="UserRights.html">
-
-<&| /Widgets/TitleBox, title => loc('Modify global user rights.') &>
-<table>
-
-% while ( my $UserObj = $Users->Next ) {
-% my $group = RT::Group->new($session{'CurrentUser'});
-% $group->LoadACLEquivalenceGroup( $UserObj );
- <tr align="right">
- <td valign="top"><& /Elements/ShowUser, User => $UserObj &></td>
- <td><& /Admin/Elements/SelectRights,
- PrincipalId => $group->PrincipalId,
- Object => $RT::System,
- &></td>
- </tr>
-% }
-</table>
-</&>
-
-<& /Elements/Submit, Label => loc('Modify User Rights'), Reset => 1 &>
-
+<form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
+ <& /Admin/Elements/EditRights, Context => $RT::System, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
</form>
<%INIT>
-
- #Update the acls.
- my @results = ProcessACLChanges(\%ARGS);
-
-# {{{ Deal with setting up the display of current rights.
-
-
-# Find out which users we want to display ACL selects for
-my $Privileged = RT::Group->new($session{'CurrentUser'});
-$Privileged->LoadSystemInternalGroup('Privileged');
-my $Users = $Privileged->UserMembersObj();
-$Users->OrderBy( FIELD => $UserOrderBy, ORDER => $UserOrder );
-
-
-
-# }}}
-
+my @results = ProcessACLs(\%ARGS);
+my @principals = GetPrincipalsMap($RT::System, 'Users');
</%INIT>
-
-<%ARGS>
-$UserOrderBy => 'Name'
-$UserOrder => 'ASC'
-</%ARGS>
diff --git a/rt/share/html/Admin/Global/index.html b/rt/share/html/Admin/Global/index.html
index 0f7b56d4c..0f245f069 100755
--- a/rt/share/html/Admin/Global/index.html
+++ b/rt/share/html/Admin/Global/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,42 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-% $m->callback( %ARGS, tabs => $tabs );
<& /Admin/Elements/Header, Title => loc('Admin/Global configuration') &>
-<& /Admin/Elements/SystemTabs,
- Title => loc('Admin/Global configuration') &>
- <& /Elements/ListMenu, items => $tabs &>
-<%INIT>
- my $tabs = {
-
- A => { title => loc('Scrips'),
- text => loc('Modify scrips which apply to all queues'),
- path => '/Admin/Global/Scrips.html',
- },
- B => { title => loc('Templates'),
- text => loc('Edit system templates'),
- path => '/Admin/Global/Templates.html',
- },
-
- F => { title => loc('Custom Fields'),
- text => loc('Modify global custom fields'),
- path => '/Admin/Global/CustomFields/index.html',
- },
-
- G => { title => loc('Group Rights'),
- text => loc('Modify global group rights'),
- path => '/Admin/Global/GroupRights.html',
- },
- H => { title => loc('User Rights'),
- text => loc('Modify global user rights'),
- path => '/Admin/Global/UserRights.html',
- },
- I => { title => loc('RT at a glance'),
- text => loc('Modify the default "RT at a glance" view'),
- path => '/Admin/Global/MyRT.html',
- },
-
-
-
-};
-</%INIT>
+<& /Elements/Tabs &>
+<& /Elements/ListMenu, menu => Menu()->child('tools')->child('config')->child('global') &>
diff --git a/rt/share/html/Admin/Groups/GroupRights.html b/rt/share/html/Admin/Groups/GroupRights.html
index fc3ac33b1..4d9c1187f 100755
--- a/rt/share/html/Admin/Groups/GroupRights.html
+++ b/rt/share/html/Admin/Groups/GroupRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,62 +46,17 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Modify group rights for group [_1]', $GroupObj->Name) &>
-<& /Admin/Elements/GroupTabs,
- GroupObj => $GroupObj,
- current_tab => 'Admin/Groups/GroupRights.html?id='.$id,
- Title => loc('Modify group rights for group [_1]', $GroupObj->Name) &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="GroupRights.html">
+ <form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
<input type="hidden" class="hidden" name="id" value="<% $GroupObj->id %>" />
-
-<&| /Widgets/TitleBox, title => loc('Modify group rights for group [_1]', $GroupObj->Name) &>
-
-<h1><&|/l&>System groups</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToSystemInternalGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% loc($Group->Type) %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- PrincipalType => 'Group',
- Object => $GroupObj &>
- </td>
- </tr>
-% }
-</table>
-<h1><&|/l&>User defined groups</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToUserDefinedGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% $Group->Name %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- PrincipalType => 'Group',
- Object => $GroupObj &>
- </td>
- </tr>
-% }
-</table>
-
- </&>
- <& /Elements/Submit, Label => loc('Modify Group Rights'), Reset => 1 &>
-
+ <& /Admin/Elements/EditRights, Context => $GroupObj, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
</form>
-
<%INIT>
-
- #Update the acls.
- my @results = ProcessACLChanges(\%ARGS);
-
+# Update the acls.
+my @results = ProcessACLs(\%ARGS);
if (!defined $id) {
Abort(loc("No Group defined"));
@@ -110,8 +65,7 @@ if (!defined $id) {
my $GroupObj = RT::Group->new($session{'CurrentUser'});
$GroupObj->Load($id) || Abort(loc("Couldn't load group [_1]",$id));
-my $Groups;
-
+my @principals = GetPrincipalsMap($GroupObj, 'System', 'Groups');
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Groups/History.html b/rt/share/html/Admin/Groups/History.html
index 53b041dee..9a8ca015a 100644
--- a/rt/share/html/Admin/Groups/History.html
+++ b/rt/share/html/Admin/Groups/History.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GroupTabs,
- id => $id,
- GroupObj => $GroupObj,
- current_subtab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Ticket/Elements/ShowHistory,
Ticket => $GroupObj,
@@ -58,8 +54,7 @@
&>
<%INIT>
-my $current_tab = 'Admin/Groups/History.html?id='.$id;
-my $GroupObj = new RT::Group($session{'CurrentUser'});
+my $GroupObj = RT::Group->new($session{'CurrentUser'});
$GroupObj->Load($id) || Abort("Couldn't load group '$id'");
my $title = loc("History of the group [_1]", $GroupObj->Name);
</%INIT>
diff --git a/rt/share/html/Admin/Groups/Members.html b/rt/share/html/Admin/Groups/Members.html
index 4b40e5bd3..3ba5b657b 100755
--- a/rt/share/html/Admin/Groups/Members.html
+++ b/rt/share/html/Admin/Groups/Members.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,10 +45,8 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/Header, Title => loc('RT/Admin/Edit the group [_1]', $Group->Name) &>
-<& /Admin/Elements/GroupTabs, GroupObj => $Group,
- current_tab => 'Admin/Groups/Members.html?id='.$id,
- Title => "RT/Admin/Edit the group ". $Group->Name &>
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
<form action="<% RT->Config->Get('WebPath') %>/Admin/Groups/Members.html" method="post">
@@ -113,9 +111,11 @@ my @users = sort { lc($a->[0]) cmp lc($b->[0]) }
<%INIT>
-my $Group = new RT::Group($session{'CurrentUser'});
+my $Group = RT::Group->new($session{'CurrentUser'});
$Group->Load($id) || Abort(loc('Could not load group'));
+my $title = loc("Modify the group [_1]", $Group->Name);
+
my (%UsersSeen, %GroupsSeen);
$GroupsSeen{ $Group->id } = 1; # can't be a member of ourself
@@ -129,25 +129,37 @@ foreach my $key (keys %ARGS) {
push (@results, $msg);
}
-foreach my $member (grep $_, @AddMembersUsers, @AddMembersGroups) {
+# Process new users
+foreach my $member (grep $_, @AddMembersUsers) {
+ my $principal = RT::User->new($session{'CurrentUser'});
+
+ if ($member =~ /^User-(\d+)$/) {
+ # Old style, using id
+ $principal->Load($1);
+ } else {
+ # New style, just a username
+ $principal->Load($member);
+ }
+
+ my ($val, $msg) = $Group->AddMember($principal->PrincipalId);
+ push (@results, $msg);
+}
- my $principal;
+# Process new groups
+foreach my $member (grep $_, @AddMembersGroups) {
+ my $principal = RT::Group->new($session{'CurrentUser'});
if ($member =~ /^Group-(\d+)$/) {
- $principal = RT::Group->new($session{'CurrentUser'});
- $principal->Load($1);
- } elsif ($member =~ /^User-(\d+)$/) {
- $principal = RT::User->new($session{'CurrentUser'});
+ # Old style, using id
$principal->Load($1);
} else {
- next;
+ # New style, just a group name
+ $principal->LoadUserDefinedGroup($member);
}
-
my ($val, $msg) = $Group->AddMember($principal->PrincipalId);
push (@results, $msg);
}
-
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Groups/Modify.html b/rt/share/html/Admin/Groups/Modify.html
index de3dac4b5..148c98e1f 100755
--- a/rt/share/html/Admin/Groups/Modify.html
+++ b/rt/share/html/Admin/Groups/Modify.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,15 +47,12 @@
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GroupTabs,
- GroupObj => $Group,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form action="<%RT->Config->Get('WebPath')%>/Admin/Groups/Modify.html" method="post" enctype="multipart/form-data">
+<form action="<%RT->Config->Get('WebPath')%>/Admin/Groups/Modify.html" name="ModifyGroup" method="post" enctype="multipart/form-data">
%unless ($Group->Id) {
<input type="hidden" class="hidden" name="id" value="new" />
@@ -66,11 +63,11 @@
<tr><td align="right">
<&|/l&>Name</&>:
</td>
-<td><input name="Name" value="<%$Group->Name||''%>" /></td>
+<td><input name="Name" value="<%$Group->Name||$Name||''%>" /></td>
</tr>
<tr>
<td align="right">
-<&|/l&>Description</&>:</td><td colspan="3"><input name="Description" value="<%$Group->Description||''%>" size="60" /></td>
+<&|/l&>Description</&>:</td><td colspan="3"><input name="Description" value="<%$Group->Description||$Description||''%>" size="60" /></td>
</tr>
% my $CFs = $Group->CustomFields;
% while (my $CF = $CFs->Next) {
@@ -99,67 +96,72 @@
</form>
<%INIT>
-my $current_tab;
-my ($title, @results, $Disabled, $EnabledChecked);
+my ($title, @results, @warnings, $Disabled, $EnabledChecked);
my $Group = RT::Group->new($session{'CurrentUser'});
if ($Create) {
- $current_tab = 'Admin/Groups/Modify.html?Create=1';
$title = loc("Create a new group");
-}
-
-else {
- $current_tab = 'Admin/Groups/Modify.html?id='.$id;
+} else {
if ($id eq 'new' ) {
-
- my ($create_id, $create_msg) = $Group->CreateUserDefinedGroup(Name =>
- "$Name");
- unless ($create_id) {
- Abort (loc("Group could not be created: [_1]", $create_msg));
- }
- $id = $Group->Id;
- }
- else {
+ my ($create_id, $create_msg) = $Group->CreateUserDefinedGroup(Name => $Name );
+ if ($create_id) {
+ $id = $Group->Id;
+ push @results, $create_msg;
+ } else {
+ push @results, loc("Group could not be created: [_1]", $create_msg);
+ }
+ } else {
$Group->Load($id) || Abort('Could not load group');
}
-
- if ($id) {
+ if ($Group->Id) {
$title = loc("Modify the group [_1]", $Group->Name);
-
- }
+ }
# If the create failed
else {
$title = loc("Create a new group");
$Create = 1;
- }
-
+ }
}
-if ($id) {
-
+if ($Group->Id) {
my @fields = qw(Description Name );
my @fieldresults = UpdateRecordObject ( AttributesRef => \@fields,
Object => $Group,
ARGSRef => \%ARGS );
push (@results,@fieldresults);
push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $Group );
+
+ # Warn about duplicate groups
+ my $dupcheck = RT::Groups->new(RT->SystemUser);
+ $dupcheck->LimitToUserDefinedGroups();
+ $dupcheck->Limit( FIELD => 'Name', VALUE => $Group->Name );
+ if ($dupcheck->Count > 1) {
+ push @warnings, loc("There is more than one group with the name '[_1]'. This may cause inconsistency in parts of the admin interface, and therefore it's recommended you rename the conflicting groups.", $Group->Name);
+ }
}
#we're asking about enabled on the web page but really care about disabled.
if (defined $Enabled && $Enabled == 1) {
$Disabled = 0;
-}
-else {
+} else {
$Disabled = 1;
}
-if ( ($SetEnabled) and ( $Disabled != $Group->Disabled) ) {
+if ( $Group->Id and ($SetEnabled) and ( $Disabled != $Group->Disabled) ) {
my ($code, $msg) = $Group->SetDisabled($Disabled);
push @results, $msg;
}
+# This code does automatic redirection if any updates happen.
+MaybeRedirectForResults(
+ Actions => \@results,
+ Arguments => { id => $Group->id },
+) if $Group->Id;
+
+push @results, @warnings;
+
unless ($Group->Disabled()) {
$EnabledChecked ='checked="checked"';
}
diff --git a/rt/share/html/Admin/Groups/UserRights.html b/rt/share/html/Admin/Groups/UserRights.html
index aedb55e5e..8e6b09164 100755
--- a/rt/share/html/Admin/Groups/UserRights.html
+++ b/rt/share/html/Admin/Groups/UserRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,45 +46,18 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Modify user rights for group [_1]', $GroupObj->Name) &>
-<& /Admin/Elements/GroupTabs,
- GroupObj => $GroupObj,
- current_tab => 'Admin/Groups/UserRights.html?id='.$id,
- Title => loc('Modify user rights for group [_1]', $GroupObj->Name) &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="UserRights.html">
+ <form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
<input type="hidden" class="hidden" name="id" value="<% $GroupObj->id %>" />
-
-<&| /Widgets/TitleBox, title => loc('Modify user rights for group [_1]', $GroupObj->Name) &>
-<table>
-% while ( my $Member = $Users->Next ) {
-% my $UserObj = $Member->MemberObj->Object;
- <tr align="right">
- <td valign="top"><& /Elements/ShowUser, User => $UserObj &></td>
- <td><& /Admin/Elements/SelectRights,
- PrincipalId => $Member->MemberObj->Id,
- PrincipalType => 'User',
- Object => $GroupObj,
- &></td>
- </tr>
-% }
-</table>
-</&>
-
-<& /Elements/Submit, Label => loc('Modify User Rights'), Reset => 1 &>
-
-</form>
+ <& /Admin/Elements/EditRights, Context => $GroupObj, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
+ </form>
<%INIT>
-
- #Update the acls.
- my @results = ProcessACLChanges(\%ARGS);
-
-# {{{ Deal with setting up the display of current rights.
-
-
-#Define vars used in html above
-
+# Update the acls.
+my @results = ProcessACLs(\%ARGS);
if (!defined $id) {
Abort(loc("No Group defined"));
@@ -93,20 +66,9 @@ if (!defined $id) {
my $GroupObj = RT::Group->new($session{'CurrentUser'});
$GroupObj->Load($id) || Abort(loc("Couldn't load group [_1]",$id));
-# Find out which users we want to display ACL selects for
-my $Privileged = RT::Group->new($session{'CurrentUser'});
-$Privileged->LoadSystemInternalGroup('Privileged');
-my $Users = $Privileged->MembersObj();
-
-
-
-# }}}
-
+my @principals = GetPrincipalsMap($GroupObj, 'Users');
</%INIT>
<%ARGS>
$id => undef
-$UserString => undef
-$UserOp => undef
-$UserField => undef
</%ARGS>
diff --git a/rt/share/html/Admin/Groups/index.html b/rt/share/html/Admin/Groups/index.html
index 2485ea731..ef7395f3e 100755
--- a/rt/share/html/Admin/Groups/index.html
+++ b/rt/share/html/Admin/Groups/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,14 +46,40 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/GroupTabs, current_tab => 'Admin/Groups/',
- current_subtab => 'Admin/Groups/',
- Title => $title &>
-<% $caption %>:<br />
+<& /Elements/Tabs &>
+<h1><% $caption %></h1>
+
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Groups/index.html">
+<input type="hidden" name="GroupField" value="Name" />
+<input type="hidden" name="GroupOp" value="LIKE" />
+<&|/l&>Go to group</&>
+<input type="text" name="GroupString" value="" id="autocomplete-GroupString" />
+<script type="text/javascript">
+jQuery(function(){
+ jQuery("#autocomplete-GroupString").autocomplete({
+ source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Groups",
+ // Auto-submit once a group is chosen
+ select: function( event, ui ) {
+ jQuery(event.target).val(ui.item.value);
+ var form = jQuery(event.target).closest('form');
+ form.find('input[name=GroupOp]').val('=');
+ form.submit();
+ }
+ });
+});
+</script>
+</form>
+
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Groups/index.html">
+<&|/l&>Find groups whose</&> <& /Elements/SelectGroups &><br />
+<input type="checkbox" class="checkbox" name="FindDisabledGroups" value="1" <% $FindDisabledGroups? 'checked="checked"': '' |n %> /> <&|/l&>Include disabled groups in listing.</&><br />
+<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
+</form>
% unless ( $Groups->Count ) {
<em><&|/l&>No groups matching search criteria found.</&></em>
% } else {
+<p><&|/l&>Select a group</&>:</p>
<& /Elements/CollectionList,
OrderBy => 'Name',
@@ -65,23 +91,8 @@
AllowSorting => 1,
PassArguments => [qw(Format Rows Page Order OrderBy GroupString GroupOp GroupField FindDisabledGroups)],
&>
-
-% my $ids = join ',', map $_->id, @{ $Groups->ItemsArrayRef };
-% if ( $ids ) {
-<div align="right"><em>
-(<a href="<% RT->Config->Get('WebPath') %>/Download/Tabular/Group/<% $ids %>/Groups.tsv">
-<&|/l&>Download as a tab-delimited file</&>
-</a>)</em></div>
-% }
-
-<br /><br />
% }
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Groups/index.html">
-<input type="checkbox" class="checkbox" name="FindDisabledGroups" value="1" <% $FindDisabledGroups? 'checked="checked"': '' |n %> /> <&|/l&>Include disabled groups in listing.</&><br />
-<&|/l&>Find groups whose</&> <& /Elements/SelectGroups &><br />
-<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
-</form>
<%INIT>
my $Groups = RT::Groups->new($session{'CurrentUser'});
$Groups->LimitToUserDefinedGroups();
@@ -108,6 +119,8 @@ if (length $GroupString) {
VALUE => $GroupString,
);
}
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Admin/Groups/Modify.html?id=".$Groups->First->id)
+ if $Groups->Count == 1 and $Groups->First;
}
else {
$caption = loc("User-defined groups");
diff --git a/rt/share/html/Admin/Queues/CustomField.html b/rt/share/html/Admin/Queues/CustomField.html
index 2663fabfd..5b9cfd24a 100755
--- a/rt/share/html/Admin/Queues/CustomField.html
+++ b/rt/share/html/Admin/Queues/CustomField.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,20 +46,15 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs, id => $QueueObj->Id,
- QueueObj => $QueueObj,
- current_tab => 'Admin/Queues/CustomFields.html?id='.$QueueObj->id,
- current_subtab => $current_subtab,
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Admin/Elements/EditCustomField, title => $title, %ARGS &>
<%INIT>
-my $QueueObj = new RT::Queue($session{'CurrentUser'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($Queue);
-my ($title, $current_subtab);
+my ($title);
unless($QueueObj->id) {
Abort(loc("Queue [_1] not found", $Queue));
@@ -67,16 +62,8 @@ unless($QueueObj->id) {
if ($CustomField) {
$title = loc('Modify a CustomField for queue [_1]', $QueueObj->Name());
}else {
- $current_subtab = "Admin/Queues/CustomField.html?create=1&Queue=".$QueueObj->id;
$title = loc('Create a CustomField for queue [_1]', $QueueObj->Name());
}
-
-my $subtabs = {
- A => { title => loc('New custom field'),
- path => "Admin/Queues/CustomField.html?create=1&Queue=".$QueueObj->id
- }
- };
-
</%INIT>
<%ARGS>
$CustomField => undef
diff --git a/rt/share/html/Admin/Queues/CustomFields.html b/rt/share/html/Admin/Queues/CustomFields.html
index 35ce724fd..88d7b7148 100755
--- a/rt/share/html/Admin/Queues/CustomFields.html
+++ b/rt/share/html/Admin/Queues/CustomFields.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,12 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs,
- id => $Object->id,
- current_tab => "Admin/Queues/CustomFields.html?SubType=$SubType&id=$id",
- current_subtab => "Admin/Queues/CustomFields.html?SubType=$SubType&id=$id",
- QueueObj => $Object,
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, Object => $Object, ObjectType => 'RT::Queue' &>
@@ -63,7 +58,7 @@ my $FriendlySubTypes =
RT::CustomField->new( $session{'CurrentUser'} )
->FriendlyLookupType( $Object->CustomFieldLookupType );
-my $title = loc( 'Edit Custom Fields for [_1]', $Object->Name );
+my $title = loc( 'Custom Fields for queue [_1]', $Object->Name );
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Queues/GroupRights.html b/rt/share/html/Admin/Queues/GroupRights.html
index ed3d5e27e..4c5ca071b 100755
--- a/rt/share/html/Admin/Queues/GroupRights.html
+++ b/rt/share/html/Admin/Queues/GroupRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,75 +46,22 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Modify group rights for queue [_1]', $QueueObj->Name) &>
-<& /Admin/Elements/QueueTabs, id => $id,
- QueueObj => $QueueObj,
- current_tab => $current_tab,
- Title => loc('Modify group rights for queue [_1]', $QueueObj->Name) &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="GroupRights.html">
- <input type="hidden" class="hidden" name="id" value="<% $QueueObj->id %>" />
-
-
-<h1><&|/l&>System groups</&></h1>
-<table>
-% $m->callback( %ARGS, QueueObj => $QueueObj, results => \@results );
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToSystemInternalGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% loc($Group->Type) %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $QueueObj &>
- </td>
- </tr>
-% }
-</table>
-<h1><&|/l&>Roles</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToRolesForQueue($QueueObj->Id);
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% loc($Group->Type) %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $QueueObj &>
- </td>
- </tr>
-% }
-</table>
-<h1><&|/l&>User defined groups</&></h1>
-<table>
-% $Groups = RT::Groups->new($session{'CurrentUser'});
-% $Groups->LimitToUserDefinedGroups();
-% while (my $Group = $Groups->Next()) {
- <tr align="right">
- <td valign="top">
- <% $Group->Name %>
- </td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId => $Group->PrincipalId,
- Object => $QueueObj &>
- </td>
- </tr>
-% }
-</table>
-
- <& /Elements/Submit, Label => loc('Modify Group Rights'), Reset => 1 &>
-
- </form>
-
-<%INIT>
-
- #Update the acls.
- my @results = ProcessACLChanges(\%ARGS);
+<form method="post" action="GroupRights.html" id="ModifyGroupRights" name="ModifyGroupRights">
+ <input type="hidden" class="hidden" name="id" value="<% $QueueObj->id %>" />
+
+% $m->callback( %ARGS, QueueObj => $QueueObj, results => \@results, principals => \@principals );
+
+ <& /Admin/Elements/EditRights, Context => $QueueObj, Principals => \@principals &>
+ <& /Elements/Submit, Label => loc('Save Changes') &>
+</form>
+
+<%INIT>
+# Update the acls.
+my @results = ProcessACLs(\%ARGS);
if (!defined $id) {
Abort(loc("No Queue defined"));
@@ -123,12 +70,9 @@ if (!defined $id) {
my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id) || Abort(loc("Couldn't load queue [_1]",$id));
-my $Groups;
-my $current_tab;
-$current_tab = 'Admin/Queues/GroupRights.html?id='.$QueueObj->id;
-
+# Principal collections
+my @principals = GetPrincipalsMap($QueueObj, qw(System Roles Groups));
</%INIT>
-
<%ARGS>
$id => undef
</%ARGS>
diff --git a/rt/share/html/Admin/Queues/History.html b/rt/share/html/Admin/Queues/History.html
index e3a0e9c4a..49a16fe35 100644
--- a/rt/share/html/Admin/Queues/History.html
+++ b/rt/share/html/Admin/Queues/History.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs,
- id => $id,
- QueueObj => $QueueObj,
- current_subtab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Ticket/Elements/ShowHistory,
Ticket => $QueueObj,
@@ -58,8 +54,7 @@
&>
<%INIT>
-my $current_tab = 'Admin/Queues/History.html?id='.$id;
-my $QueueObj = new RT::Queue($session{'CurrentUser'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id) || Abort("Couldn't load queue '$id'");
my $title = loc("History of the queue [_1]", $QueueObj->Name);
</%INIT>
diff --git a/rt/share/html/Admin/Queues/Modify.html b/rt/share/html/Admin/Queues/Modify.html
index 5dd7bf00c..5682eee28 100755
--- a/rt/share/html/Admin/Queues/Modify.html
+++ b/rt/share/html/Admin/Queues/Modify.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,25 +46,31 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs, id => $QueueObj->id,
- QueueObj => $QueueObj,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form action="<%RT->Config->Get('WebPath')%>/Admin/Queues/Modify.html" method="post">
+<form action="<%RT->Config->Get('WebPath')%>/Admin/Queues/Modify.html" name="ModifyQueue" method="post">
<input type="hidden" class="hidden" name="SetEnabled" value="1" />
<input type="hidden" class="hidden" name="id" value="<% $Create? 'new': $QueueObj->Id %>" />
<table>
<tr><td align="right"><&|/l&>Queue Name</&>:</td>
-<td colspan="3"><input name="Name" value="<% ($Create) ? "" : $QueueObj->Name %>" /></td>
+<td colspan="3"><input name="Name" value="<% $Create ? "" : $QueueObj->Name || $Name %>" /></td>
</tr>
<tr><td align="right"><&|/l&>Description</&>:</td>
-<td colspan="3"><input name="Description" value="<% ($Create) ? "" : $QueueObj->Description %>" size="60" /></td>
+<td colspan="3"><input name="Description" value="<% $Create ? "" : $QueueObj->Description || $Description || '' %>" size="60" /></td>
+</tr>
+
+<tr><td align="right"><&|/l&>Lifecycle</&>:</td>
+<td colspan="3"><& /Widgets/Form/Select:InputOnly,
+ Name => 'Lifecycle',
+ Values => [ sort { loc($a) cmp loc($b) } RT::Lifecycle->List ],
+ CurrentValue => $Create ? "default" : $QueueObj->Lifecycle || $ARGS{'Lifecycle'},
+ Default => 0,
+&></td>
</tr>
<tr><td align="right"><&|/l&>Subject Tag</&>:</td>
@@ -72,27 +78,27 @@
</tr>
<tr><td align="right"><&|/l&>Reply Address</&>:</td>
-<td><input name="CorrespondAddress" value="<% ($Create) ? "" : $QueueObj->CorrespondAddress %>" />
+<td><input name="CorrespondAddress" value="<% $Create ? "" : $QueueObj->CorrespondAddress || $CorrespondAddress || '' %>" />
<br /><span><em><&|/l , RT->Config->Get('CorrespondAddress')&>(If left blank, will default to [_1])</&></em></span></td>
<td align="right"><&|/l&>Comment Address</&>:</td>
-<td><input name="CommentAddress" value="<% ($Create) ? "" : $QueueObj->CommentAddress %>" />
+<td><input name="CommentAddress" value="<% $Create ? "" : $QueueObj->CommentAddress || $CommentAddress || '' %>" />
<br /><span><em><&|/l , RT->Config->Get('CommentAddress')&>(If left blank, will default to [_1])</&></em></span></td>
</tr>
<tr><td align="right"><&|/l&>Priority starts at</&>:</td>
<td><& /Elements/SelectPriority,
Name => "InitialPriority",
- Default => $Create? 0: $QueueObj->InitialPriority,
+ Default => $Create? 0: $QueueObj->InitialPriority || $InitialPriority,
&></td>
<td align="right"><&|/l&>Over time, priority moves toward</&>:</td>
<td><& /Elements/SelectPriority,
Name => "FinalPriority",
- Default => $Create? 0: $QueueObj->FinalPriority,
-&></td>
+ Default => $Create? 0: $QueueObj->FinalPriority || $FinalPriority,
+&><br /><span><em><&|/l&>requires running rt-crontool</&></em></span></td>
</tr>
<tr><td align="right"><&|/l&>Requests should be due in</&>:</td>
-<td colspan="3"><input name="DefaultDueIn" value="<% ($Create) ? "" : $QueueObj->DefaultDueIn%>" /> <&|/l&>days</&>.</td>
+<td colspan="3"><input name="DefaultDueIn" value="<% ($Create) ? "" : $QueueObj->DefaultDueIn || $DefaultDueIn || "" %>" /> <&|/l&>days</&>.</td>
</tr>
% my $CFs = $QueueObj->CustomFields;
@@ -154,33 +160,28 @@
<%INIT>
-my ($title, $current_tab, @results, $Disabled, $EnabledChecked);
+my ($title, @results, @no_redirect_results, $Disabled, $EnabledChecked);
my $QueueObj = RT::Queue->new( $session{'CurrentUser'} );
$QueueObj->Load( $id ) if !$id || $id eq 'new';
$EnabledChecked = 'checked="checked"';
-if ($Create) {
- $current_tab = 'Admin/Queues/Modify.html?Create=1';
- $title = loc("Create a queue");
-} else {
+unless ($Create) {
if ( defined $id && $id eq 'new' ) {
my ($val, $msg) = $QueueObj->Create( Name => $Name );
- Abort("$msg") unless $val;
- delete $session{'create_in_queues'};
- push @results, $msg;
- }
- else {
+ if (!$val) {
+ $Create = 1; # Create failed, so bring us back to step 1
+ }
+ push @results, $msg;
+ } else {
$QueueObj->Load($id) || $QueueObj->Load($Name) || Abort(loc("Couldn't load queue '[_1]'", $Name));
}
- $title = loc('Editing Configuration for queue [_1]', $QueueObj->Name);
-
- $current_tab = 'Admin/Queues/Modify.html?id='.$QueueObj->id;
}
+
if ( $QueueObj->Id ) {
- delete $session{'create_in_queues'};
+ $title = loc('Configuration for queue [_1]', $QueueObj->Name );
my @attribs= qw(Description CorrespondAddress CommentAddress Name
- InitialPriority FinalPriority DefaultDueIn Sign Encrypt SubjectTag Disabled);
+ InitialPriority FinalPriority DefaultDueIn Sign Encrypt Lifecycle SubjectTag Disabled);
# we're asking about enabled on the web page but really care about disabled
if ( $SetEnabled ) {
@@ -189,6 +190,14 @@ if ( $QueueObj->Id ) {
qw(Sign Encrypt Disabled);
}
+ $m->callback(
+ CallbackName => 'BeforeUpdate',
+ Queue => $QueueObj,
+ AttributesRef => \@attribs,
+ ARGSRef => \%ARGS,
+ );
+
+ $ARGS{'Lifecycle'} = undef if defined $ARGS{'Lifecycle'} and $ARGS{'Lifecycle'} eq "default";
push @results, UpdateRecordObject(
AttributesRef => \@attribs,
Object => $QueueObj,
@@ -212,10 +221,20 @@ if ( $QueueObj->Id ) {
foreach my $address ( $QueueObj->CorrespondAddress, $QueueObj->CommentAddress ) {
next unless defined $address && length $address;
next if RT::EmailParser->IsRTAddress( $address );
- push @results, loc("RTAddressRegexp option in the config doesn't match [_1]", $address );
+ push @no_redirect_results, loc("RTAddressRegexp option in the config doesn't match [_1]", $address );
}
}
+} else {
+ $title = loc("Create a queue");
}
+
+# This code does automatic redirection if any updates happen.
+MaybeRedirectForResults(
+ Actions => \@results,
+ Arguments => { id => $QueueObj->Id },
+) if $QueueObj->id;
+
+push @results, @no_redirect_results;
</%INIT>
diff --git a/rt/share/html/Admin/Queues/People.html b/rt/share/html/Admin/Queues/People.html
index 917d88c33..729749c33 100755
--- a/rt/share/html/Admin/Queues/People.html
+++ b/rt/share/html/Admin/Queues/People.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,11 +45,9 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => loc('Modify people related to queue [_1]', $QueueObj->Name) &>
-<& /Admin/Elements/QueueTabs, id => $id,
- QueueObj => $QueueObj,
- current_tab => $current_tab,
- Title => loc('Modify people related to queue [_1]', $QueueObj->Name) &>
+<& /Elements/Header, Title => $title &>
+
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
@@ -63,15 +61,11 @@
<h3><&|/l&>Current watchers</&></h3>
+% for my $Name (RT::Queue->ManageableRoleGroupTypes) {
+<& /Admin/Elements/EditQueueWatcherGroup, Label => loc($Name), QueueObj => $QueueObj, Watchers => $QueueObj->$Name &>
+% }
-<&|/l&>Cc</&>:
-
-<& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->Cc &>
-
-<&|/l&>Administrative Cc</&>:
-
-<& /Admin/Elements/EditQueueWatchers, QueueObj => $QueueObj, Watchers => $QueueObj->AdminCc &>
-
+% $m->callback(CallbackName => 'CurrentWatchers', QueueObj => $QueueObj);
</td>
<td valign="top">
@@ -132,22 +126,13 @@
<%INIT>
-my $current_tab;
my ($field, @results, $User, $Users, $Groups, $watcher, $user_msg, $group_msg);
-# {{{ Load the queue
-#If we get handed two ids, mason will make them an array. bleck.
-# We want teh first one. Just because there's no other sensible way
-# to deal
-
-
-
-my $QueueObj = new RT::Queue($session{'CurrentUser'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id) || Abort(loc("Couldn't load queue", $id));
-# }}}
unless ($OnlySearchForPeople or $OnlySearchForGroup) {
-# {{{ Delete deletable watchers
+# Delete deletable watchers
foreach my $key (keys %ARGS) {
my $id = $QueueObj->Id;
@@ -158,46 +143,49 @@ unless ($OnlySearchForPeople or $OnlySearchForGroup) {
push @results, $msg;
}
}
-# }}}
-
-# {{{ Add new watchers
- foreach my $key (keys %ARGS) {
- #They're in this order because otherwise $1 gets clobbered :/
- if ( ($ARGS{$key} =~ /^(AdminCc|Cc)$/) and
- ($key =~ /^Queue-AddWatcher-Principal-(\d*)$/) ) {
- $RT::Logger->debug("Adding a watcher $1 to ".$ARGS{$key}."\n");
- my ($code, $msg) = $QueueObj->AddWatcher(Type => $ARGS{$key},
- PrincipalId => $1);
+
+# Add new watchers
+ foreach my $key (keys %ARGS) {
+ my $type = $ARGS{$key};
+
+ next unless $key =~ /^Queue-AddWatcher-Principal-(\d*)$/;
+ my $id = $1;
+
+ next unless RT::Queue->IsManageableRoleGroupType($type);
+
+ my ($code, $msg) = $QueueObj->AddWatcher(
+ Type => $type,
+ PrincipalId => $id,
+ );
push @results, $msg;
- }
}
-
-# }}}
}
-if (!length $ARGS{'UserString'}) {
-$user_msg = loc("No principals selected.");
- }
-else {
- $Users = new RT::Users($session{'CurrentUser'});
- $Users->Limit(FIELD => $ARGS{'UserField'},
- VALUE => $ARGS{'UserString'},
- OPERATOR => $ARGS{'UserOp'});
- }
-
-if (!length $ARGS{'GroupString'}) {
-$group_msg = loc("No principals selected.");
- }
-else {
-$Groups = new RT::Groups($session{'CurrentUser'});
-$Groups->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'UserDefined');
-$Groups->Limit(FIELD => $ARGS{'GroupField'},
- VALUE => $ARGS{'GroupString'},
- OPERATOR => $ARGS{'GroupOp'});
- }
-
-$current_tab = 'Admin/Queues/People.html?id='.$QueueObj->id;
+if ( $ARGS{'UserString'} ) {
+ $Users = RT::Users->new( $session{'CurrentUser'} );
+ $Users->Limit( FIELD => $ARGS{'UserField'},
+ VALUE => $ARGS{'UserString'},
+ OPERATOR => $ARGS{'UserOp'}
+ );
+} else {
+ $user_msg = loc("No principals selected.");
+ }
+
+if ( $ARGS{'GroupString'} ) {
+ $Groups = RT::Groups->new( $session{'CurrentUser'} );
+ $Groups->Limit( FIELD => 'Domain',
+ OPERATOR => '=',
+ VALUE => 'UserDefined'
+ );
+ $Groups->Limit( FIELD => $ARGS{'GroupField'},
+ VALUE => $ARGS{'GroupString'},
+ OPERATOR => $ARGS{'GroupOp'}
+ );
+} else {
+ $group_msg = loc("No principals selected.");
+}
+my $title = loc('People related to queue [_1]', $QueueObj->Name);
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Queues/Scrip.html b/rt/share/html/Admin/Queues/Scrip.html
index b9c2834cb..ac0a783a7 100755
--- a/rt/share/html/Admin/Queues/Scrip.html
+++ b/rt/share/html/Admin/Queues/Scrip.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,12 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs, id => $QueueObj->Id,
- QueueObj => $QueueObj,
- current_tab => 'Admin/Queues/Scrips.html?id='.$QueueObj->id,
- current_subtab => $current_subtab,
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
<& /Admin/Elements/EditScrip, title => $title, %ARGS, id => $id &>
@@ -63,30 +58,13 @@ unless( $QueueObj->id ) {
Abort(loc("Queue [_1] not found", $id));
}
-my ($title, $current_subtab);
-my $subtabs = {
- A => {
- title => loc('Select scrip'),
- path => "Admin/Queues/Scrips.html?id=".$QueueObj->id,
- },
- B => {
- title => loc('New scrip'),
- path => "Admin/Queues/Scrip.html?create=1&Queue=".$QueueObj->id,
- separator => 1,
- },
-};
+my ($title);
($id, my @results) = $m->comp( '/Admin/Elements/EditScrip:Process', %ARGS );
if ( $id ) {
- $current_subtab = "Admin/Queues/Scrip.html?id=$id&Queue=". $QueueObj->id;
$title = loc("Modify a scrip for queue [_1]", $QueueObj->Name);
- $subtabs->{"C"} = {
- title => loc("Scrip #[_1]",$id),
- path => "Admin/Queues/Scrip.html?id=$id&Queue=".$QueueObj->id
- };
} else {
- $current_subtab = "Admin/Queues/Scrip.html?create=1&Queue=".$QueueObj->id;
$title = loc("Create a scrip for queue [_1]", $QueueObj->Name);
}
diff --git a/rt/share/html/Admin/Queues/Scrips.html b/rt/share/html/Admin/Queues/Scrips.html
index 698e7e616..56e44664a 100755
--- a/rt/share/html/Admin/Queues/Scrips.html
+++ b/rt/share/html/Admin/Queues/Scrips.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,12 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs, id => $QueueObj->id,
- QueueObj => $QueueObj,
- current_tab => 'Admin/Queues/Scrips.html?id='.$id,
- current_subtab => 'Admin/Queues/Scrips.html?id='.$id,
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
% unless ( $QueueObj->Disabled ) { # Global scrips does not apply to disabled queues
<h2><&|/l&>Scrips which apply to all queues</&></h2>
@@ -60,7 +55,7 @@
% }
<& /Admin/Elements/EditScrips, title => $title, %ARGS &>
<%init>
-my $QueueObj = new RT::Queue($session{'CurrentUser'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id);
my $title;
@@ -70,16 +65,6 @@ if ($QueueObj->id) {
} else {
Abort(loc("Queue [_1] not found",$id));
}
-
-my $subtabs = {
- A => { title => loc('Select scrip'),
- path => "Admin/Queues/Scrips.html?id=".$id,
- },
- B => { title => loc('New scrip'),
- path => "Admin/Queues/Scrip.html?create=1&Queue=".$id,
- separator => 1,
- }
- };
</%init>
<%ARGS>
diff --git a/rt/share/html/Admin/Queues/Template.html b/rt/share/html/Admin/Queues/Template.html
index 640e16119..3dd99e1d7 100755
--- a/rt/share/html/Admin/Queues/Template.html
+++ b/rt/share/html/Admin/Queues/Template.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,15 +46,10 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs, id => $Queue,
- QueueObj => $QueueObj,
- current_tab => 'Admin/Queues/Templates.html?id='.$Queue,
- current_subtab => $current_subtab,
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="Template.html">
+<form method="post" name="ModifyTemplate" id="ModifyTemplate" action="Template.html">
%if ($Create ) {
<input type="hidden" class="hidden" name="Template" value="new" />
% } else {
@@ -63,64 +58,61 @@
%# hang onto the queue id
<input type="hidden" class="hidden" name="Queue" value="<%$Queue%>" />
-<& /Admin/Elements/ModifyTemplate, Name => $TemplateObj->Name, Description =>
-$TemplateObj->Description, Content => $TemplateObj->Content &>
+<& /Admin/Elements/ModifyTemplate,
+ Name => $TemplateObj->Name,
+ Description => $TemplateObj->Description,
+ Content => $TemplateObj->Content,
+ Type => $TemplateObj->Type
+&>
<& /Elements/Submit, Label => $SubmitLabel, Reset => 1 &>
</form>
<%INIT>
-my $TemplateObj = new RT::Template($session{'CurrentUser'});
-my ($title, @results, $current_subtab, $SubmitLabel);
+my $TemplateObj = RT::Template->new( $session{'CurrentUser'} );
+my $QueueObj;
+my $SubmitLabel;
+my $title;
+my @results;
-my $subtabs = {
- A => { title => loc('Select template'),
- path => "Admin/Queues/Templates.html?id=$Queue"
- },
- B => { title => loc('New template'),
- path => "Admin/Queues/Template.html?Create=1&Queue=$Queue",
- separator => 1,
- }
- };
+if ( !$Create ) {
+ if ( $Template eq 'new' ) {
+ my ( $val, $msg )
+ = $TemplateObj->Create( Queue => $Queue, Name => $Name );
+ Abort( loc( "Could not create template: [_1]", $msg ) ) unless ($val);
+ push @results, $msg;
+ } else {
+ $TemplateObj->Load($Template) || Abort( loc('No Template') );
+ }
-if ($Create) {
- $title = loc("Create a template");
- $current_subtab = "Admin/Queues/Template.html?Create=1&Queue=".$Queue;
- $SubmitLabel = loc('Create');
}
-else {
- if ($Template eq 'new') {
- my ($val, $msg) = $TemplateObj->Create(Queue => $Queue, Name => $Name);
- Abort(loc("Could not create template: [_1]", $msg)) unless ($val);
- push @results, $msg;
- }
- else {
- $TemplateObj->Load($Template) || Abort(loc('No Template'));
- }
- $title = loc('Modify template [_1]', loc($TemplateObj->Name()));
- $SubmitLabel = loc('Save Changes');
-
-
+if ( $TemplateObj->Id() ) {
+ $Queue = $TemplateObj->Queue;
+ $QueueObj = $TemplateObj->QueueObj;
+
+ my @attribs = qw( Description Content Queue Name Type );
+ my @aresults = UpdateRecordObject( AttributesRef => \@attribs,
+ Object => $TemplateObj,
+ ARGSRef => \%ARGS
+ );
+ push @results, @aresults;
+
+ my ( $ok, $msg ) = $TemplateObj->CompileCheck;
+ push @results, $msg if !$ok;
+} else {
+ $QueueObj = RT::Queue->new( $session{'CurrentUser'} );
+ $QueueObj->Load($Queue);
}
-my $QueueObj;
-if ($TemplateObj->Id()) {
- $Queue = $TemplateObj->Queue;
- $QueueObj = $TemplateObj->QueueObj;
- my @attribs = qw( Description Content Queue Name);
- my @aresults = UpdateRecordObject( AttributesRef => \@attribs,
- Object => $TemplateObj,
- ARGSRef => \%ARGS);
- $current_subtab = "Admin/Queues/Template.html?Queue=$Queue&Template=".$TemplateObj->Id();
- $subtabs->{"C"} = { title => loc('Template #[_1]', $TemplateObj->Id()),
- path => "Admin/Queues/Template.html?Queue=$Queue&Template=".$TemplateObj->Id(),
- };
- push @results, @aresults;
+if ($Create) {
+ $title = loc( 'Create a new template for queue [_1]', $QueueObj->Name );
+ $SubmitLabel = loc('Create');
} else {
- $QueueObj = RT::Queue->new($session{'CurrentUser'});
- $QueueObj->Load($Queue);
+
+ $title = loc( 'Modify template [_1] for queue [_2]', loc( $TemplateObj->Name()), $QueueObj->Name );
+ $SubmitLabel = loc('Save Changes');
}
</%INIT>
diff --git a/rt/share/html/Admin/Queues/Templates.html b/rt/share/html/Admin/Queues/Templates.html
index aac833271..7df0ed2e0 100755
--- a/rt/share/html/Admin/Queues/Templates.html
+++ b/rt/share/html/Admin/Queues/Templates.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,34 +46,18 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/QueueTabs, id => $QueueObj->id,
- current_tab => 'Admin/Queues/Templates.html?id='.$id,
- current_subtab => 'Admin/Queues/Templates.html?id='.$id,
- QueueObj => $QueueObj,
- subtabs => $subtabs,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Admin/Elements/EditTemplates, title => $title, %ARGS &>
<%INIT>
-my $QueueObj = new RT::Queue($session{'CurrentUser'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id);
-my ($title, $current_subtab);
-
-if ($QueueObj->id) {
- $title = loc("Edit Templates for queue [_1]", $QueueObj->Name);
-} else {
+if (!$QueueObj->id) {
Abort(loc("Queue [_1] not found",$id));
}
-my $subtabs = {
- A => { title => loc('Select template'),
- path => "Admin/Queues/Templates.html?id=".$id,
- },
- B => { title => loc('New template'),
- path => "Admin/Queues/Template.html?Create=1&Queue=".$id,
- }
- };
+my $title = loc("Templates for queue [_1]", $QueueObj->Name);
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Queues/UserRights.html b/rt/share/html/Admin/Queues/UserRights.html
index b45c9968e..a7980dcbf 100755
--- a/rt/share/html/Admin/Queues/UserRights.html
+++ b/rt/share/html/Admin/Queues/UserRights.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,44 +46,23 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Modify user rights for queue [_1]', $QueueObj->Name) &>
-<& /Admin/Elements/QueueTabs, id => $id,
- QueueObj => $QueueObj,
- current_tab => $current_tab,
- Title => loc('Modify user rights for queue [_1]', $QueueObj->Name) &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
- <form method="post" action="UserRights.html">
- <input type="hidden" class="hidden" name="id" value="<% $QueueObj->id %>" />
-
-
-<table>
-% $m->callback( %ARGS, QueueObj => $QueueObj, results => \@results );
-% while (my $Member = $Users->Next()) {
-% my $UserObj = $Member->MemberObj->Object();
-% my $group = RT::Group->new($session{'CurrentUser'});
-% $group->LoadACLEquivalenceGroup($Member->MemberObj);
- <tr align="right">
- <td valign="top"><& /Elements/ShowUser, User => $UserObj &></td>
- <td>
- <& /Admin/Elements/SelectRights, PrincipalId=> $group->PrincipalId,
- Object => $QueueObj &>
- </td>
- </tr>
-% }
- </table>
-
- <& /Elements/Submit, Label => loc('Modify User Rights'), Reset => 1 &>
-
- </form>
-
-<%INIT>
-
- #Update the acls.
- my @results = ProcessACLChanges(\%ARGS);
+<form method="post" action="UserRights.html" name="ModifyUserRights" id="ModifyUserRights">
+ <input type="hidden" class="hidden" name="id" value="<% $QueueObj->id %>" />
-# {{{ Deal with setting up the display of current rights.
+%# XXX TODO put this somewhere more reasonable
+% $m->callback( %ARGS, QueueObj => $QueueObj, results => \@results );
+ <& /Admin/Elements/EditRights, Context => $QueueObj, Principals => \@principals &>
+
+ <& /Elements/Submit, Label => loc('Save Changes') &>
+</form>
+<%INIT>
+# Update the acls.
+my @results = ProcessACLs(\%ARGS);
if (!defined $id) {
Abort(loc("No Queue defined"));
@@ -92,16 +71,7 @@ if (!defined $id) {
my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($id) || Abort(loc("Couldn't load queue [_1]",$id));
-# Find out which users we want to display ACL selects for
-my $Privileged = RT::Group->new($session{'CurrentUser'});
-$Privileged->LoadSystemInternalGroup('Privileged');
-my $Users = $Privileged->MembersObj();
-
-
-
-# }}}
-my $current_tab;
-$current_tab = 'Admin/Queues/UserRights.html?id='.$QueueObj->id;
+my @principals = GetPrincipalsMap($QueueObj, 'Users');
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Admin/Queues/index.html b/rt/share/html/Admin/Queues/index.html
index b5a2bb4f2..c7a4701b2 100755
--- a/rt/share/html/Admin/Queues/index.html
+++ b/rt/share/html/Admin/Queues/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc("Admin queues") &>
-<& /Admin/Elements/QueueTabs, current_tab => 'Admin/Queues/',
- current_subtab => 'Admin/Queues/',
- Title => loc("Admin queues") &>
+<& /Elements/Tabs &>
@@ -91,7 +89,7 @@
</form>
<%INIT>
-my $queues = new RT::Queues($session{'CurrentUser'});
+my $queues = RT::Queues->new($session{'CurrentUser'});
$queues->FindAllRows if $FindDisabledQueues;
my ($caption);
@@ -104,6 +102,8 @@ if ( defined $QueueString && length $QueueString ) {
OPERATOR => $QueueOp,
VALUE => $QueueString,
);
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Admin/Queues/Modify.html?id=".$queues->First->id)
+ if $queues->Count == 1;
} else {
$queues->UnLimit;
$caption = $FindDisabledQueues
diff --git a/rt/share/html/Admin/Tools/Configuration.html b/rt/share/html/Admin/Tools/Configuration.html
index f4c648a11..ed7d4651b 100644
--- a/rt/share/html/Admin/Tools/Configuration.html
+++ b/rt/share/html/Admin/Tools/Configuration.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,10 +53,7 @@ unless ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'Super
}
</%init>
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/ToolTabs,
- current_tab => 'Admin/Tools/Configuration.html',
- current_subtab => 'Admin/Tools/Configuration.html',
- Title => $title &>
+<& /Elements/Tabs &>
<&|/Widgets/TitleBox, title => loc("RT Configuration") &>
<table border="0" cellspacing="0" cellpadding="5" width="100%" class="collection">
@@ -68,7 +65,7 @@ unless ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'Super
<%PERL>
my $index_conf;
foreach my $key ( RT->Config->Options( Overridable => undef, Sorted => 0 ) ) {
- my $val = RT->Config->Get( $key );
+ my $val = RT->Config->GetObfuscated( $key );
next unless defined $val;
my $meta = RT->Config->Meta( $key );
@@ -91,19 +88,13 @@ foreach my $key ( RT->Config->Options( Overridable => undef, Sorted => 0 ) ) {
<td class="collection-as-table"><% $key %></td>
<td class="collection-as-table">
% if ( $key =~ /Password(?!Length)/i ) {
-<em>Password not printed</em>\
-% } elsif ( !ref $val ) {
-<% "$val" %>\
-% } elsif ( ref $val eq 'ARRAY' ) {
-<% join ', ', @$val %>\
-% } elsif ( ref $val eq 'HASH' ) {
-<% join ', ', %$val %>\
+<em><% loc('Password not printed' ) %></em>\
% } else {
-<% ref $val %>\
+<% stringify($val) |n %>\
% }
</td>
<td class="collection-as-table" style="white-space: nowrap">
-% if ( $description =~ /^.*site config$/ ) {
+% if ( $meta->{'Source'}{'SiteConfig'} ) {
<span style="font-weight: bold"><% $description %></span>
% } else {
<% $description %>
@@ -134,7 +125,7 @@ foreach my $key ( sort keys %{*RT::} ) {
<td class="collection-as-table">RT::<% $key %></td>
<td class="collection-as-table">
% if ( $key =~ /Password(?!Length)/i ) {
-<em>Password not printed</em>
+<em><% loc('Password not printed' ) %></em>\
% } else {
<% ${'RT::'.$key} %>
% }
@@ -157,7 +148,7 @@ for my $type (qw/Tickets Queues Transactions Groups PrivilegedUsers Unprivileged
my $count;
my $class = 'RT::' . $type;
$class =~ s/Privileged|Unprivileged//;
- my $collection = $class->new($RT::SystemUser);
+ my $collection = $class->new(RT->SystemUser);
$collection->UnLimit;
if ($type =~ /PrivilegedUsers/) {
$user_count = $collection->CountAll;
@@ -182,7 +173,7 @@ for my $type (qw/Tickets Queues Transactions Groups PrivilegedUsers Unprivileged
<&|/Widgets/TitleBox, title => loc("Mason template search order") &>
<ol>
-% foreach my $path ( map { $_->[1] } $m->interp->comp_root_array ) {
+% foreach my $path ( RT::Interface::Web->ComponentRoots ) {
<li><% $path %></li>
% }
</ol>
@@ -199,6 +190,30 @@ for my $type (qw/Tickets Queues Transactions Groups PrivilegedUsers Unprivileged
</td>
</table>
+<&|/Widgets/TitleBox, title => loc("Global Attributes") &>
+<table border="0" cellspacing="0" cellpadding="5" width="100%" class="collection">
+<tr class="collection-as-table">
+<th class="collection-as-table"><&|/l&>Name</&></th>
+<th class="collection-as-table"><&|/l&>Value</&></th>
+</tr>
+% my $attrs = $RT::System->Attributes;
+% my $index_size = 0;
+% while ( my $attr = $attrs->Next ) {
+<tr class="<% $index_size%2 ? 'oddline' : 'evenline'%>">
+% if ($attr->Name eq 'UserLogo') {
+% my $content = $attr->Content;
+% $content->{data} = defined $content->{data} ? 'DATA' : 'undef'
+% if exists $content->{data};
+<td><% $attr->Name %></td><td><% stringify($content) |n %></td>
+% } else {
+<td><% $attr->Name %></td><td><% stringify($attr->Content) |n %></td>
+% }
+</tr>
+% $index_size++;
+% }
+</table>
+</&>
+
<&|/Widgets/TitleBox, title => loc("Loaded perl modules")&>
<table border="0" cellspacing="0" cellpadding="5" width="100%" class="collection">
<tr class="collection-as-table">
@@ -227,7 +242,7 @@ if ($item =~ /^\s*(.*?)\s*v(\S+);/) {
<%$ver%>
</td>
<td class="collection-as-table">
- <% $INC{$distfile} %>
+ <% $INC{$distfile} || '' %>
</td>
</tr>
% }
@@ -240,3 +255,18 @@ if ($item =~ /^\s*(.*?)\s*v(\S+);/) {
<% Config::myconfig() %>
</pre>
</&>
+
+<%INIT>
+use Data::Dumper;
+local $Data::Dumper::Terse = 1;
+local $Data::Dumper::Indent = 2;
+
+sub stringify {
+ my $value = shift;
+ my $output = Dumper $value;
+ RT::Interface::Web::EscapeUTF8(\$output);
+ $output =~ s/ /&nbsp;/g;
+ $output =~ s!\n!<br />!g;
+ return $output;
+}
+</%INIT>
diff --git a/rt/share/html/Admin/Tools/Queries.html b/rt/share/html/Admin/Tools/Queries.html
new file mode 100644
index 000000000..dbc6fc5fe
--- /dev/null
+++ b/rt/share/html/Admin/Tools/Queries.html
@@ -0,0 +1,129 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%init>
+my $title = loc('SQL Queries');
+unless ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'SuperUser')) {
+ Abort(loc('This feature is only available to system administrators.'));
+}
+</%init>
+<& /Admin/Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/jquery.tablesorter.min.js"></script>
+
+<&|/Widgets/TitleBox, title => loc('SQL Queries') &>
+% my $history = $RT::Handle->QueryHistory;
+% if (!RT->Config->Get('StatementLog')) {
+ <p><&|/l&>You must set StatementLog to true to enable this query history page.</&></p>
+% } elsif (!$history) {
+ <p><&|/l&>This server process has recorded no SQL queries.</&></p>
+% } else {
+ <script type="text/javascript">
+ jQuery(function () { jQuery(".tablesorter").tablesorter(); });
+ </script>
+
+ <ol>
+% my $r = 0;
+% for my $request (@$history) {
+% ++$r;
+
+% my ($seconds, $count) = (0, 0);
+% for my $statement (@{ $request->{Queries} }) {
+% $seconds += $statement->[3];
+% $count++;
+% }
+
+ <li>
+ <tt><% $request->{Path} %></tt> - <i><&|/l, sprintf('%.4f', $seconds) &>[_1]s</&></i>
+ <a href="#" onclick="return hideshow(<% "queries-$r" |n,j%>);"><&|/l, $count &>Toggle [quant,_1,query,queries]</&></a>
+ <table id="queries-<%$r%>" class="tablesorter hidden">
+ <thead>
+ <tr>
+ <th><&|/l&>index</&></th>
+ <th><&|/l&>duration</&></th>
+ <th><&|/l&>statement</&></th>
+ </tr>
+ </thead>
+ <tbody>
+% my $s = 0;
+% my @undup;
+% for my $statement (@{ $request->{Queries} }) {
+% my ($dup) = grep {$_->[1] eq $statement->[1]} @undup[-(@undup > 3?3:@undup)..-1];
+% if ($dup) {
+% $dup->[2] = [$dup->[2]] unless $dup->[5];
+% push @{$dup->[2]}, $statement->[2];
+% $dup->[3] += $statement->[3];
+% $dup->[5] ||= 1; $dup->[5]++;
+% } else {
+% push @undup, $statement;
+% }
+% }
+% for my $statement (@undup) {
+% my ( $time, $sql, $bind, $duration, $trace, $dup ) = @$statement;
+% $sql = $RT::Handle->FillIn($sql, $bind) unless $dup;
+ <tr>
+ <td><% ++$s %><% $dup ? " (x $dup)" : "" %></td>
+ <td><i><&|/l, sprintf('%.4f', $duration) &>[_1]s</&></i></td>
+ <td>
+ <tt><% $sql %></tt>
+% if ($dup and @{$bind->[0]}) {
+% for my $b (@{$bind}) {
+ <br><tt>[<% join(", ", @$b) %>]</tt>
+% }
+% }
+ <a class="query-stacktrace-toggle" href="#" onclick="return hideshow(<% "trace-$r-$s" |n,j%>);"><&|/l &>Toggle stack trace</&></a>
+ <pre id="trace-<%$r%>-<%$s%>" class="hidden"><% $trace %></pre>
+ </td>
+ </tr>
+% }
+ </tbody>
+ </table>
+ </li>
+% }
+ </ol>
+% }
+</&>
diff --git a/rt/share/html/Admin/Tools/Shredder/Dumps/dhandler b/rt/share/html/Admin/Tools/Shredder/Dumps/dhandler
index e742001dd..0d24fa0af 100644
--- a/rt/share/html/Admin/Tools/Shredder/Dumps/dhandler
+++ b/rt/share/html/Admin/Tools/Shredder/Dumps/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,9 +48,6 @@
<%ATTR>
AutoFlush => 0
</%ATTR>
-<%FLAGS>
-inherit => undef
-</%FLAGS>
<%INIT>
my $arg = $m->dhandler_arg;
$m->abort(404) if $arg =~ m{\.\.|/|\\};
@@ -64,5 +61,5 @@ my $buf;
while( read $fh, $buf, 1024*1024 ) {
$m->out($buf);
}
-return 0;
+$m->abort;
</%INIT>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/DumpFileLink b/rt/share/html/Admin/Tools/Shredder/Elements/DumpFileLink
index 0f96b4348..5690377cd 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/DumpFileLink
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/DumpFileLink
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoRights b/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoRights
index 0d4e572ad..429313755 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoRights
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoRights
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,6 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => 'Error' &>
-<& /Admin/Elements/ToolTabs,
- current_tab => 'Admin/Tools/Shredder',
- current_subtab => 'Admin/Tools/Shredder',
- Title => 'Error',
-&>
+<& /Elements/Tabs &>
<div class="error"><% loc("You don't have <b>SuperUser</b> right.") |n%></div>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoStorage b/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoStorage
index bae4685b0..ae3b96e9b 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoStorage
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/Error/NoStorage
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,11 +49,8 @@
$Path => ''
</%ARGS>
<& /Admin/Elements/Header, Title => 'Error' &>
-<& /Admin/Elements/ToolTabs,
- current_tab => 'Admin/Tools/Shredder',
- current_subtab => 'Admin/Tools/Shredder',
- Title => 'Error',
-&>
+<& /Elements/Tabs &>
<div class="error">
-<% loc('Shredder needs a directory to write dumps to. Please check that you have <span class="file-path">[_1]</span> and it is writable by your web server.', $m->interp->apply_escapes( $Path ) ) |n%>
+% my $path_tag = q{<span class="file-path">} . $m->interp->apply_escapes($Path, 'h') . q{</span>};
+<&|/l_unsafe, $path_tag &>Shredder needs a directory to write dumps to. Please ensure that the directory [_1] exists and that it is writable by your web server.</&>
</div>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Attachment b/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Attachment
index 02ef90b3e..0da910d77 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Attachment
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Attachment
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,6 +48,7 @@
<%ARGS>
$Object => undef
</%ARGS>
-<a href="<% RT->Config->Get('WebURL') %>/Ticket/Attachment/<% $Object->TransactionId %>/<% $Object->id %>/">
-<% loc('Attachment') %>(<% loc('id') %>:<% $Object->id %>, <% loc('FileName') %>: <% $Object->Filename || loc('(no value)') %>)
+% my $name = (defined $Object->Filename and length $Object->Filename) ? $Object->Filename : loc("(no value)");
+<a href="<% RT->Config->Get('WebPath') %>/Ticket/Attachment/<% $Object->TransactionId %>/<% $Object->id %>/">
+<% loc('Attachment') %>(<% loc('id') %>:<% $Object->id %>, <% loc('Filename') %>: <% $name %>)
</a>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Ticket b/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Ticket
index ec052d642..35f1aa8d8 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Ticket
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--Ticket
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,6 +48,6 @@
<%ARGS>
$Object => undef
</%ARGS>
-<a href="<% RT->Config->Get('WebURL') %>/Ticket/Display.html?id=<% $Object->id %>">
+<a href="<% RT->Config->Get('WebPath') %>/Ticket/Display.html?id=<% $Object->id %>">
<% loc('Ticket') %>(<% loc('id') %>:<% $Object->id %>, <% loc('Subject') %>: <% substr($Object->Subject, 0, 30) %>...)
</a>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--User b/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--User
index 125f4f2c8..d7627eb14 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--User
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/Object/RT--User
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,6 +48,6 @@
<%ARGS>
$Object => undef
</%ARGS>
-<a href="<% RT->Config->Get('WebURL') %>/Admin/Users/Modify.html?id=<% $Object->id %>">
+<a href="<% RT->Config->Get('WebPath') %>/Admin/Users/Modify.html?id=<% $Object->id %>">
<% loc('User') %>(<% loc('id') %>:<% $Object->id %>, <% loc('Name') %>: <% $Object->Name %>)
</a>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/ObjectCheckBox b/rt/share/html/Admin/Tools/Shredder/Elements/ObjectCheckBox
index e14c5c5a8..3c2e1e7b6 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/ObjectCheckBox
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/ObjectCheckBox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/PluginArguments b/rt/share/html/Admin/Tools/Shredder/Elements/PluginArguments
index 67b46ad9d..d9926af9c 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/PluginArguments
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/PluginArguments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@ $Plugin => ''
</div>
<%INIT>
use RT::Shredder::Plugin;
-my $plugin_obj = new RT::Shredder::Plugin;
+my $plugin_obj = RT::Shredder::Plugin->new;
my ($status, $msg) = $plugin_obj->LoadByName( $Plugin );
die $msg unless $status;
</%INIT>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/PluginHelp b/rt/share/html/Admin/Tools/Shredder/Elements/PluginHelp
index daaa6b74a..7719ec027 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/PluginHelp
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/PluginHelp
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,7 +53,7 @@ $Plugin => ''
</div>
<%ONCE>
use RT::Shredder::Plugin;
-my $plugin_obj = new RT::Shredder::Plugin;
+my $plugin_obj = RT::Shredder::Plugin->new;
my %plugins = $plugin_obj->List;
</%ONCE>
<%INIT>
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/SelectObjects b/rt/share/html/Admin/Tools/Shredder/Elements/SelectObjects
index 2488b73f4..7bae913ae 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/SelectObjects
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/SelectObjects
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Tools/Shredder/Elements/SelectPlugin b/rt/share/html/Admin/Tools/Shredder/Elements/SelectPlugin
index 3835e0b99..e55f60eb0 100644
--- a/rt/share/html/Admin/Tools/Shredder/Elements/SelectPlugin
+++ b/rt/share/html/Admin/Tools/Shredder/Elements/SelectPlugin
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -68,6 +68,6 @@ $Plugin => ''
</div>
<%ONCE>
use RT::Shredder::Plugin;
-my $plugin_obj = new RT::Shredder::Plugin;
+my $plugin_obj = RT::Shredder::Plugin->new;
my %plugins = $plugin_obj->List('Search');
</%ONCE>
diff --git a/rt/share/html/Admin/Tools/Shredder/autohandler b/rt/share/html/Admin/Tools/Shredder/autohandler
index e7f31b575..955206420 100644
--- a/rt/share/html/Admin/Tools/Shredder/autohandler
+++ b/rt/share/html/Admin/Tools/Shredder/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Tools/Shredder/index.html b/rt/share/html/Admin/Tools/Shredder/index.html
index 8cea3e42c..81b99ec19 100644
--- a/rt/share/html/Admin/Tools/Shredder/index.html
+++ b/rt/share/html/Admin/Tools/Shredder/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,11 +52,7 @@ $Wipeout => ''
@WipeoutObject => ()
</%ARGS>
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/ToolTabs,
- current_tab => 'Admin/Tools/Shredder',
- current_subtab => 'Admin/Tools/Shredder',
- Title => $title,
-&>
+<& /Elements/Tabs &>
<form id="shredder-search-form" action="<% RT->Config->Get('WebPath') %>/Admin/Tools/Shredder/" method="GET">
<div id="shredder-select-plugin">
<& /Elements/ListActions, actions => $messages{'Errors'} &>
@@ -96,7 +92,7 @@ my $catch_non_fatals = sub {
if( $Plugin ) { { # use additional block({}) to effectively exit block on errors
use RT::Shredder::Plugin;
- $plugin_obj = new RT::Shredder::Plugin;
+ $plugin_obj = RT::Shredder::Plugin->new;
my( $status, $msg ) = $plugin_obj->LoadByName( $Plugin );
unless( $status ) {
push @{ $messages{Errors} }, $msg;
@@ -128,8 +124,8 @@ if( $Plugin ) { { # use additional block({}) to effectively exit block on errors
my $dump_file = '';
if( $Plugin && $Wipeout ) { { # use additional block({}) to effectively exit block on errors
- my $shredder = new RT::Shredder( force => 1 );
- my $backup_plugin = new RT::Shredder::Plugin;
+ my $shredder = RT::Shredder->new( force => 1 );
+ my $backup_plugin = RT::Shredder::Plugin->new;
my ($status, $msg) = $backup_plugin->LoadByName('SQLDump');
unless( $status ) {
push @{ $messages{Errors} }, $msg;
@@ -172,7 +168,7 @@ if( $Plugin && ( $Search || $Wipeout ) ) { { # use additional block({}) to effec
}
push @{ $messages{Success} }, loc('executed plugin successfuly');
- my $shredder = new RT::Shredder;
+ my $shredder = RT::Shredder->new;
foreach my $o( grep defined, splice @objs ) {
eval { push @objs, $shredder->CastObjectsToRecords( Objects => $o ) };
$catch_non_fatals->() && last if $@;
diff --git a/rt/share/html/Admin/Tools/Theme.html b/rt/share/html/Admin/Tools/Theme.html
new file mode 100644
index 000000000..11888cac5
--- /dev/null
+++ b/rt/share/html/Admin/Tools/Theme.html
@@ -0,0 +1,309 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header,
+ Title => loc("Theme"),
+&>
+<& /Elements/Tabs &>
+<& /Elements/ListActions, actions => \@results &>
+
+<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/farbtastic.js"></script>
+
+<div id="simple-customize">
+<div id="upload-logo">
+ <h2>Logo</h2>
+ <& /Elements/Logo, id => 'logo-theme-editor', ShowName => 0 &>
+ <form method="POST" enctype="multipart/form-data">
+ <label for="logo-upload"><&|/l&>Upload a new logo</&>:</label>
+ <input type="file" name="logo-upload" id="logo-upload" /><br />
+ <div class="gd-support">
+% if (%gd_can) {
+ <&|/l, $valid_image_types &>Your system supports automatic color suggestions for: [_1]</&>
+% } else {
+ <&|/l&>GD is disabled or not installed. You can upload an image, but you won't get automatic color suggestions.</&>
+% }
+ </div>
+ <input name="reset_logo" value="Reset to default RT Logo" type="submit" />
+ <input type="submit" value="Upload" />
+ </form>
+</div>
+
+<div id="customize-theme">
+ <h2>Customize the RT theme</h2>
+ <ol>
+ <li>
+ <label for="section"><&|/l&>Select a section</&>:</label>
+ <select id="section"></select>
+ </li>
+ <li>
+ <div class="description"><&|/l&>Select a color for the section</&>:</div>
+% if ($colors) {
+<div class="primary-colors">
+% for (@$colors) {
+% my $fg = $_->{l} >= $text_threshold ? 'black' : 'white';
+<button type="button" class="color-template"
+ style="background-color: rgb(<% $_->{c} %>); color: <% $fg %>;">
+ <&|/l&>Text</&>
+</button>
+% }
+</div>
+% }
+ <div id="color-picker"></div>
+ </li>
+ </ol>
+</div>
+</div>
+
+<div id="custom-css">
+ <h2>Custom CSS (Advanced)</h2>
+
+ <form method="POST">
+ <textarea rows=20 id="user_css" name="user_css" wrap="off"><% $user_css %></textarea><br />
+ <input id="try" type="button" class="button" value="Try" />
+ <input id="reset" type="reset" value="Reset" type="submit" />
+ <input name="reset_css" value="Reset to default RT Theme" type="submit" />
+ <input value="Save" type="submit" />
+ </form>
+</div>
+
+<%ONCE>
+my @sections = (
+ ['Page' => ['body']],
+ ['Header' => ['div#quickbar', 'body.aileron #main-navigation #app-nav > li, body.aileron #main-navigation #app-nav > li > a, #prefs-menu > li, #prefs-menu > li > a, #logo .rtname']],
+ ['Page title' => ['div#header h1']],
+ ['Page content' => ['div#body']],
+ ['Buttons' => ['input[type="reset"], input[type="submit"], input[class="button"]']],
+ ['Button hover' => ['input[type="reset"]:hover, input[type="submit"]:hover, input[class="button"]:hover']],
+);
+</%ONCE>
+<script type="text/javascript">
+var section_css_mapping = <% JSON(\@sections) |n%>;
+
+jQuery(function($) {
+
+ jQuery.each(section_css_mapping, function(i,v){
+ $('select#section').append($("<option/>")
+ .attr('value', v[0])
+ .text(v[0]));
+ });
+
+ $("style#sitecss").text($('#user_css').val());
+ $('#try').click(function() {
+ $("style#sitecss").text($('#user_css').val());
+ });
+
+ $('#reset').click(function() {
+ setTimeout(function() {
+ $("style#sitecss").text($('#user_css').val());
+ }, 1000);
+ });
+
+ function change_color(bg, fg) {
+ var section = $('select#section').val();
+
+ var applying = jQuery.grep(section_css_mapping, function(a){ return a[0] == section })[0][1];
+ var css = $('#user_css').val();
+ if (applying) {
+ var specials = new RegExp("([.*+?|()\\[\\]{}\\\\])", "g");
+ for (var name in applying) {
+ var selector = (applying[name]).replace(specials, "\\$1");
+ var rule = new RegExp('^'+selector+'\\s*\{.*?\}', "m");
+ var newcss = "background: " + bg;
+
+ /* Don't set the text color on <body> as it affects too much */
+ if (applying[name] != "body")
+ newcss += "; color: " + fg;
+
+ /* Kill the border on the quickbar if we're styling it */
+ if (applying[name].match(/quickbar/))
+ newcss += "; border: none;"
+
+ /* Page title's text color is the selected color */
+ if (applying[name].match(/#header/))
+ newcss = "color: " + bg;
+
+ /* Nav doesn't need a background, but it wants text color */
+ if (applying[name].match(/#main-navigation/))
+ newcss = "color: " + fg;
+
+ css = css.replace(rule, applying[name]+" { "+newcss+" }");
+ }
+ }
+ $('#user_css').val(css);
+ $("style#sitecss").text(css);
+ }
+
+ $('#color-picker').farbtastic(function(color){ change_color(color, this.hsl[2] > <% $text_threshold %> ? '#000' : '#fff') });
+
+ $('button.color-template').click(function() {
+ change_color($(this).css('background-color'), $(this).css('color'));
+ });
+
+
+});
+</script>
+<%INIT>
+unless ($session{'CurrentUser'}->HasRight( Object=> RT->System, Right => 'SuperUser')) {
+ Abort(loc('This feature is only available to system administrators.'));
+}
+
+use Digest::MD5 'md5_hex';
+
+my $text_threshold = 0.6;
+my @results;
+my $imgdata;
+
+if (my $file_hash = _UploadedFile( 'logo-upload' )) {
+ my ($id, $msg) = RT->System->SetAttribute( Name => "UserLogo",
+ Description => "User-provided logo",
+ Content => {
+ type => $file_hash->{ContentType},
+ data => $file_hash->{LargeContent},
+ hash => md5_hex($file_hash->{LargeContent}),
+ } );
+ push @results, loc("Unable to set UserLogo: [_1]", $msg) unless $id;
+
+ $imgdata = $file_hash->{LargeContent};
+}
+elsif ($ARGS{'reset_logo'}) {
+ RT->System->DeleteAttribute('UserLogo');
+}
+else {
+ if (my $attr = RT->System->FirstAttribute('UserLogo')) {
+ my $content = $attr->Content;
+ if (ref($content) eq 'HASH') {
+ $imgdata = $content->{data};
+ }
+ else {
+ RT->System->DeleteAttribute('UserLogo');
+ }
+ }
+}
+
+if ($user_css) {
+ if ($ARGS{'reset_css'}) {
+ RT->System->DeleteAttribute('UserCSS');
+ undef $user_css;
+ }
+ else {
+ my ($id, $msg) = RT->System->SetAttribute( Name => "UserCSS",
+ Description => "User-provided css",
+ Content => $user_css );
+ push @results, loc("Unable to set UserCSS: [_1]", $msg) unless $id;
+ }
+}
+
+if (!$user_css) {
+ my $attr = RT->System->FirstAttribute('UserCSS');
+ $user_css = $attr ? $attr->Content : join(
+ "\n\n" => map {
+ join "\n" => "/* ". $_->[0] ." */",
+ map { "$_ {}" } @{$_->[1]}
+ } @sections
+ );
+}
+
+# XXX: move this to some other modules
+
+use List::MoreUtils qw(uniq);
+
+my $has_color_analyzer = eval { require Convert::Color; 1 };
+my $colors;
+my %gd_can;
+my $valid_image_types;
+
+if (not RT->Config->Get('DisableGD') and $has_color_analyzer) {
+ require GD;
+
+ # Always find out what GD can read...
+ for my $type (qw(Png Jpeg Gif)) {
+ $gd_can{$type}++ if GD::Image->can("newFrom${type}Data");
+ }
+ $valid_image_types = join(", ", map { uc } sort { lc $a cmp lc $b } keys %gd_can);
+
+ # ...but only analyze the image if we have data
+ if ($imgdata) {
+ if ( my $img = GD::Image->new($imgdata) ) {
+ $colors = analyze_img($img);
+ }
+ else {
+ # This has to be one damn long line because the loc() needs to be
+ # source parsed correctly.
+ push @results, loc("Automatically suggested theme colors aren't available for your image. This might be because you uploaded an image type that your installed version of GD doesn't support. Supported types are: [_1]. You can recompile libgd and GD.pm to include support for other image types.", $valid_image_types);
+ }
+ }
+}
+
+sub analyze_img {
+ my $img = shift;
+ my $color;
+
+ for my $i (0..$img->width-1) {
+ for my $j (0..$img->height-1) {
+ my @color = $img->rgb( $img->getPixel($i,$j) );
+ my $hsl = Convert::Color->new('rgb:'.join(',',map { $_ / 255 } @color))->convert_to('hsl');
+ my $c = join(',',@color);
+ next if $hsl->lightness < 0.1;
+ $color->{$c} ||= { h => $hsl->hue, s => $hsl->saturation, l => $hsl->lightness, cnt => 0, c => $c};
+ $color->{$c}->{cnt}++;
+ }
+ }
+
+ for (values %$color) {
+ $_->{rank} = $_->{s} * $_->{cnt};
+ }
+ my @top5 = grep { defined and $_->{'l'} and $_->{'c'} }
+ (sort { $b->{rank} <=> $a->{rank} } values %$color)[0..5];
+ if ((scalar uniq map {$_->{rank}} @top5) == 1) {
+ warn "bad";
+ }
+ return \@top5;
+}
+</%INIT>
+<%ARGS>
+$user_css => ''
+</%ARGS>
diff --git a/rt/share/html/Admin/Tools/index.html b/rt/share/html/Admin/Tools/index.html
index 506385bdf..88612704a 100644
--- a/rt/share/html/Admin/Tools/index.html
+++ b/rt/share/html/Admin/Tools/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,11 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%init>
-my $title = loc('System Tools');
-</%init>
-<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/ToolTabs,
- current_tab => 'Admin/Tools/index.html',
- current_subtab => 'Admin/Tools/Configuration.html',
- Title => $title &>
+<& /Admin/Elements/Header, Title => loc('System Tools') &>
+<& /Elements/Tabs &>
+<& /Elements/ListMenu, menu => Menu()->child('tools')->child('config')->child('tools') &>
diff --git a/rt/share/html/Admin/Users/CustomFields.html b/rt/share/html/Admin/Users/CustomFields.html
index 82e8bbc76..bebb163eb 100644
--- a/rt/share/html/Admin/Users/CustomFields.html
+++ b/rt/share/html/Admin/Users/CustomFields.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,12 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/UserTabs,
- id => $Object->id,
- current_tab => "Admin/Users/CustomFields.html?$id=".$id,
- current_subtab => "Admin/Users/CustomFields.html?id=".$id,
- UserObj => $Object,
- Title => $title
+<& /Elements/Tabs
&>
<& /Admin/Elements/EditCustomFields, %ARGS, title => $title, Object => $Object, ObjectType => 'RT::User' &>
diff --git a/rt/share/html/Admin/Users/GnuPG.html b/rt/share/html/Admin/Users/GnuPG.html
index de1199340..90408e449 100644
--- a/rt/share/html/Admin/Users/GnuPG.html
+++ b/rt/share/html/Admin/Users/GnuPG.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,12 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/UserTabs,
- id => $id,
- UserObj => $UserObj,
- current_tab => 'Admin/Users/GnuPG.html?id='. $id,
- Title => $title,
-&>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
diff --git a/rt/share/html/Admin/Users/History.html b/rt/share/html/Admin/Users/History.html
index e8928c8d5..fb51038ee 100644
--- a/rt/share/html/Admin/Users/History.html
+++ b/rt/share/html/Admin/Users/History.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/UserTabs,
- id => $id,
- UserObj => $UserObj,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Ticket/Elements/ShowHistory,
Ticket => $UserObj,
@@ -58,8 +54,7 @@
&>
<%INIT>
-my $current_tab = 'Admin/Users/History.html?id='.$id;
-my $UserObj = new RT::User($session{'CurrentUser'});
+my $UserObj = RT::User->new($session{'CurrentUser'});
$UserObj->Load($id) || Abort("Couldn't load user '$id'");
my $title = loc("History of the user [_1]", $UserObj->Name);
</%INIT>
diff --git a/rt/share/html/Admin/Users/Memberships.html b/rt/share/html/Admin/Users/Memberships.html
index 5422e120e..443e189a9 100644
--- a/rt/share/html/Admin/Users/Memberships.html
+++ b/rt/share/html/Admin/Users/Memberships.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/UserTabs,
- id => $id,
- UserObj => $UserObj,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
@@ -63,12 +59,12 @@
OrderBy => 'Name',
Order => 'ASC',
%ARGS,
- Rows => 0,
+ Rows => 20,
DisplayFormat => "__CheckBox.{Delete}__,$Format",
Format => $Format,
Collection => $is_member,
AllowSorting => 1,
- PassArguments => [qw(Format Rows Order OrderBy id)],
+ PassArguments => [qw(Format Rows Page Order OrderBy id)],
&>
<h2><&|/l&>Groups the user is not member of (check box to add)</&></h2>
@@ -76,7 +72,7 @@
<& /Elements/CollectionList,
OrderBy => 'Name',
Order => 'ASC',
- Rows => 100,
+ Rows => 20,
%ARGS,
DisplayFormat => "__CheckBox.{Add}__,'__HasMemberRecursively.{$id}__/TITLE:Recursive',$Format",
Format => $Format,
@@ -94,7 +90,6 @@ my $UserObj = RT::User->new($session{'CurrentUser'});
$UserObj->Load( $id ) || Abort("Couldn't load user '$id'");
my $title = loc("Memberships of the user [_1]", $UserObj->Name);
-my $current_tab = 'Admin/Users/Memberships.html?id='. $id;
my @results;
if ( $Update ) {
diff --git a/rt/share/html/Admin/Users/Modify.html b/rt/share/html/Admin/Users/Modify.html
index 28d594377..05dde17f2 100755
--- a/rt/share/html/Admin/Users/Modify.html
+++ b/rt/share/html/Admin/Users/Modify.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/UserTabs,
- id => $id,
- UserObj => $UserObj,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
@@ -70,37 +66,37 @@
<tr><td align="right">
<&|/l&>Username</&>:
</td><td>
-<input name="Name" value="<%$UserObj->Name||''%>" /> <strong><&|/l&>(required)</&></strong>
+<input name="Name" value="<%$UserObj->Name||$Name||''%>" /> <strong><&|/l&>(required)</&></strong>
</td></tr>
<tr><td align="right">
<&|/l&>Email</&>:
</td><td>
-<input name="EmailAddress" value="<%$UserObj->EmailAddress||''%>" />
+<input name="EmailAddress" value="<%$UserObj->EmailAddress||$EmailAddress||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>Real Name</&>:
</td><td>
-<input name="RealName" value="<%$UserObj->RealName||''%>" />
+<input name="RealName" value="<%$UserObj->RealName||$RealName||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>Nickname</&>:
</td><td>
-<input name="NickName" value="<%$UserObj->NickName||''%>" />
+<input name="NickName" value="<%$UserObj->NickName||$NickName||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>Unix login</&>:
</td><td>
-<input name="Gecos" value="<%$UserObj->Gecos||''%>" />
+<input name="Gecos" value="<%$UserObj->Gecos||$Gecos||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>Language</&>:
</td><td>
-<& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang &>
+<& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang||$Lang &>
</td></tr>
<tr><td align="right">
<&|/l&>Extra info</&>:
</td><td>
-<textarea name="FreeformContactInfo" cols="20" rows="5"><%$UserObj->FreeformContactInfo||''%></textarea>
+<textarea name="FreeformContactInfo" cols="20" rows="5"><%$UserObj->FreeformContactInfo||$FreeformContactInfo||''%></textarea>
</td></tr>
</table>
</&>
@@ -134,39 +130,39 @@
<tr><td align="right">
<&|/l&>Organization</&>:
</td><td>
-<input name="Organization" value="<%$UserObj->Organization||''%>" />
+<input name="Organization" value="<%$UserObj->Organization||$Organization||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>Address1</&>:
</td><td>
-<input name="Address1" value="<%$UserObj->Address1||''%>" />
+<input name="Address1" value="<%$UserObj->Address1||$Address1||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>Address2</&>:
</td><td>
-<input name="Address2" value="<%$UserObj->Address2||''%>" />
+<input name="Address2" value="<%$UserObj->Address2||$Address2||''%>" />
</td></tr>
<tr><td align="right">
<&|/l&>City</&>:
</td><td>
-<input name="City" value="<%$UserObj->City||''%>" size="14" />
+<input name="City" value="<%$UserObj->City||$City||''%>" size="14" />
</td></tr>
<tr><td align="right">
<&|/l&>State</&>:
</td><td>
-<input name="State" value="<%$UserObj->State||''%>" size="3" />
+<input name="State" value="<%$UserObj->State||$State||''%>" size="3" />
</td></tr>
<tr><td align="right">
<&|/l&>Zip</&>:
</td><td>
-<input name="Zip" value="<%$UserObj->Zip||''%>" size="9" />
+<input name="Zip" value="<%$UserObj->Zip||$Zip||''%>" size="9" />
</td></tr>
<tr><td align="right">
<&|/l&>Country</&>:
</td><td>
-<input name="Country" value="<%$UserObj->Country||''%>" />
+<input name="Country" value="<%$UserObj->Country||$Country||''%>" />
</td></tr>
</table>
</&>
@@ -176,22 +172,22 @@
<tr><td align="right">
<&|/l&>Residence</&>:
</td><td>
-<input name="HomePhone" value="<%$UserObj->HomePhone||''%>" size="13" /><br />
+<input name="HomePhone" value="<%$UserObj->HomePhone||$HomePhone||''%>" size="13" /><br />
</td></tr>
<tr><td align="right">
<&|/l&>Work</&>:
</td><td>
-<input name="WorkPhone" value="<%$UserObj->WorkPhone||''%>" size="13" /><br />
+<input name="WorkPhone" value="<%$UserObj->WorkPhone||$WorkPhone||''%>" size="13" /><br />
</td></tr>
<tr><td align="right">
<&|/l&>Mobile</&>:
</td><td>
-<input name="MobilePhone" value="<%$UserObj->MobilePhone||''%>" size="13" /><br />
+<input name="MobilePhone" value="<%$UserObj->MobilePhone||$MobilePhone||''%>" size="13" /><br />
</td></tr>
<tr><td align="right">
<&|/l&>Pager</&>:
</td><td>
-<input name="PagerPhone" value="<%$UserObj->PagerPhone||''%>" size="13" /><br />
+<input name="PagerPhone" value="<%$UserObj->PagerPhone||$PagerPhone||''%>" size="13" /><br />
</td>
</tr>
</table>
@@ -207,7 +203,7 @@
% if ($UserObj->id) {
<& /Elements/EditCustomField, %ARGS, Object => $UserObj, CustomField => $CF &>
% } else {
-<& /Elements/EditCustomField, %ARGS, NamePrefix => 'Object-RT::User-new-CustomField-', CustomField => $CF &>
+<& /Elements/EditCustomField, %ARGS, NamePrefix => 'Object-RT::User--CustomField-', CustomField => $CF &>
% }
</td></tr>
% }
@@ -218,12 +214,12 @@
<tr>
<td colspan="2">
<&| /Widgets/TitleBox, title => loc('Comments about this user') &>
-<textarea class="comments" name="Comments" cols="80" rows="5" wrap="virtual"><%$UserObj->Comments||''%></textarea>
+<textarea class="comments" name="Comments" cols="80" rows="5" wrap="virtual"><%$UserObj->Comments||$Comments||''%></textarea>
</&>
%if (!$Create && $UserObj->Privileged) {
<br />
<&| /Widgets/TitleBox, title => loc('Signature') &>
-<textarea class="signature" cols="80" rows="5" name="Signature" wrap="hard"><%$UserObj->Signature||''%></textarea>
+<textarea class="signature" cols="80" rows="5" name="Signature" wrap="hard"><%$UserObj->Signature||$Signature||''%></textarea>
</&>
% }
@@ -240,20 +236,16 @@
<%INIT>
-my $current_tab;
-my $UserObj = new RT::User($session{'CurrentUser'});
+my $UserObj = RT::User->new($session{'CurrentUser'});
my ($title, $PrivilegedChecked, $EnabledChecked, $Disabled, $result, @results);
my ($val, $msg);
if ($Create) {
- $current_tab = 'Admin/Users/Modify.html?Create=1';
$title = loc("Create a new user");
}
else {
- $current_tab = 'Admin/Users/Modify.html?id='.$id if $id;
-
if ( defined $id && $id eq 'new') {
( $val, $msg ) = $UserObj->Create(
Name => $Name,
@@ -290,12 +282,6 @@ else {
if ($val) {
push @results, $msg;
- foreach my $key ( keys %ARGS) {
- # Convert custom fields on the "new" object to custom fields on the one we've just created
- if ($key =~ /^Object-RT::User-new-CustomField-(.*)$/) {
- $ARGS{'Object-RT::User-'.$val.'-CustomField-'.$1} = delete $ARGS{$key};
- }
- }
push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj );
} else {
push @results, loc('User could not be created: [_1]', $msg);
@@ -318,6 +304,7 @@ else {
}
+$m->callback( %ARGS, CallbackName => 'BeforeUpdate', User => $UserObj, ARGSRef => \%ARGS, Results => \@results );
# If we have a user to modify, lets try.
@@ -354,7 +341,6 @@ if ($UserObj->Id && $id ne 'new') {
}
- # }}}
}
@@ -379,13 +365,15 @@ unless ( $UserObj->id && $UserObj->Disabled ) {
$EnabledChecked = 'checked="checked"';
}
-if (!$Create && $UserObj->Privileged()) {
+if ((!$Create && $UserObj->Privileged()) or (!$UserObj->Id and $Privileged)) {
$PrivilegedChecked = 'checked="checked"';
}
-# set the id, so the the menu will have the right info, this needs to
-# be done here to avoid creating and then modifying a user
-$id = $UserObj->Id;
+# This code does automatic redirection if any updates happen.
+MaybeRedirectForResults(
+ Actions => \@results,
+ Arguments => { id => $UserObj->Id },
+) if $UserObj->Id;
</%INIT>
diff --git a/rt/share/html/Admin/Users/MyRT.html b/rt/share/html/Admin/Users/MyRT.html
index 346a2d60c..0fcd63b60 100644
--- a/rt/share/html/Admin/Users/MyRT.html
+++ b/rt/share/html/Admin/Users/MyRT.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => $title &>
-<& /Admin/Elements/UserTabs,
- id => $id,
- UserObj => $UserObj,
- current_tab => $current_tab,
- Title => $title &>
+<& /Elements/Tabs &>
<& /Widgets/SelectionBox:header, nojs => 1 &>
@@ -72,9 +68,7 @@
<%init>
my @actions;
-my $current_tab;
-$current_tab = 'Admin/Users/MyRT.html?id='.$id if $id;
-my $UserObj = new RT::User($session{'CurrentUser'});
+my $UserObj = RT::User->new($session{'CurrentUser'});
$UserObj->Load($id) || Abort("Couldn't load user '" . ($id || '') . "'");
my $title = loc("RT at a glance for the user [_1]", $UserObj->Name);
@@ -94,7 +88,7 @@ push @items, map {["component-$_", $_]} sort keys %allowed_components;
my $sys = RT::System->new( RT::CurrentUser->new($UserObj) );
my @objs = ($sys);
-push @objs, RT::SavedSearches->new( RT::CurrentUser->new( $UserObj ) )->_PrivacyObjects;
+push @objs, RT::SavedSearch->new( RT::CurrentUser->new( $UserObj ) )->ObjectsForLoading;
for my $object (@objs) {
for ($m->comp("/Search/Elements/SearchesForObject", Object => $object)) {
diff --git a/rt/share/html/Admin/Users/index.html b/rt/share/html/Admin/Users/index.html
index 6561abf86..adcfeb5b9 100755
--- a/rt/share/html/Admin/Users/index.html
+++ b/rt/share/html/Admin/Users/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,15 +46,51 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Admin/Elements/Header, Title => loc('Select a user') &>
-<& /Admin/Elements/UserTabs, current_tab => 'Admin/Users/',
- current_subtab => 'Admin/Users/',
- Title => loc('Select a user') &>
-
+<& /Elements/Tabs &>
+
<h1><% $caption %></h1>
-<p><&|/l&>Select a user</&>:</p>
+
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
+% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
+% next unless defined $ARGS{ $field } && length $ARGS{ $field };
+<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
+% }
+<input type="hidden" name="UserField" value="Name" />
+<input type="hidden" name="UserOp" value="LIKE" />
+<&|/l&>Go to user</&>
+<input type="text" name="UserString" value="" id="autocomplete-UserString" />
+<script type="text/javascript">
+jQuery(function(){
+ jQuery("#autocomplete-UserString").autocomplete({
+ source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Users?return=Name",
+ // Auto-submit once a user is chosen
+ select: function( event, ui ) {
+ jQuery(event.target).val(ui.item.value);
+ var form = jQuery(event.target).closest('form');
+ form.find('input[name=UserOp]').val('=');
+ form.submit();
+ }
+ });
+});
+</script>
+</form>
+
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
+% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
+% next unless defined $ARGS{ $field } && length $ARGS{ $field };
+<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
+% }
+<&|/l&>Find all users whose</&> <& /Elements/SelectUsers, %ARGS, Fields => \@fields &><br />
+<input type="checkbox" class="checkbox" name="FindDisabledUsers" value="1" <% $FindDisabledUsers? 'checked="checked"': '' %> />
+<&|/l&>Include disabled users in search.</&>
+<br />
+<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
+</form>
+
% unless ( $users->Count ) {
<em><&|/l&>No users matching search criteria found.</&></em>
% } else {
+<p><&|/l&>Select a user</&>:</p>
<& /Elements/CollectionList,
OrderBy => 'Name',
@@ -67,29 +103,8 @@
PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField IdLike EmailLike FindDisabledUsers)],
&>
-% my $ids = join ',', map $_->id, @{ $users->ItemsArrayRef };
-% if ( $ids ) {
-<div align="right"><em>
-(<a href="<%RT->Config->Get('WebPath')%>/Download/Tabular/User/<% $ids %>/Users.tsv">
-<&|/l&>Download as a tab-delimited file</&>
-</a>)</em></div>
% }
-<br /><br />
-% }
-
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
-% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
-% next unless defined $ARGS{ $field } && length $ARGS{ $field };
-<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
-% }
-<&|/l&>Find all users whose</&> <& /Elements/SelectUsers, %ARGS &><br />
-<input type="checkbox" class="checkbox" name="FindDisabledUsers" value="1" <% $FindDisabledUsers? 'checked="checked"': '' %> />
-<&|/l&>Include disabled users in search.</&>
-<br />
-<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
-</form>
-
<%INIT>
my $caption;
my $users = RT::Users->new( $session{'CurrentUser'} );
@@ -111,6 +126,8 @@ if ( defined($UserString) && length $UserString ) {
VALUE => $UserString,
);
}
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Admin/Users/Modify.html?id=".$users->First->id)
+ if $users->Count == 1;
}
else {
$caption = loc("Privileged users");
@@ -119,6 +136,29 @@ else {
$Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Users'};
+# Build up the list of fields to display for searching
+my $i = 0;
+my %sorted = map { $_ => $i++ } qw(
+ Name EmailAddress RealName Organization NickName WorkPhone HomePhone
+ MobilePhone PagerPhone Address1 Address2 City State Zip Country
+ Timezone Lang Gecos Comments
+);
+
+my @attrs = sort { $sorted{$a} <=> $sorted{$b} }
+ grep { !/(?:^id$|ContactInfo|Encoding|^External|System|PGPKey|AuthToken|^Last|^Creat(?:ed|or)$|^Signature$)/ }
+ RT::User->ReadableAttributes;
+my @fields;
+
+for my $name (@attrs) {
+ my $label = $m->comp(
+ '/Elements/ColumnMap',
+ Class => 'RT__User',
+ Name => $name,
+ Attr => 'title'
+ );
+
+ push @fields, [ $name, $label || $name ];
+}
</%INIT>
<%ARGS>
$Format => undef,
diff --git a/rt/share/html/Admin/autohandler b/rt/share/html/Admin/autohandler
index d2fe02aab..6559bec2f 100644
--- a/rt/share/html/Admin/autohandler
+++ b/rt/share/html/Admin/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/index.html b/rt/share/html/Admin/index.html
index 7956bde8b..3dd8ab4f9 100755
--- a/rt/share/html/Admin/index.html
+++ b/rt/share/html/Admin/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,51 +45,9 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& //Admin/Elements/Header, Title => loc('RT Administration') &>
-<& //Admin/Elements/Tabs, Title => loc('RT Administration') &>
-
-<& /Elements/ListMenu, items => $tabs &>
-<%init>
-
-
-
-my $tabs = {
- A => {
- title => loc('Users'),
- path => '/Admin/Users/index.html',
- description => loc('Manage users and passwords'),
- },
- B => {
- title => loc('Groups'),
- path => '/Admin/Groups/index.html',
- description => loc('Manage groups and group membership'),
- },
- C => {
- title => loc('Queues'),
- path => '/Admin/Queues/index.html',
- description => loc('Manage queues and queue-specific properties'),
- },
- D => {
- 'title' => loc('Custom Fields'),
- description => loc('Manage custom fields and custom field values'),
- path => '/Admin/CustomFields/index.html',
- },
- E => {
- 'title' => loc('Global'),
- path => '/Admin/Global/index.html',
- description =>
- loc('Manage properties and configuration which apply to all queues'),
- },
- F => {
- 'title' => loc('Tools'),
- path => '/Admin/Tools/index.html',
- description => loc('Use other RT administrative tools')
- },
-};
-
- $m->callback( %ARGS, tabs => $tabs );
-
-
-
-
-</%init>
+<& /Admin/Elements/Header, Title => loc('RT Administration') &>
+<& /Elements/Tabs &>
+<& /Elements/ListMenu, menu => Menu()->child('tools')->child('config') &>
+% if (RT->Config->Get('ShowRTPortal')) {
+<& /Admin/Elements/Portal &>
+% }
diff --git a/rt/share/html/Approvals/Display.html b/rt/share/html/Approvals/Display.html
index 74d509e04..f98998650 100755
--- a/rt/share/html/Approvals/Display.html
+++ b/rt/share/html/Approvals/Display.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-
-<& Elements/Tabs,
- current_tab => "Approvals/Display.html",
- Title => $title &>
+<& /Elements/Tabs &>
<form method="post" action="<%RT->Config->Get('WebPath')%>/Approvals/index.html">
<&| /Widgets/TitleBox, title => $title &>
diff --git a/rt/share/html/Approvals/Elements/Approve b/rt/share/html/Approvals/Elements/Approve
index f651139fa..4111680a4 100755
--- a/rt/share/html/Approvals/Elements/Approve
+++ b/rt/share/html/Approvals/Elements/Approve
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -67,17 +67,29 @@
<div class="form">
<div class="action">
<div>
+% if ( $inactive && $status eq 'resolved' ) {
+ <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-approve" name="Approval-<%$ticket->Id%>-Action" value="approve" checked="checked" />
+ <label for="Approval-<%$ticket->Id%>-Action-approve"><% loc('[_1] (Unchanged)', loc('Approve')) %></label>
+% } else {
<input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-approve" name="Approval-<%$ticket->Id%>-Action" value="approve" />
<label for="Approval-<%$ticket->Id%>-Action-approve"><&|/l&>Approve</&></label>
+% }
</div>
<div>
+% if ( $inactive && $status ne 'resolved' ) {
+ <input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-deny" name="Approval-<%$ticket->Id%>-Action" value="deny" checked="checked" />
+ <label for="Approval-<%$ticket->Id%>-Action-deny"><% loc('[_1] (Unchanged)', loc('Deny')) %></label>
+% } else {
<input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-deny" name="Approval-<%$ticket->Id%>-Action" value="deny" />
<label for="Approval-<%$ticket->Id%>-Action-deny"><&|/l&>Deny</&></label>
+% }
</div>
+% unless ( $inactive ) {
<div>
<input type="radio" class="radio" id="Approval-<%$ticket->Id%>-Action-none" name="Approval-<%$ticket->Id%>-Action" value="none" checked="checked" />
<label for="Approval-<%$ticket->Id%>-Action-none"><&|/l&>No action</&></label>
</div>
+% }
</div>
<div class="notes">
<label for="Approval-<%$ticket->Id%>-Notes"><&|/l&>Notes</&></label>
@@ -92,3 +104,7 @@ $ShowCustomFields => 1
$ShowHistory => 1
$ticket => undef
</%ARGS>
+<%INIT>
+my $status = $ticket->Status;
+my $inactive = $ticket->QueueObj->Lifecycle->IsInactive( $status );
+</%INIT>
diff --git a/rt/share/html/Approvals/Elements/PendingMyApproval b/rt/share/html/Approvals/Elements/PendingMyApproval
index e3cdff64d..d2061da84 100755
--- a/rt/share/html/Approvals/Elements/PendingMyApproval
+++ b/rt/share/html/Approvals/Elements/PendingMyApproval
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,13 +45,13 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<script type="text/javascript"><!--
- onLoadHook('createCalendarLink("CreatedBefore");');
- onLoadHook('createCalendarLink("CreatedAfter");');
---></script>
-% while (my $ticket = $tickets->Next() ) {
-% next if !$ARGS{'ShowDependent'} and $ticket->HasUnresolvedDependencies( Type => 'approval' );
+% my %done;
+% foreach ($tickets, $group_tickets) {
+% while (my $ticket = $_->Next() ) {
+% next if !$ARGS{'ShowDependent'} and $ticket->HasUnresolvedDependencies( Type => 'approval' );
+% next if $done{$ticket->Id}++; # don't show duplicate tickets
<& Approve, ticket => $ticket &>
+% }
% }
<&| /Widgets/TitleBox, title => loc("Search for approvals") &>
@@ -63,46 +63,46 @@
<input type="checkbox" class="checkbox" value="1" name="ShowRejected" <% defined($ARGS{'ShowRejected'}) && $ARGS{'ShowRejected'} && qq[checked="checked"] |n%> /> <&|/l&>Show denied requests</&><br />
<input type="checkbox" class="checkbox" value="1" name="ShowDependent" <% defined($ARGS{'ShowDependent'}) && $ARGS{'ShowDependent'} && qq[checked="checked"] |n%> /> <&|/l&>Show requests awaiting other approvals</&><br />
-<&|/l,"<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' />"&>Only show approvals for requests created before [_1]</&><br />
+<&|/l_unsafe, qq{<input size='15' class="ui-datepicker" value='}.($created_before->Unix > 0 &&$created_before->ISO(Timezone => 'user'))."' name='CreatedBefore' id='CreatedBefore' />"&>Only show approvals for requests created before [_1]</&><br />
-<&|/l, "<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO(Timezone => 'user'))."' name='CreatedAfter' id='CreatedAfter' />"&>Only show approvals for requests created after [_1]</&>
+<&|/l_unsafe, qq{<input size='15' class="ui-datepicker" value='}.( $created_after->Unix >0 && $created_after->ISO(Timezone => 'user'))."' name='CreatedAfter' id='CreatedAfter' />"&>Only show approvals for requests created after [_1]</&>
</&>
<%init>
my $tickets = RT::Tickets->new( $session{'CurrentUser'} );
+$tickets->LimitOwner( VALUE => $session{'CurrentUser'}->Id );
+
+# also consider AdminCcs as potential approvers.
+my $group_tickets = RT::Tickets->new( $session{'CurrentUser'} );
+$group_tickets->LimitWatcher( VALUE => $session{'CurrentUser'}->UserObj->EmailAddress, TYPE => 'AdminCc' );
+
my $created_before = RT::Date->new( $session{'CurrentUser'} );
my $created_after = RT::Date->new( $session{'CurrentUser'} );
-my @clauses;
-push @clauses,
- "Owner = '".$session{CurrentUser}->Id."' OR AdminCc = '".$session{CurrentUser}->UserObj->EmailAddress."'";
-push @clauses, "Type = 'approval'";
-
-my @statuses;
-if ( $ARGS{'ShowResolved'} ) {
- push @statuses,'resolved';
-}
-if ( $ARGS{'ShowRejected'} ) {
- push @statuses,'rejected';
-}
-if ( $ARGS{'ShowPending'} || ( !$ARGS{'ShowRejected'} && !$ARGS{'Resolved'} ) ) {
- push @statuses,qw(open new stalled);
-}
+foreach ($tickets, $group_tickets) {
+ $_->Limit( FIELD => 'Type', VALUE => 'approval' );
-push @clauses, join(' OR ', map { " Status = '$_' " } @statuses);
+ if ( $ARGS{'ShowResolved'} ) {
+ $_->LimitStatus( VALUE => 'resolved' );
+ }
+ if ( $ARGS{'ShowRejected'} ) {
+ $_->LimitStatus( VALUE => 'rejected' );
+ }
+ if ( $ARGS{'ShowPending'} || ( !$ARGS{'ShowRejected'} && !$ARGS{'Resolved'} ) ) {
+ $_->LimitStatus( VALUE => 'open' );
+ $_->LimitStatus( VALUE => 'new' );
+ $_->LimitStatus( VALUE => 'stalled' );
+ }
-if ( $ARGS{'CreatedBefore'} ) {
- $created_before->Set( Format => 'unknown', Value => $ARGS{'CreatedBefore'} );
- push @clauses, "Created <= ".$created_before->ISO;
+ if ( $ARGS{'CreatedBefore'} ) {
+ $created_before->Set( Format => 'unknown', Value => $ARGS{'CreatedBefore'} );
+ $_->LimitCreated( OPERATOR => "<=", VALUE => $created_before->ISO );
+ }
+ if ( $ARGS{'CreatedAfter'} ) {
+ $created_after->Set( Format => 'unknown', Value => $ARGS{'CreatedAfter'} );
+ $_->LimitCreated( OPERATOR => ">=", VALUE => $created_after->ISO );
+ }
+ $_->OrderBy( FIELD => 'id' );
}
-if ( $ARGS{'CreatedAfter'} ) {
- $created_after->Set( Format => 'unknown', Value => $ARGS{'CreatedAfter'} );
- push @clauses, "Created >= ".$created_after->ISO;
-}
-
-$m->callback(CallbackName => 'Search', clauses => \@clauses);
-my $query = join (' AND ', map { "( $_ )" } @clauses);
-$tickets->FromSQL($query);
-$tickets->OrderBy( FIELD => 'id' );
</%init>
diff --git a/rt/share/html/Approvals/Elements/ShowDependency b/rt/share/html/Approvals/Elements/ShowDependency
index 380604a75..26dd070f2 100755
--- a/rt/share/html/Approvals/Elements/ShowDependency
+++ b/rt/share/html/Approvals/Elements/ShowDependency
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Approvals/autohandler b/rt/share/html/Approvals/autohandler
index 655a001a8..a05770654 100644
--- a/rt/share/html/Approvals/autohandler
+++ b/rt/share/html/Approvals/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Approvals/index.html b/rt/share/html/Approvals/index.html
index cfd5ab4d5..c72e9afe2 100755
--- a/rt/share/html/Approvals/index.html
+++ b/rt/share/html/Approvals/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,10 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("My approvals") &>
-<& /Approvals/Elements/Tabs, Title => loc("My approvals") &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@actions &>
-<form method="post">
+<form method="post" name="Approvals" id="Approvals">
<& Elements/PendingMyApproval, %ARGS &>
<& /Elements/Submit, Label => loc('Go!') &>
</form>
@@ -79,11 +79,11 @@ foreach my $arg ( keys %ARGS ) {
}
my ($val, $msg);
- if ( $ARGS{$arg} eq 'deny' ) {
- ( $val, $msg ) = $ticket->SetStatus('rejected');
+ if ( $ARGS{$arg} eq 'deny' && $ticket->Status !~ /^(rejected|deleted)/ ) {
+ ( $val, $msg ) = $ticket->SetStatus('rejected');
}
- elsif ( $ARGS{$arg} eq 'approve' ) {
- ( $val, $msg ) = $ticket->SetStatus('resolved');
+ elsif ( $ARGS{$arg} eq 'approve' && $ticket->Status ne 'resolved') {
+ ( $val, $msg ) = $ticket->SetStatus('resolved');
}
push ( @actions, loc("Approval #[_1]: [_2]",$ticket->id, $msg )) if ($msg);
}
diff --git a/rt/share/html/Articles/Article/Delete.html b/rt/share/html/Articles/Article/Delete.html
new file mode 100644
index 000000000..7abd824d5
--- /dev/null
+++ b/rt/share/html/Articles/Article/Delete.html
@@ -0,0 +1,106 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+
+% if ($ARGS{'Delete'}) {
+<%$title%>
+<& /Elements/ListActions, actions => \@results &>
+
+% } else {
+<b><&|/l&>Are you sure you want to delete this article?</&></b>
+<table>
+<tr>
+<td align="left">
+<form action="Display.html" method="get">
+<input type="hidden" name="id" value="<%$ArticleObj->Id%>" />
+<input type="submit" value="<&|/l&>No</&>" />
+</form>
+
+</td>
+<td align="right">
+<form action="Delete.html" method="post">
+<input type="hidden" name="id" value="<%$ArticleObj->Id%>" />
+<input type="hidden" name="Delete" value="yes" />
+<input type="submit" value="<&|/l&>Yes</&>" />
+</form>
+</td>
+
+</tr>
+</table>
+% }
+<%INIT>
+
+my @results;
+
+my $title;
+my $ArticleObj = RT::Article->new( $session{'CurrentUser'} );
+
+
+$ArticleObj->Load($id);
+unless ( $ArticleObj->id ) {
+ $m->comp("/Elements/Error", Why => loc("Unable to load article") );
+}
+
+
+unless ( $ArticleObj->CurrentUserHasRight('ModifyArticle') ) {
+ $m->comp("/Elements/Error", Why => loc("No permission to modify article"));
+}
+
+if ($ARGS{'Delete'} eq 'yes') {
+ $ArticleObj->Delete();
+ $title = loc('Article #[_1] deleted', $ArticleObj->Id);
+}
+
+else {
+ $title = loc('Delete article #[_1]', $ArticleObj->Id);
+}
+</%INIT>
+<%ARGS>
+$id => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Display.html b/rt/share/html/Articles/Article/Display.html
new file mode 100644
index 000000000..b80dc1c5e
--- /dev/null
+++ b/rt/share/html/Articles/Article/Display.html
@@ -0,0 +1,92 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<h2><&|/l&>Basics</&></h2>
+<span class="label"><&|/l&>Class</&></span>: <span class="value"><%$article->ClassObj->Name%></span><br />
+<em><span class="value"><%$article->Summary%></span></em>
+<h2><&|/l&>Content</&></h2>
+<& /Elements/ShowCustomFields, Object => $article &>
+
+<h2><&|/l&>Links</&></h2>
+<& Elements/ShowLinks, article => $article &>
+
+<h2><&|/l&>Topics</&></h2>
+<& Elements/ShowTopics, article => $article &>
+<%init>
+
+my $article = RT::Article->new( $session{'CurrentUser'} );
+if ($Name) {
+ $article->LoadByCols( Name => $Name );
+}
+elsif ($id) {
+ $article->Load($id);
+}
+unless ( $article->Id ) {
+ if ( $ARGS{'Name'} ) {
+ $m->comp( 'Edit.html', %ARGS );
+ return ();
+ }
+ else {
+ $m->comp( "/Elements/Error", Why => loc("Article not found") );
+ }
+
+}
+
+unless ( $article->CurrentUserHasRight('ShowArticle') ) {
+ $m->comp( "/Elements/Error", Why => loc("Permission Denied") );
+}
+my $title = loc( "Article #[_1]: [_2]", $article->Id, $article->Name || loc("(no name)"));
+
+$id = $article->id;
+
+</%init>
+<%args>
+$id => undef
+$Name => undef
+</%args>
diff --git a/rt/share/html/Articles/Article/Edit.html b/rt/share/html/Articles/Article/Edit.html
new file mode 100644
index 000000000..d14c33076
--- /dev/null
+++ b/rt/share/html/Articles/Article/Edit.html
@@ -0,0 +1,334 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& /Elements/ListActions, actions => \@results &>
+
+<form method="post" action="Edit.html" name="EditArticle" id="EditArticle" enctype="multipart/form-data">
+<input type="hidden" name="next" value="<%$ARGS{next}||''%>" />
+<input type="hidden" name="id" value="<%$id%>" />
+<table width="100%">
+<tr>
+<td><h2><&|/l&>Basics</&></h2></td>
+<td></td>
+</tr>
+<& Elements/EditBasics, ArticleObj => $ArticleObj,
+ EditClass =>$EditClass,
+ ClassObj => $ClassObj,
+ %ARGS ,
+ id => $id
+ &>
+
+<tr>
+<td><h2><&|/l&>Content</&></h2></td>
+<td></td>
+</tr>
+<& Elements/EditCustomFields, ArticleObj => $ArticleObj,
+ CFContent => \%CFContent,
+ ClassObj => $ClassObj,
+ %ARGS,
+ id =>$id,
+ &>
+
+<tr>
+<td><h2><&|/l&>Links</&></h2></td>
+<td></td>
+</tr>
+<& Elements/EditLinks, ArticleObj => $ArticleObj,
+ %ARGS,
+ id => $id
+ &>
+<tr>
+<td><h2><&|/l&>Topics</&></h2></td>
+<td></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Topics</&></td>
+<td>
+<& Elements/EditTopics, ArticleObj => $ArticleObj,
+ Classes => [$ArticleObj->Id ? $ArticleObj->ClassObj : $ClassObj],
+ OnlyThisClass => 1,
+ %ARGS,
+ id => $id
+ &>
+</td>
+</tr>
+</table>
+<& /Elements/Submit, Label => ($id eq 'new' ? loc('Create') : loc('Save Changes')), color => "#993333" &>
+</form>
+
+<%INIT>
+
+if ( exists $ARGS{'Topics'} ) {
+ $ARGS{'Topics'} =
+ ref( $ARGS{'Topics'} ) ? $ARGS{'Topics'} : [ $ARGS{'Topics'} ];
+}
+
+my @results;
+my $title;
+
+my $Entries = {};
+my $ArticleObj = RT::Article->new( $session{'CurrentUser'} );
+my $ClassObj = RT::Class->new( $session{'CurrentUser'} );
+my %create_args;
+my %CFContent;
+my $EditClass = 1;
+if ( !$id ) {
+ $title = loc('Create a new article');
+ foreach my $arg ( sort keys %ARGS ) {
+ if ( $arg =~ /^Transaction-(\d+)$/ ) {
+ my $trans = RT::Transaction->new( $session{'CurrentUser'} );
+ $trans->Load($1);
+ $CFContent{ $ARGS{$arg} } .= "\n\n" if $CFContent{ $ARGS{$arg} };
+ $CFContent{ $ARGS{$arg} } .= $trans->Content;
+ }
+ }
+
+ $ClassObj->Load($Class);
+ unless ( $ClassObj->Id ) {
+ $m->comp( "/Elements/Error",
+ Why => loc( "'[_1]' isn't a valid class identifier", $Class ) );
+ }
+ $EditClass = 0;
+ $id = 'new';
+}
+elsif ( $id eq 'new' ) {
+
+ if ( $ARGS{'RefersTo-new'} ) {
+ @{ $create_args{'RefersTo-new'} } =
+ split( /\s+/, $ARGS{'RefersTo-new'} );
+ }
+
+ if ( $ARGS{'new-RefersTo'} ) {
+ @{ $create_args{'new-RefersTo'} } =
+ split( /\s+/, $ARGS{'new-RefersTo'} );
+ }
+
+
+ foreach my $arg (keys %ARGS) {
+ next if $arg =~ /-(?:Magic|Category)$/;
+ # Object-RT::Article--CustomField-3-Values
+ if ( $arg =~ /^Object-RT::Article--CustomField-(\d+)(.*?)$/ ) {
+ my $cfid = $1;
+
+ my $cf = RT::CustomField->new( $session{'CurrentUser'} );
+ $cf->SetContextObject( $ArticleObj );
+ $cf->Load( $cfid );
+ unless ( $cf->id ) {
+ $RT::Logger->error( "Couldn't load custom field #". $cfid );
+ next;
+ }
+
+ if ( $arg =~ /-Upload$/ ) {
+ $create_args{"CustomField-$cfid"} = _UploadedFile( $arg );
+ next;
+ }
+
+ my $type = $cf->Type;
+
+ my @values = ();
+ if ( ref $ARGS{ $arg } eq 'ARRAY' ) {
+ @values = @{ $ARGS{ $arg } };
+ } elsif ( $type =~ /text/i ) {
+ @values = ($ARGS{ $arg });
+ } else {
+ @values = split /\r*\n/, $ARGS{ $arg } || '';
+ }
+ @values = grep $_ ne '',
+ map {
+ s/\r+\n/\n/g;
+ s/^\s+//;
+ s/\s+$//;
+ $_;
+ }
+ grep defined, @values;
+
+ $create_args{"CustomField-$cfid"} = \@values;
+ }
+ }
+
+ my $msg;
+ ( $id, $msg ) = $ArticleObj->Create(
+ Summary => $ARGS{'Summary'},
+ Name => $ARGS{'Name'},
+ Class => $ARGS{'Class'},
+ Topics => $ARGS{'Topics'},
+ %create_args
+ );
+ push( @results, $msg );
+ if ($id) {
+
+
+ $ArticleObj->Load($id);
+
+ $title = loc( 'Modify article #[_1]', $ArticleObj->Id );
+ delete $ARGS{id};
+
+ if ( $ARGS{next} ) {
+ $m->redirect($ARGS{next});
+ }
+ else {
+ MaybeRedirectForResults(
+ Actions => \@results,
+ Arguments => { id => $ArticleObj->id },
+ );
+ }
+ }
+ if (!$id) {
+ $ClassObj->Load($Class);
+ unless ( $ClassObj->Id ) {
+ $m->comp( "/Elements/Error",
+ Why => loc( "'[_1]' isn't a valid class identifier", $Class ) );
+ }
+ $ArticleObj = RT::Article->new( $session{'CurrentUser'} );
+ $id = 'new';
+ $EditClass = 0;
+ $title = loc('Create a new article');
+ }
+}
+else {
+
+ $ArticleObj->Load($id);
+ unless ( $ArticleObj->id ) {
+ $m->comp( "/Elements/Error",
+ Why => loc("Unable to load article") );
+ }
+
+ my @attribs = qw(Name Summary Class);
+
+ @results = UpdateRecordObject(
+ AttributesRef => \@attribs,
+ Object => $ArticleObj,
+ ARGSRef => \%ARGS
+ );
+
+ my @cf_results = ProcessObjectCustomFieldUpdates(
+ Object => $ArticleObj,
+ ARGSRef => \%ARGS
+ );
+ @results = ( @results, @cf_results );
+
+ # Delete links that are gone gone gone.
+ foreach my $arg ( keys %ARGS ) {
+ if ( $arg =~ /DeleteLink-(.*?)-(RefersTo|MemberOf|RefersTo)-(.*)$/ ) {
+ my $base = $1;
+ my $type = $2;
+ my $target = $3;
+
+ my ( $val, $msg ) = $ArticleObj->DeleteLink(
+ Base => $base,
+ Type => $type,
+ Target => $target
+ );
+
+ push @results, $msg;
+
+ }
+
+ }
+
+ my @linktypes = qw(DependsOn MemberOf RefersTo );
+
+ foreach my $linktype (@linktypes) {
+
+ for my $luri ( split( / /, ( $ARGS{ $ArticleObj->Id . "-$linktype" } || '' )) ) {
+ $luri =~ s/\s*$//; # Strip trailing whitespace
+ my ( $val, $msg ) =
+ $ArticleObj->AddLink( Target => $luri, Type => $linktype );
+ push @results, $msg;
+ delete $ARGS{ $ArticleObj->Id . "-$linktype" } if $val;
+ }
+
+ for my $luri ( split( / /, ( $ARGS{ "$linktype-" . $ArticleObj->Id } || '' )) ) {
+ my ( $val, $msg ) =
+ $ArticleObj->AddLink( Base => $luri, Type => $linktype );
+ push @results, $msg;
+ delete $ARGS{ "$linktype-" . $ArticleObj->Id } if $val;
+ }
+
+ }
+
+ my %topics;
+ if ( $ARGS{'EditTopics'} ) {
+ $topics{$_}++ for @{ $ARGS{'Topics'} };
+ my $objTopics =
+ RT::ObjectTopics->new( $session{'CurrentUser'} );
+ $objTopics->LimitToObject($ArticleObj);
+ while ( my $t = $objTopics->Next ) {
+ $topics{ $t->Topic }--;
+ }
+ for my $id ( keys %topics ) {
+ if ( $topics{$id} > 0 ) {
+ my ( $val, $msg ) = $ArticleObj->AddTopic( Topic => $id );
+ push @results, $msg;
+ }
+ elsif ( $topics{$id} < 0 ) {
+ my ( $val, $msg ) = $ArticleObj->DeleteTopic( Topic => $id );
+ push @results, $msg;
+ }
+ }
+ }
+
+ $title = loc( 'Modify article #[_1]', $ArticleObj->Id );
+}
+
+# if they're working on an existing article
+if ( $ArticleObj->id ) {
+ unless ( $ArticleObj->CurrentUserHasRight('ShowArticle') ) {
+ $m->comp( "/Elements/Error",
+ Why => loc("No permission to view Article") );
+ }
+}
+
+</%INIT>
+
+
+<%ARGS>
+$id => undef
+$Class => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/EditBasics b/rt/share/html/Articles/Article/Elements/EditBasics
new file mode 100644
index 000000000..256d81610
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/EditBasics
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<tr>
+<td class="label"><&|/l&>Name</&></td>
+<td><input name="Name" value="<%($ARGS{'id'} eq 'new' ? '' : $ArticleObj->Name) || $ARGS{'Name'} || ''|h%>" size="50" /></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Summary</&></td>
+<td><input name="Summary" value="<%($ARGS{'id'} eq 'new' ? '' : $ArticleObj->Summary) || $ARGS{'Summary'} ||'' |h%>" size="50" /></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Class</&></td>
+<td>
+% if ($EditClass) {
+<& /Articles/Elements/SelectClass, Name => 'Class', Default =>$ArticleObj->ClassObj->Id&>
+% } else {
+<%$ClassObj->Name%>
+<input type="hidden" name="Class" value="<%$ClassObj->Id%>" />
+% }
+</td>
+</tr>
+<%INIT>
+</%INIT>
+<%ARGS>
+$EditClass => 1
+$ClassObj => undef
+$ArticleObj => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/EditCustomFields b/rt/share/html/Articles/Article/Elements/EditCustomFields
new file mode 100644
index 000000000..db719eb2e
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/EditCustomFields
@@ -0,0 +1,83 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% while (my $CustomField = $CustomFields->Next()) {
+<tr>
+ <td class="labeltop"><b><%$CustomField->Name%></b><br /><i><%$CustomField->FriendlyType%></i></td>
+ <td class="entry"><& /Elements/EditCustomField,
+ Object => $ArticleObj,
+ CustomField => $CustomField,
+ NamePrefix => $NamePrefix,
+ Default =>
+ ($CFContent->{$CustomField->Id} ||
+ $ARGS{$NamePrefix .$CustomField->id .'-Values'} ||
+ $ARGS{$NamePrefix .$CustomField->id .'-Value'})
+ ,
+ Rows => 15,
+ Cols => 70
+ &></td>
+</tr>
+% }
+<%INIT>
+my $CustomFields;
+my $NamePrefix;
+
+if ($ArticleObj->id && $ArticleObj->ClassObj->id) {
+ $CustomFields = $ArticleObj->CustomFields();
+ $NamePrefix = "Object-RT::Article-".$ArticleObj->Id."-CustomField-";
+}
+else {
+ $CustomFields = $ClassObj->ArticleCustomFields();
+ $NamePrefix = "Object-RT::Article--CustomField-";
+}
+</%INIT>
+<%ARGS>
+$ArticleObj => undef
+$ClassObj => undef
+$CFContent => undef
+$id => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/EditLinks b/rt/share/html/Articles/Article/Elements/EditLinks
new file mode 100644
index 000000000..03b99c8d3
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/EditLinks
@@ -0,0 +1,113 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<tr>
+<td class="label"></td>
+<td class="value"><i><&|/l&>Enter articles, tickets, or other URLs related to this article.</&>
+<& LinkEntryInstructions &></i>
+% unless ($id eq 'new') {
+<i><&|/l&>(Check boxes to delete)</&></i><br />
+% }
+</td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Refers to</&>:</td>
+<td><input name="<%$id%>-RefersTo" value="<%$ARGS{$id.'-RefersTo'}||''%>" /><br />
+<ul>
+% if ($id ne 'new') {
+% my $refersto = $ArticleObj->RefersTo;
+% while (my $link = $refersto->Next) {
+% my $member = $link->TargetURI;
+<li>
+<input type="CHECKBOX" name="DeleteLink--<%$link->Type%>-<%$link->Target%>" />
+% if ($link->TargetURI->IsLocal) {
+<a href="<%$member->Resolver->HREF%>"><% loc($member->Object->ObjectTypeStr) %> <%$member->Object->Id%></a>:
+% if (UNIVERSAL::isa($member->Object, "RT::Article") or UNIVERSAL::can($member->Object, 'Name')) {
+<%$member->Object->Name%>
+% } elsif (UNIVERSAL::isa($member->Object, "RT::Ticket") or UNIVERSAL::can($member->Object, 'Subject')) {
+<%$member->Object->Subject%>
+% }
+</a>
+% } else {
+<a href="<%$member->Resolver->HREF%>"><%$link->Target%></a>
+% }
+% }
+% }
+</ul>
+</td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Referred to by</&>:</td>
+<td><input name="RefersTo-<%$id%>" value="<%$ARGS{'RefersTo-'.$id}||''%>" />
+<br />
+<ul>
+% if ($id ne 'new') {
+% my $referredtoby = $ArticleObj->ReferredToBy;
+% while (my $link = $referredtoby->Next) {
+% my $member = $link->BaseURI;
+<li>
+<input type="CHECKBOX" name="DeleteLink-<%$link->Base%>-<%$link->Type%>-" />
+% if ($link->BaseURI->IsLocal) {
+<a href="<%$member->Resolver->HREF%>"><% loc($member->Object->ObjectTypeStr) %> <%$member->Object->Id%>:
+% if (UNIVERSAL::isa($member->Object, "RT::Article") or UNIVERSAL::can($member->Object, 'Name')) {
+<%$member->Object->Name%>
+% } elsif (UNIVERSAL::isa($member->Object, "RT::Ticket") or UNIVERSAL::can($member->Object, 'Subject')) {
+<%$member->Object->Subject%>
+% }
+</a>
+% } else {
+<a href="<%$member->Resolver->HREF%>"><%$link->Base%></a>
+% }
+% }
+% }
+</ul>
+</td>
+</tr>
+<%ARGS>
+$ArticleObj => undef
+$id => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/EditTopics b/rt/share/html/Articles/Article/Elements/EditTopics
new file mode 100644
index 000000000..82e907135
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/EditTopics
@@ -0,0 +1,144 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<input type="hidden" name="EditTopics" value="1" />
+<select multiple size="10" name="Topics">
+% if (@Classes) {
+% unless ($OnlyThisClass) {
+<optgroup label="Current classes (<% join(" ", map {$_->Name} @Classes) %>)">
+% }
+% $inTree->traverse(sub {
+% my $tree = shift;
+% my $topic = $tree->getNodeValue;
+<option value="<% $topic->Id %>" <% exists $topics{$topic->Id} ? "selected" : "" %> >\
+<% "&nbsp;" x ($tree->getDepth*5) |n %><% $topic->Name || loc("(no name)") %></option>
+% });
+% }
+% unless ($OnlyThisClass) {
+% my $class = $Classes[-1]->Id;
+% $otherTree->traverse(sub {
+% my $tree = shift;
+% my $topic = $tree->getNodeValue;
+% unless ($topic->ObjectId == $class) {
+% $class = $topic->ObjectId;
+</optgroup>
+% my $c = RT::Class->new($session{'CurrentUser'});
+% $c->Load($topic->ObjectId);
+<optgroup label="<% $c->Name %>">
+% }
+<option value="<% $topic->Id %>" <% exists $topics{$topic->Id} ? "selected" : "" %> >\
+<% "&nbsp;" x ($tree->getDepth*5) |n %><% $topic->Name || loc("(no name)") %></option>
+% });
+</optgroup>
+% }
+</select>
+
+<%INIT>
+use Tree::Simple;
+
+my $inClass = RT::Topics->new($session{'CurrentUser'});
+# global topics should always be available
+push @Classes,$RT::System unless grep { $_ == $RT::System } @Classes;
+$inClass->LimitToObject($_) for @Classes;
+$inClass->OrderByCols({FIELD => 'Name'});
+my $inTree = buildTree($inClass);
+
+my $otherClass = RT::Topics->new($session{'CurrentUser'});
+if (@Classes) {
+ $otherClass->Limit(FIELD => 'ObjectType', VALUE => 'RT::Class');
+ for (@Classes) {
+ $otherClass->Limit(FIELD => 'ObjectId', OPERATOR => '!=', VALUE => $_->Id);
+ }
+} else {
+ $otherClass->UnLimit;
+}
+my $otherTree = buildTree($otherClass);
+
+my $articleTopics = RT::ObjectTopics->new($session{'CurrentUser'});
+$articleTopics->LimitToObject($ArticleObj);
+my %topics;
+while (my $topicObj = $articleTopics->Next) {
+ $topics{$topicObj->Topic} = 1;
+}
+$topics{$_} = 1 for @Topics;
+
+sub buildTree {
+ my $query = shift;
+
+ use Tree::Simple;
+ my $tree = Tree::Simple->new(Tree::Simple->ROOT);
+ my %lookup = (0 => $tree);
+
+ my @todo;
+ while (my $topic = $query->Next) {
+ push @todo, $topic;
+ }
+
+ {
+ my $changed = 0;
+ my @work = @todo;
+ @todo = ();
+ for my $topic (@work) {
+ if (defined $lookup{$topic->Parent}) {
+ $lookup{$topic->Id} = Tree::Simple->new($topic, $lookup{$topic->Parent});
+ $changed = 1;
+ } else {
+ push @todo, $topic;
+ }
+ }
+ redo unless $changed == 0;
+ }
+ return $tree;
+}
+
+</%INIT>
+<%ARGS>
+$ArticleObj => RT::Article->new($session{'CurrentUser'})
+@Classes => ()
+@Topics => ()
+$OnlyThisClass => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/LinkEntryInstructions b/rt/share/html/Articles/Article/Elements/LinkEntryInstructions
new file mode 100644
index 000000000..c2fd1efed
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/LinkEntryInstructions
@@ -0,0 +1,49 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<&|/l&>Type <b>a:</b> before article numbers and <b>t:</b> before ticket numbers.</&>
+<&|/l&>Separate multiple entries with spaces.</&>
diff --git a/rt/share/html/Articles/Article/Elements/Preformatted b/rt/share/html/Articles/Article/Elements/Preformatted
new file mode 100644
index 000000000..2f0e7869e
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/Preformatted
@@ -0,0 +1,127 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% if ($include{Name}) {
+#<%$Article->Id%>: <%$Article->Name || loc('(no name)')%>
+<%'-' x length("#".$Article->Id.": ".($Article->Name || loc('(no name)'))) %>
+% }
+% if ( $include{Summary} && ($Article->Summary||'') =~ /\S/ ) {
+<% $Article->Summary %>
+% }
+% while (my $cf = $cfs->Next) {
+% next unless $include{"CF-Title-".$cf->Id} or $include{"CF-Value-".$cf->Id};
+% my $values = $Article->CustomFieldValues($cf->Id);
+% if ($values->Count == 1) {
+% my $value = $values->First;
+% if ($include{"CF-Title-".$cf->Id}) {
+<% $cf->Name%>:
+<% '-' x length($cf->Name) %>
+% }
+% if ($value && $include{"CF-Value-".$cf->Id}) {
+<% $get_content->( $value ) %>
+% }
+% } else {
+% my $val = $values->Next;
+% if ($include{"CF-Title-".$cf->Id}) {
+<% $cf->Name%>: \
+% }
+% if ($val && $include{"CF-Value-".$cf->Id}) {
+<% $get_content->( $val ) %>
+% }
+% while ($val = $values->Next) {
+% if ($include{"CF-Title-".$cf->Id}) {
+<% ' ' x length($cf->Name)%> \
+% }
+% if ($include{"CF-Value-".$cf->Id}) {
+<% $get_content->( $val ) %>
+% }
+% }
+% }
+% }
+<%init>
+my $class = $Article->ClassObj;
+my %include = (Name => 1, Summary => 1);
+my $cfs = $class->ArticleCustomFields;
+$include{"CF-Title-".$_->Id} = $include{"CF-Value-".$_->Id} = 1 while $_ = $cfs->Next;
+$include{$_} = not $class->FirstAttribute("Skip-$_") for keys %include;
+
+my $de_htmlify = sub {
+ my $content = shift;
+ require HTML::TreeBuilder;
+ my $tree = HTML::TreeBuilder->new;
+ $tree->parse($content);
+ $tree->eof();
+
+ require HTML::FormatText;
+ my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 50);
+ $content = $formatter->format($tree);
+ return $content;
+};
+
+my $get_content = sub {
+ my $value = shift;
+ return '' unless $value;
+
+ my $content = $value->Content;
+ return '' unless defined $content && length $content;
+
+ $m->callback(
+ %ARGS,
+ CallbackName => 'ProcessContent',
+ content => \$content,
+ );
+
+ if ( $content =~ /<.{1,5}>/ ) {
+ $content = $de_htmlify->( $content );
+ }
+ return $content;
+};
+
+</%init>
+<%args>
+$Article
+</%args>
diff --git a/rt/share/html/Articles/Article/Elements/SearchByCustomField b/rt/share/html/Articles/Article/Elements/SearchByCustomField
new file mode 100644
index 000000000..2a9d14506
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/SearchByCustomField
@@ -0,0 +1,70 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+%# if the custom field is a select, enumerate the options
+% if ($Field->Type =~ /^Select/) {
+% my $CustomFieldValues = $Field->ValuesObj();
+<select name="<%$Name%>" size="5" multiple>
+% while (my $value = $CustomFieldValues->Next) {
+% my $name = $value->Name || '';
+<option value="<% $name %>" <% grep($_ eq $name, @Values)? 'SELECTED' : ''%>><% $name %></option>
+% }
+<option value="" <% $#Values < 0 && 'SELECTED'%>><&|/l&>(no value)</&></option>
+</select>
+% }
+%# otherwise, put in a textedity field
+% else {
+<input name="<%$Name%>" value="<%$Values[0]||''%>" />
+% }
+<%init>
+my @Values =ref( $Values ) ? @{ $Values } : ( $Values );
+</%init>
+<%ARGS>
+$Field => undef
+$Name => 'CustomField'
+$Values => undef
+</%ARGS>
diff --git a/rt/share/html/Elements/DashboardTabs b/rt/share/html/Articles/Article/Elements/SelectSavedSearches
index b9f4bbbff..c42fae1b5 100644
--- a/rt/share/html/Elements/DashboardTabs
+++ b/rt/share/html/Articles/Article/Elements/SelectSavedSearches
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,55 +45,32 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%args>
-$CurrentDashboard => undef
-</%args>
-<%init>
-my @dashboards = $m->comp("/Dashboards/Elements/ListOfDashboards");
-my $limit = 7;
-
-$m->callback(
- Dashboards => \@dashboards,
- Limit => \$limit,
- CallbackName => 'MassageDashboards',
-);
-
-my $more = 0;
-if (@dashboards > $limit) {
- $more = 1;
- splice @dashboards, $limit;
-}
-
-# always include the current dashboard, even if it's not in the initial list
-push @dashboards, $CurrentDashboard
- if $CurrentDashboard
- && 0 == grep { $_->Id == $CurrentDashboard->Id } @dashboards;
-
-my $position = 0;
+<select name="<%$Name%>">
+% foreach my $privacy (reverse sort keys %privacies) {
+% my $searches = RT::SavedSearches->new($session{'CurrentUser'});
+% $searches->LimitToPrivacy($privacy, 'Article');
+% next unless $searches->Count;
+% if ($privacy =~ /^RT::User/) {
+<option value=""><&|/l&>My saved searches</&></option>
+% } else {
+<option value=""><&|/l, $privacies{$privacy}->Name&>[_1]'s saved searches</&></option>
+% }
+% while (my $search = $searches->Next) {
+% my $optionval = "$privacy-SavedSearch-". $search->Id;
+<option value="<%$optionval%>"<% $optionval eq $Default ? 'selected' : '' %>> - <%$search->Name||loc('Unnamed search')%></option>
+% }
+% }
+</select>
-my $tabs = {
- map {
- ++$position;
- my $key = sprintf 'D-%03d', $position;
- $key => {
- title => $_->Name,
- path => 'Dashboards/' . $_->Id . '/' . $_->Name,
- }
- }
- @dashboards
-};
-
-$tabs->{"A"} = {
- title => loc('Home'),
- path => 'index.html',
-};
-
-if ($more) {
- $tabs->{"D-more"} = {
- title => loc('More'),
- path => 'Dashboards/index.html',
- }
-}
-
-return $tabs;
+<%init>
+use RT::SavedSearches;
+my $groups = $session{'CurrentUser'}->UserObj->OwnGroups;
+my %privacies;
+$privacies{'RT::User-' . $session{'CurrentUser'}->UserObj->Id} = 1;
+map { $privacies{'RT::Group-'.$_->Id} = $_ } @{$groups->ItemsArrayRef};
</%init>
+
+<%args>
+$Name => undef
+$Default => undef
+</%args>
diff --git a/rt/share/html/Articles/Article/Elements/SelectSearchPrivacy b/rt/share/html/Articles/Article/Elements/SelectSearchPrivacy
new file mode 100644
index 000000000..674a0ffa7
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/SelectSearchPrivacy
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<select name="<%$Name%>">
+<option value="RT::User-<% $user->Id %>" <% $Default eq 'RT::User-'.$user->Id ? 'selected' : '' %>>My searches</option>
+% while (my $group = $groups->Next) {
+<option value="RT::Group-<% $group->Id %>" <% $Default eq 'RT::Group-'.$group->Id ? 'selected' : '' %>><% $group->Name %>'s searches</option>
+% }
+</select>
+<%INIT>
+my $user = $session{'CurrentUser'}->UserObj;
+my $groups = $session{'CurrentUser'}->UserObj->OwnGroups;
+$Default = '' unless defined $Default;
+</%INIT>
+<%ARGS>
+$Name => 'GroupField'
+$Default => ''
+</%ARGS>
diff --git a/rt/share/html/Tools/Reports/ResolvedByOwner.html b/rt/share/html/Articles/Article/Elements/ShowHistory
index d41f50313..6ca74bf61 100644
--- a/rt/share/html/Tools/Reports/ResolvedByOwner.html
+++ b/rt/share/html/Articles/Article/Elements/ShowHistory
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,26 +45,32 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%args>
-$Queue => undef
-</%args>
-<%init>
-my $title = loc("Resolved tickets, grouped by owner");
-my $q = RT::Queue->new($session{'CurrentUser'});
-$q->LoadByCols(Name => $Queue);
-</%init>
-<& /Elements/Header, Title => $title &>
-<& /Tools/Reports/Elements/Tabs, current_tab => '/Tools/Reports/ResolvedByOwner.html', Title => $title &>
-<form method="post" action="ResolvedByOwner.html">
-% if ($Queue) {
-% # if we have a queue, do the search
-% my $query = "Status = 'resolved' AND Queue = '$Queue'";
-% my $groupby = 'Owner.Name';
-<& /Search/Elements/Chart, Query => $query, PrimaryGroupBy => $groupby &>
+<table width="100%" cellspacing="0" cellpadding="2">
+% my $i;
+% while (my $transaction = $transactions->Next) {
+<tr class="<% ($i++)%2 ? 'oddline' : 'evenline'%>" >
+<td width="20%"><small><%$transaction->CreatedObj->AsString%></small></td>
+<td><%$transaction->CreatorObj->Name%></td>
+<td><%$transaction->Description%></td>
+</tr>
% }
+</table>
+<%init>
+
+my $article = RT::Article->new($session{'CurrentUser'});
-<hr />
+$article->Load($id);
+unless ($article->Id) {
+ $m->comp("/Elements/Error", Why => loc("Article not found"));
+}
-<&|/l&>Queue</&>: <& /Elements/SelectQueue, Name => 'Queue', NamedValues => 1, Default => $q->id &>
-<& /Elements/Submit&>
-</form>
+unless ($article->ClassObj->CurrentUserHasRight('ShowArticle')) {
+ $m->comp("/Elements/Error", Why => loc("Permission Denied"));
+}
+
+my $transactions = $article->Transactions();
+
+</%init>
+<%args>
+$id => undef
+</%args>
diff --git a/rt/share/html/Articles/Article/Elements/ShowLinks b/rt/share/html/Articles/Article/Elements/ShowLinks
new file mode 100644
index 000000000..2e48ac949
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/ShowLinks
@@ -0,0 +1,92 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<span class="label"><&|/l&>Refers to</&></span>:<br />
+<ul class="value">
+% my $refersto = $article->RefersTo;
+
+% while (my $link = $refersto->Next) {
+% my $member = $link->TargetURI;
+<li>
+% if ($link->TargetURI->IsLocal) {
+<a href="<%$member->Resolver->HREF%>"><% loc($member->Object->ObjectTypeStr) %> <%$member->Object->Id%>:
+% if (UNIVERSAL::isa($member->Object, "RT::Article") or UNIVERSAL::can($member->Object, 'Name')) {
+<%$member->Object->Name%>
+% } elsif (UNIVERSAL::isa($member->Object, "RT::Ticket") or UNIVERSAL::can($member->Object, 'Subject')) {
+<%$member->Object->Subject%>
+% }
+</a>
+% } else {
+<a href="<%$member->Resolver->HREF%>"><%$link->Target%></a>
+% }
+</li>
+% }
+</ul>
+
+<span class="label"><&|/l&>Referred to by</&></span>:<br />
+<ul class="value">
+% my $referredtoby = $article->ReferredToBy;
+% while (my $link = $referredtoby->Next) {
+% my $member = $link->BaseURI;
+<li>
+% if ($member->IsLocal) {
+<a href="<%$member->Resolver->HREF%>"><% loc($member->Object->ObjectTypeStr) %> <%$member->Object->Id%>:
+% if (UNIVERSAL::isa($member->Object, "RT::Article") or UNIVERSAL::can($member->Object, 'Name')) {
+<%$member->Object->Name%>
+% } elsif (UNIVERSAL::isa($member->Object, "RT::Ticket") or UNIVERSAL::can($member->Object, 'Subject')) {
+<%$member->Object->Subject%>
+% }
+</a>
+% } else {
+<a href="<%$member->Resolver->HREF%>"><%$link->Base%></a>
+% }
+</li>
+% }
+</ul>
+<%args>
+$article => undef
+</%args>
diff --git a/rt/share/html/Articles/Article/Elements/ShowSavedSearches b/rt/share/html/Articles/Article/Elements/ShowSavedSearches
new file mode 100644
index 000000000..8ced74b1c
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/ShowSavedSearches
@@ -0,0 +1,85 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/TitleBoxStart, title => loc('Saved searches') &>
+%# Keep track of what our current search ID is.
+<input type="hidden" name="CurrentSearch" value="<% $CurrentSearch ? $CurrentSearch : 'new' %>">
+%# Hide all the save functionality if the user shouldn't see it.
+% if ($session{'CurrentUser'}->HasRight( Right => 'CreateSavedSearch',
+% Object=> $RT::System )) {
+<h2><&|/l&>Save this search</&></h2>
+<&|/l&>Name:</&> <input name="NewSearchName" value="<%$Name||''%>">
+<&|/l&>Privacy:</&> <& SelectSearchPrivacy, Name => 'SearchPrivacy',
+ Default => $Privacy &><br />
+% if ($CurrentSearch && $CurrentSearch ne 'new') {
+<input value="<%loc('Update')%>" name="Update" type="submit" />&nbsp;
+<input value="<%loc('Save new')%>" name="Save" type="submit" />&nbsp;
+<input value="<%loc('Delete')%>" name="Delete" type="submit" />&nbsp;
+% } else {
+<input value="<%loc('Save')%>" name="Save" type="submit" />
+% }
+<hr />
+% } # if HasRight 'CreateSavedSearch'
+
+<h2><&|/l&>Load a saved search</&></h2>
+<& SelectSavedSearches, Name => 'LoadSavedSearch', Default => $CurrentSearch &>
+<input value="<%loc('Load')%>" name="Load" type="submit">
+<& /Elements/TitleBoxEnd &>
+
+<%INIT>
+unless ($session{'CurrentUser'}->HasRight( Right => 'LoadSavedSearch',
+ Object=> $RT::System )) {
+ return;
+}
+
+</%INIT>
+
+<%ARGS>
+$CurrentSearch => undef
+$Name => undef
+$Privacy => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/ShowSearchCriteria b/rt/share/html/Articles/Article/Elements/ShowSearchCriteria
new file mode 100644
index 000000000..377cdb1f0
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/ShowSearchCriteria
@@ -0,0 +1,171 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% if ($ARGS{'HideOptions'}) {
+<& /Elements/TitleBoxStart, title => loc('Advanced search'), class => "rolled-up", bodyclass => "hidden" &>
+% } else {
+<& /Elements/TitleBoxStart, title => loc('Advanced search') &>
+% }
+<table>
+<tr>
+<td class="label" colspan="2"><h2><&|/l&>Basics</&></h2></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Class</&></td><td class="value">is <& /Articles/Elements/SelectClass, Name => 'Class', Multiple =>1, Size => 5 , ShowNullOption => undef, Default => $ARGS{'Class'} &>
+<&|/l&>and not</&>
+<& /Articles/Elements/SelectClass, Name => 'Class!', Multiple =>1, Size => 5 , ShowNullOption => undef, Default => $ARGS{'Class!'} &></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Name</&></td>
+<td class="value"><&|/l&>matches</&> <input name="Name~" value="<%$ARGS{'Name~'}%>" /> <&|/l&>and not</&> <input name="Name!~" value="<%$ARGS{'Name!~'}%>" /></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Summary</&></td>
+<td class="value"><&|/l&>matches</&> <input name="Summary~" value="<%$ARGS{'Summary~'}%>" /> <&|/l&>and not</&> <input name="Summary!~" value="<%$ARGS{'Summary!~'}%>" /></td>
+</tr>
+<tr>
+<td class="label" colspan="2"><h2><&|/l&>Content</&></h2></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Any field</&></td><td class="value"> <&|/l&>matches</&> <input name="Article~" value="<%$ARGS{'Article~'}%>" /> <&|/l&>and not</&> <input name="Article!~" value="<%$ARGS{'Article!~'}%>" /></td>
+</tr>
+% while (my $field = $customfields->Next ) {
+<tr>
+<td class="label"><% $field->Name %></td>
+<td class="value"><&|/l&>matches</&>
+% my $matches = $field->Name."~";
+% my $nomatches = $field->Name."!~";
+<& /Articles/Article/Elements/SearchByCustomField,
+ Field => $field,
+ Name => $matches,
+ Values => $ARGS{$matches} &>
+ <&|/l&>and not</&>
+<& /Articles/Article/Elements/SearchByCustomField,
+ Field => $field,
+ Name => $nomatches,
+ Values => $ARGS{$nomatches}
+ &>
+</td>
+</tr>
+% }
+<tr>
+<td class="label" colspan="2"><h2><&|/l&>Dates</&></h2></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Created</&></td>
+<td class="value"><&|/l&>after</&>
+<& /Elements/SelectDate, Name=>"Created>", Default => ($dates->{'Created>'} ? $dates->{'Created>'}->ISO : '') &>
+<&|/l&>and before</&>
+<& /Elements/SelectDate, Name=>"Created<", Default => ($dates->{'Created<'} ? $dates->{'Created<'}->ISO:'')&>
+</td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Last updated</&></td>
+<td class="value"><&|/l&>after</&>
+<& /Elements/SelectDate, Name=>"LastUpdated>", Default =>
+($dates->{'LastUpdated>'} ? $dates->{'LastUpdated>'}->AsString:'')&>
+<&|/l&>and before</&>
+<& /Elements/SelectDate, Name=>"LastUpdated<", Default =>
+($dates->{'LastUpdated<'} ? $dates->{'LastUpdated<'}->AsString:'')&>
+</td>
+</tr>
+<tr>
+<td class="label" colspan="2"><h2><&|/l&>Links</&></h2></td>
+</tr>
+<tr>
+<td class="label"></td>
+<td><& LinkEntryInstructions &></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Refer to</&></td>
+<td class="value"><input type=text size=50 name="RefersTo" value="<%$RefersTo%>" /></td>
+</tr>
+<tr>
+<td class="label"><&|/l&>Referred to by</&></td>
+<td class="value"><input type=text size=50 name="ReferredToBy" value="<%$ReferredToBy%>" /></td>
+</tr>
+<tr>
+<td class="label" colspan="2"><h2><&|/l&>Topics</&></h2></td>
+</tr>
+<tr>
+<td class="label"></td>
+<td>
+<& /Articles/Article/Elements/EditTopics, %ARGS, Classes => \@Classes, OnlyThisClass => 1 &>
+<br />
+<input type="checkbox" name="ExpandTopics" <% $ARGS{'ExpandTopics'} ? 'checked="checked"' : "" %> />
+<&|/l&>Include subtopics</&>
+</td>
+</tr>
+</table>
+<& /Elements/Submit, Label => loc('Search') &>
+<&/Elements/TitleBoxEnd&>
+<%init>
+my @Classes =
+ ( ref $ARGS{'Class'} eq 'ARRAY' )
+ ? @{ $ARGS{'Class'} }
+ : ( $ARGS{'Class'} );
+for (@Classes) {
+ my $class = RT::Class->new( $session{'CurrentUser'} );
+ $class->LoadById($_);
+ $_ = $class;
+}
+
+for my $field ( qw/Class Name Summary Article/ ) {
+ $ARGS{"$field~"} = '' unless defined $ARGS{"$field~"};
+ $ARGS{"$field!~"} = '' unless defined $ARGS{"$field!~"};
+}
+$RefersTo = '' unless defined $RefersTo;
+$ReferredToBy = '' unless defined $ReferredToBy;
+
+</%init>
+
+<%ARGS>
+$dates =>undef
+$RefersTo => ''
+$ReferredToBy => ''
+$customfields => undef
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/Elements/ShowTopics b/rt/share/html/Articles/Article/Elements/ShowTopics
new file mode 100644
index 000000000..31aae36eb
--- /dev/null
+++ b/rt/share/html/Articles/Article/Elements/ShowTopics
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% my $topics = RT::ObjectTopics->new($session{'CurrentUser'});
+% $topics->LimitToObject($article);
+% my @topics;
+% while (my $t = $topics->Next) {
+<& /Articles/Elements/ShowTopic, topic => $t->TopicObj &><br />
+% }
+<br />
+
+<%args>
+$article => undef
+</%args>
diff --git a/rt/share/html/Articles/Article/ExtractFromTicket.html b/rt/share/html/Articles/Article/ExtractFromTicket.html
new file mode 100644
index 000000000..5d9eba2fc
--- /dev/null
+++ b/rt/share/html/Articles/Article/ExtractFromTicket.html
@@ -0,0 +1,105 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('Extract article from ticket #[_1] into class [_2]',$Ticket, $ClassObj->Name) &>
+<& /Elements/Tabs &>
+<form action="Edit.html" method="post">
+<input type="hidden" name="Class" value="<%$ARGS{'Class'}%>" />
+<input type="hidden" name="Summary" value="<%$ticket->Subject%>" />
+% for (@Topics) {
+<input type="hidden" name="Topics" value="<% $_ %>" />
+% }
+<input type="hidden" name="new-RefersTo" value="t:<% $ticket->id%>" />
+<table width="100%" valign="top" border=0 cellspacing=0>
+<p><&|/l&>Use the dropdown menus to select which ticket updates you want to extract into a new article.</&>
+<&|/l&>You can insert ticket content into any freeform, text or wiki field.</&>
+</p>
+<tr>
+<th><&|/l&>Field</&></th>
+<th><&|/l&>Ticket update</&></th>
+</tr>
+% my $i;
+% while ( my $trans = $transactions->Next ) {
+% next unless $trans->Content;
+<tr class="<% ($i++)%2 ? 'oddline' : 'evenline'%>" >
+<td valign="top">
+<select name="Transaction-<%$trans->Id%>">
+<option value="">-</option>
+% while (my $cf = $CustomFields->Next) {
+<option value="<%$cf->Id%>"><%$cf->Name%></option>
+% }
+</select>
+</td>
+<td><b><%$trans->CreatedObj->AsString%>: <%$trans->Description%></b><br />
+<pre><%$trans->Content%></pre>
+</td>
+</tr>
+% }
+</table>
+<& /Elements/Submit, Label => loc('Create'), color => "#993333" &>
+</form>
+<%INIT>
+
+my $ticket=LoadTicket($Ticket);
+my $transactions = $ticket->Transactions;
+
+my $ClassObj = RT::Class->new($session{'CurrentUser'});
+$ClassObj->Load($Class);
+unless ($ClassObj->Id) {
+ $m->comp("/Elements/Error", Why => loc("'[_1]' isn't a valid class identifier", $Class));
+}
+my $CustomFields = $ClassObj->ArticleCustomFields();
+
+$CustomFields->Limit(FIELD => 'Type', OPERATOR => '=', VALUE => 'Text');
+$CustomFields->Limit(FIELD => 'Type', OPERATOR => '=', VALUE => 'Wikitext');
+$CustomFields->Limit(FIELD => 'Type', OPERATOR => '=', VALUE => 'Freeform');
+</%init>
+<%ARGS>
+$Class => undef
+$Ticket => undef
+@Topics => ()
+</%ARGS>
diff --git a/rt/share/html/Articles/Article/ExtractIntoClass.html b/rt/share/html/Articles/Article/ExtractIntoClass.html
new file mode 100644
index 000000000..f3618feda
--- /dev/null
+++ b/rt/share/html/Articles/Article/ExtractIntoClass.html
@@ -0,0 +1,76 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('Extract a new article from ticket #[_1]',$Ticket) &>
+<& /Elements/Tabs &>
+
+
+<h2><&|/l&>Create a new article in</&>:</h2>
+<ul>
+% my $Classes = RT::Classes->new($session{'CurrentUser'});
+% $Classes->LimitToEnabled();
+% while (my $Class = $Classes->Next) {
+<li><a href="ExtractIntoTopic.html?Ticket=<%$Ticket%>&Class=<%$Class->Id%>" onclick="document.getElementById('topics-'+<% $Class->Id |n,j%>).style.display = (document.getElementById('topics-'+<% $Class->Id |n,j%>).style.display == 'block') ? 'none' : 'block'; return false;"><%$Class->Name%></a>:
+<%$Class->Description%>
+<div id="topics-<%$Class->Id%>" style="display: none">
+<form action="ExtractFromTicket.html">
+<input type="hidden" name="Ticket" value="<% $Ticket %>" />
+<input type="hidden" name="Class" value="<% $Class->id %>" />
+<&|/l &>Select topics for this article</&>:<br />
+<& Elements/EditTopics, Classes => [$Class],
+ OnlyThisClass => 1,
+ id => 'new',
+ &><br />
+<input type="submit" value="<%loc('Create')%>" />
+</form>
+<br /></div>
+</li>
+% }
+</ul>
+<%args>
+$Ticket => undef
+</%args>
diff --git a/rt/share/html/Download/Tabular/dhandler b/rt/share/html/Articles/Article/ExtractIntoTopic.html
index 04daf8133..72fd32464 100644
--- a/rt/share/html/Download/Tabular/dhandler
+++ b/rt/share/html/Articles/Article/ExtractIntoTopic.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,32 +45,28 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%perl>
-my ($class, $filename, @ids);
-my $arg = $m->dhandler_arg; # get rest of path
-if ($arg =~ /^(\w+)\/([,\d]+)(?:\/([^\/]+))?/) {
- $class = "RT::$1";
- $filename = $3 || "$1s.tsv";
- @ids = sort split(/,+/, $2);
-}
-else {
- Abort("Corrupted tabular URL.");
-}
+<& /Elements/Header, Title => loc('Extract a new article from ticket #[_1]',$Ticket) &>
+<& /Elements/Tabs &>
-my @cols = $class->BasicColumns or return;
-#$r->content_type( 'application/octet-stream' );
-$r->content_type( 'text/plain' );
-$r->headers_out->{'Content-Disposition'} = "attachment; filename=$filename";
-$m->clear_buffer();
-$m->out(join("\t", "Id", map $_->[1], @cols), "\n");
-foreach my $id (@ids) {
- my $obj = $class->new;
- $obj->Load($id) or next;
- $m->out(join("\t", map $obj->$_, "Id", map $_->[0], @cols), "\n");
+<&|/l&>Select topics for this article</&>:<br />
+<form action="ExtractFromTicket.html">
+<input type="hidden" name="Ticket" value="<% $Ticket %>" />
+<input type="hidden" name="Class" value="<% $ClassObj->id %>" />
+<& Elements/EditTopics, Classes => [$ClassObj],
+ OnlyThisClass => 1,
+ id => 'new',
+ &><br />
+<input type="submit" value="<%loc('Create')%>" />
+</form>
+<%args>
+$Ticket => undef
+$Class => undef
+</%args>
+<%init>
+my $ClassObj = RT::Class->new($session{'CurrentUser'});
+$ClassObj->Load($Class);
+unless ($ClassObj->Id) {
+ $m->comp("/Elements/Error", Why => loc("'[_1]' isn't a valid class identifier", $Class));
}
-$m->abort;
-</%perl>
-<%attr>
-AutoFlush => 0
-</%attr>
+</%init>
diff --git a/rt/share/html/NoAuth/css/3.4-compat/footer.css b/rt/share/html/Articles/Article/History.html
index d54f55c0f..1c2873f18 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/footer.css
+++ b/rt/share/html/Articles/Article/History.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,17 +45,13 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#footer {
- clear: both;
- font-size: 0.8em;
- margin-top: 5em;
- padding-bottom: 2em;
- color: #888;
-}
-
-#footer p {
- text-align: right;
- padding: 0 0.5em 0 0;
- margin: 0;
-}
+<& /Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+<& Elements/ShowHistory, id => $id &>
+<%init>
+my $title =loc('History for article #[_1]',$id);
+</%init>
+<%args>
+$id => undef
+</%args>
diff --git a/rt/share/html/Articles/Article/PreCreate.html b/rt/share/html/Articles/Article/PreCreate.html
new file mode 100644
index 000000000..49507d4a8
--- /dev/null
+++ b/rt/share/html/Articles/Article/PreCreate.html
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('Create an article in class...') &>
+<& /Elements/Tabs, Title => loc('Create an article in class...') &>
+<ul>
+% my $Classes = RT::Classes->new($session{'CurrentUser'});
+% $Classes->LimitToEnabled();
+% my $have_classes = 0;
+% while (my $Class = $Classes->Next) {
+% $have_classes++;
+% my $qs = $m->comp("/Elements/QueryString", %ARGS, Class=> $Class->Id);
+<li><a href="Edit.html?<% $qs|n %>"><&|/l, $Class->Name &>in class [_1]</&></a></li>
+% }
+</ul>
+% unless ( $have_classes ) {
+<span><&|/l&>Permission Denied</&></span>
+% }
diff --git a/rt/share/html/Articles/Article/Search.html b/rt/share/html/Articles/Article/Search.html
new file mode 100644
index 000000000..f995d41a7
--- /dev/null
+++ b/rt/share/html/Articles/Article/Search.html
@@ -0,0 +1,269 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc("Search for articles") &>
+<& /Elements/Tabs &>
+
+% unless ( keys %ARGS ) {
+% my $Classes = RT::Classes->new($session{'CurrentUser'});
+% $Classes->LimitToEnabled();
+<table width="100%" border="0">
+<tr>
+<td valign="top" width="50%">
+<ul>
+% while (my $class = $Classes->Next) {
+<li><a href="<%RT->Config->Get('WebPath')%>/Articles/Article/Search.html?<% $m->comp('/Elements/QueryString', %filtered, Class => $class->id) %>"><&|/l, $class->Name&>in class [_1]</&></a></li>
+% }
+</ul>
+</td>
+<td valign="top" width="50%">
+<form action="Search.html" method="get">
+<& /Elements/TitleBoxStart, title => loc('Saved searches') &>
+<&|/l&>Load saved search:</&><br />
+<& Elements/SelectSavedSearches, Name => 'LoadSavedSearch', Default => $CurrentSearch &>
+<input value="<%loc('Load')%>" name="Load" type="submit" />
+<& /Elements/TitleBoxEnd &>
+</form>
+</td>
+</tr>
+</table>
+% return;
+% }
+
+<& /Elements/ListActions, actions => \@results &>
+<div style="float: right"><a href="#criteria"><&|/l&>Modify this search...</&></a></div>
+
+% if ($articles->BuildSelectCountQuery =~ /WHERE/i) {
+<h2><&|/l&>Search results</&></h2>
+<& /Elements/CollectionList,
+ Collection => $articles,
+ AllowSorting => 1,
+ OrderBy => \@OrderBy,
+ Order => \@Order,
+ Format => $format,
+ GenericQueryArgs => { %filtered, Format => $format, },
+ &>
+% }
+
+<br />
+<br />
+<br />
+<a name="criteria"></a>
+<form action="Search.html" method="get">
+<& Elements/ShowSearchCriteria, dates => \%dates, RefersTo => $RefersTo, customfields => $customfields, ReferredToBy => $ReferredToBy, %ARGS &>
+<br />
+<br />
+<& Elements/ShowSavedSearches, CurrentSearch => $CurrentSearch,
+ Name => ($search ? $search->Name : undef),
+ Privacy => ($search ? $search->Privacy : undef) &>
+
+</form>
+
+<div align=right>
+<a href="<%RT->Config->Get('WebPath')%>/Articles/Article/Search.html<%$QueryString%>"><&|/l&>Bookmarkable link for this search</&></a><br />
+</div>
+<%init>
+use RT::SavedSearch;
+my @results;
+my $articles = RT::Articles->new( $session{'CurrentUser'} );
+my $format = q{
+ '<a href="__WebPath__/Articles/Article/Display.html?id=__id__">__id__</a>/TITLE:#',
+ '<a href="__WebPath__/Articles/Article/Display.html?id=__id__">__Name__</a>/TITLE:Name',
+ '__ClassName__',
+ '__CreatedRelative__',
+ '__LastUpdatedRelative__',
+ '__Summary__',
+ '__Topics__', };
+
+# {{{ Quicksearch logic
+
+# If it is a number, load the article with that ID. Otherwise, search
+# on name and summary.
+if ($ARGS{'q'} && $ARGS{'q'} =~ /^(\d+)$/) {
+ return $m->comp("/Articles/Article/Display.html", id => $1);
+}
+# }}}
+
+# {{{ Saved search logic
+
+my $search;
+
+# The keys in %ARGS that are not saved and loaded with named searches.
+# These need to be treated specially.
+my @metakeys = qw/NewSearchName CurrentSearch SearchPrivacy Save Load
+ Update Delete/;
+
+if ($CurrentSearch =~ /^(.*-\d+)-SavedSearch-(\d+)$/) {
+ $search = RT::SavedSearch->new($session{'CurrentUser'});
+ $search->Load($1, $2);
+}
+
+# Have we been asked to load a search?
+
+if ($ARGS{'Load'}) {
+ if ($ARGS{'LoadSavedSearch'} =~ /^(.*-\d+)-SavedSearch-(\d+)$/ ) {
+ my $privacy = $1;
+ my $search_id = $2;
+
+ $search = RT::SavedSearch->new($session{'CurrentUser'});
+ my ($ret, $msg) = $search->Load($privacy, $search_id);
+ if ($ret) {
+ my $searchargs = $search->GetParameter('args');
+ # Clean out ARGS and fill it in with the saved args from the
+ # loaded search.
+ foreach my $key (@metakeys) {
+ $searchargs->{$key} = $ARGS{$key};
+ }
+ %ARGS = %{$searchargs};
+ $CurrentSearch = "$privacy-SavedSearch-$search_id";
+ } else {
+ push(@results, loc("Error: could not load saved search [_1]: [_2]",
+ $ARGS{'LoadSavedSearch'}, $msg));
+ }
+ } else {
+ push(@results, loc("Invalid [_1] argument", 'LoadSavedSearch'));
+ }
+}
+
+# ...or have we been asked to save, update, or delete a search?
+
+if ($ARGS{'Save'}) {
+ my %searchargs = %ARGS;
+ foreach my $key (@metakeys) {
+ delete $searchargs{$key};
+ }
+
+ $search = RT::SavedSearch->new($session{'CurrentUser'});
+ unless ($ARGS{'SearchPrivacy'} =~ /^(.*)-(\d+)$/) {
+ # This shouldn't really happen, but hey.
+ push(@results, loc("WARNING: Saving search to user-level privacy"));
+ $ARGS{'SearchPrivacy'} = 'RT::User-'.$session{'CurrentUser'}->Id;
+ }
+ my ($ret, $msg) = $search->Save(Privacy => $ARGS{'SearchPrivacy'},
+ Type => 'Article',
+ Name => $ARGS{'NewSearchName'},
+ SearchParams => {'args' => \%searchargs});
+ if ($ret) {
+ $CurrentSearch = $ARGS{'SearchPrivacy'} . "-SavedSearch-" .
+ $search->Id;
+ push(@results, loc("Created search [_1]", $search->Name));
+ } else {
+ undef $search; # if we bomb out creating a search
+ # we don't want to have the empty object hang around
+ push(@results, loc("Could not create search: [_1]", $msg));
+ }
+} elsif ($ARGS{'Update'}) {
+ if ($ARGS{'SearchPrivacy'} != $search->Privacy) {
+ push(@results,
+ loc("Error: cannot change privacy value of existing search"));
+ } else {
+ my %searchargs = %ARGS;
+ foreach my $key (@metakeys) {
+ delete $searchargs{$key};
+ }
+
+ # We already have a search loaded, because CurrentSearch is set,
+ # or else we would not have gotten here.
+ my ($ret, $msg) = $search->Update(Name => $ARGS{'NewSearchName'},
+ SearchParams => \%searchargs);
+ if ($ret) {
+ push(@results, loc("Search [_1] updated", $search->Name));
+ } else {
+ push(@results, loc("Error: search [_1] not updated: [_2]",
+ $search->Name, $msg));
+ }
+ }
+} elsif ($ARGS{'Delete'}) {
+ # Keep track of this, as we are about to delete the search.
+ my $searchname = $search->Name;
+ my ($ret, $msg) = $search->Delete;
+ if ($ret) {
+ $ARGS{'CurrentSearch'} = undef;
+ push(@results, loc("Deleted search [_1]", $searchname));
+ # Get rid of all the state.
+ foreach my $key (keys %ARGS) {
+ delete $ARGS{$key};
+ }
+ $CurrentSearch = 'new';
+ $search = undef;
+ $RefersTo = undef;
+ $ReferredToBy = undef;
+ } else {
+ push(@results, loc("Could not delete search [_1]: [_2]",
+ $searchname, $msg));
+ }
+}
+
+# }}}
+
+ # Don't want to search for a null class when there is no class specced
+my $customfields = RT::CustomFields->new( $session{'CurrentUser'} );
+my %dates;
+
+$articles->Search( %ARGS, CustomFields => $customfields, Dates => \%dates,
+ OrderBy => \@OrderBy, Order => \@Order, );
+
+$m->callback( %ARGS, _Search => $articles );
+
+my %filtered = %ARGS;
+delete $filtered{$_} for (@metakeys, "EditTopics", "ExpandTopics");
+delete $filtered{$_} for grep {$filtered{$_} !~ /\S/} keys %filtered;
+@filtered{qw(OrderBy Order)} = (\@OrderBy, \@Order);
+my $QueryString = "?".$m->comp('/Elements/QueryString', %filtered);
+</%init>
+
+<%ARGS>
+$CreatedBefore => ''
+$CreatedAfter => ''
+$LastUpdatedBefore => ''
+$LastUpdatedAfter => ''
+$RefersTo => undef
+$ReferredToBy => undef
+$CurrentSearch => 'new'
+@OrderBy => ()
+@Order => ()
+</%ARGS>
diff --git a/rt/share/html/Articles/Elements/BeforeMessageBox b/rt/share/html/Articles/Elements/BeforeMessageBox
new file mode 100644
index 000000000..8ed04513f
--- /dev/null
+++ b/rt/share/html/Articles/Elements/BeforeMessageBox
@@ -0,0 +1,239 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% if ( $ARGS{id} && $ARGS{id} ne 'new' ) {
+<input type="hidden" name="<%$ARGS{'id'}%>-RefersTo" value="<% join(' ',grep {$_} sort keys %uri) %>" />
+% }
+
+<table class="articles-select-article">
+% unless (RT->Config->Get('HideArticleSearchOnReplyCreate')) {
+<tr>
+<td><&|/l&>Search for Articles matching</&></td>
+<td><input size=20 name="<% $name_prefix %>Articles_Content" /></td>
+</tr>
+<tr>
+<td><&|/l&>Include Article:</&></td>
+<td><input size=20 name="<% $name_prefix %>Articles-Include-Article-Named" /></td>
+<td><input type="submit" name="Go" value="Go" /></td>
+</tr>
+% }
+% if ($hotlist->Count) {
+<tr>
+<td><&|/l&>Select an Article to include</&></td>
+<td><select name="<% $name_prefix %>Articles-Include-Article-Named-Hotlist" onchange="this.form.submit()">
+<option value="" selected><&|/l&>-</&></option>
+% while (my $article = $hotlist->Next) {
+<option value="<% $article->Id %>"><%$article->Name|| loc('(no name)')%>: <%$article->Summary || ''%></option>
+% }
+</select>
+</td>
+<td><input type="submit" name="Go" value="Go" /></td>
+</tr>
+% }
+% my %dedupe_articles;
+% while (my $article = $articles_content->Next) {
+% $dedupe_articles{$article->Id}++;
+<tr>
+<td>&nbsp;</td>
+<td><%$article->Name|| loc('(no name)')%>: <%$article->Summary%></td>
+<td><input type="submit" name="<% $name_prefix %>Articles-Include-Article-<%$article->Id%>" value="Go" /></td>
+</tr>
+% }
+% while (my $article = $articles_basics->Next) {
+% next if $dedupe_articles{$article->Id};
+<tr>
+<td>&nbsp;</td>
+<td><%$article->Name || loc('(no name)')%>: <%$article->Summary || ''%></td>
+<td><input type="submit" name="<% $name_prefix %>Articles-Include-Article-<%$article->Id%>" value="Go" /></td>
+</tr>
+% }
+% if ( @$topics ) {
+<tr>
+<td>
+<&|/l, $QueueObj->Name &>Choose from Topics for [_1]</&>
+</td>
+<td>
+<select name="<% $name_prefix %>Articles-Include-Topic" onchange="this.form.submit()">
+<option value="" selected>-</option>
+% for ( @$topics ) {
+<option value="<% $_->{id} %>"><%'&nbsp;' x $_->{depth} . ($_->{name}|| loc('(no name)')) |n%>
+</option>
+% }
+</select>
+</td>
+<td><input type="submit" name="Go" value="Go" /></td>
+</tr>
+
+% if ( $ARGS{$name_prefix .'Articles-Include-Topic'} ) {
+<tr>
+<td>
+<&|/l, $included_topic->Name &>Select an Article from [_1]</&>
+</td>
+<td>
+<select name="<% $name_prefix %>Articles-Include-Article" onchange="this.form.submit()">
+<option value="" selected>-</option>
+% while ( my $art = $topic_articles->Next ) {
+<option value="<% $art->id %>"><%$art->Name||loc('(no name)')%>: <%$art->Summary%></option>
+% }
+</select>
+</td>
+<td><input type="submit" value="Go" name="Go" /></td>
+</tr>
+
+% }
+% }
+
+
+</table>
+
+<%init>
+my $QueueObj = $ARGS{QueueObj};
+if ( $ARGS{id} && $ARGS{id} ne 'new' && !$QueueObj ) {
+ my $ticket = RT::Ticket->new( $session{CurrentUser} );
+ $ticket->Load( $ARGS{id} );
+ $QueueObj = $ticket->QueueObj;
+}
+
+my $skip = 0;
+$m->callback(CallbackName => "Init", skip => \$skip, Queue => $QueueObj);
+return if $skip;
+
+my $name_prefix = '';
+if ( $ARGS{'MessageBoxName'} ) {
+ $name_prefix = $ARGS{'MessageBoxName'} .'-';
+}
+
+# convert Articles-Include-Article => $id to Articles-Include-Article-$id
+if ( my $tmp = $ARGS{$name_prefix ."Articles-Include-Article"} ) {
+ $ARGS{$name_prefix ."Articles-Include-Article-$tmp"}++;
+}
+
+my %uri;
+if ( $ARGS{id} && $ARGS{id} ne 'new' ) {
+ $uri{$_}++ for split ' ', ($ARGS{$ARGS{'id'}.'-RefersTo'} || '');
+
+ foreach my $arg (keys %ARGS) {
+ next if $name_prefix && substr($arg, 0, length($name_prefix)) ne $name_prefix;
+
+ my $article = RT::Article->new($session{'CurrentUser'});
+ $article->LoadByInclude(
+ Field => substr($arg, length($name_prefix)),
+ Value => $ARGS{$arg},
+ );
+ if ($article->Id) {
+ $uri{$article->URI}++;
+ }
+ }
+}
+
+use RT::Articles;
+
+my $articles_content =
+ RT::Articles->new( $session{'CurrentUser'} );
+my $articles_basics = RT::Articles->new( $session{'CurrentUser'} );
+if ( my $tmp = $ARGS{ $name_prefix ."Articles_Content" } ) {
+ $articles_content->LimitCustomField(
+ VALUE => $tmp, OPERATOR => 'LIKE'
+ );
+ $articles_content->LimitAppliedClasses( Queue => $QueueObj );
+
+ $articles_basics->Limit( SUBCLAUSE => 'all',
+ FIELD => 'Name',
+ OPERATOR => 'LIKE',
+ VALUE => $tmp,
+ ENTRYAGGREGATOR => "OR" );
+ $articles_basics->Limit( SUBCLAUSE => 'all',
+ FIELD => 'Summary',
+ OPERATOR => 'LIKE',
+ VALUE => $tmp,
+ ENTRYAGGREGATOR => "OR" );
+ $articles_basics->LimitAppliedClasses( Queue => $QueueObj );
+}
+
+my $hotlist = RT::Articles->new( $session{'CurrentUser'} );
+$hotlist->LimitHotlistClasses;
+$hotlist->LimitAppliedClasses( Queue => $QueueObj );
+
+my ( $topic_articles, $topics, $included_topic );
+$topic_articles = RT::Articles->new( $session{CurrentUser} );
+$topics = [];
+
+my $top_topic = RT::Topic->new( $session{CurrentUser} );
+$top_topic->LoadByCols( Name => 'Queues', Parent => 0 , ObjectType => 'RT::System', ObjectId => 1);
+
+if ( $top_topic->id ) {
+ my $queue_topic = RT::Topic->new( $session{CurrentUser} );
+ $queue_topic->LoadByCols( Name => $QueueObj->Name, Parent => $top_topic->id );
+ if ( $queue_topic->id ) {
+
+ # store all topics below $queue_topic to $topics
+ topics( $queue_topic, $topics, 0 );
+
+ if ( my $tmp = $ARGS{ $name_prefix .'Articles-Include-Topic'} ) {
+ $included_topic = RT::Topic->new( $session{CurrentUser} );
+ $included_topic->Load( $tmp );
+ $topic_articles->LimitTopics( $tmp );
+ $topic_articles->OrderBy( FIELD => 'Name' );
+ }
+ }
+}
+
+
+# recursively get all the topics given a top topic
+sub topics {
+ my $parent = shift;
+ my $out = shift;
+ my $depth = shift;
+ while ( my $topic = $parent->Children->Next ) {
+ push @$out, { id => $topic->id, name => $topic->Name, depth => $depth };
+ topics( $topic, $out, $depth+1 );
+ }
+}
+
+</%init>
+
+
diff --git a/rt/share/html/Prefs/Elements/Tabs b/rt/share/html/Articles/Elements/CheckSkipCreate
index 6fdfc8b6d..6524f2615 100644
--- a/rt/share/html/Prefs/Elements/Tabs
+++ b/rt/share/html/Articles/Elements/CheckSkipCreate
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,32 +45,32 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /User/Elements/Tabs,
- subtabs => $tabs,
- current_tab => 'Prefs/Other.html',
- current_subtab => $current_subtab,
- Title => $Title &>
-
<%INIT>
-my $tabs;
-$Searches ||= [$m->comp("/Search/Elements/SearchesForObject", Object => RT::System->new($session{'CurrentUser'}))];
-$tabs->{a} = {
- title => loc('Quick search'),
- path => 'Prefs/Quicksearch.html',
-};
+return if $checks_failure; # we're already skipping Create
+return unless RT->Config->Get('ArticleOnTicketCreate');
+
+
+my $article = RT::Article->new($session{'CurrentUser'});
+foreach my $arg ( keys %$ARGSRef) {
+
+ if ( $ARGSRef->{Articles_Content} || # search for an article
+ $ARGSRef->{'Articles-Include-Topic'} || # using Queue Topics
+ ( $article->LoadByInclude( Field => $arg, Value => $ARGSRef->{$arg} ) &&
+ $article->id ) ) { # including an article
-for my $search (@$Searches) {
- $tabs->{ $search->[0] } = {
- title => $search->[0],
- path => "Prefs/Search.html?"
- .$m->comp('/Elements/QueryString', name => ref($search->[1]).'-'.$search->[1]->Id),
- };
+ $$skip_create = 1;
+ last;
+ }
}
+return;
+
</%INIT>
+
<%ARGS>
-$GroupObj => undef
-$current_subtab => undef
-$Title => undef
-$Searches => undef
+$ARGSRef => undef
+$skip_create => undef
+$checks_failure => undef
+$results => undef
</%ARGS>
+
diff --git a/rt/share/html/Articles/Elements/CreateArticle b/rt/share/html/Articles/Elements/CreateArticle
new file mode 100644
index 000000000..effd50315
--- /dev/null
+++ b/rt/share/html/Articles/Elements/CreateArticle
@@ -0,0 +1,59 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/TitleBoxStart, title => loc('Create an article') &>
+<ul>
+% while (my $Class = $Classes->Next) {
+<li><a href="Article/Edit.html?Class=<%$Class->Id%>"><%$Class->Name%></a></li>
+% }
+</ul>
+<& /Elements/TitleBoxEnd &>
+<%init>
+my $Classes = RT::Classes->new($session{'CurrentUser'});
+$Classes->LimitToEnabled;
+</%init>
+
diff --git a/rt/share/html/Articles/Elements/GotoArticle b/rt/share/html/Articles/Elements/GotoArticle
new file mode 100644
index 000000000..c8e5e5847
--- /dev/null
+++ b/rt/share/html/Articles/Elements/GotoArticle
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<form ACTION="<% RT->Config->Get('WebPath') %>/Articles/Article/Search.html">
+<input type="hidden" name="HideOptions" value="1" />
+<input size="12" name="q" accesskey="0" />
+% if ($class or $topic) {
+<input type="hidden" name="ExpandTopics" value="1" />
+<select name="Topics">
+% if ($topic) {
+<option value="<% $topic %>">in this topic</option>
+% }
+% if ($class) {
+% my $Topics = RT::Topics->new($session{'CurrentUser'});
+% $Topics->Limit(FIELD => 'ObjectType', VALUE => 'RT::Class');
+% $Topics->Limit(FIELD => 'ObjectId', VALUE => $class);
+% my @topics;
+% push @topics, $_->Id while $_ = $Topics->Next;
+<option value="<% join(' ', @topics) %>">in this hierarchy</option>
+% }
+<option value="">in all topics</option>
+</select>
+% }
+<input type="submit" value="<&|/l&>Search Articles</&>" />&nbsp;
+</form>
+<%args>
+$topic => ""
+$class => ""
+</%args>
diff --git a/rt/share/html/Articles/Elements/IncludeArticle b/rt/share/html/Articles/Elements/IncludeArticle
new file mode 100644
index 000000000..f19815f58
--- /dev/null
+++ b/rt/share/html/Articles/Elements/IncludeArticle
@@ -0,0 +1,99 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+
+my $parent_args = $m->caller_args(-1);
+
+my $name_prefix = '';
+$name_prefix = $ARGS{'Name'} .'-'
+ if $ARGS{'Name'}
+ && grep rindex($_, "$ARGS{'Name'}-Articles-", 0) == 0,
+ keys %$parent_args;
+
+foreach my $arg ( keys %$parent_args ) {
+ next if $name_prefix && substr($arg, 0, length($name_prefix)) ne $name_prefix;
+
+ my $Ticket = $ARGS{Ticket};
+ if ( !$Ticket and $parent_args->{id} and $parent_args->{id} ne 'new' ) {
+ $Ticket = RT::Ticket->new($session{'CurrentUser'});
+ $Ticket->Load($parent_args->{id});
+ unless ( $Ticket->id ) {
+ $RT::Logger->error("Couldn't load ticket ". $parent_args->{id} )
+ }
+ }
+
+ my $Queue = RT::Queue->new($session{CurrentUser});
+ if ($Ticket && $Ticket->Id) {
+ $Queue = $Ticket->QueueObj;
+ }
+
+ my $article = RT::Article->new($session{'CurrentUser'});
+ $article->LoadByInclude(
+ Field => substr($arg, length($name_prefix)),
+ Value => $parent_args->{$arg},
+ Queue => $Queue->Id,
+ );
+ next unless $article && $article->id;
+
+ my $formatted_article = $m->scomp('/Articles/Article/Elements/Preformatted',
+ Article => $article, Ticket => $Ticket
+ );
+
+ $m->callback( Article => $article, Ticket => $Ticket, formatted_article => \$formatted_article );
+
+ if (RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'})) {
+ $formatted_article =~ s/>/&gt;/g;
+ $formatted_article =~ s/</&lt;/g;
+ $formatted_article =~ s/&/&amp;/g;
+ $formatted_article =~ s/\n/\n<br \/>/g;
+ }
+ $m->print($formatted_article);
+
+}
+return;
+</%INIT>
diff --git a/rt/share/html/Articles/Elements/NewestArticles b/rt/share/html/Articles/Elements/NewestArticles
new file mode 100644
index 000000000..444b2d89d
--- /dev/null
+++ b/rt/share/html/Articles/Elements/NewestArticles
@@ -0,0 +1,80 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/TitleBoxStart, title => loc("[_1] newest articles", $rows), bodyclass=> '' &>
+<table border="0" cellspacing="0" cellpadding="1" width="100%">
+<tr>
+<th align="right"><&|/l&>#</&></th>
+<th align="left"><&|/l&>Name</&></th>
+<th align="left" width="20%"><&|/l&>Created by</&></th>
+<th align="left">&nbsp;</th>
+</tr>
+% while (my $Article = $MyArticles->Next) {
+% $i++;
+<tr class="<% $i%2 ? 'oddline' : 'evenline'%>">
+<td align="right"><%$Article->Id%></td>
+<td><a href="<% RT->Config->Get('WebPath') %>/Articles/Article/Display.html?id=<%$Article->Id%>"><%$Article->Name || loc('(no name)')%></a></td>
+<td><%$Article->CreatorObj->Name%></td>
+<td align="right">[<a href="<% RT->Config->Get('WebPath') %>/Articles/Article/Edit.html?id=<%$Article->Id%>"><&|/l&>Update</&></a>]</td>
+</tr>
+<tr class="<% $i%2 ? 'oddline' : 'evenline'%>">
+<td>&nbsp;</td>
+<td colspan="3"><small><%$Article->Summary || loc('(no Summary)')%></small></td>
+</tr>
+% }
+</table>
+<& /Elements/TitleBoxEnd &>
+<%INIT>
+my $rows = 10;
+my $i;
+my $MyArticles;
+$MyArticles = RT::Articles->new($session{'CurrentUser'});
+$MyArticles->UnLimit;
+$MyArticles->RowsPerPage($rows);
+$MyArticles->OrderBy(FIELD => 'LastUpdated', ORDER => 'DESC');
+
+</%INIT>
diff --git a/rt/share/html/Articles/Elements/QuickSearch b/rt/share/html/Articles/Elements/QuickSearch
new file mode 100644
index 000000000..f0c0d1c89
--- /dev/null
+++ b/rt/share/html/Articles/Elements/QuickSearch
@@ -0,0 +1,59 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/TitleBoxStart, title => loc('Quick search') &>
+<ul>
+% while (my $class = $classes->Next) {
+<li><a href="<%RT->Config->Get('WebPath')%>/Articles/Article/Search.html?Class=<%$class->Name%>&Parent=0&HideOptions=1"><%$class->Name%></a></li>
+% }
+</ul>
+<& /Elements/TitleBoxEnd &>
+<%init>
+my $classes = RT::Classes->new($session{'CurrentUser'});
+$classes->LimitToEnabled;
+</%init>
+
diff --git a/rt/share/html/Admin/Elements/Tabs b/rt/share/html/Articles/Elements/SelectClass
index c56ee2e55..0ce90609e 100755..100644
--- a/rt/share/html/Admin/Elements/Tabs
+++ b/rt/share/html/Articles/Elements/SelectClass
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,51 +45,51 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs,
- tabs => $tabs,
- current_toptab => 'Admin/',
- current_tab => $current_tab,
- Title => $Title &>
+% if ($Lite) {
+<input name="<%$Name%>" size="25" default="<%$d->Name%>" />
+% } else {
+<select NAME ="<%$Name%>"
+% if ($Multiple) {
+MULTIPLE
+% }
+% if ($Size) {
+SIZE=<%$Size%>
+% }
+>
+% if ($ShowNullOption) {
+<option value="">-</option>
+% }
+% while (my $Class=$Classes->Next) {
+% next unless ($Class->Name); # if they can't see it, don't list it
+% if ($ShowAllClasses || $Class->CurrentUserHasRight('CreateArticle')) {
+<option VALUE="<%$Class->Id%>" <%(grep { $_ && ( ( /^\d+$/ && $Class->Id == $_ ) || $Class->Name eq $_ )} @Default) ? 'SELECTED' : '' %>><%$Class->Name%>
+% if (($Verbose) and ($Class->Description) ){
+(<%$Class->Description%>)
+% }
+</option>
+% }
+% }
+</select>
+% }
+<%ARGS>
+$Multiple => undef
+$Size => undef
+$ShowNullOption => 1
+$ShowAllClasses => 1
+$Name => undef
+$Verbose => undef
+$Default => undef
+$Lite => 0
+</%ARGS>
<%INIT>
- my $tabs = { A => { title => loc('Users'),
- path => 'Admin/Users/',
- },
- B => { title => loc('Groups'),
- path => 'Admin/Groups/',
- },
- C => { title => loc('Queues'),
- path => 'Admin/Queues/',
- },
- D => { 'title' => loc('Custom Fields'),
- path => 'Admin/CustomFields/',
- },
- E => { 'title' => loc('Global'),
- path => 'Admin/Global/',
- },
- F => { 'title' => loc('Tools'),
- path => 'Admin/Tools/',
- },
- };
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
+my @Default = ref($Default) eq 'ARRAY' ? @$Default : ( $Default);
- if( defined $current_tab ) {
- foreach my $tab (keys %{$tabs}) {
- if ($tabs->{$tab}->{'path'} eq $current_tab) {
- $tabs->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{$tab}->{"current_subtab"} = $current_subtab;
- }
- }
- }
-
-</%INIT>
+my $Classes= RT::Classes->new($session{'CurrentUser'});
+$Classes->LimitToEnabled();
+my $d = RT::Class->new($session{'CurrentUser'});
+$d->Load($Default[0]);
-<%ARGS>
-$subtabs => undef
-$current_tab => undef
-$current_subtab => undef
-$Title => undef
-</%ARGS>
+</%INIT>
diff --git a/rt/share/html/NoAuth/css/3.4-compat/misc.css b/rt/share/html/Articles/Elements/ShowTopic
index ccebae86d..da7c5f213 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/misc.css
+++ b/rt/share/html/Articles/Elements/ShowTopic
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,36 +45,20 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-@import "../base/misc.css";
+% for (@path) {
+%# this isn't always a class, it can be the system object
+% my $class_id = ($_->ObjectType eq 'RT::Class' ? $_->ObjectId : 0 );
+<% $_->ParentObj->Id ? " > " : "" %><a href="<% RT->Config->Get('WebPath') %>/Articles/Topics.html?class=<% $class_id %>&id=<% $_->Id %>"><% $_->Name || loc("(no name)") %></a>
+% }
-.oddline { background: white; }
-.evenline { background: #cecfef; }
+<%args>
+$topic
+</%args>
-
-#comp-Search-Build .titlebox-content {
- padding-left: 0.7em;
- padding-right: 0.3em;
-}
-
-#editsearches {
- width: 55%;
- float:right;
- text-align: left;
- padding-right: 1em;
+<%init>
+my @path;
+while ($topic->Id) {
+ unshift @path, $topic;
+ $topic = $topic->ParentObj;
}
-
-#editsearches .titlebox-content {
- padding: 1em;
-}
-
-
-#editquery {
- width: 40%;
- float: left;
- padding-left: 1em;
-}
-
-#pick-criteria {
- clear: both;
-}
-
+</%init>
diff --git a/rt/share/html/Articles/Elements/ShowTopicLink b/rt/share/html/Articles/Elements/ShowTopicLink
new file mode 100644
index 000000000..7b6d550be
--- /dev/null
+++ b/rt/share/html/Articles/Elements/ShowTopicLink
@@ -0,0 +1,27 @@
+<%args>
+$Topic
+$Class => 0
+</%args>
+% if ($Link) {
+<a href="Topics.html?id=<% $Topic->Id %>&class=<% $Class %>">\
+% }
+<% $Topic->Name() || loc("(no name)") %>\
+% if ($Topic->Description) {
+: <% $Topic->Description %>
+% }
+
+% if ( $Articles->Count ) {
+ (<&|/l, $Articles->Count &>[quant,_1,article]</&>)
+% }
+
+% if ($Link) {
+</a>
+% }
+
+<%init>
+my $Articles = RT::ObjectTopics->new( $session{'CurrentUser'} );
+$Articles->Limit( FIELD => 'ObjectType', VALUE => 'RT::Article' );
+$Articles->Limit( FIELD => 'Topic', VALUE => $Topic->Id );
+
+my $Link = $Topic->Children->Count || $Articles->Count;
+</%init>
diff --git a/rt/share/html/Articles/Elements/UpdatedArticles b/rt/share/html/Articles/Elements/UpdatedArticles
new file mode 100644
index 000000000..f2c5226be
--- /dev/null
+++ b/rt/share/html/Articles/Elements/UpdatedArticles
@@ -0,0 +1,81 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/TitleBoxStart, title => loc("[_1] most recently updated articles", $rows), bodyclass=> '' &>
+<table border="0" cellspacing="0" cellpadding="1" width="100%">
+<tr>
+<th align="right"><&|/l&>#</&></th>
+<th align="left"><&|/l&>Name</&></th>
+<th align="left" width="20%"><&|/l&>Created by</&></th>
+<th>&nbsp;</th>
+</tr>
+
+% while (my $Article = $MyArticles->Next) {
+% $i++;
+<tr class="<% $i%2 ? 'oddline' : 'evenline'%>">
+<td align="right"><%$Article->Id%></td>
+<td><a href="<% RT->Config->Get('WebPath') %>/Articles/Article/Display.html?id=<%$Article->Id%>"><%$Article->Name || loc('(no name)')%></a></td>
+<td><%$Article->CreatorObj->Name%></td>
+<td align="right">[<a href="<% RT->Config->Get('WebPath') %>/Articles/Article/Edit.html?id=<%$Article->Id%>"><&|/l&>Update</&></a>]</td>
+</tr>
+<tr class="<% $i%2 ? 'oddline' : 'evenline'%>">
+<td>&nbsp;</td>
+<td colspan="3"><small><%$Article->Summary || loc('(no Summary)')%></small></td>
+</tr>
+% }
+</table>
+<& /Elements/TitleBoxEnd &>
+<%INIT>
+my $rows = 10;
+my $i;
+my $MyArticles;
+$MyArticles = RT::Articles->new($session{'CurrentUser'});
+$MyArticles->RowsPerPage($rows);
+$MyArticles->Limit(FIELD => 'Created', OPERATOR => '!=', VALUE => 'LastUpdated', QUOTEVALUE => 0 );
+$MyArticles->OrderBy(FIELD => 'Created', ORDER => 'DESC');
+
+</%INIT>
diff --git a/rt/share/html/Articles/Topics.html b/rt/share/html/Articles/Topics.html
new file mode 100644
index 000000000..5187315f7
--- /dev/null
+++ b/rt/share/html/Articles/Topics.html
@@ -0,0 +1,203 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('Browse by topic') &>
+<& /Elements/Tabs &>
+
+<a href="Topics.html"><&|/l&>All topics</&></a>
+% if (defined $class) {
+&gt; <a href="Topics.html?class=<%$currclass_id%>"><% $currclass_name %></a>
+% }
+
+% if ($id != 0) {
+&gt; <& /Articles/Elements/ShowTopic, topic => $currtopic &>
+% }
+<br />
+<h1><&|/l&>Browse by topic</&></h1>
+% if (defined $class) {
+<h2><a href="<% RT->Config->Get('WebPath') %>/Articles/Topics.html?class=<% $currclass_id %>"><% $currclass_name %></a></h2>
+% my $rtopic = RT::Topic->new( $session{'CurrentUser'} );
+% $rtopic->Load($id);
+% unless ( $rtopic->Id()
+% && $rtopic->ObjectId() == $currclass->Id )
+% {
+% # Show all of them
+% $ProduceTree->( 0 );
+% } else {
+% my @showtopics = ( $rtopic );
+% my $parent = $rtopic->ParentObj;
+% while ( $parent->Id ) {
+% unshift @showtopics, $parent;
+% $parent = $parent->ParentObj;
+% }
+% # List the topics.
+% for my $t ( @showtopics ) {
+<ul><li><& /Articles/Elements/ShowTopicLink, Topic => $t, Class => $currclass_id &>
+% $ProduceTree->( $id ) if $t->Id == $id;
+% }
+% for ( @showtopics ) {
+ </li></ul>
+% }
+% }
+% } else {
+<ul>
+% while (my $c = $Classes->Next) {
+<li><h2><a href="<% RT->Config->Get('WebPath') %>/Articles/Topics.html?class=<% $c->Id %>"><% $c->Name %></a></h2></li>
+% }
+<li><h2><a href="<% RT->Config->Get('WebPath') %>/Articles/Topics.html?class=0"><&|/l&>Global Topics</&></a></h2></li>
+</ul>
+% }
+
+<br />
+
+% if (@articles) {
+% if ($id) {
+<h2><&|/l, $currtopic->Name&>Articles in [_1]</&></h2>
+% } elsif ($class) {
+<h2><&|/l&>Articles with no topics</&></h2>
+% }
+<ul>
+% for my $a (@articles) {
+<li><a href="Article/Display.html?id=<% $a->Id %>"><% $a->Name || loc("(no name)") %></a></li>
+% }
+</ul>
+% }
+
+<%init>
+my $Classes;
+my $currclass;
+my $currclass_id;
+my $currclass_name;
+my $currtopic;
+
+if ( defined $class ) {
+ if ($class) {
+ $currclass = RT::Class->new( $session{'CurrentUser'} );
+ $currclass->Load($class);
+ $currclass_id = $currclass->Id;
+ $currclass_name = $currclass->Name;
+ } else {
+ $currclass = $RT::System;
+ $currclass_id = 0;
+ $currclass_name = 'Global Topics';
+ }
+} else {
+ $Classes = RT::Classes->new( $session{'CurrentUser'} );
+ $Classes->LimitToEnabled();
+}
+
+if ($id) {
+ $currtopic = RT::Topic->new( $session{'CurrentUser'} );
+ $currtopic->Load($id);
+}
+
+my $ProduceTree;
+$ProduceTree = sub {
+ my ( $parentid ) = @_;
+ my $topics = RT::Topics->new( $session{'CurrentUser'} );
+ $topics->LimitToObject($currclass);
+ $topics->LimitToKids($parentid || 0);
+ $topics->OrderBy( FIELD => 'Name' );
+ return unless $topics->Count;
+ $m->out("<ul>");
+ while ( my $t = $topics->Next ) {
+ $m->out("<li>");
+ $m->comp("/Articles/Elements/ShowTopicLink",
+ Topic => $t,
+ Class => $currclass_id,
+ );
+ $ProduceTree->( $t->Id ) if $t->Children->Count;
+ $m->out("</li>");
+ }
+ $m->out("</ul>");
+};
+
+my @articles;
+if ($id) {
+ my $Articles = RT::ObjectTopics->new($session{'CurrentUser'});
+ $Articles->Limit(FIELD => 'ObjectType', VALUE => 'RT::Article');
+ $Articles->Limit(FIELD => 'Topic', VALUE => $id);
+ while (my $objtopic = $Articles->Next) {
+ my $a = RT::Article->new($session{'CurrentUser'});
+ $a->Load($objtopic->ObjectId);
+ push @articles, $a;
+ }
+} elsif ($class) {
+ my $Articles = RT::Articles->new($session{'CurrentUser'});
+ my $TopicsAlias = $Articles->Join(
+ TYPE => 'left',
+ ALIAS1 => 'main',
+ FIELD1 => 'id',
+ TABLE2 => 'ObjectTopics',
+ FIELD2 => 'ObjectId',
+ );
+ $Articles->Limit(
+ LEFTJOIN => $TopicsAlias,
+ FIELD => 'ObjectType',
+ VALUE => 'RT::Article',
+ );
+ $Articles->Limit(
+ ALIAS => $TopicsAlias,
+ FIELD => 'Topic',
+ OPERATOR => 'IS',
+ VALUE => 'NULL',
+ QUOTEVALUE => 0,
+ );
+ $Articles->Limit(
+ FIELD => 'Class',
+ OPERATOR => '=',
+ VALUE => $class,
+ );
+ @articles = @{$Articles->ItemsArrayRef};
+}
+</%init>
+
+<%args>
+$id => 0
+$class => undef
+$showall => undef
+</%args>
diff --git a/rt/share/html/Articles/index.html b/rt/share/html/Articles/index.html
new file mode 100644
index 000000000..c4a1eab4e
--- /dev/null
+++ b/rt/share/html/Articles/index.html
@@ -0,0 +1,63 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('Articles') &>
+<& /Elements/Tabs &>
+<table width="100%">
+<tr>
+<td valign="top" width="70%">
+<& /Articles/Elements/NewestArticles &>
+<br />
+<& /Articles/Elements/UpdatedArticles &>
+</td>
+<td valign="top">
+<& /Articles/Elements/QuickSearch &>
+<br />
+<& /Articles/Elements/CreateArticle &>
+</td>
+</tr>
+</table>
diff --git a/rt/share/html/Callbacks/RTx-Calendar/Elements/Header/Head b/rt/share/html/Callbacks/RTx-Calendar/Elements/Header/Head
index c1f24c2b4..dcaaa1279 100644
--- a/rt/share/html/Callbacks/RTx-Calendar/Elements/Header/Head
+++ b/rt/share/html/Callbacks/RTx-Calendar/Elements/Header/Head
@@ -1,2 +1,5 @@
+<%init>
+return if RT->can('AddStyleSheets');
+</%init>
<link rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/css/calendar.css" type="text/css" media="all" />
diff --git a/rt/share/html/Callbacks/RTx-Calendar/Elements/Tabs/Privileged b/rt/share/html/Callbacks/RTx-Calendar/Elements/Tabs/Privileged
new file mode 100644
index 000000000..31ed90aea
--- /dev/null
+++ b/rt/share/html/Callbacks/RTx-Calendar/Elements/Tabs/Privileged
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# <jesse@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+my $request_path = $HTML::Mason::Commands::r->path_info;
+
+my $query_string = sub {
+ my %args = @_;
+ my $u = URI->new();
+ $u->query_form(%args);
+ return $u->query;
+};
+
+if ( $request_path =~ qr{^/Search/} && $m->request_args->{Query} ) {
+ my $tabs = PageMenu;
+ my $chart = $tabs->child('chart');
+ $chart->add_after( 'calendar' => title => loc('Calendar'),
+ path => '/Search/Calendar.html?' . $query_string->( %{$m->request_args} ) );
+}
+
+my $about_me = Menu->child( 'preferences' );
+my $settings = $about_me ? $about_me->child('settings') : undef;
+
+if ( $settings ) {
+ $settings->child( 'calendar' => title => loc('Calendar'),
+ path => '/Prefs/Calendar.html' );
+}
+
+</%INIT>
diff --git a/rt/share/html/Callbacks/RTx-Calendar/Ticket/Elements/Tabs/Default b/rt/share/html/Callbacks/RTx-Calendar/Ticket/Elements/Tabs/Default
index cb46fdaf6..b6d390598 100644
--- a/rt/share/html/Callbacks/RTx-Calendar/Ticket/Elements/Tabs/Default
+++ b/rt/share/html/Callbacks/RTx-Calendar/Ticket/Elements/Tabs/Default
@@ -1,4 +1,4 @@
-<%init>
+<%init>
my $args;
$args= "?" . $m->comp(
'/Elements/QueryString',
diff --git a/rt/share/html/Dashboards/Elements/DashboardsForObject b/rt/share/html/Dashboards/Elements/DashboardsForObject
index 9e9e9fd60..e96afbd6a 100644
--- a/rt/share/html/Dashboards/Elements/DashboardsForObject
+++ b/rt/share/html/Dashboards/Elements/DashboardsForObject
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/Deleted b/rt/share/html/Dashboards/Elements/Deleted
index 32fdf5515..8a54754af 100644
--- a/rt/share/html/Dashboards/Elements/Deleted
+++ b/rt/share/html/Dashboards/Elements/Deleted
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/HiddenSearches b/rt/share/html/Dashboards/Elements/HiddenSearches
index a9dff69a1..4d0d9e5e2 100644
--- a/rt/share/html/Dashboards/Elements/HiddenSearches
+++ b/rt/share/html/Dashboards/Elements/HiddenSearches
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/ListOfDashboards b/rt/share/html/Dashboards/Elements/ListOfDashboards
index 55d632e52..a7398bccc 100644
--- a/rt/share/html/Dashboards/Elements/ListOfDashboards
+++ b/rt/share/html/Dashboards/Elements/ListOfDashboards
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,18 +49,34 @@
# put the list of dashboards into the navigation
use RT::Dashboard;
-my @objs = RT::Dashboard->new($session{CurrentUser})->_PrivacyObjects(ShowSystem => 1);
-my $dashboard_map = $m->comp("/Dashboards/Elements/DashboardsForObjects", Objects => \@objs);
+my @objs = RT::Dashboard->new($session{CurrentUser})->ObjectsForLoading(
+ IncludeSuperuserGroups => $IncludeSuperuserGroups
+ );
+
+my %dashboard_map;
+
+for my $object (@objs) {
+ my $new_dashboards = $m->comp("/Dashboards/Elements/DashboardsForObject", Object => $object);
+
+ push @{ $dashboard_map{$_} }, @{ $new_dashboards->{$_} || [] }
+ for qw/personal system/;
+
+ push @{ $dashboard_map{group}{$_} }, @{ $new_dashboards->{group}{$_} }
+ for keys %{ $new_dashboards->{group} || {} };
+}
my @dashboards = (
- (sort { $a->Id <=> $b->Id } @{ $dashboard_map->{personal} || [] }),
- (sort { $a->Id <=> $b->Id } @{ $dashboard_map->{system} || [] }),
+ (sort { $a->Id <=> $b->Id } @{ $dashboard_map{personal} || [] }),
+ (sort { $a->Id <=> $b->Id } @{ $dashboard_map{system} || [] }),
- map { sort { $a->Id <=> $b->Id } @{ $dashboard_map->{group}{$_} } }
- keys %{ $dashboard_map->{group} || {} },
+ map { sort { $a->Id <=> $b->Id } @{ $dashboard_map{group}{$_} } }
+ keys %{ $dashboard_map{group} || {} },
);
$m->callback(%ARGS, dashboards => \@dashboards, CallbackName => 'ModifyDashboards');
return @dashboards;
</%init>
+<%args>
+$IncludeSuperuserGroups => 1
+</%args>
diff --git a/rt/share/html/Dashboards/Elements/SelectPrivacy b/rt/share/html/Dashboards/Elements/SelectPrivacy
index da02300be..523790bba 100644
--- a/rt/share/html/Dashboards/Elements/SelectPrivacy
+++ b/rt/share/html/Dashboards/Elements/SelectPrivacy
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/ShowDashboards b/rt/share/html/Dashboards/Elements/ShowDashboards
index 8dcc733eb..56c757bf0 100644
--- a/rt/share/html/Dashboards/Elements/ShowDashboards
+++ b/rt/share/html/Dashboards/Elements/ShowDashboards
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,68 +45,27 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => $Title &>
-<& SELF:table, %ARGS &>
-</&>
-<%ARGS>
-$Title => undef
-</%ARGS>
-
-<%METHOD table>
-<%ARGS>
-$Dashboards => undef
-$Verbose => 1
-</%ARGS>
-<%INIT>
-# map each subscription to a dashboard ID
-my %subscription_for;
-
-for my $attr ($session{'CurrentUser'}->UserObj->Attributes->Named('Subscription')) {
- $subscription_for{$attr->SubValue('DashboardId')} = $attr;
-}
-</%INIT>
-
-% if (@$Dashboards == 0) {
-% if ($Verbose) {
- <p><% loc("No dashboards.") %></p>
+% foreach my $Object (@Objects) {
+% my $Dashboards = RT::Dashboards->new($session{CurrentUser});
+% $Dashboards->LimitToPrivacy(join('-',ref($Object),$Object->Id));
+% my $title;
+% if (ref $Object eq 'RT::User' && $Object->Id == $session{CurrentUser}->Id) {
+% $title = loc("My dashboards");
+% } else {
+% $title = loc("[_1]'s dashboards",$Object->Name);
% }
-% } else {
- <table class="collection-as-table">
- <tr class="collection-as-table">
-% if ($Verbose) {
- <th class="collection-as-table"><% loc("#") %></th>
-% }
- <th class="collection-as-table"><% loc("Name") %></th>
- <th class="collection-as-table"><% loc("Subscription") %></th>
- </tr>
-
-% my $i = 0;
-% for my $dashboard (@$Dashboards) {
-% my $url = sprintf '%s/Dashboards/%d/%s',
-% RT->Config->Get('WebPath'),
-% $dashboard->Id,
-% $dashboard->Name;
-
- <tr class="collection-as-table <% ++$i % 2 ? 'oddline' : 'evenline' %>">
-% if ($Verbose) {
- <td class="collection-as-table">
- <a href="<% $url %>">
- <% $dashboard->Id %>
- </a>
- </td>
-% }
- <td class="collection-as-table">
- <a href="<% $url %>">
- <% $dashboard->Name %>
- </a>
- </td>
- <td class="collection-as-table">
- <& /Dashboards/Elements/ShowSubscription, Dashboard => $dashboard, Subscription => $subscription_for{$dashboard->Id} &>
- </td>
- </tr>
-% }
-
- </table>
+% $title = $m->interp->apply_escapes($title, 'h');
+<& /Elements/CollectionList,
+ %ARGS,
+ Format => qq{'<a href="__WebPath__/__ShowURL__">__Name__</a>/TITLE:$title', __Subscription__},
+ Collection => $Dashboards,
+&>
% }
-</%METHOD>
+<%init>
+use RT::Dashboards;
+my @Objects = RT::Dashboard->new($session{CurrentUser})->ObjectsForLoading(IncludeSuperuserGroups => $IncludeSuperuserGroups);
+</%init>
+<%args>
+$IncludeSuperuserGroups => 1
+</%args>
diff --git a/rt/share/html/Dashboards/Elements/ShowPortlet/component b/rt/share/html/Dashboards/Elements/ShowPortlet/component
index 230a15cc1..dbdfe320e 100644
--- a/rt/share/html/Dashboards/Elements/ShowPortlet/component
+++ b/rt/share/html/Dashboards/Elements/ShowPortlet/component
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/ShowPortlet/dashboard b/rt/share/html/Dashboards/Elements/ShowPortlet/dashboard
index 06f9f75cd..92f2488bb 100644
--- a/rt/share/html/Dashboards/Elements/ShowPortlet/dashboard
+++ b/rt/share/html/Dashboards/Elements/ShowPortlet/dashboard
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/ShowPortlet/search b/rt/share/html/Dashboards/Elements/ShowPortlet/search
index 44fba313d..ce2c24cd2 100644
--- a/rt/share/html/Dashboards/Elements/ShowPortlet/search
+++ b/rt/share/html/Dashboards/Elements/ShowPortlet/search
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Modify.html b/rt/share/html/Dashboards/Modify.html
index 11fc1791a..95cf318aa 100755
--- a/rt/share/html/Dashboards/Modify.html
+++ b/rt/share/html/Dashboards/Modify.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,59 +46,55 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Dashboards/Elements/Tabs,
- current_subtab => $current_subtab,
- Title => $title,
- $Create ? () : (DashboardObj => $Dashboard),
-&>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form action="<%RT->Config->Get('WebPath')%>/Dashboards/Modify.html" method="post" enctype="multipart/form-data" name="ModifyDashboard">
+<form action="<%RT->Config->Get('WebPath')%>/Dashboards/Modify.html" method="post" enctype="multipart/form-data" name="ModifyDashboard" id="ModifyDashboard">
%unless ($Dashboard->Id) {
<input type="hidden" class="hidden" name="id" value="new" />
% } else {
<input type="hidden" class="hidden" name="id" value="<%$Dashboard->Id%>" />
% }
+
+<&|/Widgets/TitleBox, title => loc('Basics') &>
<table>
-<tr><td align="right">
-<&|/l&>Name</&>:
-</td>
-<td><input name="Name" value="<%$Dashboard->Name%>" /></td>
+ <tr>
+ <td class="label"><&|/l&>Name</&>:</td>
+ <td class="value"><input name="Name" value="<%$Dashboard->Name%>" /></td>
+ </tr>
+ <tr>
+ <td class="label"><&|/l&>Privacy</&>:</td>
+ <td><& /Dashboards/Elements/SelectPrivacy, Name => "Privacy", Objects => \@privacies, Default => $Dashboard->Privacy &></td>
</tr>
-<tr><td align="right">
-<&|/l&>Privacy</&>:
-</td><td>
-<& /Dashboards/Elements/SelectPrivacy, Name => "Privacy", Objects => \@privacies, Default => $Dashboard->Privacy &>
-</td></tr>
</table>
-% if ( $Create ) {
-<& /Elements/Submit, Name => 'Save', Label => loc('Create') &>
-% } else {
-<& /Elements/Submit, Name => 'Save', Label => loc('Save Changes') &>
-% }
+</&>
+<& /Elements/Submit, Name => 'Save', Label =>( $Create ? loc('Create') : loc('Save Changes') ) &>
+
% if ($Dashboard->Id && $can_delete) {
<& /Elements/Submit, Name => 'Delete', Label => loc('Delete') &>
% }
</form>
<%INIT>
-my $current_subtab;
my ($title, @results);
my $tried_create = 0;
# user went directly to Modify.html
$Create = 1 if !$id;
+
+my $redirect_to ='/Dashboards/Modify.html';
+
use RT::Dashboard;
my $Dashboard = RT::Dashboard->new($session{'CurrentUser'});
-my @privacies = $Dashboard->_PrivacyObjects(($Create ? 'Create' : 'Modify') => 1);
+my $method = $Create ? 'ObjectsForCreating' : 'ObjectsForModifying';
+my @privacies = $Dashboard->$method;
Abort(loc("Permission denied")) if @privacies == 0;
if ($Create) {
- $current_subtab = 'Dashboards/Modify.html?Create=1';
$title = loc("Create a new dashboard");
}
else {
@@ -116,20 +112,22 @@ else {
push @results, $msg;
$id = $Dashboard->Id;
+ if (!$Dashboard->id || ! $Dashboard->CurrentUserCanSee) {
+ $redirect_to='/Dashboards/index.html';
+
+ }
}
else {
my ($ok, $msg) = $Dashboard->LoadById($id);
- $ok || Abort($msg);
+ $ok || Abort(loc("Couldn't load dashboard [_1]: [_2]", $id, $msg));
}
if ($id) {
$title = loc("Modify the dashboard [_1]", $Dashboard->Name);
- $current_subtab = 'Dashboards/Modify.html?id=' . $id;
}
# If the create failed
else {
$Create = 1;
- $current_subtab = 'Dashboards/Modify.html?Create=1';
$title = loc("Create a new dashboard");
}
}
@@ -147,16 +145,26 @@ if (!$Create && !$tried_create && $id && $ARGS{'Save'}) {
}
+
my $can_delete = $Dashboard->CurrentUserCanDelete;
if (!$Create && !$tried_create && $id && $ARGS{'Delete'}) {
my ($ok, $msg) = $Dashboard->Delete();
- $ok || Abort(loc("Couldn't delete dashboard [_1]: [_2]", $id, $msg));
-
- # put the user back into a useful place with a message
- RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Dashboards/index.html?Deleted=$id");
+ if (!$ok) {
+ Abort(loc("Couldn't delete dashboard [_1]: [_2]", $id, $msg));
+ }
+ push @results, $msg;
+ $redirect_to = '/Dashboards/index.html';
}
+
+# This code does automatic redirection if any updates happen.
+MaybeRedirectForResults(
+ Actions => \@results,
+ Path => $redirect_to,
+ Arguments => { id => $id },
+);
+
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Dashboards/Queries.html b/rt/share/html/Dashboards/Queries.html
index bef0eee84..c00503143 100644
--- a/rt/share/html/Dashboards/Queries.html
+++ b/rt/share/html/Dashboards/Queries.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Dashboards/Elements/Tabs,
- current_subtab => $current_subtab,
- Title => $title,
- DashboardObj => $Dashboard &>
+<& /Elements/Tabs &>
<& /Widgets/SelectionBox:header, nojs => 1 &>
@@ -78,14 +75,13 @@
<%INIT>
-my $current_subtab = 'Dashboards/Queries.html?id=' . $id;
my @results;
use RT::Dashboard;
-my $Dashboard = new RT::Dashboard($session{'CurrentUser'});
+my $Dashboard = RT::Dashboard->new($session{'CurrentUser'});
my ($ok, $msg) = $Dashboard->LoadById($id);
$ok || Abort(loc("Couldn't load dashboard [_1]: [_2]", $id, $msg));
-my $title = loc("Modify the queries of dashboard [_1]", $Dashboard->Name);
+my $title = loc("Modify the content of dashboard [_1]", $Dashboard->Name);
my %desc_of;
my @items;
@@ -103,8 +99,8 @@ for my $desc (@components) {
}
# add dashboards
-my $dashboards = $m->comp("/Dashboards/Elements/DashboardsForObjects", flatten => 1);
-for my $dashboard (@{ $dashboards || [] }) {
+my @dashboards = $m->comp("/Dashboards/Elements/ListOfDashboards");
+for my $dashboard (@dashboards) {
# Users *can* set up mutually recursive dashboards, but don't make it THIS
# easy for them to shoot themselves in the foot.
next if $dashboard->Id == $Dashboard->Id;
@@ -119,7 +115,7 @@ for my $dashboard (@{ $dashboards || [] }) {
# add saved searches
my @objs = RT::System->new($session{'CurrentUser'});
-push @objs, RT::SavedSearches->new( $session{CurrentUser} )->_PrivacyObjects
+push @objs, RT::SavedSearch->new( $session{CurrentUser} )->ObjectsForLoading
if $session{'CurrentUser'}->HasRight( Right => 'LoadSavedSearch',
Object => $RT::System );
@@ -137,7 +133,7 @@ for my $object (@objs) {
}
}
-# Get the list of queries already in use
+# Get the list of portlets already in use
my @deleted;
do {
my $panes = $Dashboard->Panes;
@@ -177,7 +173,7 @@ $m->callback(
selected => \%selected,
);
-# Create selectionbox widgets for those queries
+# Create selectionbox widgets for those portlets
my %pane_name = (
'body' => loc('Body'),
diff --git a/rt/share/html/Dashboards/Render.html b/rt/share/html/Dashboards/Render.html
index da9d487ac..59861ebbe 100644
--- a/rt/share/html/Dashboards/Render.html
+++ b/rt/share/html/Dashboards/Render.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,18 +53,14 @@
&>
% if ($Preview) {
-<& /Dashboards/Elements/Tabs,
- current_subtab => $current_subtab,
- Title => $title,
- DashboardObj => $DashboardObj &>
+<& /Elements/Tabs &>
% }
-% $m->callback(CallbackName => 'BeforeTable', Dashboard => $DashboardObj, show_cb => $show_cb);
+% $m->callback(CallbackName => 'BeforeTable', Dashboard => $Dashboard, show_cb => $show_cb);
-<table class="dashboard">
-<!-- Dashboard #<%$id%> -->
+<table class="dashboard" id="dashboard-<%$id%>">
-% $m->callback(CallbackName => 'BeforePanes', Dashboard => $DashboardObj, show_cb => $show_cb);
+% $m->callback(CallbackName => 'BeforePanes', Dashboard => $Dashboard, show_cb => $show_cb);
<tr valign="top">
@@ -78,26 +74,29 @@
</tr>
-% $m->callback(CallbackName => 'AfterPanes', Dashboard => $DashboardObj, show_cb => $show_cb);
+% $m->callback(CallbackName => 'AfterPanes', Dashboard => $Dashboard, show_cb => $show_cb);
</table>
-% $m->callback(CallbackName => 'AfterTable', Dashboard => $DashboardObj, show_cb => $show_cb);
-
-</td>
+% $m->callback(CallbackName => 'AfterTable', Dashboard => $Dashboard, show_cb => $show_cb);
+% if (!$Preview) {
+% my $edit = RT->Config->Get('WebPath') . '/Dashboards/Modify.html?id='.$id;
+% my $subscription = RT->Config->Get('WebPath') . '/Dashboards/Subscription.html?id='.$id;
+<p><&|/l, $edit, $subscription &>You <a href="[_1]">may edit this dashboard</a> and <a href="[_2]">your subscription</a> to it in RT.</&></p>
+% }
-</tr>
-</table>
+%# Matches the closing div in /Elements/Footer that it expects
+%# from PageLayout (which we don't use here)
+<div>
<%INIT>
-my $current_subtab = 'Dashboards/Render.html?id=' . $id;
use RT::Dashboard;
-my $DashboardObj = RT::Dashboard->new($session{'CurrentUser'});
-my ($ok, $msg) = $DashboardObj->LoadById($id);
-Abort(loc("Couldn't load dashboard [_1]: [_2]", $id, $msg)) if !$ok;
+my $Dashboard = RT::Dashboard->new($session{'CurrentUser'});
+my ($ok, $msg) = $Dashboard->LoadById($id);
+$ok || Abort(loc("Couldn't load dashboard [_1]: [_2]", $id, $msg));
my $SubscriptionObj = RT::Attribute->new($session{'CurrentUser'});
my $rows;
@@ -117,15 +116,15 @@ unless (defined($rows)) {
$rows = defined($prefs->{'RowsPerPage'}) ? $prefs->{'RowsPerPage'} : 50;
}
-my $title = loc 'Dashboard [_1]', $DashboardObj->Name;
+my $title = loc '[_1] Dashboard', $Dashboard->Name;
my $show_cb = sub {
my $pane = shift;
$m->comp('Elements/ShowPortlet/dashboard',
- Portlet => $DashboardObj,
+ Portlet => $Dashboard,
Rows => $rows,
Preview => $Preview,
- Dashboard => $DashboardObj,
+ Dashboard => $Dashboard,
Pane => $pane,
Depth => 0,
);
diff --git a/rt/share/html/Dashboards/Subscription.html b/rt/share/html/Dashboards/Subscription.html
index 7f0278a05..3669e4687 100644
--- a/rt/share/html/Dashboards/Subscription.html
+++ b/rt/share/html/Dashboards/Subscription.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,15 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Dashboards/Elements/Tabs,
- current_subtab => $current_subtab,
- Title => $title,
- DashboardObj => $DashboardObj &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
<form action="<%RT->Config->Get('WebPath')%>/Dashboards/Subscription.html" method="post" enctype="multipart/form-data" name="SubscribeDashboard">
-<input type="hidden" class="hidden" name="DashboardId" value="<% $fields{'DashboardId'} %>" />
+<input type="hidden" class="hidden" name="id" value="<% $fields{'DashboardId'} %>" />
<table width="100%" border="0">
<tr>
@@ -65,13 +62,13 @@
<tr><td class="label">
<&|/l&>Dashboard</&>:
</td><td class="value">
-<% $DashboardObj->Name %>
+<% $Dashboard->Name %>
</td></tr>
<tr><td class="label">
<&|/l&>Queries</&>:
</td><td class="value">
-% my @portlets = grep { defined } $DashboardObj->Portlets;
+% my @portlets = grep { defined } $Dashboard->Portlets;
% if (!@portlets) {
(<&|/l&>none</&>)
% } else {
@@ -95,44 +92,44 @@
<&|/l&>Frequency</&>:
</td><td class="value">
-<input type="radio" name="Frequency" value="daily" <% $fields{'Frequency'} eq 'daily' ? 'checked="checked"' : "" %>>
+<input type="radio" name="Frequency" value="daily" <% $fields{'Frequency'} eq 'daily' ? 'checked="checked"' : "" |n %>>
<&|/l&>daily</&>
</input><br />
-<input type="radio" name="Frequency" value="m-f" <% $fields{'Frequency'} eq 'm-f' ? 'checked="checked"' : "" %>>
+<input type="radio" name="Frequency" value="m-f" <% $fields{'Frequency'} eq 'm-f' ? 'checked="checked"' : "" |n %>>
<&|/l&>Monday through Friday</&>
</input><br />
-<input type="radio" name="Frequency" value="weekly"<% $fields{'Frequency'} eq 'weekly' ? 'checked="checked"' : "" %>>
+<input type="radio" name="Frequency" value="weekly"<% $fields{'Frequency'} eq 'weekly' ? 'checked="checked"' : "" |n %>>
<&|/l&>weekly</&></input>, <&|/l&>on</&>
<select name="Dow">
- <option value="Monday" <% $fields{'Dow'} eq 'Monday' ? 'selected="selected"' : '' %>><&|/l&>Monday</&></option>
- <option value="Tuesday" <% $fields{'Dow'} eq 'Tuesday' ? 'selected="selected"' : '' %>><&|/l&>Tuesday</&></option>
- <option value="Wednesday" <% $fields{'Dow'} eq 'Wednesday' ? 'selected="selected"' : '' %>><&|/l&>Wednesday</&></option>
- <option value="Thursday" <% $fields{'Dow'} eq 'Thursday' ? 'selected="selected"' : '' %>><&|/l&>Thursday</&></option>
- <option value="Friday" <% $fields{'Dow'} eq 'Friday' ? 'selected="selected"' : '' %>><&|/l&>Friday</&></option>
- <option value="Saturday" <% $fields{'Dow'} eq 'Saturday' ? 'selected="selected"' : '' %>><&|/l&>Saturday</&></option>
- <option value="Sunday" <% $fields{'Dow'} eq 'Sunday' ? 'selected="selected"' : '' %>><&|/l&>Sunday</&></option>
+ <option value="Monday" <% $fields{'Dow'} eq 'Monday' ? 'selected="selected"' : '' |n %>><&|/l&>Monday</&></option>
+ <option value="Tuesday" <% $fields{'Dow'} eq 'Tuesday' ? 'selected="selected"' : '' |n %>><&|/l&>Tuesday</&></option>
+ <option value="Wednesday" <% $fields{'Dow'} eq 'Wednesday' ? 'selected="selected"' : '' |n %>><&|/l&>Wednesday</&></option>
+ <option value="Thursday" <% $fields{'Dow'} eq 'Thursday' ? 'selected="selected"' : '' |n %>><&|/l&>Thursday</&></option>
+ <option value="Friday" <% $fields{'Dow'} eq 'Friday' ? 'selected="selected"' : '' |n %>><&|/l&>Friday</&></option>
+ <option value="Saturday" <% $fields{'Dow'} eq 'Saturday' ? 'selected="selected"' : '' |n %>><&|/l&>Saturday</&></option>
+ <option value="Sunday" <% $fields{'Dow'} eq 'Sunday' ? 'selected="selected"' : '' |n %>><&|/l&>Sunday</&></option>
</select>
<&|/l&>every</&>
<select name="Fow">
% for my $f ( qw/1 2 3 4/ ) {
- <option value="<%$f%>" <% $fields{'Fow'} == $f ? 'selected="selected"' : '' %>><% $f %></option>
+ <option value="<%$f%>" <% $fields{'Fow'} == $f ? 'selected="selected"' : '' |n %>><% $f %></option>
% }
</select>
<&|/l&>weeks</&>
<br />
-<input type="radio" name="Frequency" value="monthly"<% $fields{'Frequency'} eq 'monthly' ? 'checked="checked"' : "" %>>
+<input type="radio" name="Frequency" value="monthly"<% $fields{'Frequency'} eq 'monthly' ? 'checked="checked"' : "" |n %>>
<&|/l&>monthly</&></input> , <&|/l&>on day</&>
<select name="Dom">
% for my $dom (1..31) {
- <option value="<% $dom %>" <% $fields{'Dom'} == $dom ? 'selected="selected"' : '' %>><% loc($dom) %></option>
+ <option value="<% $dom %>" <% $fields{'Dom'} == $dom ? 'selected="selected"' : '' |n %>><% loc($dom) %></option>
% }
</select>
<br />
-<input type="radio" name="Frequency" value="never" <% $fields{'Frequency'} eq 'never' ? 'checked="checked"' : "" %>>
+<input type="radio" name="Frequency" value="never" <% $fields{'Frequency'} eq 'never' ? 'checked="checked"' : "" |n %>>
<&|/l&>never</&>
</input>
@@ -141,13 +138,21 @@
<&|/l&>Hour</&>:
</td><td class="value">
<select name="Hour">
+% my $formatter = RT::Date->new($session{CurrentUser})->LocaleObj;
+% my $dt = DateTime->now;
+% $dt->set_minute(0);
+% $dt->set_second(0);
+
% for my $hour (0..23) {
-% my $formatted = sprintf '%02d:00', $hour;
-% my $selected = $formatted eq $fields{'Hour'}
+% $dt->set_hour($hour);
+% my $formatted = $dt->format_cldr($formatter->time_format_short);
+
+% my $value = sprintf '%02d:00', $hour;
+% my $selected = $value eq $fields{'Hour'}
% ? 'selected="selected"'
% : '';
- <option value="<% $formatted %>" <%$selected%>><% $formatted %></option>
+ <option value="<% $value %>" <%$selected|n %>><% $formatted %></option>
% }
</select>
(<%$timezone%>)
@@ -157,7 +162,7 @@
</td><td class="value">
<select name="Rows">
% for my $rows (1, 2, 5, 10, 15, 20, 25, 50, 75, 100, 0) {
- <option value="<% $rows %>" <% $fields{'Rows'} eq $rows ? 'selected="selected"' : '' %>><% loc($rows || 'Unlimited') %></option>
+ <option value="<% $rows %>" <% $fields{'Rows'} eq $rows ? 'selected="selected"' : '' |n %>><% loc($rows || 'Unlimited') %></option>
% }
</select>
</td></tr>
@@ -174,7 +179,7 @@
</tr>
</table>
-% if ($SubscriptionObj->Id) {
+% if ($SubscriptionObj) {
<& /Elements/Submit, Name => "Save", Label => loc('Save Changes') &>
% } else {
<& /Elements/Submit, Name => "Save", Label => loc('Subscribe') &>
@@ -183,34 +188,21 @@
<%INIT>
-my $current_subtab = 'Dashboards/Subscription.html?DashboardId=' . $DashboardId;
-
my ($title, @results);
-my ($val, $msg);
my $Loaded = 0;
my $timezone = $session{'CurrentUser'}->UserObj->Timezone || RT->Config->Get('Timezone');
use RT::Dashboard;
-my $DashboardObj = RT::Dashboard->new($session{'CurrentUser'});
-
-my $SubscriptionObj = RT::Attribute->new($session{'CurrentUser'});
-
-# first let's see if we already have a subscription to this DashboardId
-for my $sub ($session{'CurrentUser'}->UserObj->Attributes->Named('Subscription')) {
- next unless $sub->SubValue('DashboardId') == $DashboardId;
- $SubscriptionObj = $sub;
- last;
-}
+my $Dashboard = RT::Dashboard->new($session{'CurrentUser'});
+my ($ok, $msg) = $Dashboard->LoadById($id);
+$ok || Abort(loc("Couldn't load dashboard [_1]: [_2]", $id, $msg));
-$DashboardId = $SubscriptionObj->Id
- ? $SubscriptionObj->SubValue('DashboardId')
- : $ARGS{'DashboardId'};
+my $SubscriptionObj = $Dashboard->Subscription;
-($val, $msg) = $DashboardObj->LoadById($DashboardId);
-$val || Abort(loc("Couldn't load dashboard [_1]: [_2].", $DashboardId, $msg));
+$id = $SubscriptionObj ? $SubscriptionObj->SubValue('DashboardId') : $ARGS{'id'};
my %fields = (
- DashboardId => $DashboardId,
+ DashboardId => $id,
Frequency => 'daily',
Hour => '06:00',
Dow => 'Monday',
@@ -222,7 +214,7 @@ my %fields = (
);
# update any fields with the values from the subscription object
-if ($SubscriptionObj->Id) {
+if ($SubscriptionObj) {
for my $field (keys %fields) {
$fields{$field} = $SubscriptionObj->SubValue($field);
}
@@ -234,54 +226,70 @@ for my $field (keys %fields) {
$fields{$field} = $ARGS{$field}
if defined($ARGS{$field});
}
+
+
# this'll be defined on submit
if (defined $ARGS{Save}) {
- # update
- if ($SubscriptionObj->Id) {
- $DashboardId = delete $fields{'DashboardId'}; # immutable
- ($val, $msg) = $SubscriptionObj->SetSubValues(%fields);
- $fields{'DashboardId'} = $DashboardId;
-
- # not so good to spew base64-encoded data at the user :)
- if ($msg =~ /^Content changed from/) {
- $msg = "Subscription updated.";
+ my $ok = 1;
+
+ # validation
+ if ($fields{Recipient}) {
+ my @addresses = Email::Address->parse($fields{Recipient});
+ if (@addresses == 0) {
+ push @results, loc('Recipient must be an email address');
+ $ok = 0;
}
-
- push @results, $msg;
}
- # create
- else {
- Abort(loc("Unable to subscribe to dashboard [_1]: Permission denied", $DashboardId))
- unless $DashboardObj->CurrentUserCanSubscribe;
-
- my ($val, $msg) = $SubscriptionObj->Create(
- Name => 'Subscription',
- Description => 'Subscription to dashboard ' . $DashboardId,
- ContentType => 'storable',
- Object => $session{'CurrentUser'}->UserObj,
- Content => \%fields,
- );
- if ($val) {
- push @results, loc("Subscribed to dashboard [_1]", $DashboardObj->Name);
- push @results, loc("Warning: you have no email address set, so you will not receive this dashboard until you have it set")
- unless $session{'CurrentUser'}->EmailAddress || $fields{Recipient};
+
+ if ($ok) {
+ # update
+ if ($SubscriptionObj) {
+ $id = delete $fields{'DashboardId'}; # immutable
+ ($ok, $msg) = $SubscriptionObj->SetSubValues(%fields);
+ $fields{'DashboardId'} = $id;
+
+ # not so good to spew base64-encoded data at the user :)
+ if ($msg =~ /^Content changed from/) {
+ $msg = "Subscription updated.";
+ }
+
+ push @results, $msg;
}
+ # create
else {
- push @results, loc('Subscription could not be created: [_1]', $msg);
+ Abort(loc("Unable to subscribe to dashboard [_1]: Permission denied", $id))
+ unless $Dashboard->CurrentUserCanSubscribe;
+
+ $SubscriptionObj = RT::Attribute->new($session{CurrentUser});
+ ($ok, $msg) = $SubscriptionObj->Create(
+ Name => 'Subscription',
+ Description => 'Subscription to dashboard ' . $id,
+ ContentType => 'storable',
+ Object => $session{'CurrentUser'}->UserObj,
+ Content => \%fields,
+ );
+ if ($ok) {
+ push @results, loc("Subscribed to dashboard [_1]", $Dashboard->Name);
+ push @results, loc("Warning: you have no email address set, so you will not receive this dashboard until you have it set")
+ unless $session{'CurrentUser'}->EmailAddress || $fields{Recipient};
+ }
+ else {
+ push @results, loc('Subscription could not be created: [_1]', $msg);
+ }
}
}
}
-if ($SubscriptionObj->Id) {
- $title = loc("Modify the subscription to dashboard [_1]", $DashboardObj->Name);
+if ($SubscriptionObj) {
+ $title = loc("Modify the subscription to dashboard [_1]", $Dashboard->Name);
}
else {
- $title = loc("Subscribe to dashboard [_1]", $DashboardObj->Name);
+ $title = loc("Subscribe to dashboard [_1]", $Dashboard->Name);
}
</%INIT>
<%ARGS>
-$DashboardId => undef
+$id => undef
$Frequency => undef
$Hour => undef
$Dow => undef
diff --git a/rt/share/html/Dashboards/dhandler b/rt/share/html/Dashboards/dhandler
index f144ccef7..f4d0c6a96 100644
--- a/rt/share/html/Dashboards/dhandler
+++ b/rt/share/html/Dashboards/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/index.html b/rt/share/html/Dashboards/index.html
index afc0dbd13..f6a352ef7 100644
--- a/rt/share/html/Dashboards/index.html
+++ b/rt/share/html/Dashboards/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,63 +45,9 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => $title &>
-<& /Dashboards/Elements/Tabs,
- current_subtab => 'Dashboards/index.html',
- Title => $title &>
+<& /Elements/Header, Title => loc("Dashboards") &>
+<& /Elements/Tabs &>
-<& /Elements/ListActions, actions => \@actions &>
-
-<& /Dashboards/Elements/ShowDashboards,
- Title => loc('Personal Dashboards'),
- Dashboards => \@personal_dashboards,
-&>
-
-<& /Dashboards/Elements/ShowDashboards,
- Title => loc('System Dashboards'),
- Dashboards => \@system_dashboards,
-&>
-
-% for (@grouped_dashboards) {
-% my $group = $_->{name};
-% my $dashboards = $_->{dashboards};
-
- <& /Dashboards/Elements/ShowDashboards,
- Title => loc('[_1] DashBoards', $group),
- Dashboards => $dashboards,
- &>
-% }
-
-<%INIT>
-my $title = loc("Dashboards");
-use RT::Dashboard;
-
-my $dashboards = $m->comp("/Dashboards/Elements/DashboardsForObjects");
-
-my @actions;
-if (defined $Deleted) {
- push @actions, loc("Deleted dashboard [_1]", $Deleted);
-}
-
-my @personal_dashboards = sort { $a->Id <=> $b->Id } @{ $dashboards->{personal} || [] };
-my @system_dashboards = sort { $a->Id <=> $b->Id } @{ $dashboards->{system} || [] };
-
-my @groups = sort keys %{ $dashboards->{group} || {} };
-my @grouped_dashboards = map {
- {
- name => $_,
- dashboards => [ sort { $a->Id <=> $b->Id } @{ $dashboards->{group}{$_} || [] } ],
- }
-} @groups;
-
-$m->callback(
- PersonalDashboards => \@personal_dashboards,
- SystemDashboards => \@system_dashboards,
- GroupedDashboards => \@grouped_dashboards,
- CallbackName => 'MassageDashboards',
-);
-</%INIT>
-<%ARGS>
-$Deleted => undef
-</%ARGS>
+<& /Elements/ListActions &>
+<& /Dashboards/Elements/ShowDashboards &>
diff --git a/rt/share/html/Download/CustomFieldValue/dhandler b/rt/share/html/Download/CustomFieldValue/dhandler
index 5149de1d0..6db45ed88 100644
--- a/rt/share/html/Download/CustomFieldValue/dhandler
+++ b/rt/share/html/Download/CustomFieldValue/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/BevelBoxRaisedEnd b/rt/share/html/Elements/BevelBoxRaisedEnd
index 4c009ac2f..369dc9560 100755
--- a/rt/share/html/Elements/BevelBoxRaisedEnd
+++ b/rt/share/html/Elements/BevelBoxRaisedEnd
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/BevelBoxRaisedStart b/rt/share/html/Elements/BevelBoxRaisedStart
index bd36cd567..51038b89b 100755
--- a/rt/share/html/Elements/BevelBoxRaisedStart
+++ b/rt/share/html/Elements/BevelBoxRaisedStart
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/NoAuth/css/3.5-default/misc.css b/rt/share/html/Elements/CSRF
index 9bd1940bb..4893c1216 100755..100644
--- a/rt/share/html/NoAuth/css/3.5-default/misc.css
+++ b/rt/share/html/Elements/CSRF
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,55 +45,30 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-@import "../base/misc.css";
+<& /Elements/Header, Title => loc('Possible cross-site request forgery') &>
+<& /Elements/Tabs &>
-body {
- font-family: Verdana, sans-serif;
- font-size: 76%;
- margin: 0;
- background-color: white;
-}
+<h1><&|/l&>Possible cross-site request forgery</&></h1>
-#body.calpopup {
- margin-left: 2em;
-}
+% my $strong_start = "<strong>";
+% my $strong_end = "</strong>";
+<p><&|/l_unsafe, $strong_start, $strong_end, $Reason &>RT has detected a possible [_1]cross-site request forgery[_2] for this request, because [_3]. This is possibly caused by a malicious attacker trying to perform actions against RT on your behalf. If you did not initiate this request, then you should alert your security team.</&></p>
-.calendar {
- text-align: center;
- margin: 2em 0 0 0;
-}
+% my $start = qq|<strong><a href="$url_with_token">|;
+% my $end = qq|</a></strong>|;
+<p><&|/l_unsafe, $escaped_path, $start, $end &>If you really intended to visit [_1], then [_2]click here to resume your request[_3].</&></p>
-.calendar td, .calendar th { padding: 0.1em 0.25em 0.1em 0.25em; }
+<& /Elements/Footer, %ARGS &>
+% $m->abort;
+<%ARGS>
+$OriginalURL => ''
+$Reason => ''
+$Token => ''
+</%ARGS>
+<%INIT>
+my $escaped_path = $m->interp->apply_escapes($OriginalURL, 'h');
+$escaped_path = "<tt>$escaped_path</tt>";
-.calendar caption .month {
- padding: 0 1em 0 1em;
- font-size: 1.5em;
-}
-
-.evenline { background-color: white; }
-.oddline { background-color: #ddd; }
-
-td {
- padding: 0.1em 0.5em 0.1em 0.5em;
-}
-
-ul.action-results {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-.shredder-form { line-height: 3em }
-.shredder-form span { margin-left: 1em; margin-right: 1em }
-.shredder-help {
- background-color: #ffe99d;
- margin: 1em 2em;
- padding: 1em;
- border-style: solid;
- border-color: black;
- border-width: 1px;
-}
-#shredder-select-plugin { border-style: solid; border-color: black; border-width: 1px }
-#shredder-plugin-results { border-style: solid; border-color: black; border-width: 1px; margin-top: 1em; }
-#shredder-plugin-results input { margin-left: 1em; }
-
-.pod-sequence-C { background-color: #eee }
+my $url_with_token = URI->new($OriginalURL);
+$url_with_token->query_form([CSRF_Token => $Token]);
+</%INIT>
diff --git a/rt/share/html/Elements/CalendarEvent b/rt/share/html/Elements/CalendarEvent
index 3a6b00bb8..65dd58c9f 100644
--- a/rt/share/html/Elements/CalendarEvent
+++ b/rt/share/html/Elements/CalendarEvent
@@ -13,11 +13,11 @@ $DateTypes => undef
% and RTx::Calendar::LocalDate($Object->ResolvedObj->Unix) eq $today) {
<img src="<%$RT::WebImagesURL%>/resolved.png" />
-% } elsif ($DateTypes->{Starts} and $DateTypes->{Due}
+% } elsif ($DateTypes->{Starts} and $DateTypes->{Due}
% and RTx::Calendar::LocalDate($Object->StartsObj->Unix) eq $today and RTx::Calendar::LocalDate($Object->DueObj->Unix) eq $today ) {
<img src="<%$RT::WebImagesURL%>/starts_due.png" />
-% } elsif ($DateTypes->{Due} and $DateTypes->{Created}
+% } elsif ($DateTypes->{Due} and $DateTypes->{Created}
% and RTx::Calendar::LocalDate($Object->DueObj->Unix) eq $today and RTx::Calendar::LocalDate($Object->CreatedObj->Unix) eq $today ) {
<img src="<%$RT::WebImagesURL%>/created_due.png" />
@@ -25,7 +25,7 @@ $DateTypes => undef
% and RTx::Calendar::LocalDate($Object->StartsObj->Unix) eq $today) {
<img src="<%$RT::WebImagesURL%>/starts.png" />
-% } elsif ($DateTypes->{Due}
+% } elsif ($DateTypes->{Due}
% and RTx::Calendar::LocalDate($Object->DueObj->Unix) eq $today) {
<img src="<%$RT::WebImagesURL%>/due.png" />
@@ -64,7 +64,7 @@ $DateTypes => undef
% my $method = '$Object->'.$attr.'()';
% $method =~ s/->ISO\(\)$/->ISO( Timezone => 'user' )/;
% $value = eval $method;
-% if ($@) {die "<b>Check your CalendarPopupFields config in etc/RT_SiteConfig.pm</b>.<br /><br />Failed to find \"$attr\" - ". $@};
+% if ($@) {die "<b>Check your CalendarPopupFields config in etc/RT_SiteConfig.pm</b>.<br /><br />Failed to find \"$attr\" - ". $@};
% }
<strong><&|/l&><% $label_of{$attr} %></&>:</strong> <% $value %><br />
% }
diff --git a/rt/share/html/Elements/Callback b/rt/share/html/Elements/Callback
index 2b4ec11be..bd48bc5cd 100755
--- a/rt/share/html/Elements/Callback
+++ b/rt/share/html/Elements/Callback
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/Checkbox b/rt/share/html/Elements/Checkbox
index 2e9f05b98..c72b40126 100755
--- a/rt/share/html/Elements/Checkbox
+++ b/rt/share/html/Elements/Checkbox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/CollectionAsTable/Header b/rt/share/html/Elements/CollectionAsTable/Header
index 878a77e70..20586f9c3 100644
--- a/rt/share/html/Elements/CollectionAsTable/Header
+++ b/rt/share/html/Elements/CollectionAsTable/Header
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -126,14 +126,14 @@ foreach my $col ( @Format ) {
my $new_order = 'ASC';
$new_order = $Order[0] eq 'ASC'? 'DESC': 'ASC'
- if $OrderBy[0] && $OrderBy[0] eq $attr;
+ if $OrderBy[0] && ($OrderBy[0] eq $attr or "$attr|$OrderBy[0]" =~ /^(Created|id)\|(Created|id)$/);
$m->out(
- '<a href="' . $BaseURL
+ '<a href="' . $m->interp->apply_escapes($BaseURL
. $m->comp( '/Elements/QueryString',
%$generic_query_args,
OrderBy => $attr, Order => $new_order
- )
+ ), 'h')
. '">'. loc($title) .'</a>'
);
}
diff --git a/rt/share/html/Elements/CollectionAsTable/ParseFormat b/rt/share/html/Elements/CollectionAsTable/ParseFormat
index e9d3143d3..c2c1c5364 100644
--- a/rt/share/html/Elements/CollectionAsTable/ParseFormat
+++ b/rt/share/html/Elements/CollectionAsTable/ParseFormat
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -77,6 +77,7 @@ while ($Format =~ /($RE{delimited}{-delim=>qq{\'"}}|[{}\w.]+)/go) {
}
elsif ( $col =~ /^__(NEWLINE|NBSP)__$/ || $col =~ /^(NEWLINE|NBSP)$/ ) {
$colref->{'title'} = $1;
+ $colref->{'last_attribute'} = '';
}
elsif ( $col =~ /__(.*?)__/io ) {
my @subcols;
diff --git a/rt/share/html/Elements/CollectionAsTable/Row b/rt/share/html/Elements/CollectionAsTable/Row
index 9037e5d11..f91520952 100644
--- a/rt/share/html/Elements/CollectionAsTable/Row
+++ b/rt/share/html/Elements/CollectionAsTable/Row
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -60,7 +60,6 @@ $Classes => ''
$m->out( '<tr class="' . $Classes . ' '
. ( $Warning ? 'warnline' : $i % 2 ? 'oddline' : 'evenline' ) . '" >'
. "\n" );
-use HTML::Entities;
my $item;
foreach my $column (@Format) {
if ( defined $column->{title} && $column->{title} eq 'NEWLINE' ) {
@@ -77,7 +76,7 @@ foreach my $column (@Format) {
next;
}
- my $class = $column->{class} ? encode_entities( $column->{class}, q{'"&<>} ) : 'collection-as-table';
+ my $class = $column->{class} ? $m->interp->apply_escapes($column->{class}, 'h') : 'collection-as-table';
$m->out(qq{<td class="$class" });
my %attrs;
@@ -131,7 +130,7 @@ foreach my $column (@Format) {
Arguments => [$record, $i],
);
}
- s/\n/<br \/>/gs for grep { defined } @out;
+ s/\n/<br \/>/gs for grep defined $_, @out;
$m->out( $_ .'="'. $m->interp->apply_escapes( $attrs{$_} => 'h' ) .'"' )
foreach grep $attrs{$_}, qw(align style colspan);
diff --git a/rt/share/html/Elements/CollectionList b/rt/share/html/Elements/CollectionList
index 522db5811..402a272b4 100644
--- a/rt/share/html/Elements/CollectionList
+++ b/rt/share/html/Elements/CollectionList
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -51,7 +51,7 @@ if (!$Collection && $Class eq 'RT::Tickets') {
$Collection->FromSQL($Query);
}
-my $TotalFound = $Collection->CountAll();
+$TotalFound = $Collection->CountAll() unless defined $TotalFound;
return '' if !$TotalFound && !$ShowEmpty;
if ( $Rows ) {
@@ -68,7 +68,7 @@ if ( $Rows ) {
# collection is ordered or not
if ( @OrderBy && ($AllowSorting || !$Collection->{'order_by'}) ) {
if ( $OrderBy[0] =~ /\|/ ) {
- @OrderBy = split /\|/, $OrderBy[0];
+ @OrderBy = grep length($_), split /\|/, $OrderBy[0];
@Order = split /\|/,$Order[0];
}
$Collection->OrderByCols(
@@ -105,13 +105,14 @@ foreach my $col (@Format) {
}
}
-$Class ||= ref $Collection;
-$Class =~ s/s$//;
-$Class =~ s/:/_/g;
+$Class ||= $Collection->ColumnMapClassName;
+if ($Class =~ /::/) { # older passed in value
+ $Class =~ s/s$//;
+ $Class =~ s/:/_/g;
+}
-$m->out('<table border="0" cellspacing="0" cellpadding="1"' .
- ' width="100%" class="' .
- ($Collection->isa('RT::Tickets') ? 'ticket-list' : 'collection') . '">');
+$m->out('<table class="' .
+ ($Collection->isa('RT::Tickets') ? 'ticket-list' : 'collection') . ' collection-as-table">');
if ( $ShowHeader ) {
$m->comp('/Elements/CollectionAsTable/Header',
@@ -184,6 +185,7 @@ if ( $Rows && $ShowNavigation && $TotalFound > $Rows ) {
<%ARGS>
$Class => ''
$Collection => undef
+$TotalFound => undef
$Format => undef
$DisplayFormat => undef
@Order => ()
diff --git a/rt/share/html/Elements/CollectionListPaging b/rt/share/html/Elements/CollectionListPaging
index 7be9ea62c..26c082348 100644
--- a/rt/share/html/Elements/CollectionListPaging
+++ b/rt/share/html/Elements/CollectionListPaging
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,22 +55,24 @@ $URLParams => undef
</%ARGS>
<%INIT>
+$BaseURL = $m->interp->apply_escapes($BaseURL, 'h');
+
$m->out(qq{<div class="paging">});
if ($Pages == 1) {
$m->out(loc('Page 1 of 1'));
}
else{
$m->out(loc('Page') . ' ');
-my $prev = $m->comp(
+my $prev = $m->interp->apply_escapes($m->comp(
'/Elements/QueryString',
%$URLParams,
Page => ( $CurrentPage - 1 )
- );
-my $next = $m->comp(
+ ), 'h');
+my $next = $m->interp->apply_escapes($m->comp(
'/Elements/QueryString',
%$URLParams,
Page => ( $CurrentPage + 1 )
- );
+ ), 'h');
my %show;
$show{1} = 1;
$show{$_} = 1 for (($CurrentPage - 2)..($CurrentPage + 2));
@@ -81,7 +83,7 @@ for my $number ( 1 .. $Pages ) {
if ( $show{$number} ) {
$dots = undef;
my $qs =
- $m->comp( '/Elements/QueryString', %$URLParams, Page => $number );
+ $m->interp->apply_escapes($m->comp( '/Elements/QueryString', %$URLParams, Page => $number ), 'h');
$m->out(qq{<span class="pagenum">});
if ( $number == $CurrentPage ) {
$m->out(qq{<span class="currentpage">$number</span> });
diff --git a/rt/share/html/Elements/ColumnMap b/rt/share/html/Elements/ColumnMap
index 5e5354ade..b9c3b4bc8 100644
--- a/rt/share/html/Elements/ColumnMap
+++ b/rt/share/html/Elements/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -73,7 +73,7 @@ my $COLUMN_MAP = {
value => sub { return $_[0]->CreatedObj->AgeAsString }
},
CreatedBy => {
- attribute => 'CreatedBy',
+ attribute => 'Creator',
title => 'Created By', # loc
value => sub { return $_[0]->CreatorObj->Name }
},
@@ -120,14 +120,16 @@ my $COLUMN_MAP = {
my $name = $_[1] || 'SelectedTickets';
my $checked = $m->request_args->{ $name .'All' }? 'checked="checked"': '';
- return \qq{<input type="checkbox" name="${name}All" value="1" $checked
- onclick="setCheckbox(this.form, '$name', this.checked)" />};
+ return \qq{<input type="checkbox" name="}, $name, \qq{All" value="1" $checked
+ onclick="setCheckbox(this.form, },
+ $m->interp->apply_escapes($name,'j'),
+ \qq{, this.checked)" />};
},
value => sub {
my $id = $_[0]->id;
my $name = $_[2] || 'SelectedTickets';
- return \qq{<input type="checkbox" name="$name" value="$id" checked="checked" />}
+ return \qq{<input type="checkbox" name="}, $name, \qq{" value="$id" checked="checked" />}
if $m->request_args->{ $name . 'All'};
my $arg = $m->request_args->{ $name };
@@ -138,7 +140,7 @@ my $COLUMN_MAP = {
elsif ( $arg ) {
$checked = 'checked="checked"' if $arg == $id;
}
- return \qq{<input type="checkbox" name="$name" value="$id" $checked />}
+ return \qq{<input type="checkbox" name="}, $name, \qq{" value="$id" $checked />}
},
},
RadioButton => {
@@ -150,7 +152,7 @@ my $COLUMN_MAP = {
my $arg = $m->request_args->{ $name };
my $checked = '';
$checked = 'checked="checked"' if $arg && $arg == $id;
- return \qq{<input type="radio" name="SelectedTicket" value="$id" $checked />};
+ return \qq{<input type="radio" name="}, $name, \qq{" value="$id" $checked />};
},
},
(map {
diff --git a/rt/share/html/Elements/CreateTicket b/rt/share/html/Elements/CreateTicket
index 02275ef34..6702abcbf 100755
--- a/rt/share/html/Elements/CreateTicket
+++ b/rt/share/html/Elements/CreateTicket
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,8 +45,14 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<form action="<% RT->Config->Get('WebPath') %><% $SendTo %>" name="CreateTicketInQueue" id="CreateTicketInQueue">
-<&|/l, $m->scomp('/Elements/SelectNewTicketQueue', OnChange => 'document.CreateTicketInQueue.submit()', SendTo => $SendTo ) &><input type="submit" class="button" value="New ticket in" />&nbsp;[_1]</&>
+<form action="<% RT->Config->Get('WebPath') %><% $SendTo %>" name="CreateTicketInQueue" id="CreateTicketInQueue" \
+% $m->callback(CallbackName => 'InFormElement');
+>
+% my $button_start = '<input type="submit" class="button" value="';
+% my $button_end = '" />';
+% my $queue_selector = $m->scomp('/Elements/SelectNewTicketQueue', OnChange => 'document.CreateTicketInQueue.submit()', SendTo => $SendTo );
+<&|/l_unsafe, $button_start, $button_end, $queue_selector &>[_1]New ticket in[_2]&nbsp;[_3]</&>
+% $m->callback(CallbackName => 'BeforeFormEnd');
</form>
<%ARGS>
$SendTo => '/Ticket/Create.html',
diff --git a/rt/share/html/Elements/CustomerFields b/rt/share/html/Elements/CustomerFields
index 553a34999..d5419d213 100644
--- a/rt/share/html/Elements/CustomerFields
+++ b/rt/share/html/Elements/CustomerFields
@@ -16,7 +16,6 @@ About the keys:
name to sort by.
</%doc>
<%once>
-return unless $RT::URI::freeside::IntegrationType eq 'Internal';
my @customer_fields = ( # ordered
{
@@ -158,8 +157,12 @@ sub select_table {
sub ticket_cust_resolvers {
my $Ticket = shift;
- my @Customers = @{ $Ticket->Customers->ItemsArrayRef };
- return map $_->TargetURI->Resolver, @Customers;
+ my @Customers = map { $_->TargetURI->Resolver->CustomerResolver }
+ @{ $Ticket->Customers->ItemsArrayRef };
+ # this can contain cust_svc links, careful
+ # uniq
+ my %seen = map { $_->URI => $_ } @Customers;
+ values %seen;
}
sub cust_info_attribute { # the simple case of $resolver->CustomerInfo->{foo}
@@ -177,7 +180,6 @@ sub cust_info_attribute { # the simple case of $resolver->CustomerInfo->{foo}
</%once>
<%init>
-return unless $RT::URI::freeside::IntegrationType eq 'Internal';
my $arg = shift;
if ( $arg eq 'Names' ) {
@@ -198,9 +200,11 @@ elsif ( $arg eq 'ColumnMap' ) {
grep { exists $_->{Display} }
@customer_fields;
}
-elsif ( $arg eq 'PickBasics' ) {
+elsif ( $arg eq 'Criteria' ) {
return map {
my $f = $_;
+ # argument to Search/Elements/ConditionRow
+ $f->{Condition} ||
{
Name => ($f->{QueryName} || $f->{Name}),
Field => ($f->{QueryLabel} || $f->{Label}),
@@ -208,7 +212,7 @@ elsif ( $arg eq 'PickBasics' ) {
Value => $f->{Value},
}
} #map
- grep { exists $_->{Value} }
+ grep { exists $_->{Condition} || exists $_->{Value} }
@customer_fields;
}
else { die "unknown CustomerFields mode '$arg'\n"; }
diff --git a/rt/share/html/Elements/Dashboards b/rt/share/html/Elements/Dashboards
index d13477b97..4867a75a0 100644
--- a/rt/share/html/Elements/Dashboards
+++ b/rt/share/html/Elements/Dashboards
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,22 +45,13 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<div class="dashboards">
<&|/Widgets/TitleBox,
- title => loc("Dashboards"),
+ title => loc('Dashboards'),
title_href => RT->Config->Get('WebPath').'/Dashboards/index.html',
- bodyclass => "",
titleright => loc("Edit"),
- titleright_href => RT->Config->Get('WebPath').'/Dashboards/',
+ titleright_href => RT->Config->Get('WebPath').'/Dashboards/index.html',
&>
-<& /Dashboards/Elements/ShowDashboards:table,
- Dashboards => \@dashboards,
- Verbose => 0,
-&>
-</&>
-</div>
-<%INIT>
-my @dashboards = $m->comp("/Dashboards/Elements/ListOfDashboards");
-</%INIT>
+<& /Dashboards/Elements/ShowDashboards, IncludeSuperuserGroups => 0 &>
+</&>
diff --git a/rt/share/html/Elements/EditCustomField b/rt/share/html/Elements/EditCustomField
index 6c5d7f5cf..b74c4844e 100644
--- a/rt/share/html/Elements/EditCustomField
+++ b/rt/share/html/Elements/EditCustomField
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -85,7 +85,7 @@ if ($MaxValues == 1 && $Values) {
}
# The "Magic" hidden input causes RT to know that we were trying to edit the field, even if
# we don't see a value later, since browsers aren't compelled to submit empty form fields
-$m->out("\n".'<input type="hidden" class="hidden" name="'.$NamePrefix.$CustomField->Id.'-Values-Magic" value="1" />'."\n");
+$m->out("\n".'<input type="hidden" class="hidden" name="'.$m->interp->apply_escapes($NamePrefix, 'h').$CustomField->Id.'-Values-Magic" value="1" />'."\n");
my $EditComponent = "EditCustomField$Type";
$m->callback( %ARGS, CallbackName => 'EditComponentName', Name => \$EditComponent, CustomField => $CustomField, Object => $Object );
diff --git a/rt/share/html/Elements/EditCustomFieldAutocomplete b/rt/share/html/Elements/EditCustomFieldAutocomplete
index 13a43ed67..911e60707 100644
--- a/rt/share/html/Elements/EditCustomFieldAutocomplete
+++ b/rt/share/html/Elements/EditCustomFieldAutocomplete
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,22 +46,38 @@
%#
%# END BPS TAGGED BLOCK }}}
% if ( $Multiple ) {
-<textarea cols="<% $Cols %>" rows="<% $Rows %>" name="<% $name %>-Values" id="<% $name %>-Values" class="CF-<%$CustomField->id%>-Edit"><% $Default %></textarea><div id="<% $name %>-Choices" class="autocomplete"></div>
+<textarea cols="<% $Cols %>" rows="<% $Rows %>" name="<% $name %>-Values" id="<% $name %>-Values" class="CF-<%$CustomField->id%>-Edit"><% $Default || '' %></textarea>
+
<script type="text/javascript">
-new Ajax.Autocompleter(
- "<% $name %>-Values",
- "<% $name %>-Choices",
- "<% RT->Config->Get('WebPath')%>/Helpers/Autocomplete/CustomFieldValues",
- { tokens: [ '\n' ] }
+var id = <% "$name-Values" |n,j%>;
+id = id.replace(/:/g,'\\:');
+jQuery('#'+id).autocomplete( {
+ source: <%RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/CustomFieldValues?"+<% $Context |n,j %>+<% "$name-Values" |n,u,j%>,
+ focus: function () {
+ // prevent value inserted on focus
+ return false;
+ },
+ select: function(event, ui) {
+ var terms = this.value.split(/\n/);
+ // remove the current input
+ terms.pop();
+ // add the selected item
+ terms.push( ui.item.value );
+ // add placeholder to get the comma-and-space at the end
+ terms.push("");
+ this.value = terms.join("\n");
+ return false;
+ }
+}
);
% } else {
-<input type="text" id="<% $name %>-Value" name="<% $name %>-Value" class="CF-<%$CustomField->id%>-Edit" value="<% $Default %>"/><div id="<% $name %>-Choices" class="autocomplete"></div>
+<input type="text" id="<% $name %>-Value" name="<% $name %>-Value" class="CF-<%$CustomField->id%>-Edit" value="<% $Default || '' %>"/>
<script type="text/javascript">
-new Ajax.Autocompleter(
- "<% $name %>-Value",
- "<% $name %>-Choices",
- "<% RT->Config->Get('WebPath')%>/Helpers/Autocomplete/CustomFieldValues",
- {}
+var id = <% "$name-Value" |n,j%>;
+id = id.replace(/:/g,'\\:');
+jQuery('#'+id).autocomplete( {
+ source: <%RT->Config->Get('WebPath')|n,j%>+"/Helpers/Autocomplete/CustomFieldValues?"+<% $Context |n,j %>+<% "$name-Value" |n,u,j%>
+}
);
% }
</script>
@@ -76,6 +92,11 @@ if ( $Multiple and $Values ) {
$Default .= $value->Content ."\n";
}
}
+my $Context = "";
+if ($CustomField->ContextObject) {
+ $Context .= "ContextId=" . $CustomField->ContextObject->Id . "&";
+ $Context .= "ContextType=". ref($CustomField->ContextObject) . "&";
+}
</%INIT>
<%ARGS>
$CustomField => undef
diff --git a/rt/share/html/Elements/EditCustomFieldBinary b/rt/share/html/Elements/EditCustomFieldBinary
index 1128c5a18..0a2098556 100644
--- a/rt/share/html/Elements/EditCustomFieldBinary
+++ b/rt/share/html/Elements/EditCustomFieldBinary
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/EditCustomFieldCombobox b/rt/share/html/Elements/EditCustomFieldCombobox
index 970b11b30..6d8f74376 100644
--- a/rt/share/html/Elements/EditCustomFieldCombobox
+++ b/rt/share/html/Elements/EditCustomFieldCombobox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/EditCustomFieldDate b/rt/share/html/Elements/EditCustomFieldDate
index b6359d7e0..c66640fab 100644
--- a/rt/share/html/Elements/EditCustomFieldDate
+++ b/rt/share/html/Elements/EditCustomFieldDate
@@ -1,40 +1,40 @@
%# BEGIN BPS TAGGED BLOCK {{{
-%#
+%#
%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%# <jesse@bestpractical.com>
-%#
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
+%#
+%#
%# LICENSE:
-%#
+%#
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
-%#
+%#
%# This work is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%# General Public License for more details.
-%#
+%#
%# You should have received a copy of the GNU General Public License
%# along with this program; if not, write to the Free Software
%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/copyleft/gpl.html.
-%#
-%#
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
%# CONTRIBUTION SUBMISSION POLICY:
-%#
+%#
%# (The following paragraph is not intended to limit the rights granted
%# to you to modify and distribute this software under the terms of
%# the GNU General Public License and is only of importance to you if
%# you choose to contribute your changes and enhancements to the
%# community by submitting them to Best Practical Solutions, LLC.)
-%#
+%#
%# By intentionally submitting any modifications, corrections or
%# derivatives to this work, or any other work intended for use with
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
@@ -43,14 +43,14 @@
%# royalty-free, perpetual, license to use, copy, create derivative
%# works based on those contributions, and sublicense and distribute
%# those contributions and any derivatives thereof.
-%#
+%#
%# END BPS TAGGED BLOCK }}}
% my $name = $NamePrefix.$CustomField->Id.'-Values';
-<& /Elements/SelectDate, Name => "$name", ShowTime => 0, current => 0 &> (<%$DateObj->AsString%>)
+<& /Elements/SelectDate, Name => "$name", current => 0, ShowTime => 0 &> (<%$DateObj->AsString(Time => 0)%>)
<%INIT>
-my $DateObj = new RT::Date ( $session{'CurrentUser'} );
-$DateObj->Set( Format => 'ISO', Value => $Default );
+my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
+$DateObj->Set( Format => 'unknown', Value => $Default );
</%INIT>
<%ARGS>
$Object => undef
diff --git a/rt/share/html/Elements/EditCustomFieldDateTime b/rt/share/html/Elements/EditCustomFieldDateTime
new file mode 100644
index 000000000..a558884b0
--- /dev/null
+++ b/rt/share/html/Elements/EditCustomFieldDateTime
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% my $name = $NamePrefix.$CustomField->Id.'-Values';
+<& /Elements/SelectDate, Name => "$name", current => 0 &> (<%$DateObj->AsString%>)
+
+<%INIT>
+my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
+$DateObj->Set( Format => 'ISO', Value => $Default );
+</%INIT>
+<%ARGS>
+$Object => undef
+$CustomField => undef
+$NamePrefix => undef
+$Default => undef
+$Values => undef
+$MaxValues => 1
+</%ARGS>
diff --git a/rt/share/html/Elements/EditCustomFieldFreeform b/rt/share/html/Elements/EditCustomFieldFreeform
index 542d94bf9..7a5a458bb 100644
--- a/rt/share/html/Elements/EditCustomFieldFreeform
+++ b/rt/share/html/Elements/EditCustomFieldFreeform
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Admin/Groups/CustomFields.html b/rt/share/html/Elements/EditCustomFieldIPAddress
index 21f15a99b..ae57fce87 100644
--- a/rt/share/html/Admin/Groups/CustomFields.html
+++ b/rt/share/html/Elements/EditCustomFieldIPAddress
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,4 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/ObjectCustomFields, %ARGS, ObjectType => 'RT::Group' &>
+<%INIT>
+return $m->comp( 'EditCustomFieldFreeform', %ARGS );
+</%INIT>
diff --git a/rt/share/html/NoAuth/css/3.5-default/local.css b/rt/share/html/Elements/EditCustomFieldIPAddressRange
index e8925d216..ae57fce87 100644
--- a/rt/share/html/NoAuth/css/3.5-default/local.css
+++ b/rt/share/html/Elements/EditCustomFieldIPAddressRange
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,6 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-%# This is the file you want to override in local/html for adding
-%# custom css.
-
+<%INIT>
+return $m->comp( 'EditCustomFieldFreeform', %ARGS );
+</%INIT>
diff --git a/rt/share/html/Elements/EditCustomFieldImage b/rt/share/html/Elements/EditCustomFieldImage
index 6a3ed4b7f..09cbf85f3 100644
--- a/rt/share/html/Elements/EditCustomFieldImage
+++ b/rt/share/html/Elements/EditCustomFieldImage
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/EditCustomFieldSelect b/rt/share/html/Elements/EditCustomFieldSelect
index bf2a8289d..ed6bb146f 100644
--- a/rt/share/html/Elements/EditCustomFieldSelect
+++ b/rt/share/html/Elements/EditCustomFieldSelect
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@
% if (!$HideCategory and @category and not $CustomField->BasedOnObj->id) {
<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/cascaded.js"></script>
%# XXX - Hide this select from w3m?
- <select onchange="filter_cascade('<% $id %>-Values', this.value)" name="<% $id %>-Category" class="CF-<%$CustomField->id%>-Edit">
+ <select onchange="filter_cascade(<% "$id-Values" |n,j%>, this.value)" name="<% $id %>-Category" class="CF-<%$CustomField->id%>-Edit">
<option value=""<% !$selected && qq[ selected="selected"] |n %>><&|/l&>-</&></option>
% foreach my $cat (@category) {
% my ($depth, $name) = @$cat;
@@ -65,13 +65,13 @@
% } elsif ($CustomField->BasedOnObj->id) {
<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/cascaded.js"></script>
<script type="text/javascript"><!--
-doOnLoad( function () {
- var basedon = document.getElementById('<% $NamePrefix . $CustomField->BasedOnObj->id %>-Values');
+jQuery( function () {
+ var basedon = document.getElementById(<% $NamePrefix . $CustomField->BasedOnObj->id . "-Values" |n,j%>);
if (basedon != null) {
var oldchange = basedon.onchange;
basedon.onchange = function () {
filter_cascade(
- '<% $id %>-Values',
+ <% "$id-Values" |n,j%>,
basedon.value,
1
);
@@ -91,6 +91,22 @@ doOnLoad( function () {
% $m->out($out);
</select>
% }
+
+% if ( $RenderType eq 'List' ) {
+<fieldset class="cfedit">
+% if ( $checktype eq 'radio' ) {
+ <input type="<% $checktype %>" name="<% $name %>" id="<% $name %>-none" value="" <% keys %default ? '' : ' checked="checked"' |n%> />
+ <label for="<% $name %>-none"><&|/l&>(no value)</&></label><br />
+% }
+% my $CFVs = $CustomField->Values;
+% while ( my $value = $CFVs->Next ) {
+% my $content = $value->Name;
+% my $labelid = "$name-". $value->id;
+ <input type="<% $checktype %>" name="<% $name %>" id="<% $labelid %>" value="<% $content %>" <% $default{ lc $content }? ' checked="checked"' : '' |n%> />
+ <label for="<% $labelid %>"><% $content %></label><br />
+% }
+</fieldset>
+% } else {
<select
name="<%$id%>-Values" id="<%$id%>-Values" class="CF-<%$CustomField->id%>-Edit"
% if ( $Rows && ( $Multiple || !@category ) ) {
@@ -100,15 +116,40 @@ doOnLoad( function () {
<option value=""<% !$selected && qq[ selected="selected"] |n %>><&|/l&>(no value)</&></option>
% $m->out($out);
</select>
+% }
+<%init>
+# Handle render types
+$RenderType ||= $CustomField->RenderType;
+if ( $RenderType eq 'Dropdown' ) {
+ # Turn it into a dropdown
+ $Rows = 0;
+}
+
+# The following is for rendering checkboxes / radio buttons only
+my ($checktype, $name);
+if ( $MaxValues == 1 ) {
+ ($checktype, $name) = ('radio', $NamePrefix . $CustomField->Id . '-Value');
+} else {
+ ($checktype, $name) = ('checkbox', $NamePrefix . $CustomField->Id . '-Values');
+}
+
+@Default = grep defined && length, @Default;
+if ( !@Default && $Values ) {
+ @Default = map $_->Content, @{ $Values->ItemsArrayRef };
+}
+my %default = map {lc $_ => 1} @Default;
+</%init>
<%ARGS>
$Object => undef
$CustomField => undef
$NamePrefix => undef
-$Default => undef
+@Default => ()
$Values => undef
$Multiple => 0
$Rows => undef
$HideCategory => 0
+$RenderType => undef
+$MaxValues => 1
</%ARGS>
<%METHOD options>
diff --git a/rt/share/html/Elements/EditCustomFieldText b/rt/share/html/Elements/EditCustomFieldText
index 53ec5a94c..65a5e3bcf 100644
--- a/rt/share/html/Elements/EditCustomFieldText
+++ b/rt/share/html/Elements/EditCustomFieldText
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/EditCustomFieldWikitext b/rt/share/html/Elements/EditCustomFieldWikitext
index 30e3d5e03..a07317e2f 100644
--- a/rt/share/html/Elements/EditCustomFieldWikitext
+++ b/rt/share/html/Elements/EditCustomFieldWikitext
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/EditLinks b/rt/share/html/Elements/EditLinks
index d6d1ee955..40667a869 100755
--- a/rt/share/html/Elements/EditLinks
+++ b/rt/share/html/Elements/EditLinks
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -119,6 +119,7 @@
<h3><&|/l&>New Links</&></h3>
% if (ref($Object) eq 'RT::Ticket') {
<i><&|/l&>Enter tickets or URIs to link tickets to. Separate multiple entries with spaces.</&>
+<br /><&|/l&>You may enter links to Articles as "a:###", where ### represents the number of the Article.</&>
% $m->callback( CallbackName => 'ExtraLinkInstructions' );
</i><br />
% } elsif (ref($Object) eq 'RT::Queue') {
diff --git a/rt/share/html/Elements/EditPassword b/rt/share/html/Elements/EditPassword
index eaa3d7552..06e816d9e 100644
--- a/rt/share/html/Elements/EditPassword
+++ b/rt/share/html/Elements/EditPassword
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/EditTimeValue b/rt/share/html/Elements/EditTimeValue
index 8e2e64537..40e3b677a 100644
--- a/rt/share/html/Elements/EditTimeValue
+++ b/rt/share/html/Elements/EditTimeValue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -58,8 +58,8 @@ $InputUnits => 'minutes'
$ValueName ||= $Name;
$UnitName ||= ($Name||$ValueName) . '-TimeUnits';
-if ($InputUnits eq 'minutes' && RT->Config->Get('DefaultTimeUnitsToHours')) {
- $Default = sprintf '%.3g', $Default / 60
+if ($InputUnits eq 'minutes' && RT->Config->Get('DefaultTimeUnitsToHours', $session{'CurrentUser'})) {
+ $Default = sprintf '%.3f', $Default / 60
unless $Default eq '';
}
</%INIT>
diff --git a/rt/share/html/Elements/EmailInput b/rt/share/html/Elements/EmailInput
index dbd45a23c..67eb57c2c 100644
--- a/rt/share/html/Elements/EmailInput
+++ b/rt/share/html/Elements/EmailInput
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,7 +45,7 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<input name="<% $Name %>" size="<% $Size %>" value="<% $Default || '' %>" />
+<input type="text" id="<% $Name %>" name="<% $Name %>" <% defined $Size ? qq{size="$Size"} : '' |n %> value="<% $Default || '' %>" />
<%ARGS>
$Name
$Size => 40
diff --git a/rt/share/html/Elements/Error b/rt/share/html/Elements/Error
index 84593735c..87dfd0245 100755
--- a/rt/share/html/Elements/Error
+++ b/rt/share/html/Elements/Error
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,7 +49,7 @@
% unless ($SuppressHeader) {
<& /Elements/Header, Code => $Code, Why => $Why, Title => $Title &>
-<& /Elements/Tabs, Title => $Title &>
+<& /Elements/Tabs &>
% }
<div class="error">
@@ -81,7 +81,7 @@ Encode::_utf8_off($error);
$RT::Logger->error($error);
-if ( defined $session{'SessionType'} && $session{'SessionType'} eq 'REST' ) {
+if ( $session{'REST'} ) {
$r->content_type('text/plain');
$m->out( "Error: " . $Why . "\n" );
$m->out( $Details . "\n" ) if defined $Details && length $Details;
diff --git a/rt/share/html/Elements/Footer b/rt/share/html/Elements/Footer
index e339a05e0..76819747c 100755
--- a/rt/share/html/Elements/Footer
+++ b/rt/share/html/Elements/Footer
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,10 +55,8 @@
<%$d->Dump() %>
</pre>
% }
-
</body>
</html>
-
<%ARGS>
$Debug => 0
$Menu => 1
diff --git a/rt/share/html/NoAuth/css/3.5-default/ticket-search.css b/rt/share/html/Elements/Framekiller
index 1c49820e9..3b54da192 100644
--- a/rt/share/html/NoAuth/css/3.5-default/ticket-search.css
+++ b/rt/share/html/Elements/Framekiller
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,42 +45,23 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#comp-Search-Build #body {
- position: relative;
-}
-
-#editquery, #editsearches{
- position: absolute;
- right: 1em;
- width: 40%;
-}
+% if ( RT->Config->Get('Framebusting') ) {
+%# This is defeatable. The current best known implemention uses CSS to hide
+%# the content and JS to re-show it, but that fails poorly for clients that
+%# don't run JS.
+<script>
+if (window.top !== window.self) {
+ document.write = "";
-#editsearches {
- top: 24em;
-}
-
-
-#pick-criteria {
- width: 58%;
-}
+ window.top.location = window.self.location;
-#comp-Search-Build .submit {
- width: 58%;
- border: none;
- margin: 0;
- padding: 0;
-}
-
-
-#sorting.titlebox {
- width: 58%;
- margin-top: 4em;
-}
-
-#formatbuttons .submit {
- width: 100%;
-}
+ setTimeout(function(){
+ document.body.innerHTML = "";
+ }, 1);
-.refresh {
- float: left;
+ window.self.onload = function(){
+ document.body.innerHTML = "";
+ };
}
+</script>
+% }
diff --git a/rt/share/html/Elements/GnuPG/KeyIssues b/rt/share/html/Elements/GnuPG/KeyIssues
index 6478b1af2..23276c251 100644
--- a/rt/share/html/Elements/GnuPG/KeyIssues
+++ b/rt/share/html/Elements/GnuPG/KeyIssues
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/GnuPG/SelectKeyForEncryption b/rt/share/html/Elements/GnuPG/SelectKeyForEncryption
index 383553792..d61cde513 100644
--- a/rt/share/html/Elements/GnuPG/SelectKeyForEncryption
+++ b/rt/share/html/Elements/GnuPG/SelectKeyForEncryption
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/GnuPG/SelectKeyForSigning b/rt/share/html/Elements/GnuPG/SelectKeyForSigning
index 8e2b837de..244b46464 100644
--- a/rt/share/html/Elements/GnuPG/SelectKeyForSigning
+++ b/rt/share/html/Elements/GnuPG/SelectKeyForSigning
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/GnuPG/SignEncryptWidget b/rt/share/html/Elements/GnuPG/SignEncryptWidget
index 8be14af73..0ae0f841f 100644
--- a/rt/share/html/Elements/GnuPG/SignEncryptWidget
+++ b/rt/share/html/Elements/GnuPG/SignEncryptWidget
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,15 @@
%#
%# END BPS TAGGED BLOCK }}}
<table><tr>
-<td><% loc('Sign')%></td>
-<td><& /Widgets/Form/Boolean:InputOnly, Name => 'Sign', CurrentValue => $self->{'Sign'} &>
-using <& SelectKeyForSigning, User => $session{'CurrentUser'}->UserObj &>
-</td>
+% my $columnsplit = "</td><td>";
+<td><% loc( 'Sign[_1][_2] using [_3]',
+ $columnsplit,
+ $m->scomp('/Widgets/Form/Boolean:InputOnly',
+ Name => 'Sign', CurrentValue => $self->{'Sign'}
+ ),
+ $m->scomp('SelectKeyForSigning', User => $session{'CurrentUser'}->UserObj ),
+) |n %></td>
+
<td><% loc('Encrypt')%></td>
<td><& /Widgets/Form/Boolean:InputOnly, Name => 'Encrypt', CurrentValue => $self->{'Encrypt'} &></td>
</tr></table>
@@ -143,23 +148,11 @@ if ( $self->{'Encrypt'} ) {
my @recipients;
if ( $Operation eq 'Update' ) {
- # skip any email addresses that we won't be sending mail to
- my %squelch = $m->comp(
- '/Ticket/Elements/PreviewScrips:SquelchRecipients',
- %$self,
- TicketObj => $TicketObj
- );
-
- @recipients = $m->comp(
- '/Ticket/Elements/PreviewScrips:GetRecipients',
- %$self, TicketObj => $TicketObj
- );
+ @recipients = $TicketObj->DryRun(%$self)->Recipients;
}
elsif ( $Operation eq 'Create' ) {
- @recipients = $m->comp(
- '/Ticket/Elements/PreviewScrips:GetRecipientsOnCreate',
- %$self,
- );
+ $TicketObj = RT::Ticket->new( $session{'CurrentUser'} );
+ @recipients = $TicketObj->DryRunCreate(%$self)->Recipients;
}
else {
$RT::Logger->crit('Incorrect operation: '. $Operation );
diff --git a/rt/share/html/Elements/GotoTicket b/rt/share/html/Elements/GotoTicket
index 06ab81835..52db37532 100755
--- a/rt/share/html/Elements/GotoTicket
+++ b/rt/share/html/Elements/GotoTicket
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/Header b/rt/share/html/Elements/Header
index 64d548dc3..1830c4bf2 100755
--- a/rt/share/html/Elements/Header
+++ b/rt/share/html/Elements/Header
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,11 +49,14 @@
'title' => $Title,
'head' => $head,
'etc' => $etc,
- 'nobr' => 1,
+ #make space for RT menu for now# 'nobr' => 1,
'nocss' => 1,
}
&>
<%INIT>
+#for "Site CSS from theme editor" below
+#use Scalar::Util qw(blessed);
+
$r->headers_out->{'Pragma'} = 'no-cache';
$r->headers_out->{'Cache-control'} = 'no-cache';
@@ -65,23 +68,38 @@ $id =~ s|index$||g
if $id ne 'index';
$id =~ s|-$||g;
+my $style = $session{'CurrentUser'}
+ ? $session{'CurrentUser'}->Stylesheet
+ : RT->Config->Get('WebDefaultStylesheet');
+
+my @css_files;
+if ( RT->Config->Get('DevelMode') ) {
+ @css_files = ( "$style/main.css", RT->Config->Get('CSSFiles' ) );
+}
+else {
+ my $key =
+ RT::Interface::Web::SquishedCSS( $style )->Key;
+ @css_files = "$style-squished-$key.css";
+}
+
my $head = '';
+#XXX $head .= <& /Elements/Framekiller &>;
+
if ($Refresh && $Refresh =~ /^(\d+)/ && $1 > 0) {
- $head .= qq( <meta http-equiv="refresh" content="$Refresh" /> );
+ my $URL = $m->notes->{RefreshURL}; $URL = $URL ? ";URL=$URL" : "";
+ $head .= qq( <meta http-equiv="refresh" content="$1$URL" /> );
}
my $WebPath = RT->Config->Get('WebPath');
my $WebImagesURL = RT->Config->Get('WebImagesURL');
-my $WebDefaultStylesheet =
- RT->Config->Get('WebDefaultStylesheet', $session{'CurrentUser'});
my $squished = RT->Config->Get('DevelMode') ? '' : '-squished';
-$head .= <<END;
-<link rel="shortcut icon" href="$WebImagesURL/favicon.png" type="image/png" />
-<link rel="stylesheet" href="$WebPath/NoAuth/css/$WebDefaultStylesheet/main$squished.css" type="text/css" media="all" />
-<link rel="stylesheet" href="$WebPath/NoAuth/css/print.css" type="text/css" media="print" />
-END
+$head .= qq(<link rel="shortcut icon" href="${WebImagesURL}favicon.png" type="image/png" />\n);
+for my $cssfile ( @css_files ) {
+ $head .= qq(<link rel="stylesheet" href="$WebPath/NoAuth/css/$cssfile" type="text/css" media="all" />\n);
+}
+$head .= qq(<link rel="stylesheet" href="$WebPath/NoAuth/css/print.css" type="text/css" media="print" />\n);
for (keys %{$LinkRel || {}}) {
$head .= qq(<link rel="$_" href="$WebPath) . $LinkRel->{$_} . '" />';
@@ -92,18 +110,27 @@ if ( $RSSAutoDiscovery ) {
}
if ($JavaScript) {
- $head .= $m->scomp('HeaderJavascript', focus => $Focus, onload => $onload);
+ $head .= $m->scomp('HeaderJavascript', focus => $Focus, onload => $onload, RichText => $RichText );
}
-my $stylesheet_plugin = "/NoAuth/css/$WebDefaultStylesheet/InHeader";
+my $stylesheet_plugin = "/NoAuth/css/$style/InHeader";
if ($m->comp_exists($stylesheet_plugin) ) {
$head .= $m->scomp($stylesheet_plugin);
}
+#<!-- Site CSS from theme editor -->
+#<style type="text/css" media="all" id="sitecss">
+#%# Header is used when there isn't a database (such as in the Installer) which means there is no
+#%# RT::System object, nor are there attributes.
+#% if (blessed(RT->System) and my $attr = RT->System->FirstAttribute('UserCSS')) {
+#<% $attr->Content |n %>
+#% }
+#</style>
+
# $m->callback( %ARGS, CallbackName => 'Head' );
$head .= $m->scomp( '/Elements/Callback', _CallbackName => 'Head', %ARGS );
-my $etc = '';
+my $etc = qq[ class="\L$style" ];
$etc .= qq[ id="comp-$id"] if $id;
</%INIT>
@@ -121,4 +148,6 @@ $RSSAutoDiscovery => undef
$onload => undef
$LinkRel => undef
$JavaScript => 1
+$SkipDoctype => 0
+$RichText => 1
</%ARGS>
diff --git a/rt/share/html/Elements/HeaderJavascript b/rt/share/html/Elements/HeaderJavascript
index ce0b97621..28788db57 100644
--- a/rt/share/html/Elements/HeaderJavascript
+++ b/rt/share/html/Elements/HeaderJavascript
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,75 +49,39 @@
$focus => undef
$onload => undef
</%args>
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/util.js"></script>
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/titlebox-state.js"></script>
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/ahah.js"></script>
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/prototype/prototype.js"></script>
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/scriptaculous/scriptaculous.js?load=effects,controls"></script>
-% if ( RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'}) ) {
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/RichText/fckeditor.js"></script>
+
+% for my $jsfile ( @js_files ) {
+<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/js/<% $jsfile %>"></script>
+% }
+
+% if ( $RichText and RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'}) ) {
+<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/RichText/ckeditor.js"></script>
% }
<script type="text/javascript"><!--
- doOnLoad(loadTitleBoxStates);
+ jQuery( loadTitleBoxStates );
% if ( $focus ) {
- doOnLoad(function () { focusElementById('<% $focus %>') });
+ jQuery(function () { focusElementById(<% $focus |n,j%>) });
% }
-
% if ( $onload ) {
- doOnLoad(<% $onload |n %>);
+ jQuery( <% $onload |n %> );
% }
-% if ( RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'})) {
- function ReplaceAllTextareas() {
- var sAgent = navigator.userAgent.toLowerCase();
- if (!FCKeditor_IsCompatibleBrowser() ||
- sAgent.indexOf('iphone') != -1 ||
- sAgent.indexOf('ipad') != -1 ||
- sAgent.indexOf('android') != -1 )
- return false;
-
- // replace all content and signature message boxes
- var allTextAreas = document.getElementsByTagName("textarea");
-
- for (var i=0; i < allTextAreas.length; i++) {
- var textArea = allTextAreas[i];
- if ( (textArea.getAttribute('class') == 'messagebox')
- || (textArea.getAttribute('className') == 'messagebox')) {
- // Turn the original plain text content into HTML
-
-%# Special case - when we re-edit a textarea, don't re-encode it
-% if (!$m->request_args->{'FCKeditorEncoded'}) {
- textArea.value = textArea.value.replace(
- /&/g, "&amp;"
- ).replace(
- /</g, "&lt;"
- ).replace(
- />/g, "&gt;"
- ).replace(
- /\n/g, "\n<br />"
- );
+% if ( $RichText and RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'})) {
+ jQuery().ready(function () { ReplaceAllTextareas(<%$m->request_args->{'CKeditorEncoded'} || 0 |n,j%>) });
% }
+--></script>
+<%ARGS>
+$RichText => 1
+</%ARGS>
+<%INIT>
-%# for this template..
- var FCKeditorEncoded = document.createElement('input');
- FCKeditorEncoded.setAttribute('type', 'hidden');
- FCKeditorEncoded.setAttribute('name', 'FCKeditorEncoded');
- FCKeditorEncoded.setAttribute('value', '1');
- textArea.parentNode.appendChild(FCKeditorEncoded);
-
-%# for FCKeditor..
- var typeField = document.createElement('input');
- typeField.setAttribute('type', 'hidden');
- typeField.setAttribute('name', textArea.name + 'Type');
- typeField.setAttribute('value', 'text/html');
- textArea.parentNode.appendChild(typeField);
+my @js_files;
+if ( RT->Config->Get('DevelMode') ) {
+ @js_files = RT->Config->Get('JSFiles' );
+}
+else {
+ my $key = RT::Interface::Web::SquishedJS()->Key;
+ @js_files = "squished-$key.js";
+}
- var oFCKeditor = new FCKeditor( textArea.name, '100%', <% RT->Config->Get('MessageBoxRichTextHeight', $session{CurrentUser} ) %> );
- oFCKeditor.BasePath = "<%RT->Config->Get('WebPath')%>/NoAuth/RichText/";
- oFCKeditor.ReplaceTextarea();
- }
- }
- }
- doOnLoad(ReplaceAllTextareas);
-% }
---></script>
+</%INIT>
diff --git a/rt/share/html/Elements/ListActions b/rt/share/html/Elements/ListActions
index c0dee5bb7..999d3fe5b 100755
--- a/rt/share/html/Elements/ListActions
+++ b/rt/share/html/Elements/ListActions
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/ListMenu b/rt/share/html/Elements/ListMenu
index 57489e31f..7c9af5c5d 100644
--- a/rt/share/html/Elements/ListMenu
+++ b/rt/share/html/Elements/ListMenu
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,13 +46,45 @@
%#
%# END BPS TAGGED BLOCK }}}
<%args>
-$items
+$menu
</%args>
<ul class="list-menu">
-% foreach my $key (sort keys %$items) {
-<li><span class="menu-item"><a href="<%RT->Config->Get('WebPath')%><%$items->{$key}->{'path'}|n %>"><%$items->{$key}->{'title'}%></a></span><br />
-<span class="description"><%$items->{$key}->{description} || $items->{$key}->{text} %></span>
-
+% for my $child ($menu->children) {
+<li><span class="menu-item"><% $show_link->( $child ) |n %></span><br />
+% if ( my $description = $child->description ) {
+<span class="description"><% $description %></span>\
+% }
</li>
-%}
+% }
</ul>
+
+<%INIT>
+my $web_path = RT->Config->Get('WebPath');
+my $interp = $m->interp;
+my $show_link = sub {
+ my $e = shift;
+ my $res = '';
+ if ( $e->path) {
+ $res .= '<a';
+ my $url = (not $e->path or $e->path =~ m{^\w+:/})
+ ? $e->path
+ : $web_path . $e->path;
+ $res .= ' href="'. $interp->apply_escapes($url, 'h') .'"'
+ if $url;
+
+ if ( $e->target ) {
+ $res .= ' target="'. $interp->apply_escapes( $e->target, 'h' ) .'"';
+ }
+ $res .= '>';
+ }
+
+ my $title = $e->title;
+ $title = $interp->apply_escapes( $title, 'h' );
+ $res .= $title;
+
+ if ( $e->path) {
+ $res .= '</a>';
+ }
+ return $res;
+};
+</%INIT>
diff --git a/rt/share/html/Elements/Login b/rt/share/html/Elements/Login
index eb645d47a..b86bfef16 100755
--- a/rt/share/html/Elements/Login
+++ b/rt/share/html/Elements/Login
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
% $m->callback( %ARGS, CallbackName => 'Header' );
-<& /Elements/Header, Title => loc('Login'), Focus => 'user' &>
-
-
-%# End of div#quickbar from /Elements/Header
-</div>
+<& /Elements/Header, Title => loc('Login'), Focus => 'user', RichText => 0 &>
<div id="body" class="login-body">
@@ -80,6 +76,15 @@
<input type="hidden" name="next" value="<% $next %>" />
+<script type="text/javascript">
+jQuery(function(){
+ if (window.location.hash) {
+ var form = jQuery("form[name=login]");
+ form.attr('action', form.attr('action') + '#' + window.location.hash.replace(/^#/, ''));
+ }
+});
+</script>
+
<div class="button-row">
<span class="input"><input type="submit" class="button" value="<&|/l&>Login</&>" /></span>
</div>
diff --git a/rt/share/html/Elements/Logo b/rt/share/html/Elements/Logo
index d7cbd0bfb..8b4be4c81 100644
--- a/rt/share/html/Elements/Logo
+++ b/rt/share/html/Elements/Logo
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,12 +45,18 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<div id="logo">
+<div id="<% $id %>">
+% if ($user_logo) {
+<a href="<%$ARGS{'LogoLinkURL'}||RT->Config->Get('LogoLinkURL')%>"><img
+ src="<% RT->Config->Get('WebPath') %>/NoAuth/Helpers/CustomLogo/<% $user_logo->Content->{'hash'} %>"
+ alt="<%loc($ARGS{'LogoAltText'}||RT->Config->Get('LogoAltText'))%>" /></a>
+% } else {
<a href="<%$ARGS{'LogoLinkURL'}||RT->Config->Get('LogoLinkURL')%>"><img
src="<%$ARGS{'LogoURL'}||RT->Config->Get('LogoURL')%>"
alt="<%loc($ARGS{'LogoAltText'}||RT->Config->Get('LogoAltText'))%>"
width="<%$ARGS{'LogoImageWidth'}||RT->Config->Get('LogoImageWidth')%>"
height="<%$ARGS{'LogoImageHeight'}||RT->Config->Get('LogoImageHeight')%>" /></a>
+% }
% if ( $ShowName ) {
<span class="rtname"><% $Name || loc("RT for [_1]", RT->Config->Get('rtname')) %></span>
% }
@@ -60,8 +66,28 @@ if ( exists $ARGS{'show_name'} ) {
$RT::Logger->warning('show_name argument was renamed, use ShowName');
$ShowName = delete $ARGS{'show_name'};
}
+
+use Scalar::Util qw(blessed);
+my $user_logo = blessed $RT::System ? $RT::System->FirstAttribute('UserLogo') : undef;
+
+# If we have the attribute, but no content, we don't really have a user logo
+if ($user_logo) {
+ my $content = $user_logo->Content;
+ undef $user_logo
+ unless ref $content eq 'HASH'
+ and defined $content->{'data'};
+}
+
+if ($OnlyCustom
+ and not $user_logo
+ and ($ARGS{LogoURL}||RT->Config->Get('LogoURL')) =~ /bpslogo\.png$/)
+{
+ return;
+}
</%INIT>
<%ARGS>
$ShowName => 1
+$OnlyCustom => 0
$Name => undef
+$id => 'logo'
</%ARGS>
diff --git a/rt/share/html/Elements/MakeClicky b/rt/share/html/Elements/MakeClicky
index 2f2b87990..57964f7a9 100644
--- a/rt/share/html/Elements/MakeClicky
+++ b/rt/share/html/Elements/MakeClicky
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -61,8 +61,6 @@ my %actions = (
url_overwrite => sub {
my %args = @_;
my $result = qq{<a target="new" href="$args{'value'}">};
- #XXX: use spaces here. &shy; <wbr> are not well supported :(
- $args{'value'} =~ s/(\S{30})/$1 /g;
$result .= qq{$args{'value'}</a>};
return qq{<span class="clickylink">$result</span>};
},
@@ -71,12 +69,12 @@ my %actions = (
my @types = (
{
name => "httpurl",
- regex => qr/$RE{URI}{HTTP}{-keep}{-scheme => 'https?'}/,
+ regex => qr/$RE{URI}{HTTP}{-keep}{-scheme => 'https?'}(?:#\S+)?/,
action => "url",
},
{
name => "httpurl_overwrite",
- regex => qr/$RE{URI}{HTTP}{-keep}{-scheme => 'https?'}/,
+ regex => qr/$RE{URI}{HTTP}{-keep}{-scheme => 'https?'}(?:#\S+)?/,
action => "url_overwrite",
},
);
@@ -178,9 +176,7 @@ provides two formats:
link after the URL.
* 'httpurl_overwrite': also detects URLs as 'httpurl' format, but
- replace URL with link and *adds spaces* into text if it's longer
- then 30 chars. This allow browser to wrap long URLs and avoid
- horizontal scrolling.
+ replace URL with link.
To extend this with your own types of data, use the callback.
It will be provided with:
@@ -202,6 +198,6 @@ It will be provided with:
have to. This can be used to add pre- or post-processing around
all actions.
-Read more about writing new actions in docs/extending_clickable_links.pod
+Read more about writing new actions in docs/extending/clickable_links.pod
</%doc>
diff --git a/rt/share/html/Elements/Menu b/rt/share/html/Elements/Menu
index c87981a3b..b56bacda8 100755
--- a/rt/share/html/Elements/Menu
+++ b/rt/share/html/Elements/Menu
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,95 +45,40 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<ul<% !$level ? ' id="system-menu"' : ''|n %><% $menu_class ? qq[ class="$menu_class"] : ''|n %>>
-<div<% $menu_class ? qq[ class="$menu_class"] : ''|n %>><div class="wrapper">
-<%perl>
- my $sep = 0;
- my $postsep = 0;
- my $accesskey = 1;
-
- $count = 0;
- $class = {};
-
-my @tabs = sort keys %$toptabs;
- foreach $tab (@tabs) {
- $count++;
-
- my $current = $current_toptab || '';
- my $path = $toptabs->{$tab}->{'path'} || "";
-
- $path =~ s#/index.html$##gi;
- $current =~ s#/index.html$##gi;
-
- $sep = $toptabs->{$tab}->{'separator'} ? 1 : 0;
-
- my @aclass;
- push @aclass, 'selected'
- if $path eq $current;
-
- push @aclass, 'odd'
- if $level % 2;
-
- $class->{a} = join ' ', @aclass;
-
- my @li;
- push @li, 'first'
- if $count == 1;
-
- push @li, 'pre-separator'
- if $sep;
-
- push @li, 'post-separator'
- if $postsep;
-
- push @li, 'last' if ( $tab eq $tabs[-1]);
- $class->{li} = join ' ', @li;
-
- my $url = ($toptabs->{$tab}->{'path'}||'') =~ /^(?:https?|mailto):/i
- ? $toptabs->{$tab}->{'path'} || ''
- : RT->Config->Get('WebPath') . "/" . $toptabs->{$tab}->{'path'};
-
-</%perl>
- <li<% $class->{'li'} ? qq[ class="$class->{li}"] : ''|n %> >
- <% $count > 1 && !$postsep && qq[<span class="bullet">&#183; </span>]|n%>
- <a href="<% $url %>"
- <% $class->{a} && qq[ class="$class->{a}"] |n %>
- <% !$level && " accesskey='".$accesskey++."'" |n %>>
- <% $toptabs->{$tab}->{'title'}%></a>
-
-%# Second-level items
-% if ($toptabs->{$tab}->{'subtabs'}
-% and keys %{$toptabs->{$tab}->{'subtabs'}})
-% {
- <& /Elements/Menu, level => $level+1,
- current_toptab => $toptabs->{$tab}->{'current_subtab'},
- toptabs => $toptabs->{$tab}->{'subtabs'},
- last_level => $toptabs->{$tab}->{last_system_menu_level} &>
-% }
- </li>
-% if ($sep) {
- <li class="separator">&#183;&#183;&#183;</li>
-% }
-%
-% $postsep = $sep;
+% return unless ($menu);
+<%" " x $depth%><ul<%$id ? ' id="'.$id.'"' : '' |n%><% $toplevel? ' class="toplevel"' : '' |n %>>
+% for my $child ($menu->children) {
+% my $item_id = lc(($parent_id? $parent_id."-" : "") .$child->key);
+% $item_id =~ s/\s/-/g;
+% my @classes;
+% push @classes, 'has-children' if $child->has_children;
+% push @classes, 'active' if $child->active;
+<%" " x ($depth+1)%><li id="li-<%$item_id%>"\
+% if (@classes) {
+ class="<% join ' ', @classes %>"\
% }
-</div></div>
-</ul>
-
-<%INIT>
-my ($tab, $class, $count);
-
-my @ul;
-push @ul, 'last-menu-level'
- if $last_level;
-push @ul, 'odd'
- if $level % 2;
-my $menu_class = join ' ', @ul;
-</%INIT>
+>\
+% if ($child->raw_html) {
+<% $child->raw_html |n %>
+% } else {
+% my $url = (not $child->path or $child->path =~ m{^\w+:/}) ? $child->path : RT->Config->Get('WebPath').$child->path;
+<a id="<%$item_id%>" class="menu-item <% $child->class || '' %>"<% $child->path ? ' href="'.$url.'"' : '' |n%><% $child->target ? ' target="'.$child->target.'"' : '' |n %>>\
+<% $child->escape_title ? $m->interp->apply_escapes($child->title, 'h') : $child->title |n %>\
+</a>\
+% }
+% if ($child->has_children) {
+<& Menu, menu => $child, toplevel => 0, parent_id => ($parent_id? $parent_id."-": '').$child->key, depth=> ($depth+1) &>
+<%" " x ($depth+1)%></li>
+% } else {
+</li>
+% }
+% }
+<%" " x $depth%></ul>\
<%ARGS>
-$toptabs => {}
-$current_toptab => ''
-$level => 0
-$last_level => 0
+$menu
+$id => undef
+$toplevel => 1
+$parent_id => ''
+$depth => 0
</%ARGS>
diff --git a/rt/share/html/Elements/MessageBox b/rt/share/html/Elements/MessageBox
index 3bc73eb5a..61995e057 100755
--- a/rt/share/html/Elements/MessageBox
+++ b/rt/share/html/Elements/MessageBox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,7 +45,8 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<textarea class="messagebox" cols="<% $Width %>" rows="<% $Height %>" <% $wrap_type |n %> name="<% $Name %>" id="<% $Name %>">\
+<textarea autocomplete="off" class="messagebox" <% $width_attr %>="<% $Width %>" rows="<% $Height %>" <% $wrap_type |n %> name="<% $Name %>" id="<% $Name %>">\
+% $m->comp('/Articles/Elements/IncludeArticle', %ARGS);
% $m->callback( %ARGS, SignatureRef => \$signature );
<% $Default || '' %><% $message %><% $signature %></textarea>
% $m->callback( %ARGS, CallbackName => 'AfterTextArea' );
@@ -67,7 +68,16 @@ if ( $IncludeSignature and my $text = $session{'CurrentUser'}->UserObj->Signatur
# wrap="something" seems to really break IE + richtext
my $wrap_type = '';
if ( not RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'}) ) {
- $wrap_type = qq(wrap="$Wrap");
+ $wrap_type = 'wrap="' . $m->interp->apply_escapes($Wrap, 'h') . '"';
+}
+
+# If there's no cols specified, we want to set the width to 100% in CSS
+my $width_attr;
+if ($Width) {
+ $width_attr = 'cols';
+} else {
+ $width_attr = 'style';
+ $Width = 'width: 100%';
}
</%INIT>
@@ -75,8 +85,8 @@ if ( not RT->Config->Get('MessageBoxRichText', $session{'CurrentUser'}) ) {
$QuoteTransaction => undef
$Name => 'Content'
$Default => ''
-$Width => RT->Config->Get('MessageBoxWidth', $session{'CurrentUser'} ) || 72
+$Width => RT->Config->Get('MessageBoxWidth', $session{'CurrentUser'} )
$Height => RT->Config->Get('MessageBoxHeight', $session{'CurrentUser'} ) || 15
-$Wrap => RT->Config->Get('MessageBoxWrap') || 'HARD'
+$Wrap => RT->Config->Get('MessageBoxWrap', $session{'CurrentUser'} ) || 'SOFT'
$IncludeSignature => RT->Config->Get('MessageBoxIncludeSignature');
</%ARGS>
diff --git a/rt/share/html/Elements/MyAdminQueues b/rt/share/html/Elements/MyAdminQueues
index e54d05464..92c87b53a 100644
--- a/rt/share/html/Elements/MyAdminQueues
+++ b/rt/share/html/Elements/MyAdminQueues
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<&|/Widgets/TitleBox, title => loc("Queues I administer"), bodyclass => "" &>
-<& /Elements/QueueSummary,
- cache => 'my_admin_queues',
+<& /Elements/QueueSummaryByStatus,
queue_filter => sub { $_->CurrentUserHasRight('AdminQueue') },
- conditions => [ {cond => "Status = 'new'", name => loc ('new') },
- {cond => "Status = 'open'", name => loc ('open') }] &>
+&>
</&>
diff --git a/rt/share/html/Elements/MyRT b/rt/share/html/Elements/MyRT
index e8cc4bba2..2447fed04 100644
--- a/rt/share/html/Elements/MyRT
+++ b/rt/share/html/Elements/MyRT
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -75,6 +75,8 @@ unless ( $Portlets ) {
);
}
+$m->callback( CallbackName => 'MassagePortlets', Portlets => $Portlets );
+
my ($body, $summary) = @{$Portlets}{qw(body summary)};
unless( $body && @$body ) {
$body = $summary || [];
diff --git a/rt/share/html/Elements/MyReminders b/rt/share/html/Elements/MyReminders
index 83c945452..2de4b530f 100755
--- a/rt/share/html/Elements/MyReminders
+++ b/rt/share/html/Elements/MyReminders
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,35 +48,13 @@
%# DEPRECATED
<&|/Widgets/TitleBox,
class => 'reminders',
- title => loc("Reminders") &>
-<table width="100%">
-% my $i =0;
-% while (my $reminder = $reminders->Next) {
-% $i++;
-% if ($reminder->RefersTo->First) {
-% my $ticket= $reminder->RefersTo->First->TargetObj;
-% if ( $ticket ) {
-<tr class="<%$i%2 ? 'evenline' : 'oddline'%>"><td><a href="<%RT->Config->Get('WebPath')%>/Ticket/Display.html?id=<%$ticket->id%>"><%$reminder->Subject%></a><br />
-<blockquote>
-#<%$ticket->id%>: <%$ticket->Subject%><br />
-<& /Elements/ShowUser, User => $reminder->OwnerObj &> <%$reminder->DueObj->Unix >0 ? '&bull; '.$reminder->DueObj->AgeAsString : '' |n %>
-</blockquote>
-</td>
-</tr>
-% }
-% else {
- <div class="error"><div class="error">
-Couldn't find TargetObj for reminder <% $reminder->id %>.<br/>
-Maybe Organization config was changed? Please contact administrator.
- </div></div>
-% }}}
-</table>
+ title => loc("My reminders"),
+ title_href => RT->Config->Get('WebPath') . '/Tools/MyReminders.html' &>
+
+<& /Elements/ShowReminders &>
+
</&>
<%init>
return unless RT->Config->Get('EnableReminders');
-my $reminders = RT::Tickets->new($session{'CurrentUser'});
-$reminders->FromSQL('(Owner = "Nobody" OR Owner = "'.$session{'CurrentUser'}->Name.'")' .
- ' AND Type = "reminder" AND (Status = "new" OR Status = "open")');
-$reminders->OrderBy(FIELD => 'Due', ORDER => 'ASC');
</%init>
diff --git a/rt/share/html/Elements/MyRequests b/rt/share/html/Elements/MyRequests
index be7a9f549..2ceb7f5b8 100755
--- a/rt/share/html/Elements/MyRequests
+++ b/rt/share/html/Elements/MyRequests
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/MySupportQueues b/rt/share/html/Elements/MySupportQueues
index 5a531f0ae..a098d5e8e 100644
--- a/rt/share/html/Elements/MySupportQueues
+++ b/rt/share/html/Elements/MySupportQueues
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,15 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<&|/Widgets/TitleBox, title => loc("Queues I'm an AdminCc for"), bodyclass => "" &>
-<& /Elements/QueueSummary,
- cache => 'my_support_queues',
+<& /Elements/QueueSummaryByStatus,
queue_filter => sub { $_->IsAdminCc($session{'CurrentUser'}->Id) },
- conditions => \@conditions,
&>
</&>
-<%INIT>
-my @conditions = ();
-foreach ( RT::Queue->ActiveStatusArray ) {
- push @conditions, { cond => "Status = '$_'", name => loc($_) };
-}
-</%INIT>
diff --git a/rt/share/html/Elements/MyTickets b/rt/share/html/Elements/MyTickets
index 84ab491af..2b9423299 100755
--- a/rt/share/html/Elements/MyTickets
+++ b/rt/share/html/Elements/MyTickets
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/PageLayout b/rt/share/html/Elements/PageLayout
index cc0bb06dc..5956a3bed 100755
--- a/rt/share/html/Elements/PageLayout
+++ b/rt/share/html/Elements/PageLayout
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,210 +48,17 @@
<% include('/elements/init_calendar.html') |n %>
-% if (0) { ## new ticket via customer, and we already have a ticket search box
-<div id="topactions">
-% foreach my $action (reverse sort keys %{$topactions}) {
-<span class="topaction" id="topaction-<%$action%>"><% $topactions->{"$action"}->{'html'} |n %></span>
-% }
-</div>
-% }
-
-% if (0) { ##FREESIDE MENUS INSTEAD## if ( $show_menu ) {
% if ( $show_menu ) {
-<div id="nav">
-<& /Elements/Menu, toptabs => $toptabs, current_toptab => $current_toptab &>
-</div>
-% }
-% }
-
-<div id="header">
-%#already shown <h1><% $title %></h1>
-<div id="page-navigation">
-% my $sep = 0;
-% my $postsep = 0;
-% my $count = 0;
-% my $class = { };
-%
- <ul id="page-menu" <% (($actions && %$actions) || ($subactions && %$subactions)) && q[ class="actions-present"] | n %>>
- <div><div><div>
-<%perl>
- if ($page_tabs) {
- my @tabs = ( sort grep { $_ !~ /^(?:current_toptab|this)$/ } keys %{$page_tabs});
- my $tab_idx = -1;
- foreach my $tab ( @tabs ) {
- $count++;
- $tab_idx++;
-
- my $current = $page_tabs->{current_toptab} || "";
- my $path = $page_tabs->{$tab}->{'path'} || "";
-
- $path =~ s#(/index\.html)?(\?)?$##gi;
- $current =~ s#(/index\.html)?(\?)?$##gi;
-
- $sep = $toptabs->{$tab}->{'separator'} ? 1 : 0;
-
- my $next_tab = $tabs[$tab_idx+1];
- if ($next_tab && $toptabs->{$next_tab}->{'pre_separator'}) {
- $sep = 1;
- }
-
- $class->{a} = $path eq $current ? ' class="selected"' : undef;
-
- my @li;
- push @li, 'first' if $count == 1;
- push @li, 'pre-separator' if $sep;
- push @li, 'post-separator' if $postsep;
- push @li, 'last' if $tab eq $tabs[-1];
- $class->{li} = join ' ', @li;
-
- my $href = $page_tabs->{$tab}->{'path'} || "";
- $href = RT->Config->Get('WebPath') .'/'. $href
- unless $path =~ /^\w+:/;
- my $target = $page_tabs->{$tab}->{'target'} || '';
- $target = $m->interp->apply_escapes( $target, 'h' );
-</%perl>
- <li<% $class->{li} ? qq[ class="$class->{li}"] : ''|n %>><% $count > 1 && !$postsep && "&#183; "|n%><a href="<% $href %>"<%$class->{a}|n%><% $class->{a} ? ' name="focus"' : ''|n %><% $target? " target='$target'": '' |n %>><% $page_tabs->{$tab}->{'title'} %></a></li>
-%
-% if ($sep) {
- <li class="separator">&#183;&#183;&#183;</li>
-% }
-% $postsep = $sep;
-% }
-% } else {
-&nbsp;
-% }
- </div></div></div>
- </ul>
-
-% if (($actions && %$actions) || ($subactions && %$subactions)) {
- <ul id="actions-menu">
- <div><div><div>
-<%perl>
- $sep = 0;
- $postsep = 0;
- $count = 0;
- $class = { };
-
- for my $type ($actions, $subactions) {
-
- if ($type && %$type) {
- my @actions = sort keys %{$type};
- my $action_idx = -1;
- foreach my $action (@actions) {
- $count++;
- $action_idx++;
-
- $sep = $type->{$action}->{'separator'} ? 1 : 0;
-
- my $next_action = $actions[$action_idx+1];
- if ($next_action && $type->{$next_action}->{'pre_separator'}) {
- $sep = 1;
- }
-
- my @li;
- push @li, 'first' if $count == 1;
- push @li, 'pre-separator' if $sep;
- push @li, 'post-separator' if $postsep;
- push @li, 'last' if $action eq $actions[-1];
-
- $class->{li} = join ' ', @li;
-</%perl>
- <li<% $class->{li} ? qq[ class="$class->{li}"] : ''|n %>><% $count > 1 && !$postsep && qq[<span class="bullet">&#183; </span>]|n%>
-% if ($type->{"$action"}->{'html'}) {
- <% $type->{"$action"}->{'html'} | n %>
-% } else {
- <a href="<%RT->Config->Get('WebPath')%>/<%$type->{$action}->{'path'}%>"<% $type->{$action}->{class} && ' class="'.$type->{$action}->{class}.'"' |n %><% $type->{$action}->{id} && ' id="'.$type->{$action}->{id}.'"' |n %>><%$type->{$action}->{'title'}%></a>
-% }
- </li>
-% if ($sep) {
- <li class="separator">&#183;&#183;&#183;</li>
-% }
-% $postsep = $sep;
-% }
-% }
+%# #FREESIDE MENUS INSTEAD## <div id="main-navigation"><& /Elements/Menu, menu => Menu(), id => 'app-nav' &></div>
+<div id="page-navigation"><& /Elements/Menu, menu => PageMenu(), id => 'page-menu', 'parent_id' => 'page' &></div>
% }
- </div></div></div>
- </ul>
+% if (0) { ## new ticket via customer, and we already have a ticket search box
+<div id="topactions"><& /Elements/WidgetBar, menu => PageWidgets() &></div>
% }
-</div>
-</div>
<div id="body">
% $m->callback( %ARGS, CallbackName => 'BeforeBody' );
% $m->flush_buffer(); # we've got the page laid out, let's flush the buffer;
-
-<%INIT>
-if ( defined $current_toptab ) {
- foreach my $tab ( values %{$toptabs} ) {
- next unless $tab->{'path'} eq $current_toptab;
- @{ $tab }{ qw(subtabs current_subtab) } = ($tabs, $current_tab);
- }
-}
-
-my ($menu_depth, $almost_last, $page_tabs);
-
-# don't pull out the last submenu for 3.5-compat theme
-# see #14853 for details.
-if (RT->Config->Get( 'WebDefaultStylesheet', $session{'CurrentUser'} ) ne '3.4-compat') {
- ($menu_depth, $almost_last) = @{ $m->comp('.menu_recurse', data => $toptabs, current => $current_toptab ) };
-
- if (defined $almost_last->{subtabs} and %{$almost_last->{subtabs}}) {
- $page_tabs = {
- current_toptab => $almost_last->{current_subtab},
- %{$almost_last->{subtabs}},
- };
-
- delete $almost_last->{subtabs};
- delete $almost_last->{current_subtab};
- }
-}
-</%INIT>
-
-%# There's probably a better way to do this that involves three times as
-%# much work and redoing the whole menu/tab system... which would seem a
-%# bit out of scope.
-%#
-%# This function recurses through the menu and returns the second to
-%# last menu, that is, the menu holding the last reference to
-%# and submenu. It also returns the number of menu levels minus
-%# the last submenu.
-<%def .menu_recurse>
- <%args>
- $data => { }
- $current => ''
- $pdata => { }
- $ppdata => { }
- $level => 0
- </%args>
- <%init>
- if ($current) {
- for my $key (keys %$data) {
- next if !defined $data->{$key}->{'path'}
- || $data->{$key}->{'path'} ne $current;
- next unless ref( $data->{$key} ) eq 'HASH'
- && ref( $data->{$key}->{'subtabs'} ) eq 'HASH'
- && keys %{ $data->{$key}->{'subtabs'} };
- return $m->comp('.menu_recurse',
- data => $data->{$key}->{'subtabs'},
- current => $data->{$key}->{'current_subtab'} || '',
- pdata => $data->{$key},
- ppdata => $pdata,
- level => $level + 1,
- );
- }
- }
- $ppdata->{last_system_menu_level}++;
- return [$level, $pdata];
- </%init>
-</%def>
-
<%ARGS>
-$current_toptab => undef
-$current_tab => undef
-$toptabs => undef
-$topactions => undef
-$tabs => undef
-$actions => undef
-$subactions => undef
$title => $m->callers(-1)->path
$show_menu => 1
</%ARGS>
diff --git a/rt/share/html/Elements/PersonalQuickbar b/rt/share/html/Elements/PersonalQuickbar
index 993c4578f..d9b152879 100644
--- a/rt/share/html/Elements/PersonalQuickbar
+++ b/rt/share/html/Elements/PersonalQuickbar
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,14 +50,8 @@ $Prefs => '/Prefs/Other.html'
</%ARGS>
<div id="quick-personal">
<span class="hide"><a href="#skipnav"><&|/l&>Skip Menu</&></a> | </span>
-% if ($session{'CurrentUser'}->Name) {
- <&|/l, "<span>".$session{'CurrentUser'}->Name."</span>" &>Logged in as [_1]</&>
-% if ( $session{'CurrentUser'}->HasRight( Right => 'ModifySelf', Object => $RT::System ) ) {
- | <a href="<%RT->Config->Get('WebPath')%><%$Prefs%>"><&|/l&>Preferences</&></a>
-% }
-% } else {
- <&|/l&>Not logged in.</&>
+% unless ($session{'CurrentUser'}->Id) {
+ <span id="not-logged-in"><&|/l&>Not logged in.</&></span>
% }
% $m->callback( %ARGS );
-<& Logout, %ARGS &>
</div>
diff --git a/rt/share/html/Elements/QueriesAsComment b/rt/share/html/Elements/QueriesAsComment
new file mode 100644
index 000000000..2658cc444
--- /dev/null
+++ b/rt/share/html/Elements/QueriesAsComment
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+return unless RT->Config->Get('StatementLog')
+ && $session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'SuperUser');
+</%INIT>
+<!--
+SQL queries:
+% for my $statement ($RT::Handle->SQLStatementLog) {
+% my ( $time, $sql, $bind, $duration ) = @$statement;
+<% sprintf '%0.4f', $duration %> - <% $RT::Handle->FillIn($sql, $bind) %>
+% }
+-->
diff --git a/rt/share/html/Elements/QueryString b/rt/share/html/Elements/QueryString
index a19b54ee7..35a579c1a 100644
--- a/rt/share/html/Elements/QueryString
+++ b/rt/share/html/Elements/QueryString
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/QueueSummaryByLifecycle b/rt/share/html/Elements/QueueSummaryByLifecycle
new file mode 100644
index 000000000..1410e82ef
--- /dev/null
+++ b/rt/share/html/Elements/QueueSummaryByLifecycle
@@ -0,0 +1,145 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%perl>
+ foreach my $lifecycle ( map $lifecycle{$_}, sort keys %lifecycle ) {
+ my @cur_statuses = grep $lifecycle->IsValid($_), @statuses;
+ next unless @cur_statuses;
+</%perl>
+
+<table border="0" cellspacing="0" cellpadding="1" width="100%" class="queue-summary">
+
+<tr>
+ <th class="collection-as-table"><&|/l&>Queue</&></th>
+% for my $status ( @cur_statuses ) {
+ <th class="collection-as-table"><% loc($status) %></th>
+% }
+</tr>
+
+<%PERL>
+my $i = 0;
+for my $queue (@queues) {
+ next if lc($queue->{Lifecycle} || '') ne lc $lifecycle->Name;
+
+ $i++;
+ my $name = $queue->{Name};
+ $name =~ s/(['\\])/\\$1/g;
+ my $queue_cond = "Queue = '$name' AND ";
+ my $all_q = $queue_cond . '(' . join( " OR ", map "Status = '$_'", @cur_statuses ) . ')';
+</%PERL>
+<tr class="<% $i%2 ? 'oddline' : 'evenline'%>" >
+
+<td>
+ <a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $all_q |u,n %>" title="<% $queue->{Description} %>"><% $queue->{Name} %></a>
+</td>
+
+% for my $status (@cur_statuses) {
+<td align="right">
+ <a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $queue_cond ."Status = '$status'" |u,n %>"><% $data->{$queue->{id}}->{$status } || '-' %></a>
+</td>
+% }
+</tr>
+% }
+</table>
+% }
+<%INIT>
+
+my $Queues = RT::Queues->new( $session{'CurrentUser'} );
+$Queues->UnLimit();
+$m->callback( CallbackName => 'SQLFilter', Queues => $Queues );
+
+my @queues = grep $queue_filter->($_), @{ $Queues->ItemsArrayRef };
+$m->callback( CallbackName => 'Filter', Queues => \@queues );
+
+@queues = map {
+ { id => $_->Id,
+ Name => $_->Name,
+ Description => $_->Description || '',
+ Lifecycle => $_->Lifecycle->Name,
+ }
+} grep $_, @queues;
+
+my %lifecycle;
+
+for my $queue (@queues) {
+ my $cycle = RT::Lifecycle->Load( $queue->{'Lifecycle'} );
+ $lifecycle{ lc $cycle->Name } = $cycle;
+}
+
+unless (@statuses) {
+ my %seen;
+ foreach my $set ( 'initial', 'active' ) {
+ foreach my $lifecycle ( map $lifecycle{$_}, sort keys %lifecycle ) {
+ push @statuses, grep !$seen{ lc $_ }++, $lifecycle->Valid($set);
+ }
+ }
+}
+
+my $data = {};
+my $statuses = {};
+
+use RT::Report::Tickets;
+my $report = RT::Report::Tickets->new( RT->SystemUser );
+my $query =
+ "(".
+ join(" OR ", map {s{(['\\])}{\\$1}g; "Status = '$_'"} @statuses) #'
+ .") AND (".
+ join(' OR ', map "Queue = ".$_->{id}, @queues)
+ .")";
+$query = 'id < 0' unless @queues;
+$report->SetupGroupings( Query => $query, GroupBy => [qw(Status Queue)] );
+
+while ( my $entry = $report->Next ) {
+ $data->{ $entry->__Value("Queue") }->{ $entry->__Value("Status") }
+ = $entry->__Value('id');
+ $statuses->{ $entry->__Value("Status") } = 1;
+}
+</%INIT>
+<%ARGS>
+$queue_filter => undef
+@statuses => ()
+</%ARGS>
diff --git a/rt/share/html/Elements/QueueSummaryByStatus b/rt/share/html/Elements/QueueSummaryByStatus
new file mode 100644
index 000000000..09f274f74
--- /dev/null
+++ b/rt/share/html/Elements/QueueSummaryByStatus
@@ -0,0 +1,139 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<table border="0" cellspacing="0" cellpadding="1" width="100%" class="queue-summary">
+
+<tr>
+ <th class="collection-as-table"><&|/l&>Queue</&></th>
+% for my $status ( @statuses ) {
+ <th class="collection-as-table"><% loc($status) %></th>
+% }
+</tr>
+
+<%PERL>
+my $i = 0;
+for my $queue (@queues) {
+ $i++;
+ my $name = $queue->{Name};
+ $name =~ s/(['\\])/\\$1/g;
+ my $queue_cond = "Queue = '$name' AND ";
+ my $lifecycle = $lifecycle{ lc $queue->{'Lifecycle'} };
+ my $all_q = $queue_cond . '(' . join( " OR ", map "Status = '$_'", grep $lifecycle->IsValid($_), @statuses ) . ')';
+</%PERL>
+<tr class="<% $i%2 ? 'oddline' : 'evenline'%>" >
+
+<td>
+ <a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $all_q |u,n %>" title="<% $queue->{Description} %>"><% $queue->{Name} %></a>
+</td>
+
+<%perl>
+ for my $status (@statuses) {
+ if ( $lifecycle->IsValid( $status ) ) {
+</%perl>
+<td align="right">
+ <a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $queue_cond ."Status = '$status'" |u,n %>"><% $data->{$queue->{id}}->{$status } || '-' %></a>
+</td>
+% } else {
+<td align="right">-</td>
+% }
+% }
+</tr>
+% }
+</table>
+<%INIT>
+
+my $Queues = RT::Queues->new( $session{'CurrentUser'} );
+$Queues->UnLimit();
+$m->callback( CallbackName => 'SQLFilter', Queues => $Queues );
+
+my @queues = grep $queue_filter->($_), @{ $Queues->ItemsArrayRef };
+$m->callback( CallbackName => 'Filter', Queues => \@queues );
+
+@queues = map {
+ { id => $_->Id,
+ Name => $_->Name,
+ Description => $_->Description || '',
+ Lifecycle => $_->Lifecycle->Name,
+ }
+} grep $_, @queues;
+
+my %lifecycle;
+
+for my $queue (@queues) {
+ my $cycle = RT::Lifecycle->Load( $queue->{'Lifecycle'} );
+ $lifecycle{ lc $cycle->Name } = $cycle;
+}
+
+unless (@statuses) {
+ my %seen;
+ foreach my $set ( 'initial', 'active' ) {
+ foreach my $lifecycle ( map $lifecycle{$_}, sort keys %lifecycle ) {
+ push @statuses, grep !$seen{ lc $_ }++, $lifecycle->Valid($set);
+ }
+ }
+}
+
+my $data = {};
+my $statuses = {};
+
+use RT::Report::Tickets;
+my $report = RT::Report::Tickets->new( RT->SystemUser );
+my $query = @queues
+ ? join(' OR ', map "Queue = ".$_->{id}, @queues)
+ : 'id < 0';
+$report->SetupGroupings( Query => $query, GroupBy => [qw(Status Queue)] );
+
+while ( my $entry = $report->Next ) {
+ $data->{ $entry->__Value("Queue") }->{ $entry->__Value("Status") }
+ = $entry->__Value('id');
+ $statuses->{ $entry->__Value("Status") } = 1;
+}
+</%INIT>
+<%ARGS>
+$queue_filter => undef
+@statuses => ()
+</%ARGS>
diff --git a/rt/share/html/Elements/QuickCreate b/rt/share/html/Elements/QuickCreate
index a4d5235e2..94be7eb9c 100644
--- a/rt/share/html/Elements/QuickCreate
+++ b/rt/share/html/Elements/QuickCreate
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,7 +47,11 @@
%# END BPS TAGGED BLOCK }}}
<div class="quick-create">
<&| /Widgets/TitleBox, title => loc('Quick ticket creation') &>
-<form method="post" action="<%RT->Config->Get('WebPath')%>/index.html">
+<form
+ method="post"
+ action="<%RT->Config->Get('WebPath')%>/index.html"
+% $m->callback(CallbackName => 'InFormElement');
+>
<input type="hidden" class="hidden" name="QuickCreate" value="1" />
<table>
<tr class="input-row"><td class="label"><&|/l&>Subject</&>:</td>
@@ -58,7 +62,7 @@
<td class="label"><&|/l&>Owner</&>:</td><td class="value">
<select type="select" name="Owner">
<option value="<%$session{'CurrentUser'}->id%>" selected="selected"><&|/l&>Me</&></option>
-<option value="<%$RT::Nobody->id%>"><%loc('Nobody')%></option>
+<option value="<%RT->Nobody->id%>"><%loc('Nobody')%></option>
</select>
</td>
</tr>
diff --git a/rt/share/html/Elements/Quicksearch b/rt/share/html/Elements/Quicksearch
index 0eaa76367..abc859b7d 100755
--- a/rt/share/html/Elements/Quicksearch
+++ b/rt/share/html/Elements/Quicksearch
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,21 +46,21 @@
%#
%# END BPS TAGGED BLOCK }}}
<div class="ticket-overview">
-<&|/Widgets/TitleBox, title => loc("Quick search"), bodyclass => "",
- titleright => loc("Edit"), titleright_href => RT->Config->Get('WebPath').'/Prefs/Quicksearch.html' &>
-<& /Elements/QueueSummary,
- cache => 'quick_search_queues',
+<&|/Widgets/TitleBox,
+ title => loc("Quick search"),
+ bodyclass => "",
+ titleright => loc("Edit"),
+ titleright_href => RT->Config->Get('WebPath').'/Prefs/Quicksearch.html',
+&>
+<& $comp,
queue_filter => sub { $_->CurrentUserHasRight('ShowTicket') && !exists $unwanted->{$_->Name} },
- conditions => \@conditions,
&>
</&>
</div>
<%INIT>
my $unwanted = $session{'CurrentUser'}->UserObj->Preferences('QuickSearch', {});
-
-my @conditions = ();
-foreach ( RT::Queue->ActiveStatusArray ) {
- push @conditions, { cond => "Status = '$_'", name => loc($_) };
-}
-$m->callback( CallbackName => 'Conditions', conditions => \@conditions );
+my $comp = $SplitByLifecycle? '/Elements/QueueSummaryByLifecycle' : '/Elements/QueueSummaryByStatus';
</%INIT>
+<%ARGS>
+$SplitByLifecycle => 1
+</%ARGS>
diff --git a/rt/share/html/Admin/Elements/GlobalCustomFieldTabs b/rt/share/html/Elements/RT__Article/ColumnMap
index 475681b05..133f3d463 100755..100644
--- a/rt/share/html/Admin/Elements/GlobalCustomFieldTabs
+++ b/rt/share/html/Elements/RT__Article/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,61 +45,63 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Admin/Elements/SystemTabs, subtabs => $tabs,
- current_tab => 'Admin/Global/CustomFields/index.html',
- current_subtab => $current_tab,
- Title => $Title &>
-<%INIT>
+<%ARGS>
+$Name => undef
+$Attr => undef
+</%ARGS>
-my $tabs = {
- A => {
- title => loc('Users'),
- text => loc('Select custom fields for all users'),
- path => 'Admin/Global/CustomFields/Users.html',
- },
+<%ONCE>
+my $COLUMN_MAP;
- B => {
- title => loc('Groups'),
- text => loc('Select custom fields for all user groups'),
- path => 'Admin/Global/CustomFields/Groups.html',
+$COLUMN_MAP = {
+ Name => {
+ attribute => 'Name',
+ title => 'Name', # loc
+ value => sub { $_[0]->Name },
},
-
- C => {
- title => loc('Queues'),
- text => loc('Select custom fields for all queues'),
- path => 'Admin/Global/CustomFields/Queues.html',
+ Summary => {
+ attribute => 'Summary',
+ title => 'Summary', # loc
+ value => sub { $_[0]->Summary },
},
-
- F => {
- title => loc('Tickets'),
- text => loc('Select custom fields for tickets in all queues'),
- path => 'Admin/Global/CustomFields/Queue-Tickets.html',
+ Class => {
+ attribute => 'Class',
+ title => 'Class id', # loc
+ value => sub { $_[0]->Class },
},
-
- G => {
- title => loc('Ticket Transactions'),
- text => loc('Select custom fields for transactions on tickets in all queues'),
- path => 'Admin/Global/CustomFields/Queue-Transactions.html',
+ ClassName => {
+ attribute => 'Class',
+ title => 'Class', # loc
+ value => sub { $_[0]->ClassObj->Name },
},
-
-};
- # Now let callbacks add their extra tabs
- $m->callback( %ARGS, tabs => $tabs );
-
- foreach my $tab (sort keys %{$tabs}) {
- if ($tabs->{$tab}->{'path'} eq $current_tab) {
- $tabs->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{$tab}->{"current_subtab"} = $current_subtab;
+ CreatedRelative => {
+ attribute => 'Created',
+ title => 'Created', # loc
+ value => sub { $_[0]->CreatedObj->AgeAsString },
+ },
+ LastUpdatedRelative => {
+ attribute => 'LastUpdated',
+ title => 'LastUpdated', # loc
+ value => sub { $_[0]->LastUpdatedObj->AgeAsString },
+ },
+ Topics => {
+ title => 'Topics', # loc
+ value => sub {
+ my $topics = '';
+ my $Topics = $_[0]->Topics;
+ while ( my $t = $Topics->Next ) {
+ $topics .=
+ $m->scomp( '/Articles/Elements/ShowTopic', topic => $t->TopicObj )
+ . '<br />';
+ }
+ return \$topics;
+ },
}
- }
-</%INIT>
+};
-
-<%ARGS>
-$id => undef
-$current_tab => ''
-$subtabs => undef
-$current_subtab => undef
-$Title => undef
-</%ARGS>
+</%ONCE>
+<%init>
+$m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'Once', CallbackOnce => 1 );
+return GetColumnMapEntry( Map => $COLUMN_MAP, Name => $Name, Attribute => $Attr );
+</%init>
diff --git a/rt/share/html/Elements/RT__Class/ColumnMap b/rt/share/html/Elements/RT__Class/ColumnMap
new file mode 100644
index 000000000..3875d96e8
--- /dev/null
+++ b/rt/share/html/Elements/RT__Class/ColumnMap
@@ -0,0 +1,76 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%ARGS>
+$Name
+$Attr => undef
+</%ARGS>
+<%ONCE>
+my $COLUMN_MAP = {
+ id => {
+ title => '#', # loc
+ attribute => 'id',
+ value => sub { return $_[0]->id },
+ },
+ Name => {
+ title => 'Name', # loc
+ attribute => 'Name',
+ value => sub { return $_[0]->Name() },
+ },
+ Description => {
+ title => 'Description', # loc
+ attribute => 'Description',
+ value => sub { return $_[0]->Description() },
+ },
+};
+
+
+</%ONCE>
+<%INIT>
+$m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'ColumnMap', CallbackOnce => 1 );
+return GetColumnMapEntry( Map => $COLUMN_MAP, Name => $Name, Attribute => $Attr );
+</%INIT>
diff --git a/rt/share/html/Elements/RT__CustomField/ColumnMap b/rt/share/html/Elements/RT__CustomField/ColumnMap
index c0e17f264..ecb219d9e 100644
--- a/rt/share/html/Elements/RT__CustomField/ColumnMap
+++ b/rt/share/html/Elements/RT__CustomField/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -120,8 +120,10 @@ my $COLUMN_MAP = {
my $name = 'RemoveCustomField';
my $checked = $m->request_args->{ $name .'All' }? 'checked="checked"': '';
- return \qq{<input type="checkbox" name="${name}All" value="1" $checked
- onclick="setCheckbox(this.form, '$name', this.checked)" />};
+ return \qq{<input type="checkbox" name="}, $name, \qq{All" value="1" $checked
+ onclick="setCheckbox(this.form, },
+ $m->interp->apply_escapes($name,'j'),
+ \qq{, this.checked)" />};
},
value => sub {
my $id = $_[0]->id;
@@ -137,7 +139,7 @@ my $COLUMN_MAP = {
elsif ( $arg ) {
$checked = 'checked="checked"' if $arg == $id;
}
- return \qq{<input type="checkbox" name="$name" value="$id" $checked />}
+ return \qq{<input type="checkbox" name="}, $name, \qq{" value="$id" $checked />}
},
},
MoveCF => {
diff --git a/rt/share/html/Elements/RT__Dashboard/ColumnMap b/rt/share/html/Elements/RT__Dashboard/ColumnMap
new file mode 100644
index 000000000..6c366ec78
--- /dev/null
+++ b/rt/share/html/Elements/RT__Dashboard/ColumnMap
@@ -0,0 +1,134 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%ARGS>
+$Name
+$Attr => undef
+</%ARGS>
+<%ONCE>
+my $COLUMN_MAP = {
+ id => {
+ title => '#', # loc
+ attribute => 'id',
+ align => 'right',
+ value => sub { return $_[0]->Id },
+ },
+ Name => {
+ title => 'Name', # loc
+ attribute => 'Name',
+ value => sub { return $_[0]->Name()||loc("Unnamed dashboard") },
+ },
+ Subscription => {
+ title => 'Subscription', # loc
+ attribute => 'Subscription',
+ value => sub {
+ my $Dashboard = shift;
+ my $Subscription = $Dashboard->Subscription;
+
+ my $url = sprintf '%s/Dashboards/Subscription.html?id=%d',
+ RT->Config->Get('WebPath'),
+ $Dashboard->Id;
+
+ my $frequency = loc("None");
+
+ if (defined $Subscription) {
+ my $freq = $Subscription->SubValue('Frequency');
+ my $hour = $Subscription->SubValue('Hour');
+
+ if (my ($integer_hour) = $hour =~ /^(\d\d):00$/) {
+ my $formatter = RT::Date->new($session{CurrentUser})->LocaleObj;
+ my $dt = DateTime->now;
+ $dt->set_minute(0);
+ $dt->set_second(0);
+ $dt->set_hour($integer_hour);
+
+ # use the formatted hour instead
+ $hour = $dt->format_cldr($formatter->time_format_short);
+ }
+
+ if ($freq eq 'weekly') {
+ my $day = $Subscription->SubValue('Dow');
+ $frequency = loc("weekly (on [_1]) at [_2]", loc($day), $hour);
+ }
+ elsif ($freq eq 'monthly') {
+ $frequency = loc("monthly (day [_1]) at [_2]", $Subscription->SubValue('Dom'), $hour);
+ }
+ elsif ($freq eq 'daily') {
+ $frequency = loc("daily at [_1]", $hour);
+ }
+ elsif ($freq eq 'm-f') {
+ $frequency = loc("M-F at [_1]", $hour);
+ }
+ elsif ($freq eq 'never') {
+ $frequency = loc("Never");
+ }
+ else {
+ $frequency = loc($freq);
+ }
+ }
+
+ return \'<a href="', $url, \'">', $frequency, \'</a>';
+ },
+ },
+ ShowURL => {
+ title => '',
+ attribute => 'ShowURL',
+ value => sub {
+ my $dashboard = shift;
+ my $id = $dashboard->Id;
+ my $name = $dashboard->Name;
+
+ return "Dashboards/$id/$name";
+ },
+ }
+};
+
+</%ONCE>
+<%INIT>
+$m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'ColumnMap', CallbackOnce => 1 );
+return GetColumnMapEntry( Map => $COLUMN_MAP, Name => $Name, Attribute => $Attr );
+</%INIT>
diff --git a/rt/share/html/Elements/RT__Group/ColumnMap b/rt/share/html/Elements/RT__Group/ColumnMap
index 8985048ce..bfc520b0f 100644
--- a/rt/share/html/Elements/RT__Group/ColumnMap
+++ b/rt/share/html/Elements/RT__Group/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/RT__Queue/ColumnMap b/rt/share/html/Elements/RT__Queue/ColumnMap
index 938e63142..e08dd7c91 100644
--- a/rt/share/html/Elements/RT__Queue/ColumnMap
+++ b/rt/share/html/Elements/RT__Queue/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -84,6 +84,11 @@ my $COLUMN_MAP = {
title => 'Encrypt', # loc
value => sub { return $_[0]->Encrypt? $_[0]->loc('yes') : $_[0]->loc('no') },
},
+ Lifecycle => {
+ title => 'Lifecycle',
+ attribute => 'Lifecycle',
+ value => sub { return $_[0]->Lifecycle->Name },
+ },
};
foreach my $field (qw(
diff --git a/rt/share/html/Elements/RT__SavedSearch/ColumnMap b/rt/share/html/Elements/RT__SavedSearch/ColumnMap
index 780ee838a..381e120f7 100644
--- a/rt/share/html/Elements/RT__SavedSearch/ColumnMap
+++ b/rt/share/html/Elements/RT__SavedSearch/ColumnMap
@@ -2,8 +2,8 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2010 Best Practical Solutions, LLC
-%# <jesse@bestpractical.com>
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
%#
@@ -58,7 +58,7 @@ my $COLUMN_MAP = {
value => sub { return $_[0]->Id },
},
Name => {
- title => sub { return "foo" }, #'Name', # loc
+ title => 'Name', # loc
attribute => 'Name',
value => sub { return $_[0]->Name()||loc("Unnamed search") },
},
diff --git a/rt/share/html/Elements/RT__Scrip/ColumnMap b/rt/share/html/Elements/RT__Scrip/ColumnMap
index 8130ea686..776a2d8a3 100644
--- a/rt/share/html/Elements/RT__Scrip/ColumnMap
+++ b/rt/share/html/Elements/RT__Scrip/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/RT__Template/ColumnMap b/rt/share/html/Elements/RT__Template/ColumnMap
index d9d55cf90..5a8c6f2c7 100644
--- a/rt/share/html/Elements/RT__Template/ColumnMap
+++ b/rt/share/html/Elements/RT__Template/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/RT__Ticket/ColumnMap b/rt/share/html/Elements/RT__Ticket/ColumnMap
index 9e6466cdd..787862d6a 100644
--- a/rt/share/html/Elements/RT__Ticket/ColumnMap
+++ b/rt/share/html/Elements/RT__Ticket/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -266,10 +266,10 @@ $COLUMN_MAP = {
{
my %key = RT::Crypt::GnuPG::GetKeyInfo($email);
if (!defined $key{'info'}) {
- $email .= loc(" (no pubkey!)");
+ $email .= ' ' . loc("(no pubkey!)");
}
elsif ($key{'info'}{'TrustLevel'} == 0) {
- $email .= loc(" (untrusted!)");
+ $email .= ' ' . loc("(untrusted!)");
}
}
return join ', ', @requestors;
@@ -321,6 +321,7 @@ $COLUMN_MAP = {
#freeside
$m->comp('/Elements/CustomerFields', 'ColumnMap'),
+ $m->comp('/Elements/ServiceFields', 'ColumnMap'),
};
# if no GPG support, then KeyOwnerName and KeyRequestors fall back to the regular
diff --git a/rt/share/html/Elements/RT__User/ColumnMap b/rt/share/html/Elements/RT__User/ColumnMap
index 2d2dab7a9..1f8fc20cb 100644
--- a/rt/share/html/Elements/RT__User/ColumnMap
+++ b/rt/share/html/Elements/RT__User/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -59,78 +59,88 @@ my $COLUMN_MAP = {
},
Name => {
title => 'Name', # loc
- attribute => 'Name',
- value => sub { return $_[0]->Name() },
+ attribute => 'Name',
+ value => sub { return $_[0]->Name() },
},
RealName => {
- title => 'RealName', # loc
- attribute => 'RealName',
- value => sub { return $_[0]->RealName() },
+ title => 'Real Name', # loc
+ attribute => 'RealName',
+ value => sub { return $_[0]->RealName() },
},
NickName => {
- title => 'NickName', # loc
- attribute => 'NickName',
- value => sub { return $_[0]->NickName() },
+ title => 'Nickname', # loc
+ attribute => 'NickName',
+ value => sub { return $_[0]->NickName() },
},
EmailAddress => {
- title => 'EmailAddress', # loc
- attribute => 'EmailAddress',
- value => sub { return $_[0]->EmailAddress() },
+ title => 'Email Address', # loc
+ attribute => 'EmailAddress',
+ value => sub { return $_[0]->EmailAddress() },
},
Organization => {
title => 'Organization', # loc
- attribute => 'Organization',
- value => sub { return $_[0]->Organization() },
+ attribute => 'Organization',
+ value => sub { return $_[0]->Organization() },
},
HomePhone => {
- title => 'HomePhone', # loc
- attribute => 'HomePhone',
- value => sub { return $_[0]->HomePhone() },
+ title => 'Home Phone', # loc
+ attribute => 'HomePhone',
+ value => sub { return $_[0]->HomePhone() },
},
WorkPhone => {
- title => 'WorkPhone', # loc
- attribute => 'WorkPhone',
- value => sub { return $_[0]->WorkPhone() },
+ title => 'Work Phone', # loc
+ attribute => 'WorkPhone',
+ value => sub { return $_[0]->WorkPhone() },
},
MobilePhone => {
- title => 'MobilePhone', # loc
- attribute => 'MobilePhone',
- value => sub { return $_[0]->MobilePhone() },
+ title => 'Mobile Phone', # loc
+ attribute => 'MobilePhone',
+ value => sub { return $_[0]->MobilePhone() },
},
PagerPhone => {
- title => 'PagerPhone', # loc
- attribute => 'PagerPhone',
- value => sub { return $_[0]->PagerPhone() },
+ title => 'Pager Phone', # loc
+ attribute => 'PagerPhone',
+ value => sub { return $_[0]->PagerPhone() },
},
Address1 => {
- title => 'Address1', # loc
- attribute => 'Address1',
- value => sub { return $_[0]->Address1() },
+ title => 'Address', # loc
+ attribute => 'Address1',
+ value => sub { return $_[0]->Address1() },
},
Address2 => {
- title => 'Address2', # loc
- attribute => 'Address2',
- value => sub { return $_[0]->Address2() },
+ title => 'Address 2', # loc
+ attribute => 'Address2',
+ value => sub { return $_[0]->Address2() },
},
City => {
title => 'City', # loc
- attribute => 'City',
- value => sub { return $_[0]->City() },
+ attribute => 'City',
+ value => sub { return $_[0]->City() },
},
State => {
title => 'State', # loc
- attribute => 'State',
- value => sub { return $_[0]->State() },
+ attribute => 'State',
+ value => sub { return $_[0]->State() },
},
Zip => {
title => 'Zip', # loc
- attribute => 'Zip',
- value => sub { return $_[0]->Zip() },
+ attribute => 'Zip',
+ value => sub { return $_[0]->Zip() },
},
Country => {
title => 'Country', # loc
- attribute => 'Country',
- value => sub { return $_[0]->Country() },
+ attribute => 'Country',
+ value => sub { return $_[0]->Country() },
+ },
+ Gecos => {
+ title => 'Unix login', #loc
+ attribute => 'Gecos',
+ value => sub { return $_[0]->Gecos() },
+ },
+ Lang => {
+ title => 'Language', #loc
+ attribute => 'Lang',
+ value => sub { return $_[0]->Lang() },
},
};
diff --git a/rt/share/html/Elements/Refresh b/rt/share/html/Elements/Refresh
index b09ff80e6..ee51fb3af 100755
--- a/rt/share/html/Elements/Refresh
+++ b/rt/share/html/Elements/Refresh
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/RefreshHomepage b/rt/share/html/Elements/RefreshHomepage
index cb6611a74..2cdaf4af9 100644
--- a/rt/share/html/Elements/RefreshHomepage
+++ b/rt/share/html/Elements/RefreshHomepage
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SavedSearches b/rt/share/html/Elements/SavedSearches
index 96d589fc1..b18d86c52 100644
--- a/rt/share/html/Elements/SavedSearches
+++ b/rt/share/html/Elements/SavedSearches
@@ -1,70 +1,76 @@
-<& /Elements/ListActions, actions => \@results &>
-<table width="100%"><tr>
-% foreach my $type ('Ticket', 'Chart') {
-<td width="50%">
-<&|/Widgets/TitleBox, title => loc('Saved '.$titles{$type}) &>
-% foreach my $Object (@Objects) {
-% $SavedSearches = RT::SavedSearches->new($session{CurrentUser});
-% $SavedSearches->LimitToPrivacy(join('-',ref($Object),$Object->Id), $type);
-% my $title = $titles{$type};
-% if (ref $Object eq 'RT::User' && $Object->Id == $session{CurrentUser}->Id) {
-% $title = loc("My saved ".lc($title));
-% } else {
-% $title = loc("[_1]'s saved ".lc($title),$Object->Name);
-% }
-% $title = $m->interp->apply_escapes($title, 'h');
-%
-% my $oid = join('-', ref($Object), $Object->Id, 'SavedSearch', '__id__');
-% my $resultpath = $paths{$type};
-% my @cols = (
-% qq{<a href="__WebPath__/$resultpath?__ResultsURL__">__Name__</a>/TITLE:$title},
-% '__Query__',
-% qq{<a href="__WebPath__/Search/Build.html?SavedSearchLoad=$oid">[Edit]</a>&nbsp;} .
-% qq{<a href="$uri?Delete=$oid">[Delete]</a>/TITLE:},
-% );
-% my $format = join(',', map { "'$_'" } @cols);
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<&|/Widgets/TitleBox, title => loc('Saved Searches') &>
+% foreach my $Object (@Objects) {
+% my $SavedSearches = RT::SavedSearches->new($session{CurrentUser});
+% $SavedSearches->LimitToPrivacy(join('-',ref($Object),$Object->Id),'Ticket');
+% my $title;
+% if (ref $Object eq 'RT::User' && $Object->Id == $session{CurrentUser}->Id) {
+% $title = loc("My saved searches");
+% } else {
+% $title = loc("[_1]'s saved searches",$Object->Name);
+% }
+% $title = $m->interp->apply_escapes($title, 'h');
<& /Elements/CollectionList,
%ARGS,
Class => 'RT::SavedSearch',
- Format => $format,
+ Format => qq{'<a href="__WebPath__/Search/Results.html?__ResultsURL__">__Name__</a>/TITLE:$title'},
Collection => $SavedSearches,
PassArguments => [qw(Format Name id)],
&>
-% } #foreach $Object
+% }
</&>
-</td>
-% } #foreach $type
-</tr></table>
<%init>
-my @Objects;
-my $SavedSearches = RT::SavedSearches->new($session{'CurrentUser'});
-push @Objects, $SavedSearches->_PrivacyObjects;
+my @Objects = RT::SavedSearch->new($session{CurrentUser})->ObjectsForLoading;
push @Objects, RT::System->new( $session{'CurrentUser'} )
if $session{'CurrentUser'}->HasRight( Object=> $RT::System,
Right => 'SuperUser' );
-
-my $uri = '__WebPath__'.$m->request_path;
-
-my @results;
-if ( $Delete =~ /(.*)-SavedSearch-(\d+)/) {
- my ($privacy, $id) = ($1, $2);
- my $record = RT::SavedSearch->new($session{'CurrentUser'});
- $record->Load($privacy, $id);
- if ( $record->Id ) {
- my ($status, $msg) = $record->Delete;
- push @results, $msg;
- }
- else {
- push @results, "Saved search #$Delete not found";
- }
-}
-
-my %titles = ( 'Ticket' => 'Searches', 'Chart' => 'Charts' );
-my %paths = ( 'Ticket' => 'Search/Results.html',
- 'Chart' => 'Search/Chart.html',
-);
</%init>
<%ARGS>
$user_attrs => undef
-$Delete => undef
</%ARGS>
diff --git a/rt/share/html/Elements/ScrubHTML b/rt/share/html/Elements/ScrubHTML
index 87aaaf387..47d125d89 100644
--- a/rt/share/html/Elements/ScrubHTML
+++ b/rt/share/html/Elements/ScrubHTML
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,32 +45,8 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%ONCE>
-my $scrubber = new HTML::Scrubber;
-$scrubber->default(
- 0,
- {
- '*' => 0,
- id => 1,
- class => 1,
- # Match http, ftp and relative urls
- # XXX: we also scrub format strings with this module then allow simple config options
- href => qr{^(?:http:|ftp:|https:|/|__Web(?:Path|BaseURL|URL)__)}i,
- face => 1,
- size => 1,
- target => 1,
- style => qr{^(?:(?:color:\s*rgb\(\d+,\s*\d+,\s*\d+\))|
- (?:text-align:\s*))}ix,
- }
-);
-$scrubber->deny(qw[*]);
-$scrubber->allow(
- qw[A B U P BR I HR BR SMALL EM FONT SPAN STRONG SUB SUP STRIKE H1 H2 H3 H4 H5 H6 DIV UL OL LI DL DT DD PRE]
-);
-$scrubber->comment(0);
-</%ONCE>
<%init>
-return $scrubber->scrub($Content);
+return ScrubHTML($Content);
</%init>
<%args>
$Content => undef
diff --git a/rt/share/html/Elements/Section b/rt/share/html/Elements/Section
index 3142a5ea0..8929d9e0e 100755
--- a/rt/share/html/Elements/Section
+++ b/rt/share/html/Elements/Section
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectAttachmentField b/rt/share/html/Elements/SelectAttachmentField
index bc2a0a455..41477427e 100755
--- a/rt/share/html/Elements/SelectAttachmentField
+++ b/rt/share/html/Elements/SelectAttachmentField
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,7 +47,9 @@
%# END BPS TAGGED BLOCK }}}
<select name="<%$Name%>">
<option value="Subject"><&|/l&>Subject</&></option>
+% if ( RT->Config->Get('FullTextSearch')->{'Enable'} ) {
<option value="Content"><&|/l&>Content</&></option>
+% }
<option value="ContentType"><&|/l&>Content-Type</&></option>
<option value="Filename"><&|/l&>Filename</&></option>
</select>
diff --git a/rt/share/html/Elements/SelectBoolean b/rt/share/html/Elements/SelectBoolean
index eb6d1a9cb..2de10246f 100755
--- a/rt/share/html/Elements/SelectBoolean
+++ b/rt/share/html/Elements/SelectBoolean
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectCustomFieldOperator b/rt/share/html/Elements/SelectCustomFieldOperator
index 0e389a3ed..73243dae4 100755
--- a/rt/share/html/Elements/SelectCustomFieldOperator
+++ b/rt/share/html/Elements/SelectCustomFieldOperator
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectCustomFieldValue b/rt/share/html/Elements/SelectCustomFieldValue
index 31a41dd3c..5c2e2ceb7 100755
--- a/rt/share/html/Elements/SelectCustomFieldValue
+++ b/rt/share/html/Elements/SelectCustomFieldValue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectDate b/rt/share/html/Elements/SelectDate
index 5bdbceeeb..46178b059 100755
--- a/rt/share/html/Elements/SelectDate
+++ b/rt/share/html/Elements/SelectDate
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,8 +46,10 @@
%#
%# END BPS TAGGED BLOCK }}}
%# in PageLayout instead, once <% include('/elements/init_calendar.html') |n %>
-<input type="text" id="<% $Name %>" name="<% $Name %>" value="<% $Value %>" size="<% $Size %>" />
+% $m->callback( %ARGS, Name => $Name, CallbackName => 'BeforeDateInput' );
+<input type="text" class="ui-datepicker<% $ShowTime ? ' withtime' : '' %>" id="<% $Name %>" name="<% $Name %>" value="<% $Value %>" size="<% $Size %>" />
<IMG SRC="<%$fsurl%>images/calendar.png" ID="<% $Name %>_date_button" STYLE="cursor: pointer" TITLE="Select date">
+% $m->callback( %ARGS, Name => $Name, CallbackName => 'AfterDateInput' );
<script type="text/javascript">
Calendar.setup({
inputField: <% $Name |n,js_string %>,
diff --git a/rt/share/html/Elements/SelectDateRelation b/rt/share/html/Elements/SelectDateRelation
index f970cd269..654806e99 100755
--- a/rt/share/html/Elements/SelectDateRelation
+++ b/rt/share/html/Elements/SelectDateRelation
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectDateType b/rt/share/html/Elements/SelectDateType
index 37dca60aa..68f6ffe66 100755
--- a/rt/share/html/Elements/SelectDateType
+++ b/rt/share/html/Elements/SelectDateType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectEqualityOperator b/rt/share/html/Elements/SelectEqualityOperator
index f88a07fe3..1295b3951 100755
--- a/rt/share/html/Elements/SelectEqualityOperator
+++ b/rt/share/html/Elements/SelectEqualityOperator
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectGroups b/rt/share/html/Elements/SelectGroups
index cb0d804b0..302f73e77 100755
--- a/rt/share/html/Elements/SelectGroups
+++ b/rt/share/html/Elements/SelectGroups
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectIPRelation b/rt/share/html/Elements/SelectIPRelation
new file mode 100644
index 000000000..ec9f58d13
--- /dev/null
+++ b/rt/share/html/Elements/SelectIPRelation
@@ -0,0 +1,64 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<select name="<% $Name %>">
+% while (my $option = shift @Options) {
+% my $value = shift @Values;
+<option value="<% $value %>"
+% if ($Default eq $value) {
+selected="selected"
+% }
+><% $option %></option>
+% }
+</select>
+
+<%ARGS>
+$Name => undef
+@Options => ( loc('is'), loc("isn't"), loc('less than'), loc('greater than'))
+@Values => ('=', '!=', '<', '>')
+$Default => ''
+</%ARGS>
diff --git a/rt/share/html/Elements/SelectLang b/rt/share/html/Elements/SelectLang
index 46db6c267..df98a1309 100755
--- a/rt/share/html/Elements/SelectLang
+++ b/rt/share/html/Elements/SelectLang
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectLinkType b/rt/share/html/Elements/SelectLinkType
index 30ef3ac54..cc6f852dc 100755
--- a/rt/share/html/Elements/SelectLinkType
+++ b/rt/share/html/Elements/SelectLinkType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectMatch b/rt/share/html/Elements/SelectMatch
index e46337538..692b0efca 100755
--- a/rt/share/html/Elements/SelectMatch
+++ b/rt/share/html/Elements/SelectMatch
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectNewTicketQueue b/rt/share/html/Elements/SelectNewTicketQueue
index db41e85f9..03644187b 100755
--- a/rt/share/html/Elements/SelectNewTicketQueue
+++ b/rt/share/html/Elements/SelectNewTicketQueue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,5 +50,12 @@
</label>
<%INIT>
my $queue = RT->Config->Get("DefaultQueue", $session{'CurrentUser'});
+
+if (RT->Config->Get("RememberDefaultQueue", $session{'CurrentUser'})) {
+ if (my $session_default = $session{'DefaultQueue'}) {
+ $queue = $session_default;
+ }
+}
+
$m->callback(Queue => \$queue, CallbackName => 'DefaultQueue');
</%INIT>
diff --git a/rt/share/html/Elements/SelectOwner b/rt/share/html/Elements/SelectOwner
index 3ba7af634..37a5971ac 100755
--- a/rt/share/html/Elements/SelectOwner
+++ b/rt/share/html/Elements/SelectOwner
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,87 +45,41 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>" id="<%$Name%>">
-%if ($DefaultValue) {
-<option value=""<% !$Default ? qq[ selected="selected"] : '' |n %>><%$DefaultLabel |n%></option>
-%}
-% $Default = 0 unless defined $Default && $Default =~ /^\d+$/;
-% my @formatednames = sort {lc $a->[1] cmp lc $b->[1]} map {[$_, $m->scomp('/Elements/ShowUser', User => $_)]} grep { $_->id != $RT::Nobody->id } @users;
-% my $nobody = [$RT::Nobody, $m->scomp('/Elements/ShowUser', User => $RT::Nobody)];
-% unshift @formatednames, $nobody;
-%foreach my $UserRef ( @formatednames) {
-%my $User = $UserRef->[0];
-<option <% ( $User->Id == $Default) ? qq[ selected="selected"] : '' |n %>
-%if ($ValueAttribute eq 'id') {
- value="<%$User->id%>"
-%} elsif ($ValueAttribute eq 'Name') {
- value="<%$User->Name%>"
-%}
-><% $UserRef->[1] |n %></option>
-%}
-</select>
+<& "SelectOwner$Widget", %ARGS, Objects => \@objects &>
<%INIT>
+my $Widget;
+if ( !$QueueObj && !$TicketObj && RT->Config->Get('AutocompleteOwnersForSearch') ) {
+ $Widget = 'Autocomplete';
+}
+$Widget ||= RT->Config->Get('AutocompleteOwners', $session{'CurrentUser'})
+ ? 'Autocomplete' : 'Dropdown';
my @objects;
if ($TicketObj) {
@objects = ($TicketObj);
} elsif ($QueueObj) {
@objects = ($QueueObj);
-} elsif ($cfqueues) {
- @objects = keys %{$cfqueues};
+} elsif (%Queues) {
+ for my $name (keys %Queues) {
+ my $q = RT::Queue->new($session{'CurrentUser'});
+ $q->Load($name);
+ push @objects, $q;
+ }
} else {
-# Let's check rights on an empty queue object. that will do a search
-# for any queue.
+ # Let's check rights on an empty queue object. that will do a search
+ # for any queue.
my $queue = RT::Queue->new( $session{'CurrentUser'} );
push( @objects, $queue );
}
-my %user_uniq_hash;
-
$m->callback(
%ARGS,
objects => \@objects,
CallbackName => 'UpdateObjectList'
);
-
-my $isSU = $session{CurrentUser}
- ->HasRight( Right => 'SuperUser', Object => $RT::System );
-foreach my $object (@objects) {
- my $Users = RT::Users->new( $session{CurrentUser} );
- $Users->WhoHaveRight(
- Right => 'OwnTicket',
- Object => $object,
- IncludeSystemRights => 1,
- IncludeSuperusers => $isSU
- );
- while ( my $User = $Users->Next() ) {
- $user_uniq_hash{ $User->Id() } = $User;
- }
-}
-if ($Default && $Default != $RT::Nobody->id && !$user_uniq_hash{$Default}) {
- $user_uniq_hash{$Default} = RT::User->new($session{CurrentUser});
- $user_uniq_hash{$Default}->Load($Default);
-}
-
-my @users = values %user_uniq_hash;
-
-$m->callback(
- %ARGS,
- objects => \@objects,
- CallbackName => 'UpdateObjectList'
-);
-
-
</%INIT>
-
<%ARGS>
-$QueueObj => undef
-$Name => undef
-$Default => 0
-$User => undef
-$TicketObj => undef
-$DefaultValue => 1
-$DefaultLabel => "-"
-$ValueAttribute => 'id'
-$cfqueues => undef
+$TicketObj => undef
+$QueueObj => undef
+%Queues => ()
</%ARGS>
diff --git a/rt/share/html/Dashboards/Elements/Tabs b/rt/share/html/Elements/SelectOwnerAutocomplete
index 5e4815cad..81b38386c 100755..100644
--- a/rt/share/html/Dashboards/Elements/Tabs
+++ b/rt/share/html/Elements/SelectOwnerAutocomplete
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,69 +45,58 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Tools/Elements/Tabs,
- subtabs => $subtabs,
- current_tab => 'Dashboards/index.html',
- current_subtab => $current_subtab,
- actions => $actions,
- Title => $Title &>
-
+<%ARGS>
+$Name => undef
+$Objects => []
+$Default => 0
+$ValueAttribute => 'Name'
+$TicketObj => undef
+</%ARGS>
<%INIT>
-my $subtabs;
-my $actions;
-
-if ( $DashboardObj and $DashboardObj->Id ) {
- my $id = $DashboardObj->Id;
- my $name = $DashboardObj->Name;
-
- my $modify = "Dashboards/Modify.html?id=$id";
- my $queries = "Dashboards/Queries.html?id=$id";
- my $render = "Dashboards/$id/$name";
- my $subscribe = "Dashboards/Subscription.html?DashboardId=$id";
-
- $subtabs = $m->comp('/Elements/DashboardTabs', CurrentDashboard => $DashboardObj);
- $current_subtab = $render;
-
- $actions = {
- a_Basics => {
- title => loc('Basics'),
- path => $modify,
- },
+$ValueAttribute = 'Name' unless $ValueAttribute =~ /^(?:id|Name)$/;
- b_Queries => {
- title => loc('Queries'),
- path => $queries,
- },
+my $value = '';
- c_Subscription => {
- title => loc('Subscription'),
- path => $subscribe,
- },
- };
-
- delete $actions->{"c_Subscription"}
- unless $DashboardObj->CurrentUserCanSubscribe;
+if ( $Default and not $Default =~ /\D/ ) {
+ my $user = RT::User->new( $session{'CurrentUser'} );
+ $user->Load($Default);
+ $value = $user->$ValueAttribute;
+} elsif (defined $TicketObj) {
+ $value = $TicketObj->OwnerObj->$ValueAttribute;
}
-else {
- $subtabs->{"a_Select"} = {
- title => loc('Select'),
- path => "Dashboards/index.html",
- };
- my $dashboard = RT::Dashboard->new($session{'CurrentUser'});
- my @objects = $dashboard->_PrivacyObjects(Create => 1);
+# Map to a string of RT::Ticket-1|RT::Queue-5|...
+my $limit = join '|', map { join '-', ref($_), ($_->id || '') } @$Objects;
- if (@objects) {
- $subtabs->{"b_Create"} = {
- title => loc('New'),
- path => "Dashboards/Modify.html?Create=1",
- separator => 1,
- };
- }
-}
+my $query = $m->comp('/Elements/QueryString',
+ return => $ValueAttribute,
+ limit => $limit,
+);
</%INIT>
-<%ARGS>
-$DashboardObj => undef
-$current_subtab => undef
-$Title => undef
-</%ARGS>
+
+<input type="text" name="<%$Name%>" id="<%$Name%>" value="<% $value %>" />
+<script type="text/javascript">
+ jQuery(function() {
+ var cache = {};
+ jQuery("#"+<% $Name |n,j%>).autocomplete({
+ minLength: 2,
+ source: function(request, response) {
+ if ( request.term in cache ) {
+ response( cache[ request.term ] );
+ }
+ else {
+ jQuery.ajax({
+ url: <% RT->Config->Get('WebPath')|n,j%>+"/Helpers/Autocomplete/Owners?"+<% $query|n,j %>,
+ dataType: "json",
+ data: request,
+ success: function( data ) {
+ cache[ request.term ] = data;
+ response( data );
+ }
+ });
+ }
+ }
+ });
+ });
+</script>
+
diff --git a/rt/share/html/Elements/SelectOwnerDropdown b/rt/share/html/Elements/SelectOwnerDropdown
new file mode 100644
index 000000000..5dd642960
--- /dev/null
+++ b/rt/share/html/Elements/SelectOwnerDropdown
@@ -0,0 +1,99 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<select name="<%$Name%>" id="<%$Name%>">
+%if ($DefaultValue) {
+<option value=""<% !$Default ? qq[ selected="selected"] : '' |n %>><%$DefaultLabel |n%></option>
+%}
+% $Default = 0 unless defined $Default && $Default =~ /^\d+$/;
+% my @formatednames = sort {lc $a->[1] cmp lc $b->[1]} map {[$_, $m->scomp('/Elements/ShowUser', User => $_)]} grep { $_->id != RT->Nobody->id } @users;
+% my $nobody = [RT->Nobody, $m->scomp('/Elements/ShowUser', User => RT->Nobody)];
+% unshift @formatednames, $nobody;
+%foreach my $UserRef ( @formatednames) {
+%my $User = $UserRef->[0];
+<option <% ( $User->Id == $Default) ? qq[ selected="selected"] : '' |n %>
+%if ($ValueAttribute eq 'id') {
+ value="<%$User->id%>"
+%} elsif ($ValueAttribute eq 'Name') {
+ value="<%$User->Name%>"
+%}
+><% $UserRef->[1] |n %></option>
+%}
+</select>
+<%INIT>
+my %user_uniq_hash;
+
+my $isSU = $session{CurrentUser}
+ ->HasRight( Right => 'SuperUser', Object => $RT::System );
+foreach my $object (@$Objects) {
+ my $Users = RT::Users->new( $session{CurrentUser} );
+ $Users->WhoHaveRight(
+ Right => 'OwnTicket',
+ Object => $object,
+ IncludeSystemRights => 1,
+ IncludeSuperusers => $isSU
+ );
+ while ( my $User = $Users->Next() ) {
+ $user_uniq_hash{ $User->Id() } = $User;
+ }
+}
+if ($Default && $Default != RT->Nobody->id && !$user_uniq_hash{$Default}) {
+ $user_uniq_hash{$Default} = RT::User->new($session{CurrentUser});
+ $user_uniq_hash{$Default}->Load($Default);
+}
+
+my @users = values %user_uniq_hash;
+</%INIT>
+
+<%ARGS>
+$Name => undef
+$Objects => []
+$Default => 0
+$DefaultValue => 1
+$DefaultLabel => "-"
+$ValueAttribute => 'id'
+</%ARGS>
diff --git a/rt/share/html/Elements/SelectPriority b/rt/share/html/Elements/SelectPriority
index ec380888e..1b4dac148 100644
--- a/rt/share/html/Elements/SelectPriority
+++ b/rt/share/html/Elements/SelectPriority
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectQueue b/rt/share/html/Elements/SelectQueue
index 0cfdd915d..b0a191a7e 100755
--- a/rt/share/html/Elements/SelectQueue
+++ b/rt/share/html/Elements/SelectQueue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,29 +46,25 @@
%#
%# END BPS TAGGED BLOCK }}}
% if ($Lite) {
-% my $d = new RT::Queue($session{'CurrentUser'});
+% my $d = RT::Queue->new($session{'CurrentUser'});
% $d->Load($Default);
<input name="<%$Name%>" size="25" value="<%$d->Name%>" class="<%$Class%>" />
% }
% else {
-<select name="<%$Name%>" <% ($Multiple) ? 'multiple="multiple"' : '' %> <% ($OnChange) ? 'onchange="'.$OnChange.'"' : '' |n %> class="<%$Class%>">
+<select name="<%$Name%>" <% ($Multiple) ? qq{multiple="multiple" size="$Size"} : '' |n%> <% ($OnChange) ? 'onchange="'.$OnChange.'"' : '' |n %> class="<%$Class%>">
% if ($ShowNullOption) {
- <option value="">-</option>
+ <option value=""><% $DefaultLabel %></option>
% }
% for my $queue (@{$session{$cache_key}{queues}}) {
- <option value="<% ($NamedValues ? $queue->{Name} : $queue->{Id}) %>"
-
+ <option value="<% ($NamedValues ? $queue->{Name} : $queue->{Id}) %>"\
% if ($queue->{Id} eq ($Default||'') || $queue->{Name} eq ($Default||'')) {
- selected="selected"
+ selected="selected"\
% }
-
->
- <%$queue->{Name}%>
-
+><%$queue->{Name}%>\
% if ($Verbose and $queue->{Description}) {
- (<%$queue->{Description}%>)
+ (<%$queue->{Description}%>)\
% }
- </option>
+</option>
% }
</select>
% }
@@ -79,10 +75,12 @@ $ShowAllQueues => 1
$Name => undef
$Verbose => undef
$NamedValues => 0
+$DefaultLabel => "-"
$Default => 0
$Lite => 0
$OnChange => undef
$Multiple => 0
+$Size => 6
$Class => 'select-queue'
</%args>
<%init>
@@ -98,10 +96,18 @@ if ( defined $session{$cache_key} &&
delete $session{$cache_key};
}
+if ( defined $session{$cache_key} && ref $session{$cache_key} eq 'ARRAY') {
+ delete $session{$cache_key};
+}
+if ( defined $session{$cache_key} &&
+ $session{$cache_key}{lastupdated} <= RT->System->QueueCacheNeedsUpdate ) {
+ delete $session{$cache_key};
+}
+
if ( not defined $session{$cache_key} and not $Lite ) {
- my $q = new RT::Queues($session{'CurrentUser'});
+ my $q = RT::Queues->new($session{'CurrentUser'});
$q->UnLimit;
-
+
while (my $queue = $q->Next) {
if ($ShowAllQueues || $queue->CurrentUserHasRight($CheckQueueRight)) {
push @{$session{$cache_key}{queues}}, {
diff --git a/rt/share/html/Elements/SelectResultsPerPage b/rt/share/html/Elements/SelectResultsPerPage
index b472a8601..eababedd9 100755
--- a/rt/share/html/Elements/SelectResultsPerPage
+++ b/rt/share/html/Elements/SelectResultsPerPage
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectSortOrder b/rt/share/html/Elements/SelectSortOrder
index 418d97c5f..0515ab18e 100755
--- a/rt/share/html/Elements/SelectSortOrder
+++ b/rt/share/html/Elements/SelectSortOrder
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectStatus b/rt/share/html/Elements/SelectStatus
index 5718a2a9d..af1ff615f 100755
--- a/rt/share/html/Elements/SelectStatus
+++ b/rt/share/html/Elements/SelectStatus
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,24 +46,67 @@
%#
%# END BPS TAGGED BLOCK }}}
% my $onchange_attr = $onchange ? " onchange=\"$onchange\"" : '';
-<select id="<%$Name%>" name="<%$Name%>"<% $onchange_attr |n%>>
-%if ($DefaultValue) {
-<option value=""<% !$Default && qq[ selected="selected"] |n %>><%$DefaultLabel%></option>
-%}
-%foreach my $status (@status) {
-%next if ($SkipDeleted && $status eq 'deleted');
-<option value="<%$status%>"<% (defined $Default && $status eq $Default) && qq[ selected="selected"] |n %>><%loc($status)%></option>
+<select id="<%$Name%>" name="<%$Name%>" <% $Multiple ? qq{multiple="multiple" size="$Size"} : '' |n %> <% $onchange_attr |n%>>
+% if ( $DefaultValue ) {
+<option value=""<% !$Default && qq[ selected="selected"] |n %>><% $DefaultLabel %></option>
+% }
+% foreach my $status (@status) {
+% next if ($SkipDeleted && $status eq 'deleted');
+% my $selected = defined $Default && $status eq $Default ? 'selected="selected"' : '';
+<option value="<% $status %>" <% $selected |n %>><% loc($status) %></option>
% }
</select>
-<%ONCE>
-my $queue = new RT::Queue($session{'CurrentUser'});
-my @status = $queue->StatusArray();
-</%ONCE>
+<%INIT>
+### XXX: no cover for Tools/MyDay.html
+
+
+my @status;
+if ( @Statuses ) {
+ @status = @Statuses;
+}
+elsif ( $TicketObj ) {
+ my $current = $TicketObj->Status;
+ push @status, $current;
+
+ my $lifecycle = $TicketObj->QueueObj->Lifecycle;
+
+ my %has = ();
+ foreach my $next ( $lifecycle->Transitions( $current ) ) {
+ my $check = $lifecycle->CheckRight( $current => $next );
+ $has{ $check } = $TicketObj->CurrentUserHasRight( $check )
+ unless exists $has{ $check };
+ push @status, $next if $has{ $check };
+ }
+}
+elsif ( $QueueObj ) {
+ @status = $QueueObj->Lifecycle->Transitions('');
+} elsif ( %Queues ) {
+ for my $id (keys %Queues) {
+ my $queue = RT::Queue->new($session{'CurrentUser'});
+ $queue->Load($id);
+ push @status, $queue->Lifecycle->Valid if $queue->id;
+ }
+ my %seen;
+ @status = grep { not $seen{$_}++ } @status;
+} else {
+ @status = RT::Queue->Lifecycle->Valid;
+}
+</%INIT>
<%ARGS>
$Name => undef
+
+@Statuses => ()
+$TicketObj => undef
+$QueueObj => undef
+%Queues => ()
+
$Default => ''
$SkipDeleted => 0
$DefaultValue => 1
$DefaultLabel => "-"
+
+$Multiple => 0
+$Size => 6
+
$onchange => ''
</%ARGS>
diff --git a/rt/share/html/Elements/SelectTicketSortBy b/rt/share/html/Elements/SelectTicketSortBy
index 6a1f2d909..29db77f84 100755
--- a/rt/share/html/Elements/SelectTicketSortBy
+++ b/rt/share/html/Elements/SelectTicketSortBy
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,7 +52,7 @@
</select>
<%INIT>
-my $tickets = new RT::Tickets($session{'CurrentUser'});
+my $tickets = RT::Tickets->new($session{'CurrentUser'});
my @sortfields = $tickets->SortFields();
</%INIT>
diff --git a/rt/share/html/Elements/SelectTicketTypes b/rt/share/html/Elements/SelectTicketTypes
index 50c9038bd..d83c6c93f 100755
--- a/rt/share/html/Elements/SelectTicketTypes
+++ b/rt/share/html/Elements/SelectTicketTypes
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/SelectTimeUnits b/rt/share/html/Elements/SelectTimeUnits
index 714c5a46d..3ac6a12dc 100755
--- a/rt/share/html/Elements/SelectTimeUnits
+++ b/rt/share/html/Elements/SelectTimeUnits
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@
</select>
<%INIT>
$Name .= '-TimeUnits' unless $Name =~ /-TimeUnits$/io;
-my $HoursDefault = RT->Config->Get('DefaultTimeUnitsToHours');
+my $HoursDefault = RT->Config->Get('DefaultTimeUnitsToHours', $session{'CurrentUser'});
</%INIT>
<%ARGS>
$Name => ''
diff --git a/rt/share/html/Elements/SelectTimezone b/rt/share/html/Elements/SelectTimezone
index 5ff603e24..c77311e8f 100644
--- a/rt/share/html/Elements/SelectTimezone
+++ b/rt/share/html/Elements/SelectTimezone
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,26 +46,18 @@
%#
%# END BPS TAGGED BLOCK }}}
<%ONCE>
-my $HAS_DATETIME_TZ = eval { require DateTime::TimeZone };
-my $HAS_DATETIME = eval { require DateTime };
+use DateTime;
-my (@names, %label);
-if ( $HAS_DATETIME_TZ ) {
- @names = DateTime::TimeZone->all_names;
-}
+my @names = DateTime::TimeZone->all_names;
-if ( $HAS_DATETIME ) {
- my $dt = DateTime->now;
- for ( @names ) {
- $dt->set_time_zone( $_ );
- $label{$_} = $_ . ' ' . $dt->strftime('%z');
- }
+my %label;
+my $dt = DateTime->now;
+for ( @names ) {
+ $dt->set_time_zone( $_ );
+ $label{$_} = $_ . ' ' . $dt->strftime('%z');
}
</%ONCE>
-% unless ( $HAS_DATETIME_TZ && @names ) {
-<input type="text" name="<% $Name %>" value="<% $Default %>" />
-% } else {
<select name="<% $Name %>">
% if ( $ShowNullOption ) {
<option value=""><&|/l&>System Default</&></option>
@@ -75,7 +67,6 @@ if ( $HAS_DATETIME ) {
|n %> ><% $label{$tz} || $tz %></option>
% }
</select>
-% }
<%ARGS>
$ShowNullOption => 1
$Name => undef
diff --git a/rt/share/html/Elements/SelectUsers b/rt/share/html/Elements/SelectUsers
index b250ba639..2522a92ed 100755
--- a/rt/share/html/Elements/SelectUsers
+++ b/rt/share/html/Elements/SelectUsers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<select name="UserField">
-% foreach my $col (RT::User->BasicColumns) {
+% foreach my $col (@fields) {
<option <% ($UserField eq $col->[0]) ? 'selected="selected"' : '' |n %> value="<% $col->[0] %>"><% loc($col->[1]) %></option>
% }
% while (my $CF = $CFs->Next) {
@@ -60,9 +60,22 @@
my $CFs = RT::CustomFields->new($session{'CurrentUser'});
$CFs->LimitToChildType('RT::User');
$CFs->OrderBy( FIELD => 'Name' );
+
+my @fields = RT::User->BasicColumns;
+
+if ( $Fields and ref $Fields eq 'ARRAY' ) {
+ if ( ref $Fields->[0] eq 'ARRAY' ) {
+ @fields = @$Fields;
+ }
+ else {
+ # make the name equal the label
+ @fields = [ @$Fields, @$Fields ];
+ }
+}
</%INIT>
<%ARGS>
$UserField => ''
$UserOp => ''
$UserString => ''
+$Fields => undef
</%ARGS>
diff --git a/rt/share/html/Elements/SelectWatcherType b/rt/share/html/Elements/SelectWatcherType
index 3d37ee7c5..44beee00d 100755
--- a/rt/share/html/Elements/SelectWatcherType
+++ b/rt/share/html/Elements/SelectWatcherType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -57,7 +57,7 @@
<%INIT>
my @types;
if ($Scope =~ 'queue') {
- @types = qw(Cc AdminCc);
+ @types = RT::Queue->ManageableRoleGroupTypes;
}
else {
@types = qw(Requestor Cc AdminCc);
diff --git a/rt/share/html/Elements/ServiceFields b/rt/share/html/Elements/ServiceFields
new file mode 100644
index 000000000..9c9a248c8
--- /dev/null
+++ b/rt/share/html/Elements/ServiceFields
@@ -0,0 +1,161 @@
+<%doc>
+Accessible Freeside svc_x fields go in here. RT::URI::freeside::Internal
+pulls all fields from cust_svc and the svc_x tables into ServiceInfo().
+RT::Tickets_Overlay resolves "Service.foo" as "cust_svc.foo", and
+"Service.svc_acct.bar" as "JOIN svc_acct USING (svcnum) ... svc_acct.bar".
+
+See /Elements/CustomerFields for notes on this data structure.
+</%doc>
+<%once>
+
+my @service_fields = ( # ordered
+ {
+ # svcnum
+ Name => 'Service',
+ Label => 'Service',
+ Display => sub {
+ my $Ticket = shift;
+ my @return = ();
+ foreach my $s (ticket_svc_resolvers($Ticket)) {
+ push @return, \'<A HREF="', $s->HREF, \'">',
+ $s->AsString,
+ \'</A>',
+ \'<BR>';
+ }
+ pop @return;
+ @return;
+ },
+ OrderBy => 'Service.Number',
+ },
+ {
+ #Column name (format string)
+ Name => 'ServiceType',
+ # Column heading/query builder name
+ Label => 'Service Type',
+ # Column value (coderef, cust_svc/svc_x field, or ServiceInfo key)
+ Display => 'ServiceType',
+ # Query builder options
+ # RT-SQL field, defaults to Name
+ QueryName => 'Service.svcpart',
+ Op => equals_notequals,
+ Value => select_table('part_svc', 'svcpart', 'svc'),
+ # RT-SQL sort key (if any)
+ OrderBy => 'Service.svcpart',
+ },
+ {
+ Name => 'ServiceKey', # loosely corresponds to smartsearch/label field
+ Label => '',
+ # not displayable
+ QueryLabel => {
+ Type => 'select',
+ Options => [
+ 'Service.svc_acct.username' => loc('Username'),
+ 'Service.svc_phone.phonenum' => loc('Phone Number'),
+ 'Service.svc_broadband.ip_addr' => loc('IP Address'),
+ 'Service.svc_broadband.mac_addr' => loc('MAC Address'),
+ ],
+ },
+ Op => matches_notmatches,
+ Value => { Type => 'text', Size => 20 },
+ },
+ {
+ Name => 'Router',
+ Label => 'Router',
+ QueryName => 'Service.svc_broadband.routernum',
+ # not displayable
+ Op => equals_notequals,
+ Value => select_table('router', 'routernum', 'routername'),
+ OrderBy => 'Service.svc_broadband.routernum',
+ },
+
+);
+#helper subs
+#Op
+sub equals_notequals {
+ {
+ Type => 'component',
+ Path => '/Elements/SelectBoolean',
+ Arguments => { TrueVal=> '=', FalseVal=> '!=' },
+ }
+}
+sub matches_notmatches {
+ {
+ Type => 'component',
+ Path => '/Elements/SelectMatch',
+ },
+}
+
+#Value
+sub select_table {
+ my ($table, $value_col, $name_col, $hashref) = @_;
+ $hashref ||= { disabled => '' }; # common case
+ return {
+ Type => 'select',
+ Options => [
+ '' => '-',
+ map { $_->$value_col, $_->$name_col }
+ qsearch($table, $hashref)
+ ],
+ }
+}
+
+sub ticket_svc_resolvers {
+ my $Ticket = shift;
+ my @Services = @{ $Ticket->Services->ItemsArrayRef };
+ return map $_->TargetURI->Resolver, @Services;
+}
+
+sub svc_info_attribute {
+ my $attribute = shift;
+ sub {
+ my $Ticket = shift;
+ my @return;
+ foreach my $s (ticket_svc_resolvers($Ticket)) {
+ push @return, $s->ServiceInfo->{$attribute}, '<BR>';
+ }
+ pop @return; #trailing <BR>
+ @return;
+ };
+}
+
+</%once>
+<%init>
+use Data::Dumper;
+#warn Dumper(\@service_fields);
+
+my $arg = shift;
+if ( $arg eq 'Names' ) {
+ return map { $_->{Name} }
+ grep { exists $_->{Display} }
+ @service_fields;
+}
+elsif ( $arg eq 'ColumnMap' ) {
+ return map {
+ my $f = $_;
+ $f->{Name} => {
+ title => $f->{Label},
+ attribute => $f->{OrderBy} || '',
+ value => ref($f->{Display}) eq 'CODE' ?
+ $f->{Display} :
+ svc_info_attribute($f->{Display})
+ }
+ } #map
+ grep { exists $_->{Display} }
+ @service_fields;
+}
+elsif ( $arg eq 'Criteria' ) {
+ return map {
+ my $f = $_;
+ # argument to Search/Elements/ConditionRow
+ {
+ Name => ($f->{QueryName} || $f->{Name}),
+ Field => ($f->{QueryLabel} || $f->{Label}),
+ Op => $f->{Op},
+ Value => $f->{Value},
+ }
+ } #map
+ grep { exists($_->{Value}) }
+ @service_fields;
+}
+else { die "unknown ServiceFields mode '$arg'\n"; }
+</%init>
diff --git a/rt/share/html/Elements/SetupSessionCookie b/rt/share/html/Elements/SetupSessionCookie
index ae1284daa..6c024c248 100755
--- a/rt/share/html/Elements/SetupSessionCookie
+++ b/rt/share/html/Elements/SetupSessionCookie
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/ShowCustomFieldBinary b/rt/share/html/Elements/ShowCustomFieldBinary
index d08e807f2..04e6877dc 100644
--- a/rt/share/html/Elements/ShowCustomFieldBinary
+++ b/rt/share/html/Elements/ShowCustomFieldBinary
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,7 +45,7 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<a href="<%RT->Config->Get('WebPath')%>/Download/CustomFieldValue/<% $Object->Id %>/<% $Object->Content %>"><% $Object->Content %></a>
+<a href="<%RT->Config->Get('WebPath')%>/Download/CustomFieldValue/<% $Object->Id %>/<% $Object->Content |u %>"><% $Object->Content %></a>
<%ARGS>
$Object => undef
</%ARGS>
diff --git a/rt/share/html/Elements/ShowCustomFieldDate b/rt/share/html/Elements/ShowCustomFieldDate
index 4e8ad676c..8c94c131c 100644
--- a/rt/share/html/Elements/ShowCustomFieldDate
+++ b/rt/share/html/Elements/ShowCustomFieldDate
@@ -1,40 +1,40 @@
%# BEGIN BPS TAGGED BLOCK {{{
-%#
+%#
%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC
-%# <jesse@bestpractical.com>
-%#
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
+%#
+%#
%# LICENSE:
-%#
+%#
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
-%#
+%#
%# This work is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%# General Public License for more details.
-%#
+%#
%# You should have received a copy of the GNU General Public License
%# along with this program; if not, write to the Free Software
%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
%# 02110-1301 or visit their web page on the internet at
%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
+%#
+%#
%# CONTRIBUTION SUBMISSION POLICY:
-%#
+%#
%# (The following paragraph is not intended to limit the rights granted
%# to you to modify and distribute this software under the terms of
%# the GNU General Public License and is only of importance to you if
%# you choose to contribute your changes and enhancements to the
%# community by submitting them to Best Practical Solutions, LLC.)
-%#
+%#
%# By intentionally submitting any modifications, corrections or
%# derivatives to this work, or any other work intended for use with
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
@@ -43,13 +43,13 @@
%# royalty-free, perpetual, license to use, copy, create derivative
%# works based on those contributions, and sublicense and distribute
%# those contributions and any derivatives thereof.
-%#
+%#
%# END BPS TAGGED BLOCK }}}
<%INIT>
my $content = $Object->Content;
- my $DateObj = new RT::Date ( $session{'CurrentUser'} );
- $DateObj->Set( Format => 'ISO', Value => $content );
- $content = $DateObj->AsString;
+ my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
+ $DateObj->Set( Format => 'unknown', Value => $content );
+ $content = $DateObj->AsString(Time => 0);
</%INIT>
<%$content|n%>
<%ARGS>
diff --git a/rt/share/html/Elements/ShowCustomFieldDateTime b/rt/share/html/Elements/ShowCustomFieldDateTime
new file mode 100644
index 000000000..e7a9a2bdc
--- /dev/null
+++ b/rt/share/html/Elements/ShowCustomFieldDateTime
@@ -0,0 +1,57 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+ my $content = $Object->Content;
+ my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
+ $DateObj->Set( Format => 'ISO', Value => $content );
+ $content = $DateObj->AsString;
+</%INIT>
+<%$content|n%>
+<%ARGS>
+$Object
+</%ARGS>
diff --git a/rt/share/html/Elements/ShowCustomFieldImage b/rt/share/html/Elements/ShowCustomFieldImage
index 3d22e5ced..0272b409d 100644
--- a/rt/share/html/Elements/ShowCustomFieldImage
+++ b/rt/share/html/Elements/ShowCustomFieldImage
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,7 +45,7 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-% my $url = RT->Config->Get('WebPath') . "/Download/CustomFieldValue/".$Object->Id.'/'.$Object->Content;
+% my $url = RT->Config->Get('WebPath') . "/Download/CustomFieldValue/".$Object->Id.'/'.$m->interp->apply_escapes($Object->Content, 'u');
<a href="<% $url %>"><% $Object->Content %></a>
<img type="<% $Object->ContentType %>" height="64" src="<% $url %>" align="middle" />
<%ARGS>
diff --git a/rt/share/html/Elements/ShowCustomFieldText b/rt/share/html/Elements/ShowCustomFieldText
index 4192112c8..2b0fd3e14 100644
--- a/rt/share/html/Elements/ShowCustomFieldText
+++ b/rt/share/html/Elements/ShowCustomFieldText
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/ShowCustomFieldWikitext b/rt/share/html/Elements/ShowCustomFieldWikitext
index efadaa833..337606139 100644
--- a/rt/share/html/Elements/ShowCustomFieldWikitext
+++ b/rt/share/html/Elements/ShowCustomFieldWikitext
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/ShowCustomFields b/rt/share/html/Elements/ShowCustomFields
index 1bb61435f..6059f4ee7 100644
--- a/rt/share/html/Elements/ShowCustomFields
+++ b/rt/share/html/Elements/ShowCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -77,11 +77,16 @@
% $m->callback( CallbackName => 'AfterCustomFields', Object => $Object );
<%INIT>
$m->callback(
+ %ARGS,
CallbackName => 'MassageCustomFields',
Object => $Object,
CustomFields => $CustomFields,
);
+# don't print anything if there is no custom fields
+return unless $CustomFields->First;
+$CustomFields->GotoFirstItem;
+
my $print_value = sub {
my ($cf, $value) = @_;
my $linked = $value->LinkValueTo;
@@ -108,13 +113,13 @@ my $print_value = sub {
if ( $cf->IncludeContentForValue ) {
my $vid = $value->id;
$m->out( '<div class="object_cf_value_include" id="object_cf_value_'. $vid .'">' );
- $m->print( loc("See also:") );
- $m->out( '<a href="'. $value->IncludeContentForValue .'">' );
- $m->print( $value->IncludeContentForValue );
+ $m->out( loc("See also:") );
+ $m->out( '<a href="'. $m->interp->apply_escapes($value->IncludeContentForValue, 'h') .'">' );
+ $m->out( $m->interp->apply_escapes($value->IncludeContentForValue, 'h') );
$m->out( qq{</a></div>\n} );
- $m->out( qq{<script><!--\nahah('} );
- $m->print( $value->IncludeContentForValue );
- $m->out( qq{', 'object_cf_value_$vid');\n--></script>\n} );
+ $m->out( qq{<script><!--\njQuery('#object_cf_value_$vid').load(} );
+ $m->out( $m->interp->apply_escapes($value->IncludeContentForValue, 'j') );
+ $m->out( qq{);\n--></script>\n} );
}
};
diff --git a/rt/share/html/Elements/ShowLink b/rt/share/html/Elements/ShowLink
index 0bd0019a3..1727fa397 100644
--- a/rt/share/html/Elements/ShowLink
+++ b/rt/share/html/Elements/ShowLink
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,17 +45,19 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<a href="<%$URI->Resolver->HREF%>">
+<a href="<% $href %>">
% if ($URI->IsLocal) {
% my $member = $URI->Object;
+% my $has_name = UNIVERSAL::can($member, 'Name') || (UNIVERSAL::can($member, '_Accessible') && $member->_Accessible('Name', 'read'));
% if (UNIVERSAL::isa($member, "RT::Ticket")) {
% my $inactive = $member->QueueObj->IsInactiveStatus($member->Status);
<span class="<% $inactive ? 'ticket-inactive' : '' %>">
-<%$member->Id%>: (<& /Elements/ShowUser, User => $member->OwnerObj &>) <%$member->Subject%> [<% loc($member->Status) %>]
+
+<%$member->Id%>: (<& /Elements/ShowUser, User => $member->OwnerObj &>) <%$member->Subject || ''%> [<% loc($member->Status) %>]
</span>
-% } elsif ( UNIVERSAL::can($member, 'Name')) {
+% } elsif ($has_name) {
<%$URI->Resolver->AsString%>: <%$member->Name%>
% } else {
<%$URI->Resolver->AsString%>
@@ -67,3 +69,12 @@
<%ARGS>
$URI => undef
</%ARGS>
+
+<%INIT>
+my $href = $URI->Resolver->HREF;
+if ( $URI->IsLocal ) {
+ my $base = RT->Config->Get('WebBaseURL');
+ # URI->rel doesn't contain the leading '/'
+ $href = '/' . URI->new($href)->rel($base);
+}
+</%INIT>
diff --git a/rt/share/html/Elements/ShowLinks b/rt/share/html/Elements/ShowLinks
index d674fea72..61628de4d 100755
--- a/rt/share/html/Elements/ShowLinks
+++ b/rt/share/html/Elements/ShowLinks
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,12 +47,17 @@
%# END BPS TAGGED BLOCK }}}
<table>
<tr>
- <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depends on'), Relation => 'DependsOn' &>: <span class="create">(<a href="<%$clone->{'DependsOn-new'}%>"><% loc('Create') %></a>)</span></td>
+ <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depends on'), Relation => 'DependsOn' &>:\
+% if ($can_create) {
+ <span class="create">(<a href="<%$clone->{'DependsOn-new'}%>"><% loc('Create') %></a>)</span>
+% }
+ </td>
<td class="value">
-
<%PERL>
-my ( @active, @inactive, @not_tickets );
-for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
+my ( $depends_on, @active, @inactive, @not_tickets );
+$depends_on = $Ticket->DependsOn;
+
+while ( my $link = $depends_on->Next ) {
my $target = $link->TargetObj;
if ( $target && $target->isa('RT::Ticket') ) {
if ( $target->QueueObj->IsInactiveStatus( $target->Status ) ) {
@@ -67,8 +72,6 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
}
}
</%PERL>
-
-
<ul>
% for my $Link (@not_tickets, @active, @inactive) {
<li><& ShowLink, URI => $Link &></li>
@@ -77,7 +80,11 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
</td>
</tr>
<tr>
- <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depended on by'), Relation => 'DependedOnBy' &>: <span class="create">(<a href="<%$clone->{'new-DependsOn'}%>"><% loc('Create') %></a>)</span></td>
+ <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depended on by'), Relation => 'DependedOnBy' &>:\
+% if ($can_create) {
+ <span class="create">(<a href="<%$clone->{'new-DependsOn'}%>"><% loc('Create') %></a>)</span>
+% }
+ </td>
<td class="value">
<ul>
% while (my $Link = $Ticket->DependedOnBy->Next) {
@@ -87,15 +94,27 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
</td>
</tr>
<tr>
- <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Parents'), Relation => 'Parents' &>: <span class="create">(<a href="<%$clone->{'MemberOf-new'}%>"><% loc('Create') %></a>)</span></td>
+ <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Parents'), Relation => 'Parents' &>:\
+% if ($can_create) {
+ <span class="create">(<a href="<%$clone->{'MemberOf-new'}%>"><% loc('Create') %></a>)</span>
+% }
+ </td>
<td class="value"><& /Ticket/Elements/ShowParents, Ticket => $Ticket &></td>
</tr>
<tr>
- <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Children'), Relation => 'Children' &>: <span class="create">(<a href="<%$clone->{'new-MemberOf'}%>"><% loc('Create') %></a>)</span></td>
+ <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Children'), Relation => 'Children' &>:\
+% if ($can_create) {
+ <span class="create">(<a href="<%$clone->{'new-MemberOf'}%>"><% loc('Create') %></a>)</span>
+% }
+ </td>
<td class="value"><& /Ticket/Elements/ShowMembers, Ticket => $Ticket &></td>
</tr>
<tr>
- <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Refers to'), Relation => 'RefersTo' &>: <span class="create">(<a href="<%$clone->{'RefersTo-new'}%>"><% loc('Create') %></a>)</span></td>
+ <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Refers to'), Relation => 'RefersTo' &>:\
+% if ($can_create) {
+ <span class="create">(<a href="<%$clone->{'RefersTo-new'}%>"><% loc('Create') %></a>)</span>
+% }
+ </td>
<td class="value">
<ul>
% while (my $Link = $Ticket->RefersTo->Next) {
@@ -105,7 +124,11 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
</td>
</tr>
<tr>
- <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Referred to by'), Relation => 'ReferredToBy' &>: <span class="create">(<a href="<%$clone->{'new-RefersTo'}%>"><% loc('Create') %></a>)</span></td>
+ <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Referred to by'), Relation => 'ReferredToBy' &>:\
+% if ($can_create) {
+ <span class="create">(<a href="<%$clone->{'new-RefersTo'}%>"><% loc('Create') %></a>)</span>
+% }
+ </td>
<td class="value">
<ul>
% while (my $Link = $Ticket->ReferredToBy->Next) {
@@ -115,13 +138,9 @@ for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) {
</ul>
</td>
</tr>
-
-
% # Allow people to add more rows to the table
% $m->callback( %ARGS );
-
</table>
-
<%INIT>
my $id = $Ticket->id;
@@ -133,6 +152,7 @@ my $path
. $Ticket->Queue
. '&CloneTicket='
. $id;
+my $can_create = $Ticket->QueueObj->CurrentUserHasRight('CreateTicket');
for my $relation (
qw(RefersTo ReferredToBy)) {
@@ -154,7 +174,6 @@ for my $relation ( qw(MemberOf Members DependsOn DependedOnBy)) {
}
</%INIT>
-
<%ARGS>
$Ticket => undef
</%ARGS>
diff --git a/rt/share/html/Elements/ShowMemberships b/rt/share/html/Elements/ShowMemberships
index ab1567289..07fcdc67b 100644
--- a/rt/share/html/Elements/ShowMemberships
+++ b/rt/share/html/Elements/ShowMemberships
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -82,7 +82,11 @@ $GroupMembers->OrderByCols(
{ ALIAS => $alias, FIELD => 'Domain' },
{ ALIAS => $alias, FIELD => 'Name' },
);
+
+$GroupMembers->RowsPerPage($Limit) if $Limit;
+
</%INIT>
<%ARGS>
$UserObj
+$Limit => undef
</%ARGS>
diff --git a/rt/share/html/Elements/ShowRelationLabel b/rt/share/html/Elements/ShowRelationLabel
index 3b045e703..9e6ea97a3 100644
--- a/rt/share/html/Elements/ShowRelationLabel
+++ b/rt/share/html/Elements/ShowRelationLabel
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/QueueSummary b/rt/share/html/Elements/ShowReminders
index a18444032..34cde464a 100644
--- a/rt/share/html/Elements/QueueSummary
+++ b/rt/share/html/Elements/ShowReminders
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,64 +45,57 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<table border="0" cellspacing="0" cellpadding="1" width="100%" class="queue-summary">
+% if ( $reminders->Count ) {
+<table border="0" cellpadding="1" cellspacing="0" width="100%" class="collection-as-table">
<tr>
- <th class="collection-as-table"><&|/l&>Queue</&></th>
-% for my $condition (@$conditions) {
- <th class="collection-as-table"><% $condition->{name} %></th>
-% }
+<th class="collection-as-table"><&|/l&>Reminder</&></th>
+<th class="collection-as-table"><&|/l&>Due</&></th>
+<th class="collection-as-table"><&|/l&>Ticket</&></th>
</tr>
-% my $i;
-% for my $queue (@queues) {
-% $i++;
-% my $name = $queue->{Name};
-% $name =~ s/'/\\'/g;
-% my $queue_cond = "Queue = '$name' AND ";
-% my $all_q = $queue_cond . "(".join( " OR ", map $_->{cond}, @$conditions).")";
-<tr class="<% $i%2 ? 'oddline' : 'evenline'%>" >
-<td><a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $all_q |u,n %>" title="<% $queue->{Description} %>"><% $queue->{Name} %></a></td>
-% for my $condition (@$conditions) {
-% $Tickets->FromSQL( "Queue = $queue->{id} AND ". $condition->{cond} );
-<td align="right"><a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% $queue_cond.$condition->{cond} |u,n %>"><% $Tickets->Count %></a></td>
-% }
+<%PERL>
+my $i =0;
+while ( my $reminder = $reminders->Next ) {
+$i++;
+my $dueobj = $reminder->DueObj;
+my $overdue = $dueobj->Unix > 0 && $dueobj->Diff < 0 ? 1 : 0;
+
+my $targets = RT::Tickets->new($session{'CurrentUser'});
+$targets->FromSQL( "ReferredToBy = " . $reminder->id );
+
+if ( my $ticket= $targets->First ) {
+</%PERL>
+<tr class="<% $i%2 ? 'oddline' : 'evenline' %>">
+<td class="collection-as-table">
+<a href="<% RT->Config->Get('WebPath') %>/Ticket/Reminders.html?id=<% $ticket->id %>"><% $reminder->Subject %></a>
+</td>
+<td class="collection-as-table">
+<% $overdue ? '<span class="overdue">' : '' |n %><% $dueobj->AgeAsString || loc('Not set') %><% $overdue ? '</span>' : '' |n %>
+</td>
+<td class="collection-as-table">
+<a href="<% RT->Config->Get( 'WebPath' ) %>/Ticket/Display.html?id=<% $ticket->id %>">#<% $ticket->Id %>: <% $ticket->Subject %></a>
+</td>
+% } else {
+<td colspan="3" class="collection-as-table>
+<div class="error"><div class="error">Couldn't find Ticket for reminder <% $reminder->id %>. Please contact administrator.</div></div>
+</td>
+% }
</tr>
% }
</table>
-<%INIT>
-# Ensure sane default
-unless ( @$conditions ) {
- foreach (RT::Queue->ActiveStatusArray()) {
- push @$conditions, { cond => "Status = '$_'", name => loc($_) };
- }
-}
-
-
-my @queues;
-
-if ($cache && exists $session{$cache}) {
- @queues = @{$session{$cache}};
-}
-else {
- my $Queues = RT::Queues->new($session{'CurrentUser'});
- $Queues->UnLimit();
- @queues = grep $queue_filter->($_), @{$Queues->ItemsArrayRef};
-
- $m->callback( CallbackName => 'Filter', Queues => \@queues );
-
- @queues = map { {
- id => $_->Id,
- Name => $_->Name,
- Description => $_->Description,
- } } grep $_, @queues;
+% }
- $session{$cache} = \@queues if $cache;
-}
+<%INIT>
+my $reminders = RT::Tickets->new($session{'CurrentUser'});
+my $tsql = 'Type = "reminder"' .
+ ' AND ( Owner = "Nobody" OR Owner ="' . $session{'CurrentUser'}->id . '")' .
+ ' AND ( Status = "new" OR Status = "open" )';
+$tsql .= ' AND Due < "now"' if $OnlyOverdue;
-my $Tickets = RT::Tickets->new($session{'CurrentUser'});
+$reminders->FromSQL($tsql);
+$reminders->OrderBy( FIELD => 'Due', ORDER => 'ASC' );
</%INIT>
+
<%ARGS>
-$cache => undef
-$queue_filter => undef
-$conditions => []
+$OnlyOverdue => 0
</%ARGS>
diff --git a/rt/share/html/Elements/ShowSearch b/rt/share/html/Elements/ShowSearch
index 904c82760..4b96bbfda 100644
--- a/rt/share/html/Elements/ShowSearch
+++ b/rt/share/html/Elements/ShowSearch
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<&|/Widgets/TitleBox,
- title => loc($search->Description, $ProcessedSearchArg->{'Rows'}),
+ title => loc($desc, $ProcessedSearchArg->{'Rows'}),
title_href => $query_link_url.$QueryString,
titleright => $customize ? loc('Edit') : '',
titleright_href => $customize,
@@ -64,21 +64,22 @@ my $query_link_url = RT->Config->Get('WebPath').'/Search/Results.html';
if ($SavedSearch) {
my ( $container_object, $search_id ) = _parse_saved_search($SavedSearch);
unless ( $container_object ) {
- $m->out(loc("Either you have no rights to view saved search [_1] or identifier is incorrect", $SavedSearch));
+ $m->out(loc("Either you have no rights to view saved search [_1] or identifier is incorrect", $m->interp->apply_escapes($SavedSearch, 'h')));
return;
}
$search = $container_object->Attributes->WithId($search_id);
unless ( $search->Id && ref( $SearchArg = $search->Content ) eq 'HASH' ) {
- $m->out(loc("Saved Search [_1] not found", $SavedSearch)) unless $IgnoreMissing;
+ $m->out(loc("Saved Search [_1] not found", $m->interp->apply_escapes($SavedSearch, 'h'))) unless $IgnoreMissing;
return;
}
+ $SearchArg->{'SavedSearchId'} ||= $SavedSearch;
$SearchArg->{'SearchType'} ||= 'Ticket';
if ( $SearchArg->{SearchType} ne 'Ticket' ) {
# XXX: dispatch to different handler here
$query_display_component
= '/Search/Elements/' . $SearchArg->{SearchType};
- $query_link_url = RT->Config->Get('WebURL') . "/Search/$SearchArg->{SearchType}.html";
+ $query_link_url = RT->Config->Get('WebPath') . "/Search/$SearchArg->{SearchType}.html";
} elsif ($ShowCustomize) {
$customize = RT->Config->Get('WebPath') . '/Search/Build.html?'
. $m->comp( '/Elements/QueryString',
@@ -92,7 +93,7 @@ if ($SavedSearch) {
if ($custom->Description eq $Name) { $search = $custom; last }
}
unless ($search && $search->id) {
- $m->out("Predefined search $Name not found");
+ $m->out(loc("Predefined search [_1] not found", $m->interp->apply_escapes($Name, 'h')));
return;
}
}
@@ -119,6 +120,7 @@ $m->callback(
foreach ( $SearchArg, $ProcessedSearchArg ) {
$_->{'Format'} ||= '';
+ $_->{'Query'} ||= '';
$_->{'Format'} =~ s/__(Web(?:Path|Base|BaseURL))__/scalar RT->Config->Get($1)/ge;
# extract-message-catalog would "$1", so we avoid quotes for loc calls
@@ -140,6 +142,13 @@ foreach ( $SearchArg, $ProcessedSearchArg ) {
my $QueryString = '?' . $m->comp( '/Elements/QueryString', %$SearchArg );
+my $desc = $search->Description;
+
+# we only use [_1] here, let's escape other "[" and "]" unless they are
+# escaped already
+$desc =~ s/(?<!~)\[(?!_1\])/~[/g;
+$desc =~ s/(?<!~)(?<!\[_1)\]/~]/g;
+
</%init>
<%ARGS>
$Name => undef
diff --git a/rt/share/html/Elements/ShowUser b/rt/share/html/Elements/ShowUser
index 6381594d9..365497765 100644
--- a/rt/share/html/Elements/ShowUser
+++ b/rt/share/html/Elements/ShowUser
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -51,7 +51,7 @@
# $Address is Email::Address object
my $comp = '/Elements/ShowUser'. ucfirst lc $style;
-unless ( $m->comp_exists( $comp ) ) {
+unless ( RT::Interface::Web->ComponentPathIsSafe($comp) and $m->comp_exists( $comp ) ) {
$RT::Logger->error(
'Either system config or user #'
. $session{'CurrentUser'}->id
@@ -59,13 +59,14 @@ unless ( $m->comp_exists( $comp ) ) {
. ', but '. $comp . "doesn't exist"
);
return $m->comp('/Elements/ShowUserConcise',
- User => $User, Address => $Address,
+ User => $User, Address => $Address, NoEscape => $NoEscape
);
}
-return $m->comp( $comp, User => $User, Address => $Address );
+return $m->comp( $comp, User => $User, Address => $Address, NoEscape => $NoEscape );
</%INIT>
<%ARGS>
$User => undef
$Address => undef
+$NoEscape => 0
$style => RT->Config->Get('UsernameFormat', $session{'CurrentUser'})
</%ARGS>
diff --git a/rt/share/html/Elements/ShowUserConcise b/rt/share/html/Elements/ShowUserConcise
index d2cac1141..b56ba8372 100644
--- a/rt/share/html/Elements/ShowUserConcise
+++ b/rt/share/html/Elements/ShowUserConcise
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
%# Released under the terms of version 2 of the GNU Public License
-<% $Address || $User->RealName || $User->Name %>\
+<% $display |n %>\
<%ARGS>
$User => undef
$Address => undef
@@ -61,4 +61,7 @@ if ( !$User && $Address ) {
$Address = $Address->address;
}
}
+my $display = $Address || $User->RealName || $User->Name;
+ $display = $m->interp->apply_escapes( $display, 'h' )
+ unless $ARGS{'NoEscape'};
</%INIT>
diff --git a/rt/share/html/Elements/ShowUserEmailFrequency b/rt/share/html/Elements/ShowUserEmailFrequency
index a7fbd4c2f..4a02e124c 100644
--- a/rt/share/html/Elements/ShowUserEmailFrequency
+++ b/rt/share/html/Elements/ShowUserEmailFrequency
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/ShowUserVerbose b/rt/share/html/Elements/ShowUserVerbose
index 6a85a5b6f..9ff8cbbc8 100644
--- a/rt/share/html/Elements/ShowUserVerbose
+++ b/rt/share/html/Elements/ShowUserVerbose
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,30 +46,24 @@
%#
%# END BPS TAGGED BLOCK }}}
%# Released under the terms of version 2 of the GNU Public License
-% if ( $Address->phrase || $Address->comment ) {
-<% sprintf q{%s <%s> %s}, map $Address->$_, qw( phrase address comment ) %>
-% } else {
-<% $Address->address %>
-% }
+<% $display |n %>\
<%INIT>
-my ($phrase, $address, $comment);
+my $phrase = '';
+my $address = '';
+my $comment = '';
if ($User) {
$address = $User->EmailAddress;
- $phrase = $User->RealName
- if $User->RealName && lc $User->RealName ne lc $address;
+ $phrase = $User->RealName if $User->RealName && lc $User->RealName ne lc $address;
$comment = $User->Name if lc $User->Name ne lc $address;
- $comment = "($comment)" if defined $comment and length $comment;
- $Address = Email::Address->new( $phrase, $address, $comment );
+} else {
+ $address = $Address;
}
-$Address->comment('') if $comment and defined $Address->user and lc $Address->user eq lc $comment;
-if ( $phrase and my ( $l, $r ) = ( $phrase =~ /^(\w+) (\w+)$/ ) ) {
- $Address->phrase('')
- if $Address->user =~ /^\Q$l\E.\Q$r\E$/
- || $Address->user =~ /^\Q$r\E.\Q$l\E$/;
-}
+my $display = ($phrase || $comment || '' ) . ($address ? ' <'.$address.'>' : '');
+$display = $m->interp->apply_escapes( $display, 'h' )
+ unless $ARGS{'NoEscape'};
</%INIT>
<%ARGS>
$User => undef
diff --git a/rt/share/html/Elements/SimpleSearch b/rt/share/html/Elements/SimpleSearch
index aee31ec3e..533698d67 100755
--- a/rt/share/html/Elements/SimpleSearch
+++ b/rt/share/html/Elements/SimpleSearch
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/Submit b/rt/share/html/Elements/Submit
index fd2ecde41..b7840d34b 100755
--- a/rt/share/html/Elements/Submit
+++ b/rt/share/html/Elements/Submit
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,10 +52,10 @@ id="<%$id%>"
>
<div class="extra-buttons">
% if ($CheckAll) {
- <input type="button" value="<%$CheckAllLabel%>" onclick="setCheckbox(this.form, '<% $CheckboxName %>', true);return false;" class="button" />
+ <input type="button" value="<%$CheckAllLabel%>" onclick="setCheckbox(this.form, <% $match %>, true);return false;" class="button" />
% }
% if ($ClearAll) {
- <input type="button" value="<%$ClearAllLabel%>" onclick="setCheckbox(this.form, '<% $CheckboxName %>', false);return false;" class="button" />
+ <input type="button" value="<%$ClearAllLabel%>" onclick="setCheckbox(this.form, <% $match %>, false);return false;" class="button" />
% }
% if ($Reset) {
<input type="reset" value="<%$ResetLabel%>" class="button" />
@@ -63,18 +63,30 @@ id="<%$id%>"
</div>
<div class="buttons">
% if ( $Back ) {
- <span class="caption"><%$BackCaption%></span>
- <input type="submit" <% $BackOnClick ? qq[ onclick="$BackOnClick"] : '' | n %> <%
- $BackName ? qq[ name="$BackName"] : '' | n %> value="<%$BackLabel%>" class="button" />
+ <div class="next">
% }
% if ($AlternateLabel) {
<span class="caption"><%$AlternateCaption%></span>
- <input type="submit" <% $OnClick ? qq[ onclick="$OnClick"] : '' | n %> <% $Name ? qq[ name="$Name"] : '' | n %> value="<%$AlternateLabel%>" class="button" />
+ <input type="submit" <% $OnClick ? qq[ onclick="$OnClick"] : '' | n %> <% $Name ? qq[ name="$Name"] : '' | n %> <% $SubmitId ? qq[ id="$SubmitId"] : '' | n %> value="<%$AlternateLabel%>" class="button" />
% } else {
<span class="caption"><%$Caption%></span>
- <input type="submit" <% $OnClick ? qq[ onclick="$OnClick"] : '' | n %> <% $Name ? qq[ name="$Name"] : '' | n %> value="<%$Label%>" class="button" />
+ <input type="submit" <% $OnClick ? qq[ onclick="$OnClick"] : '' | n %> <% $Name ? qq[ name="$Name"] : '' | n %> <% $SubmitId ? qq[ id="$SubmitId"] : '' | n %> value="<%$Label%>" class="button" />
+% }
+
+% if ( $Back ) {
+ </div>
+% }
+
+
+% if ( $Back ) {
+ <div class="back">
+ <span class="caption"><%$BackCaption%></span>
+ <input type="submit" <% $BackOnClick ? qq[ onclick="$BackOnClick"] : '' | n %> <%
+ $BackName ? qq[ name="$BackName"] : '' | n %> value="<%$BackLabel%>" class="button" />
+ </div>
% }
+
</div>
<div class="submit-clear"></div>
</div>
@@ -91,6 +103,7 @@ $CheckAllLabel => loc('Check All')
$ClearAll => undef
$ClearAllLabel => loc('Clear All')
$CheckboxName => ''
+$CheckboxNameRegex => ''
$Back => undef
$BackName => 'Back'
$BackLabel => loc('Back')
@@ -99,5 +112,16 @@ $BackOnClick => undef
$OnClick => undef
$Reset => undef
$ResetLabel => loc('Reset')
+$SubmitId => undef
$id => undef
</%ARGS>
+<%init>
+my $match;
+if (length $CheckboxName) {
+ $match = $m->interp->apply_escapes($CheckboxName,'j');
+} elsif (length $CheckboxNameRegex) {
+ $match = $CheckboxNameRegex;
+} else {
+ $match = q{''};
+}
+</%init>
diff --git a/rt/share/html/Elements/Tabs b/rt/share/html/Elements/Tabs
index 004e04b73..3193b488d 100755
--- a/rt/share/html/Elements/Tabs
+++ b/rt/share/html/Elements/Tabs
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,84 +45,853 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/PageLayout,
- current_toptab => $current_toptab,
- current_tab => $current_tab,
- toptabs => $toptabs,
- topactions => $topactions,
- tabs => $tabs,
- actions => $actions,
- subactions => $subactions,
- title => $Title,
- show_menu => $show_menu,
-&>
+<& /Elements/PageLayout, show_menu => $show_menu &>
<a name="skipnav" id="skipnav" accesskey="8"></a>
<%INIT>
-my $action;
-my $basetopactions = {
- A => { html => $m->scomp('/Elements/CreateTicket')
- },
- B => { html => $m->scomp('/Elements/SimpleSearch')
- }
- };
-my $basetabs = { A => { title => loc('Homepage'),
- path => 'index.html',
- },
- Ab => { title => loc('Simple Search'),
- path => 'Search/Simple.html'
- },
- B => { title => loc('Tickets'),
- path => 'Search/Build.html'
- },
- C => { title => loc('Tools'),
- path => 'Tools/index.html'
- },
- };
-
-if ($session{'CurrentUser'}->HasRight( Right => 'ShowConfigTab',
- Object => $RT::System )) {
- $basetabs->{E} = { title => loc('Configuration'),
- path => 'Admin/',
- };
-}
-if ($session{'CurrentUser'}->HasRight( Right => 'ModifySelf',
- Object => $RT::System )) {
- $basetabs->{K} = { title => loc('Preferences'),
- path => 'Prefs/Other.html'
- };
-}
+#my $request_path = $HTML::Mason::Commands::r->path_info;
+my $request_path = $m->request_comp->path;
+
+my $query_string = sub {
+ my %args = @_;
+ my $u = URI->new();
+ $u->query_form(%args);
+ return $u->query;
+};
+
+my $build_admin_menu = sub {
+ my $top = shift;
+ my $admin = $top->child( config => title => loc('Configuration'), path => '/Admin/', sort_order => 99 );
+ if ( $session{'CurrentUser'}->HasRight( Object => RT->System, Right => 'AdminUsers' ) ) {
+ my $users = $admin->child( users =>
+ title => loc('Users'),
+ description => loc('Manage users and passwords'),
+ path => '/Admin/Users/',
+ );
+ $users->child( select => title => loc('Select'), path => "/Admin/Users/" );
+ $users->child( create => title => loc('Create'), path => "/Admin/Users/Modify.html?Create=1" );
+ }
+ my $groups = $admin->child( groups =>
+ title => loc('Groups'),
+ description => loc('Manage groups and group membership'),
+ path => '/Admin/Groups/',
+ );
+ $groups->child( select => title => loc('Select'), path => "/Admin/Groups/" );
+ $groups->child( create => title => loc('Create'), path => "/Admin/Groups/Modify.html?Create=1" );
+
+ my $queues = $admin->child( queues =>
+ title => loc('Queues'),
+ description => loc('Manage queues and queue-specific properties'),
+ path => '/Admin/Queues/',
+ );
+ $queues->child( select => title => loc('Select'), path => "/Admin/Queues/" );
+ $queues->child( create => title => loc('Create'), path => "/Admin/Queues/Modify.html?Create=1" );
+
+ if ( $session{'CurrentUser'}->HasRight( Object => RT->System, Right => 'AdminCustomField' ) ) {
+ my $cfs = $admin->child( 'custom-fields' =>
+ title => loc('Custom Fields'),
+ description => loc('Manage custom fields and custom field values'),
+ path => '/Admin/CustomFields/',
+ );
+ $cfs->child( select => title => loc('Select'), path => "/Admin/CustomFields/" );
+ $cfs->child( create => title => loc('Create'), path => "/Admin/CustomFields/Modify.html?Create=1" );
+ }
+
+ my $admin_global = $admin->child( global =>
+ title => loc('Global'),
+ description => loc('Manage properties and configuration which apply to all queues'),
+ path => '/Admin/Global/',
+ );
+
+ my $scrips = $admin_global->child( scrips =>
+ title => loc('Scrips'),
+ description => loc('Modify scrips which apply to all queues'),
+ path => '/Admin/Global/Scrips.html',
+ );
+ $scrips->child( select => title => loc('Select'), path => "/Admin/Global/Scrips.html" );
+ $scrips->child( create => title => loc('Create'), path => "/Admin/Global/Scrip.html?Create=1" );
+
+ my $templates = $admin_global->child( templates =>
+ title => loc('Templates'),
+ description => loc('Edit system templates'),
+ path => '/Admin/Global/Templates.html',
+ );
+ $templates->child( select => title => loc('Select'), path => "/Admin/Global/Templates.html" );
+ $templates->child( create => title => loc('Create'), path => "/Admin/Global/Template.html?Create=1" );
+
+ my $cfadmin = $admin_global->child( 'custom-fields' =>
+ title => loc('Custom Fields'),
+ description => loc('Modify global custom fields'),
+ path => '/Admin/Global/CustomFields/index.html',
+ );
+ $cfadmin->child( users =>
+ title => loc('Users'),
+ description => loc('Select custom fields for all users'),
+ path => '/Admin/Global/CustomFields/Users.html',
+ );
+ $cfadmin->child( groups =>
+ title => loc('Groups'),
+ description => loc('Select custom fields for all user groups'),
+ path => '/Admin/Global/CustomFields/Groups.html',
+ );
+ $cfadmin->child( queues =>
+ title => loc('Queues'),
+ description => loc('Select custom fields for all queues'),
+ path => '/Admin/Global/CustomFields/Queues.html',
+ );
+ $cfadmin->child( tickets =>
+ title => loc('Tickets'),
+ description => loc('Select custom fields for tickets in all queues'),
+ path => '/Admin/Global/CustomFields/Queue-Tickets.html',
+ );
+ $cfadmin->child( transactions =>
+ title => loc('Ticket Transactions'),
+ description => loc('Select custom fields for transactions on tickets in all queues'),
+ path => '/Admin/Global/CustomFields/Queue-Transactions.html',
+ );
+ $cfadmin->child( 'custom-fields' =>
+ title => loc('Articles'),
+ description => loc('Select Custom Fields for Articles in all Classes'),
+ path => '/Admin/Global/CustomFields/Class-Article.html',
+ );
+
+ my $article_admin = $admin->child( articles => title => loc('Articles'), path => "/Admin/Articles/index.html" );
+ my $class_admin = $article_admin->child(classes => title => loc('Classes'), path => '/Admin/Articles/Classes/' );
+ $class_admin->child( select =>
+ title => loc('Select'),
+ description => loc('Modify and Create Classes'),
+ path => '/Admin/Articles/Classes/',
+ );
+ $class_admin->child( create =>
+ title => loc('Create'),
+ description => loc('Modify and Create Custom Fields for Articles'),
+ path => '/Admin/Articles/Classes/Modify.html?Create=1',
+ );
+
+
+ my $cfs = $article_admin->child( 'custom-fields' =>
+ title => loc('Custom Fields'),
+ path => '/Admin/CustomFields/index.html?'.$m->comp('/Elements/QueryString', type => 'RT::Class-RT::Article'),
+ );
+ $cfs->child( select =>
+ title => loc('Select'),
+ path => '/Admin/CustomFields/index.html?'.$m->comp('/Elements/QueryString', type => 'RT::Class-RT::Article'),
+ );
+ $cfs->child( create =>
+ title => loc('Create'),
+ path => '/Admin/CustomFields/Modify.html?'.$m->comp("/Elements/QueryString", Create=>1, LookupType=> "RT::Class-RT::Article" ),
+ );
+
+ $admin_global->child( 'group-rights' =>
+ title => loc('Group Rights'),
+ description => loc('Modify global group rights'),
+ path => '/Admin/Global/GroupRights.html',
+ );
+ $admin_global->child( 'user-rights' =>
+ title => loc('User Rights'),
+ description => loc('Modify global user rights'),
+ path => '/Admin/Global/UserRights.html',
+ );
+ $admin_global->child( 'my-rt' =>
+ title => loc('RT at a glance'),
+ description => loc('Modify the default "RT at a glance" view'),
+ path => '/Admin/Global/MyRT.html',
+ );
+ $admin_global->child( 'topics' =>
+ title => loc('Topics'),
+ description => loc('Modify global article topics'),
+ path => '/Admin/Global/Topics.html',
+ );
+
+ my $admin_tools = $admin->child( tools =>
+ title => loc('Tools'),
+ description => loc('Use other RT administrative tools'),
+ path => '/Admin/Tools/',
+ );
+ $admin_tools->child( configuration =>
+ title => loc('System Configuration'),
+ description => loc('Detailed information about your RT setup'),
+ path => '/Admin/Tools/Configuration.html',
+ );
+ $admin_tools->child( theme =>
+ title => loc('Theme'),
+ description => loc('Customize the look of your RT'),
+ path => '/Admin/Tools/Theme.html',
+ );
+ if (RT->Config->Get('StatementLog')
+ && $session{'CurrentUser'}->HasRight( Right => 'SuperUser', Object => RT->System )) {
+ $admin_tools->child( 'sql-queries' =>
+ title => loc('SQL Queries'),
+ description => loc('Browse the SQL queries made in this process'),
+ path => '/Admin/Tools/Queries.html',
+ );
+ }
+ $admin_tools->child( shredder =>
+ title => loc('Shredder'),
+ description => loc('Permanently wipeout data from RT'),
+ path => '/Admin/Tools/Shredder',
+ );
+
+ if ( $request_path =~ m{^/Admin/(Queues|Users|Groups|CustomFields)} ) {
+ my $type = $1;
+ my $tabs = PageMenu();
+
+ my %labels = (
+ Queues => loc("Queues"),
+ Users => loc("Users"),
+ Groups => loc("Groups"),
+ CustomFields => loc("Custom Fields"),
+ );
+
+ my $section;
+ if ( $request_path =~ m|^/Admin/$type/?(?:index.html)?$|
+ || ( $request_path =~ m|^/Admin/$type/(?:Modify.html)$|
+ && $DECODED_ARGS->{'Create'} )
+ )
+ {
+ $section = $tabs;
+
+ } else {
+ $section = $tabs->child( select => title => $labels{$type},
+ path => "/Admin/$type/" );
+ }
+
+ $section->child( select => title => loc('Select'), path => "/Admin/$type/" );
+ $section->child( create => title => loc('Create'), path => "/Admin/$type/Modify.html?Create=1" );
+ }
+
+ if ( $request_path =~ m{^/Admin/Queues} ) {
+ if ( $DECODED_ARGS->{'id'} && $DECODED_ARGS->{'id'} =~ /^\d+$/
+ ||
+ $DECODED_ARGS->{'Queue'} && $DECODED_ARGS->{'Queue'} =~ /^\d+$/
+ ) {
+ my $id = $DECODED_ARGS->{'Queue'} || $DECODED_ARGS->{'id'};
+ my $queue_obj = RT::Queue->new( $session{'CurrentUser'} );
+ $queue_obj->Load($id);
+
+ my $queue = PageMenu();
+ $queue->child( basics => title => loc('Basics'), path => "/Admin/Queues/Modify.html?id=" . $id );
+ $queue->child( people => title => loc('Watchers'), path => "/Admin/Queues/People.html?id=" . $id );
+
+ my $templates = $queue->child(templates => title => loc('Templates'), path => "/Admin/Queues/Templates.html?id=" . $id);
+ $templates->child( select => title => loc('Select'), path => "/Admin/Queues/Templates.html?id=".$id);
+ $templates->child( create => title => loc('Create'), path => "/Admin/Queues/Template.html?Create=1;Queue=".$id);
+
+ my $scrips = $queue->child( scrips => title => loc('Scrips'), path => "/Admin/Queues/Scrips.html?id=" . $id);
+ $scrips->child( select => title => loc('Select'), path => "/Admin/Queues/Scrips.html?id=" . $id );
+ $scrips->child( create => title => loc('Create'), path => "/Admin/Queues/Scrip.html?Create=1;Queue=" . $id);
+
+ my $ticket_cfs = $queue->child( 'ticket-custom-fields' => title => loc('Ticket Custom Fields'),
+ path => '/Admin/Queues/CustomFields.html?SubType=RT::Ticket&id=' . $id );
+
+ my $txn_cfs = $queue->child( 'transaction-custom-fields' => title => loc('Transaction Custom Fields'),
+ path => '/Admin/Queues/CustomFields.html?SubType=RT::Ticket-RT::Transaction&id='.$id );
+
+ $queue->child( 'group-rights' => title => loc('Group Rights'), path => "/Admin/Queues/GroupRights.html?id=".$id );
+ $queue->child( 'user-rights' => title => loc('User Rights'), path => "/Admin/Queues/UserRights.html?id=" . $id );
+
+
+ $m->callback( CallbackName => 'PrivilegedQueue', queue_id => $id, page_menu => $queue);
+ }
+ }
+ if ( $request_path =~ m{^/Admin/Users} ) {
+ if ( $DECODED_ARGS->{'id'} && $DECODED_ARGS->{'id'} =~ /^\d+$/ ) {
+ my $id = $DECODED_ARGS->{'id'};
+ my $obj = RT::User->new( $session{'CurrentUser'} );
+ $obj->Load($id);
+
+ my $tabs = PageMenu();
+ $tabs->child( basics => title => loc('Basics'), path => "/Admin/Users/Modify.html?id=" . $id );
+ $tabs->child( memberships => title => loc('Memberships'), path => "/Admin/Users/Memberships.html?id=" . $id );
+ $tabs->child( history => title => loc('History'), path => "/Admin/Users/History.html?id=" . $id );
+ $tabs->child( 'my-rt' => title => loc('RT at a glance'), path => "/Admin/Users/MyRT.html?id=" . $id );
+ if ( RT->Config->Get('GnuPG')->{'Enable'} ) {
+ $tabs->child( pgp => title => loc('GnuPG'), path => "/Admin/Users/GnuPG.html?id=" . $id );
+ }
+ }
+
+ }
+
+ if ( $request_path =~ m{^/Admin/Groups} ) {
+ if ( $DECODED_ARGS->{'id'} && $DECODED_ARGS->{'id'} =~ /^\d+$/ ) {
+ my $id = $DECODED_ARGS->{'id'};
+ my $obj = RT::Group->new( $session{'CurrentUser'} );
+ $obj->Load($id);
+
+ my $tabs = PageMenu();
+ $tabs->child( basics => title => loc('Basics'), path => "/Admin/Groups/Modify.html?id=" . $obj->id );
+ $tabs->child( members => title => loc('Members'), path => "/Admin/Groups/Members.html?id=" . $obj->id );
+ $tabs->child( 'group-rights' => title => loc('Group Rights'), path => "/Admin/Groups/GroupRights.html?id=" . $obj->id );
+ $tabs->child( 'user-rights' => title => loc('User Rights'), path => "/Admin/Groups/UserRights.html?id=" . $obj->id );
+ $tabs->child( history => title => loc('History'), path => "/Admin/Groups/History.html?id=" . $obj->id );
+ }
+ }
-if ($session{'CurrentUser'}->HasRight( Right => 'ShowApprovalsTab',
- Object => $RT::System )) {
- $basetabs->{P} = { title => loc('Approval'),
- path => 'Approvals/'
+ if ( $request_path =~ m{^/Admin/CustomFields/} ) {
+ if ( $DECODED_ARGS->{'id'} && $DECODED_ARGS->{'id'} =~ /^\d+$/ ) {
+ my $id = $DECODED_ARGS->{'id'};
+ my $obj = RT::CustomField->new( $session{'CurrentUser'} );
+ $obj->Load($id);
+
+ my $tabs = PageMenu();
+ $tabs->child( basics => title => loc('Basics'), path => "/Admin/CustomFields/Modify.html?id=".$id );
+ $tabs->child( 'group-rights' => title => loc('Group Rights'), path => "/Admin/CustomFields/GroupRights.html?id=" . $id );
+ $tabs->child( 'user-rights' => title => loc('User Rights'), path => "/Admin/CustomFields/UserRights.html?id=" . $id );
+ $tabs->child( 'applies-to' => title => loc('Applies to'), path => "/Admin/CustomFields/Objects.html?id=" . $id );
+ }
+ }
+
+ if ( $request_path =~ m{^/Admin/Global/(Scrip|Template)s?\.html} ) {
+ my $type = $1;
+ my $tabs = PageMenu();
+
+ # With only two elements, swapping between dropdown and menu is kinda dumb
+ # In the glorious future this should be cleaner.
+
+ $tabs->child( select => title => loc('Select'), path => "/Admin/Global/${type}s.html" );
+ $tabs->child( create => title => loc('Create'), path => "/Admin/Global/${type}.html?Create=1" );
+ }
+
+ if ( $request_path =~ m{^/Admin/Articles/Classes/} ) {
+ my $tabs = PageMenu();
+ if ( my $id = $DECODED_ARGS->{'id'} ) {
+ my $obj = RT::CustomField->new( $session{'CurrentUser'} );
+ $obj->Load($id);
+
+ my $section = $tabs->child( select => title => loc("Classes"), path => "/Admin/Articles/Classes/" );
+ $section->child( select => title => loc('Select'), path => "/Admin/Articles/Classes/" );
+ $section->child( create => title => loc('Create'), path => "/Admin/Articles/Classes/Modify.html?Create=1" );
+
+ $tabs->child( basics => title => loc('Basics'), path => "/Admin/Articles/Classes/Modify.html?id=".$id );
+ $tabs->child( topics => title => loc('Topics'), path => "/Admin/Articles/Classes/Topics.html?id=".$id );
+ $tabs->child( 'custom-fields' => title => loc('Custom Fields'), path => "/Admin/Articles/Classes/CustomFields.html?id=".$id );
+ $tabs->child( 'group-rights' => title => loc('Group Rights'), path => "/Admin/Articles/Classes/GroupRights.html?id=".$id );
+ $tabs->child( 'user-rights' => title => loc('User Rights'), path => "/Admin/Articles/Classes/UserRights.html?id=".$id );
+ $tabs->child( 'applies-to' => title => loc('Applies to'), path => "/Admin/Articles/Classes/Objects.html?id=$id" );
+ } else {
+ $tabs->child( select => title => loc('Select'), path => "/Admin/Articles/Classes/" );
+ $tabs->child( create => title => loc('Create'), path => "/Admin/Articles/Classes/Modify.html?Create=1" );
+ }
+ }
+};
+
+
+my $build_main_nav = sub {
+
+ my $home = Menu->child( home => title => loc('Homepage'), path => '/' );
+ # We explicitly exclude superusers; otherwise the dashboards for
+ # groups you're not in (but can see the dashboards of by dint of
+ # being a superuser) would push the useful ones from the groups
+ # you're actually in off of the stack.
+ my @dashboards = $m->comp("/Dashboards/Elements/ListOfDashboards", IncludeSuperuserGroups => 0);
+ my $limit = 7;
+
+ my $more = 0;
+ if ( @dashboards > $limit ) {
+ $more = 1;
+ splice @dashboards, $limit;
+ }
+
+ my $dashes = Menu()->child('home');
+ if (@dashboards) {
+ for my $dash (@dashboards) {
+ $home->child( 'dashboard-' . $dash->id,
+ title => $dash->Name,
+ path => '/Dashboards/' . $dash->id . '/' . $dash->Name
+ );
+ }
+
+ $dashes->child( more => title => loc('All Dashboards'), path => 'Dashboards/index.html' );
+ }
+ my $dashboard = RT::Dashboard->new( $session{CurrentUser} );
+ if ( $dashboard->CurrentUserCanCreateAny ) {
+ $dashes->child('dashboard_create' => title => loc('New Dashboard'), path => "/Dashboards/Modify.html?Create=1" );
+ }
+
+ my $tickets = Menu->child( search => title => loc('Tickets'), path => '/Search/Build.html' );
+ $tickets->child( simple => title => loc('Simple Search'), path => "/Search/Simple.html" );
+ $tickets->child( new => title => loc('New Search'), path => "/Search/Build.html?NewQuery=1" );
+
+
+ my $tools = Menu->child( tools => title => loc('Tools'), path => '/Tools/index.html' );
+ my $articles = $tools->child( articles => title => loc('Articles'), path => "/Articles/index.html");
+ $articles->child( articles => title => loc('Overview'), path => "/Articles/index.html" );
+ $articles->child( search => title => loc('Search'), path => "/Articles/Article/Search.html" );
+ $articles->child( topics => title => loc('Topics'), path => "/Articles/Topics.html" );
+
+ $tools->child( my_day =>
+ title => loc('My Day'),
+ description => loc('Easy updating of your open tickets'),
+ path => '/Tools/MyDay.html',
+ );
+
+ if ( RT->Config->Get('EnableReminders') ) {
+ $tools->child( my_reminders =>
+ title => loc('My Reminders'),
+ description => loc('Easy viewing of your reminders'),
+ path => '/Tools/MyReminders.html',
+ );
+ }
+
+ $tools->child( offline =>
+ title => loc('Offline'),
+ description => loc('Create tickets offline'),
+ path => '/Tools/Offline.html',
+ );
+
+ if ( $session{'CurrentUser'}->HasRight( Right => 'ShowApprovalsTab', Object => RT->System ) ) {
+ $tools->child( approval =>
+ title => loc('Approval'),
+ description => loc('My Approvals'),
+ path => '/Approvals/',
+ );
+ }
+
+ if ( $session{'CurrentUser'}->HasRight( Right => 'ShowConfigTab', Object => RT->System ) )
+ {
+ $build_admin_menu->($tools);
+ }
+
+ my $username = '<span class="current-user">'
+ . $m->interp->apply_escapes($session{'CurrentUser'}->Name, 'h')
+ . '</span>';
+ my $about_me = Menu->child( 'preferences' =>
+ title => loc('Logged in as [_1]', $username),
+ escape_title => 0,
+ sort_order => 99,
+ );
+
+
+ if ( $session{'CurrentUser'}->UserObj
+ && $session{'CurrentUser'}->HasRight( Right => 'ModifySelf', Object => RT->System )) {
+ my $settings = $about_me->child( settings => title => loc('Settings'), path => '/Prefs/Other.html' );
+ $settings->child( options => title => loc('Options'), path => '/Prefs/Other.html' );
+ $settings->child( about_me => title => loc('About me'), path => '/User/Prefs.html' );
+ $settings->child( search_options => title => loc('Search options'), path => '/Prefs/SearchOptions.html' );
+ $settings->child( myrt => title => loc('RT at a glance'), path => '/Prefs/MyRT.html' );
+ $settings->child( quicksearch => title => loc('Quick search'), path => '/Prefs/Quicksearch.html' );
+
+ my $search_menu = $settings->child( 'saved-searches' => title => loc('Saved Searches') );
+ my $searches = [ $m->comp( "/Search/Elements/SearchesForObject",
+ Object => RT::System->new( $session{'CurrentUser'} )) ];
+ my $i = 0;
+
+ for my $search (@$searches) {
+ $search_menu->child( "search-" . $i++ =>
+ title => $search->[0],
+ path => "/Prefs/Search.html?"
+ . $query_string->( name => ref( $search->[1] ) . '-' . $search->[1]->Id ),
+ );
+
+ }
+ }
+ if ( $session{'CurrentUser'}->Name
+ && ( !RT->Config->Get('WebExternalAuth')
+ || RT->Config->Get('WebFallbackToInternalAuth') )) {
+ $about_me->child( logout => title => loc('Logout'), path => '/NoAuth/Logout.html' );
+ }
+ if ( $request_path =~ m{^/Dashboards/(\d+)?}) {
+ if ( my $id = ( $1 || $DECODED_ARGS->{'id'} ) ) {
+ my $obj = RT::Dashboard->new( $session{'CurrentUser'} );
+ $obj->LoadById($id);
+ if ( $obj and $obj->id ) {
+ my $tabs = PageMenu;
+ $tabs->child( basics => title => loc('Basics'), path => "/Dashboards/Modify.html?id=" . $obj->id);
+ $tabs->child( content => title => loc('Content'), path => "/Dashboards/Queries.html?id=" . $obj->id);
+ $tabs->child( subscription => title => loc('Subscription'), path => "/Dashboards/Subscription.html?id=" . $obj->id)
+ if $obj->CurrentUserCanSubscribe;
+ $tabs->child( show => title => loc('Show'), path => "/Dashboards/" . $obj->id . "/" . $obj->Name)
+ }
+ }
+ }
+
+
+ if ( $request_path =~ m{^/Ticket/} ) {
+ if ( ( $DECODED_ARGS->{'id'} || '' ) =~ /^(\d+)$/ ) {
+ my $id = $1;
+ my $obj = RT::Ticket->new( $session{'CurrentUser'} );
+ $obj->Load($id);
+
+ my $actions = PageMenu()->child( actions => title => loc('Actions'), sort_order => 95 );
+ my $tabs = PageMenu();
+ $tabs->child( bookmark => raw_html => $m->scomp( '/Ticket/Elements/Bookmark', id => $id ), sort_order => 99 );
+ $tabs->child( display => title => loc('Display'), path => "/Ticket/Display.html?id=" . $id );
+ $tabs->child( history => title => loc('History'), path => "/Ticket/History.html?id=" . $id );
+
+ my %can = %{ $obj->CurrentUser->PrincipalObj->HasRights( Object => $obj ) };
+ $can{'_ModifyOwner'} = $can{'OwnTicket'} || $can{'TakeTicket'} || $can{'StealTicket'};
+ my $can = sub {
+ unless ($_[0] eq 'ExecuteCode') {
+ return $can{$_[0]} || $can{'SuperUser'};
+ } else {
+ return !RT->Config->Get('DisallowExecuteCode')
+ && ( $can{'ExecuteCode'} || $can{'SuperUser'} );
+ }
};
-}
-if (!defined $toptabs) {
- $toptabs = $basetabs;
-}
-if (!defined $topactions) {
- $topactions = $basetopactions;
+ # comment out until we can do it for an individual custom field
+ #if ( $can->('ModifyTicket') || $can->('ModifyCustomField') ) {
+ $tabs->child( basics => title => loc('Basics'), path => "/Ticket/Modify.html?id=" . $id );
+
+ #}
+
+ #ACL?
+ $tabs->child( customers => title => loc('Customers'), path => "/Ticket/ModifyCustomers.html?id=" . $id );
+
+ if ( $can->('ModifyTicket') || $can->('_ModifyOwner') || $can->('Watch') || $can->('WatchAsAdminCc') ) {
+ $tabs->child( people => title => loc('People'), path => "/Ticket/ModifyPeople.html?id=" . $id );
+ }
+
+ if ( $can->('ModifyTicket') ) {
+ $tabs->child( dates => title => loc('Dates'), path => "/Ticket/ModifyDates.html?id=" . $id );
+ $tabs->child( links => title => loc('Links'), path => "/Ticket/ModifyLinks.html?id=" . $id );
+ }
+
+ #if ( $can->('ModifyTicket') || $can->('ModifyCustomField') || $can->('_ModifyOwner') ) {
+ $tabs->child( jumbo => title => loc('Jumbo'), path => "/Ticket/ModifyAll.html?id=" . $id );
+ #}
+
+ if ( RT->Config->Get('EnableReminders') ) {
+ $tabs->child( reminders => title => loc('Reminders'), path => "/Ticket/Reminders.html?id=" . $id );
+ }
+
+ if ( $can->('ModifyTicket') or $can->('ReplyToTicket') ) {
+ $actions->child( reply => title => loc('Reply'), path => "/Ticket/Update.html?Action=Respond;id=" . $id );
+ }
+
+ if ( $can->('ModifyTicket') or $can->('CommentOnTicket') ) {
+ $actions->child( comment => title => loc('Comment'), path => "/Ticket/Update.html?Action=Comment;id=" . $id );
+ }
+
+ if ( $can->('ForwardMessage') ) {
+ $actions->child( forward => title => loc('Forward'), path => "/Ticket/Forward.html?id=" . $id );
+ }
+
+ my $hide_resolve_with_deps = RT->Config->Get('HideResolveActionsWithDependencies')
+ && $obj->HasUnresolvedDependencies;
+
+ my $current = $obj->Status;
+ my $lifecycle = $obj->QueueObj->Lifecycle;
+ my $i = 1;
+ foreach my $info ( $lifecycle->Actions($current) ) {
+ my $next = $info->{'to'};
+ next unless $lifecycle->IsTransition( $current => $next );
+
+ my $check = $lifecycle->CheckRight( $current => $next );
+ next unless $can->($check);
+
+ next if $hide_resolve_with_deps
+ && $lifecycle->IsInactive($next)
+ && !$lifecycle->IsInactive($current);
+
+ my $action = $info->{'update'} || '';
+ my $url = '/Ticket/';
+ if ($action) {
+ $url .= "Update.html?"
+ . $query_string->(
+ Action => $action,
+ DefaultStatus => $next,
+ id => $id,
+ );
+ } else {
+ $url .= "Display.html?"
+ . $query_string->(
+ Status => $next,
+ id => $id,
+ );
+ }
+ my $key = $info->{'label'} || ucfirst($next);
+ $actions->child( $key => title => loc( $key ), path => $url);
+ }
+
+ if ( $can->('OwnTicket') ) {
+ if ( $obj->OwnerObj->Id == RT->Nobody->id
+ && ( $can->('ModifyTicket') or $can->('TakeTicket') ) ) {
+ $actions->child( take => title => loc('Take'), path => "/Ticket/Display.html?Action=Take;id=" . $id );
+ }
+
+ elsif ( $obj->OwnerObj->id != RT->Nobody->id
+ && $obj->OwnerObj->id != $session{CurrentUser}->id
+ && ( $can->('ModifyTicket') or $can->('StealTicket') ) ) {
+ $actions->child( steal => title => loc('Steal'), path => "/Ticket/Display.html?Action=Steal;id=" . $id );
+ }
+ }
+
+ # TODO needs a "Can extract article into a class applied to this queue" check
+ $actions->child( 'extract-article' =>
+ title => loc('Extract Article'),
+ path => "/Articles/Article/ExtractIntoClass.html?Ticket=".$obj->id,
+ );
+
+ if ( defined $session{"tickets"} ) {
+ # we have to update session data if we get new ItemMap
+ my $updatesession = 1 unless ( $session{"tickets"}->{'item_map'} );
+
+ my $item_map = $session{"tickets"}->ItemMap;
+
+ if ($updatesession) {
+ $session{"tickets"}->PrepForSerialization();
+ }
+
+ my $search = Menu()->child('search');
+ # Don't display prev links if we're on the first ticket
+ if ( $item_map->{$id}->{prev} ) {
+ $search->child( first =>
+ title => '<< ' . loc('First'), class => "nav", path => "/Ticket/Display.html?id=" . $item_map->{first});
+ $search->child( prev =>
+ title => '< ' . loc('Prev'), class => "nav", path => "/Ticket/Display.html?id=" . $item_map->{$id}->{prev});
+ }
+ # Don't display next links if we're on the last ticket
+ if ( $item_map->{$id}->{next} ) {
+ $search->child( next =>
+ title => loc('Next') . ' >', class => "nav", path => "/Ticket/Display.html?id=" . $item_map->{$id}->{next});
+ $search->child( last =>
+ title => loc('Last') . ' >>', class => "nav", path => "/Ticket/Display.html?id=" . $item_map->{last});
+ }
+ }
+ }
+ }
+
+ if (
+ (
+ $request_path =~ m{^/(?:Ticket|Search)/}
+ && $request_path !~ m{^/Search/Simple\.html}
+ )
+ || ( $request_path =~ m{^/Search/Simple\.html}
+ && $DECODED_ARGS->{'q'} )
+ )
+ {
+ my $search = Menu()->child('search');
+ my $args = '';
+ my $has_query = '';
+ my $current_search = $session{"CurrentSearchHash"} || {};
+ my $search_id = $DECODED_ARGS->{'SavedSearchLoad'} || $DECODED_ARGS->{'SavedSearchId'} || $current_search->{'SearchId'} || '';
+ my $chart_id = $DECODED_ARGS->{'SavedChartSearchId'} || $current_search->{SavedChartSearchId};
+
+ $has_query = 1 if ( $DECODED_ARGS->{'Query'} or $current_search->{'Query'} );
+
+ my %query_args;
+ my %fallback_query_args = (
+ SavedSearchId => ( $search_id eq 'new' ) ? undef : $search_id,
+ SavedChartSearchId => $chart_id,
+ (
+ map {
+ my $p = $_;
+ $p => $DECODED_ARGS->{$p} || $current_search->{$p}
+ } qw(Query Format OrderBy Order Page)
+ ),
+ RowsPerPage => (
+ defined $DECODED_ARGS->{'RowsPerPage'}
+ ? $DECODED_ARGS->{'RowsPerPage'}
+ : $current_search->{'RowsPerPage'}
+ ),
+ );
+
+ if ($QueryString) {
+ $args = '?' . $QueryString;
+ }
+ else {
+ my %final_query_args = ();
+ # key => callback to avoid unnecessary work
+
+ for my $param (keys %fallback_query_args) {
+ $final_query_args{$param} = defined($QueryArgs->{$param})
+ ? $QueryArgs->{$param}
+ : $fallback_query_args{$param};
+ }
+
+ for my $field (qw(Order OrderBy)) {
+ if ( ref( $final_query_args{$field} ) eq 'ARRAY' ) {
+ $final_query_args{$field} = join( "|", @{ $final_query_args{$field} } );
+ } elsif (not defined $final_query_args{$field}) {
+ delete $final_query_args{$field};
+ }
+ else {
+ $final_query_args{$field} ||= '';
+ }
+ }
+
+ $args = '?' . $query_string->(%final_query_args);
+ }
+
+ my $current_search_menu;
+ if ( $request_path =~ m{^/Ticket} ) {
+ $current_search_menu = $search->child( current_search => title => loc('Current Search') );
+ $current_search_menu->path("/Search/Results.html$args") if $has_query;
+ } else {
+ $current_search_menu = PageMenu();
+ }
+
+ $current_search_menu->child( edit_search =>
+ title => loc('Edit Search'), path => "/Search/Build.html" . ( ($has_query) ? $args : '' ) );
+ $current_search_menu->child( advanced =>
+ title => loc('Advanced'), path => "/Search/Edit.html$args" );
+ if ($has_query) {
+ $current_search_menu->child( results => title => loc('Show Results'), path => "/Search/Results.html$args" );
+ }
+
+ if ( $has_query ) {
+ $current_search_menu->child( bulk => title => loc('Bulk Update'), path => "/Search/Bulk.html$args" );
+ $current_search_menu->child( chart => title => loc('Chart'), path => "/Search/Chart.html$args" );
+
+ #formerly Callbacks/RTx-Calendar/Ticket/Element/Tabs/Default
+ $current_search_menu->child( calendar => title => loc('Calendar'), path => "/Search/Calendar.html$args" );
+
+ my $more = $current_search_menu->child( more => title => loc('Feeds') );
+
+ $more->child( tsv => title => loc('TSV'), path => "/Search/Results.tsv$args" );
+ $more->child( csv => title => loc('CSV'), path => "/Search/Results.csv$args" );
+ $more->child( spreadsheet => title => loc('Spreadsheet'), path => "/Search/Results.xls$args" );
+
+ my %rss_data = map {
+ $_ => $QueryArgs->{$_} || $fallback_query_args{$_} || '' }
+ qw(Query Order OrderBy);
+ my $RSSQueryString = "?"
+ . $query_string->( Query => $rss_data{Query},
+ Order => $rss_data{Order},
+ OrderBy => $rss_data{OrderBy}
+ );
+ my $RSSPath = join '/', map $m->interp->apply_escapes( $_, 'u' ),
+ $session{'CurrentUser'}->UserObj->Name,
+ $session{'CurrentUser'}
+ ->UserObj->GenerateAuthString( $rss_data{Query}
+ . $rss_data{Order}
+ . $rss_data{OrderBy} );
+
+ $more->child( rss => title => loc('RSS'), path => "/NoAuth/rss/$RSSPath/$RSSQueryString");
+ my $ical_path = join '/', map $m->interp->apply_escapes($_, 'u'),
+ $session{'CurrentUser'}->UserObj->Name,
+ $session{'CurrentUser'}->UserObj->GenerateAuthString( $rss_data{Query} ),
+ $rss_data{Query};
+ $more->child( ical => title => loc('iCal'), path => '/NoAuth/iCal/'.$ical_path);
+
+ if ($request_path =~ m{^/Search/Results.html}
+ && #XXX TODO better abstraction
+ $session{'CurrentUser'}->HasRight( Right => 'SuperUser', Object => RT->System )) {
+ my $shred_args = $query_string->(
+ search => 1,
+ plugin => 'Tickets',
+ 'Tickets:query' => $rss_data{'Query'},
+ 'Tickets:limit' => $QueryArgs->{'Rows'},
+ );
+
+ $more->child( shredder => title => loc('Shredder'), path => '/Admin/Tools/Shredder/?' . $shred_args);
+ }
+
+ }
+ }
+
+ if ( $request_path =~ m{^/Article/} ) {
+ if ( $DECODED_ARGS->{'id'} && $DECODED_ARGS->{'id'} =~ /^\d+$/ ) {
+ my $id = $DECODED_ARGS->{'id'};
+ my $tabs = PageMenu();
+
+ $tabs->child( display => title => loc('Display'), path => "/Articles/Article/Display.html?id=".$id );
+ $tabs->child( history => title => loc('History'), path => "/Articles/Article/History.html?id=".$id );
+ $tabs->child( modify => title => loc('Modify'), path => "/Articles/Article/Edit.html?id=".$id );
+ $tabs->child( delete => title => loc('Delete'), path => "/Articles/Article/Delete.html?id=".$id );
+ }
+ }
+
+ if ( $request_path =~ m{^/Articles/} ) {
+ my $tabs = PageMenu();
+ $tabs->child( search => title => loc("Search"), path => "/Articles/Article/Search.html" );
+ $tabs->child( create => title => loc("New Article" ), path => "/Articles/Article/PreCreate.html" );
+ if ( $request_path =~ m{^/Articles/Article/} and ( $DECODED_ARGS->{'id'} || '' ) =~ /^(\d+)$/ ) {
+ my $id = $1;
+ my $obj = RT::Article->new( $session{'CurrentUser'} );
+ $obj->Load($id);
+
+ $tabs->child( display => title => loc("Display"), path => "/Articles/Article/Display.html?id=" . $id );
+ $tabs->child( history => title => loc('History'), path => '/Articles/Article/History.html?id=' . $id );
+
+ if ( $obj->CurrentUserHasRight('ModifyArticle') ) {
+ $tabs->child(modify => title => loc('Modify'), path => '/Articles/Article/Edit.html?id=' . $id );
+ }
+ if ( $obj->CurrentUserHasRight('DeleteArticle') ) {
+ $tabs->child(delete => title => loc('Delete'), path => '/Articles/Article/Delete.html?id=' . $id );
+ }
+ }
+
+ }
+
+ if ( $request_path =~ /^\/(?:index.html|$)/ ) {
+ PageMenu()->child( edit => title => loc('Edit'), path => '/Prefs/MyRT.html' );
+ }
+
+ PageWidgets()->child( simple_search => raw_html => $m->scomp('SimpleSearch') );
+ PageWidgets()->child( create_ticket => raw_html => $m->scomp('CreateTicket') );
+
+ $m->callback( CallbackName => 'Privileged' );
+};
+
+my $build_selfservice_nav = sub {
+ my $queues = RT::Queues->new( $session{'CurrentUser'} );
+ $queues->UnLimit;
+
+ my $queue_count = 0;
+ my $queue_id;
+
+ while ( my $queue = $queues->Next ) {
+ next unless $queue->CurrentUserHasRight('CreateTicket');
+ $queue_id = $queue->id;
+ $queue_count++;
+ last if ( $queue_count > 1 );
+ }
+
+
+ if ( $queue_count > 1 ) {
+ Menu->child( new => title => loc('New ticket'), path => '/SelfService/CreateTicketInQueue.html' );
+ } elsif ( $queue_id ) {
+ Menu->child( new => title => loc('New ticket'), path => '/SelfService/Create.html?Queue=' . $queue_id );
+ }
+ my $tickets = Menu->child( tickets => title => loc('Tickets'));
+ $tickets->child( open => title => loc('Open tickets'), path => '/SelfService/' );
+ $tickets->child( closed => title => loc('Closed tickets'), path => '/SelfService/Closed.html' );
+
+
+ my $username = '<span class="current-user">'
+ . $m->interp->apply_escapes($session{'CurrentUser'}->Name, 'h')
+ . '</span>';
+ my $about_me = Menu->child( preferences =>
+ title => loc('Logged in as [_1]', $username),
+ escape_title => 0,
+ sort_order => 99,
+ );
+
+ if ( $session{'CurrentUser'}->HasRight( Right => 'ModifySelf', Object => RT->System ) ) {
+ $about_me->child( prefs => title => loc('Preferences'), path => '/SelfService/Prefs.html' );
+ }
+
+ if ( $session{'CurrentUser'}->Name
+ && ( !RT->Config->Get('WebExternalAuth')
+ || RT->Config->Get('WebFallbackToInternalAuth') )) {
+ $about_me->child( logout => title => loc('Logout'), path => '/NoAuth/Logout.html' );
+ }
+
+ if ($session{'CurrentUser'}->HasRight( Right => 'ShowArticle', Object => RT->System )) {
+ PageWidgets->child( 'goto-article' => raw_html => $m->scomp('/SelfService/Elements/SearchArticle') );
+ }
+
+ PageWidgets->child( goto => raw_html => $m->scomp('/SelfService/Elements/GotoTicket') );
+
+ $m->callback( CallbackName => 'SelfService' );
+};
+
+
+
+if ( $request_path !~ m{^/SelfService/} ) {
+ $build_main_nav->();
+} else {
+ $build_selfservice_nav->();
}
-
-# Now let callbacks add their extra tabs
-$m->callback(
- topactions => $topactions,
- toptabs => $toptabs,
- %ARGS
-);
+
+
+
</%INIT>
<%ARGS>
-$current_toptab => undef
-$current_tab => undef
-$toptabs => undef
-$topactions => undef
-$tabs => undef
-$actions => undef
-$subactions => undef
-$Title => undef
$show_menu => 1
+$QueryString => ''
+$QueryArgs => {}
</%ARGS>
diff --git a/rt/share/html/Elements/TicketList b/rt/share/html/Elements/TicketList
index 53318ab3c..66253ae7d 100644
--- a/rt/share/html/Elements/TicketList
+++ b/rt/share/html/Elements/TicketList
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/TitleBox b/rt/share/html/Elements/TitleBox
index eb8da2a8f..fa81a32f4 100644
--- a/rt/share/html/Elements/TitleBox
+++ b/rt/share/html/Elements/TitleBox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/TitleBoxEnd b/rt/share/html/Elements/TitleBoxEnd
index fccb9a336..96d2076e1 100644
--- a/rt/share/html/Elements/TitleBoxEnd
+++ b/rt/share/html/Elements/TitleBoxEnd
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/TitleBoxStart b/rt/share/html/Elements/TitleBoxStart
index 0f6f0a1a4..cc1a55f68 100644
--- a/rt/share/html/Elements/TitleBoxStart
+++ b/rt/share/html/Elements/TitleBoxStart
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Elements/ValidateCustomFields b/rt/share/html/Elements/ValidateCustomFields
index 539c6f483..922b885f2 100644
--- a/rt/share/html/Elements/ValidateCustomFields
+++ b/rt/share/html/Elements/ValidateCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -81,7 +81,32 @@ while ( my $CF = $CustomFields->Next ) {
grep defined, @values;
@values = ('') unless @values;
- foreach my $value( @values ) {
+ for my $value( @values ) {
+ if ($value) {
+ if ( $CF->Type eq 'IPAddress' ) {
+ use Regexp::Common qw(RE_net_IPv4);
+ my $ip = RT::ObjectCustomFieldValue->ParseIP( $value );
+ unless ( $ip ) {
+ my $msg =
+ loc( "Input can not be parsed as an IP address" );
+ $m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
+ push @res, $msg;
+ $valid = 0;
+ }
+ }
+ elsif ( $CF->Type eq 'IPAddressRange' ) {
+ my ( $start_ip, $end_ip ) =
+ RT::ObjectCustomFieldValue->ParseIPRange($value);
+ unless ( $start_ip && $end_ip ) {
+ my $msg =
+ loc( "Input can not be parsed as an IP address range" );
+ $m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
+ push @res, $msg;
+ $valid = 0;
+ }
+ }
+ }
+
next if $CF->MatchPattern($value);
my $msg = loc("Input must match [_1]", $CF->FriendlyPattern);
diff --git a/rt/share/html/Elements/WidgetBar b/rt/share/html/Elements/WidgetBar
new file mode 100644
index 000000000..35e7fe215
--- /dev/null
+++ b/rt/share/html/Elements/WidgetBar
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% return unless ($menu);
+% for my $child ($menu->children) {
+% if (defined $child->raw_html) {
+<% $child->raw_html |n %>
+% } else {
+<% $child->title %>\
+% }
+% }
+<%ARGS>
+$menu
+</%ARGS>
diff --git a/rt/share/html/Helpers/Autocomplete/CustomFieldValues b/rt/share/html/Helpers/Autocomplete/CustomFieldValues
index 85323ccc3..887302f0c 100644
--- a/rt/share/html/Helpers/Autocomplete/CustomFieldValues
+++ b/rt/share/html/Helpers/Autocomplete/CustomFieldValues
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,37 +45,90 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<ul>
-% while( my $value = $values->Next ) {
-% my $desc = $value->Description || '';
-% $desc = '<span class="informal"> ('. $m->interp->apply_escapes( $desc, 'h' ) .')</span>' if $desc;
-<li><% $value->Name %><% $desc |n %></li>
-% }
-</ul>
+% $r->content_type('application/json');
+<% JSON( \@suggestions ) |n %>
% $m->abort;
<%INIT>
-my ($CustomField, $Value);
-while( my($k, $v) = each %ARGS ) {
+# Only autocomplete the last value
+my $term = (split /\n/, $ARGS{term} || '')[-1];
+
+my $abort = sub {
+ $r->content_type('application/json');
+ $m->out(JSON::to_json( [] ));
+ $m->abort;
+};
+
+unless ( exists $ARGS{ContextType} and exists $ARGS{ContextId} ) {
+ RT->Logger->debug("No context provided");
+ $abort->();
+}
+
+my $CustomField;
+for my $k ( keys %ARGS ) {
next unless $k =~ /^Object-.*?-\d*-CustomField-(\d+)-Values?$/;
- ($CustomField, $Value) = ($1, $v);
+ $CustomField = $1;
last;
}
-$m->abort unless $CustomField;
+
+unless ( $CustomField ) {
+ RT->Logger->debug("No CustomField provided");
+ $abort->();
+}
+
+my $SystemCustomFieldObj = RT::CustomField->new( RT->SystemUser );
+my ($id, $msg) = $SystemCustomFieldObj->LoadById( $CustomField ) ;
+unless ( $id ) {
+ RT->Logger->debug("Invalid CustomField provided: $msg");
+ $abort->();
+}
+
+my $context_object = $SystemCustomFieldObj->LoadContextObject(
+ $ARGS{ContextType}, $ARGS{ContextId} );
+$abort->() unless $context_object;
+
my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} );
-$CustomFieldObj->Load( $CustomField );
+if ( $SystemCustomFieldObj->ValidateContextObject($context_object) ) {
+ # drop our privileges that came from calling LoadContextObject as the System User
+ $context_object->new($session{'CurrentUser'});
+ $context_object->LoadById($ARGS{ContextId});
+ $CustomFieldObj->SetContextObject( $context_object );
+} else {
+ RT->Logger->debug("Invalid Context Object ".$context_object->id." for Custom Field ".$SystemCustomFieldObj->id);
+ $abort->();
+}
+
+($id, $msg) = $CustomFieldObj->LoadById( $CustomField );
+unless ( $CustomFieldObj->Name ) {
+ RT->Logger->debug("Current User cannot see this Custom Field, terminating");
+ $abort->();
+}
+
my $values = $CustomFieldObj->Values;
$values->Limit(
FIELD => 'Name',
OPERATOR => 'LIKE',
- VALUE => $Value,
- SUBCLAUSE => 'autcomplete',
+ VALUE => $term,
+ SUBCLAUSE => 'autocomplete',
+ CASESENSITIVE => 0,
);
$values->Limit(
ENTRYAGGREGATOR => 'OR',
FIELD => 'Description',
OPERATOR => 'LIKE',
- VALUE => $Value,
- SUBCLAUSE => 'autcomplete',
+ VALUE => $term,
+ SUBCLAUSE => 'autocomplete',
+ CASESENSITIVE => 0,
);
+my @suggestions;
+
+while( my $value = $values->Next ) {
+ push @suggestions,
+ {
+ value => $value->Name,
+ label => $value->Description
+ ? $value->Name . ' (' . $value->Description . ')'
+ : $value->Name,
+ };
+}
</%INIT>
diff --git a/rt/share/html/Tools/Reports/Elements/Tabs b/rt/share/html/Helpers/Autocomplete/Groups
index c85db56a8..e8baf5397 100644
--- a/rt/share/html/Tools/Reports/Elements/Tabs
+++ b/rt/share/html/Helpers/Autocomplete/Groups
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,45 +45,44 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Tools/Elements/Tabs,
- subtabs => $tabs,
- current_tab => 'Tools/Reports/index.html',
- current_subtab => $current_tab,
- Title => $Title &>
-
+% $r->content_type('application/json');
+<% JSON( \@suggestions ) |n %>
+% $m->abort;
+<%ARGS>
+$term => undef
+$max => 10
+$exclude => ''
+$op => 'LIKE'
+</%ARGS>
<%INIT>
-my $tabs = {
- a => {
- title => loc('Resolved by owner'),
- path => 'Tools/Reports/ResolvedByOwner.html',
- },
- b => {
- title => loc('Resolved in date range'),
- path => 'Tools/Reports/ResolvedByDates.html',
- },
- c => {
- title => loc('Created in a date range'),
- path => 'Tools/Reports/CreatedByDates.html',
- },
-};
+$m->abort unless defined $term
+ and length $term;
+my $CurrentUser = $session{'CurrentUser'};
+# Require privileged users
+$m->abort unless $CurrentUser->Privileged;
+# Sanity check the operator
+$op = 'LIKE' unless $op =~ /^(?:LIKE|(?:START|END)SWITH|=|!=)$/i;
-$m->callback( %ARGS, tabs => $tabs );
+my $groups = RT::Groups->new( $CurrentUser );
+$groups->RowsPerPage( $max );
+$groups->LimitToUserDefinedGroups();
+$groups->Limit(
+ FIELD => 'Name',
+ OPERATOR => $op,
+ VALUE => $term,
+);
-foreach my $tab ( sort keys %{$tabs} ) {
- if ( $tabs->{$tab}->{'path'} eq $current_tab ) {
- $tabs->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{$tab}->{"current_subtab"} = $current_subtab;
- }
+# Exclude groups we don't want
+foreach (split /\s*,\s*/, $exclude) {
+ $groups->Limit(FIELD => 'id', VALUE => $_, OPERATOR => '!=');
}
-</%INIT>
+my @suggestions;
-<%ARGS>
-$subtabs => undef
-$current_tab => ''
-$current_subtab => undef
-$Title => undef
-</%ARGS>
+while ( my $group = $groups->Next ) {
+ push @suggestions, $group->Name;
+}
+</%INIT>
diff --git a/rt/share/html/Helpers/Autocomplete/Owners b/rt/share/html/Helpers/Autocomplete/Owners
new file mode 100644
index 000000000..1d065f2a2
--- /dev/null
+++ b/rt/share/html/Helpers/Autocomplete/Owners
@@ -0,0 +1,150 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% $r->content_type('application/json');
+<% JSON( \@suggestions ) |n %>
+% $m->abort;
+<%ARGS>
+$return => 'Name'
+$limit => undef
+$term => undef
+$max => 10
+</%ARGS>
+<%INIT>
+# Only allow certain return fields
+$return = 'Name'
+ unless $return =~ /^(?:EmailAddress|Name|RealName|id)$/;
+
+$m->abort unless defined $return
+ and defined $term
+ and defined $limit;
+
+my $CurrentUser = $session{'CurrentUser'};
+
+my %fields = %{ RT->Config->Get('UserAutocompleteFields')
+ || { EmailAddress => 1, Name => 1, RealName => 'LIKE' } };
+
+my %user_uniq_hash;
+my $isSU = $session{CurrentUser}
+ ->HasRight( Right => 'SuperUser', Object => $RT::System );
+
+# Turn RT::Ticket-1|RT::Queue-2 into ['RT::Ticket', 1], ['RT::Queue', 2]
+foreach my $spec (map { [split /\-/, $_, 2] } split /\|/, $limit) {
+ next unless $spec->[0] =~ /^RT::(Ticket|Queue)$/;
+
+ my $object = $spec->[0]->new( $session{'CurrentUser'} );
+
+ if ( $spec->[1] ) {
+ $object->Load( $spec->[1] );
+
+ # Warn if we couldn't load an object
+ unless ( $object->id ) {
+ $RT::Logger->warn("Owner autocomplete couldn't load an '$spec->[0]' with id '$spec->[1]'");
+ next;
+ }
+ }
+
+ my $Users = RT::Users->new( $session{CurrentUser} );
+ $Users->RowsPerPage( $max );
+
+ # Limit by our autocomplete term BEFORE we limit to OwnTicket because that
+ # does a funky union hack
+ while (my ($name, $op) = each %fields) {
+ $op = 'STARTSWITH'
+ unless $op =~ /^(?:LIKE|(?:START|END)SWITH)$/i;
+
+ $Users->Limit(
+ FIELD => $name,
+ OPERATOR => $op,
+ VALUE => $term,
+ ENTRYAGGREGATOR => 'OR',
+ SUBCLAUSE => 'autocomplete',
+ );
+ }
+
+ $Users->WhoHaveRight(
+ Right => 'OwnTicket',
+ Object => $object,
+ IncludeSystemRights => 1,
+ IncludeSuperusers => $isSU
+ );
+
+ while ( my $User = $Users->Next() ) {
+ next if $user_uniq_hash{ $User->Id };
+ $user_uniq_hash{ $User->Id() } = [
+ $User,
+ $m->scomp('/Elements/ShowUser', User => $User, NoEscape => 1)
+ ];
+ }
+}
+
+# Make sure we add Nobody if we don't already have it
+my $nobody = qr/^n(?:o(?:b(?:o(?:d(?:y)?)?)?)?)?$/i;
+if ( not $user_uniq_hash{RT->Nobody->id} and $term =~ $nobody ) {
+ $user_uniq_hash{RT->Nobody->id} = [
+ RT->Nobody,
+ $m->scomp('/Elements/ShowUser', User => RT->Nobody, NoEscape => 1)
+ ];
+}
+
+my @users = sort { lc $a->[1] cmp lc $b->[1] }
+ values %user_uniq_hash;
+
+my @suggestions;
+my $count = 1;
+
+for my $tuple ( @users ) {
+ last if $count > $max;
+ my $formatted = $tuple->[1];
+ $formatted =~ s/\n//g;
+ push @suggestions, {
+ label => $formatted,
+ value => $tuple->[0]->$return
+ };
+ $count++;
+}
+</%INIT>
diff --git a/rt/share/html/Helpers/Autocomplete/Users b/rt/share/html/Helpers/Autocomplete/Users
new file mode 100644
index 000000000..dbc2d888f
--- /dev/null
+++ b/rt/share/html/Helpers/Autocomplete/Users
@@ -0,0 +1,130 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% $r->content_type('application/json');
+<% JSON( \@suggestions ) |n %>
+% $m->abort;
+<%ARGS>
+$return => ''
+$term => undef
+$delim => undef
+$max => 10
+$privileged => undef
+$exclude => ''
+$op => undef
+</%ARGS>
+<%INIT>
+# Only allow certain return fields
+$return = 'EmailAddress'
+ unless $return =~ /^(?:EmailAddress|Name|RealName)$/;
+
+$m->abort unless defined $return
+ and defined $term
+ and length $term;
+
+# Use our delimeter if we have one
+if ( defined $delim and length $delim ) {
+ if ( $delim eq ',' ) {
+ $delim = qr/,\s*/;
+ } else {
+ $delim = qr/\Q$delim\E/;
+ }
+
+ # If the field handles multiple values, pop the last one off
+ $term = (split $delim, $term)[-1] if $term =~ $delim;
+}
+
+my $CurrentUser = $session{'CurrentUser'};
+
+# Require privileged users or overriding config
+$m->abort unless $CurrentUser->Privileged
+ or RT->Config->Get('AllowUserAutocompleteForUnprivileged');
+
+my %fields = %{ RT->Config->Get('UserAutocompleteFields')
+ || { EmailAddress => 1, Name => 1, RealName => 'LIKE' } };
+
+# If an operator is provided, check against only the returned field
+# using that operator
+%fields = ( $return => $op ) if $op;
+
+my $users = RT::Users->new( $CurrentUser );
+$users->RowsPerPage( $max );
+
+$users->LimitToPrivileged() if $privileged;
+
+while (my ($name, $op) = each %fields) {
+ $op = 'STARTSWITH'
+ unless $op =~ /^(?:LIKE|(?:START|END)SWITH|=|!=)$/i;
+
+ $users->Limit(
+ FIELD => $name,
+ OPERATOR => $op,
+ VALUE => $term,
+ ENTRYAGGREGATOR => 'OR',
+ SUBCLAUSE => 'autocomplete',
+ );
+}
+
+# Exclude users we don't want
+foreach (split /\s*,\s*/, $exclude) {
+ $users->Limit(FIELD => 'id', VALUE => $_, OPERATOR => '!=');
+}
+
+my @suggestions;
+
+while ( my $user = $users->Next ) {
+ next if $user->id == RT->SystemUser->id
+ or $user->id == RT->Nobody->id;
+
+ my $formatted = $m->scomp('/Elements/ShowUser', User => $user, NoEscape => 1);
+ $formatted =~ s/\n//g;
+ my $suggestion = { label => $formatted, value => $user->$return };
+ $m->callback( CallbackName => "ModifySuggestion", suggestion => $suggestion, user => $user );
+ push @suggestions, $suggestion;
+}
+
+</%INIT>
diff --git a/rt/share/html/Helpers/CalPopup.html b/rt/share/html/Helpers/CalPopup.html
deleted file mode 100644
index cd812d31a..000000000
--- a/rt/share/html/Helpers/CalPopup.html
+++ /dev/null
@@ -1,143 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, ShowBar => 0 &>
-%# From /Elements/Header
-</div>
-<div id="body" class="calpopup">
-
-<a href="#" onclick="window.close(); return false;"><&|/l&>Close window</&></a>
-
-<div class="calendar">
- <table>
- <caption>
- <a class="prev" href="CalPopup.html?DisplayedMonth=<%$prev_month%>&DisplayedYear=<%$prev_year%>&field=<%$field%>"><&|/l&>Prev</&></a>
- <span class="month"><% $months[$DisplayedMonth-1] %> <% $DisplayedYear %></span>
- <a class="next" href="CalPopup.html?DisplayedMonth=<%$next_month%>&DisplayedYear=<%$next_year%>&field=<%$field%>"><&|/l&>Next</&></a>
- </caption>
- <tr>
-% foreach my $wday (@weekdays) {
- <th><%$wday%></th>
-% }
- </tr>
-% foreach my $week (@cal) {
- <tr>
-% foreach my $day (@{$week}) {
- <td>
-% if ($day) {
-% my $datestr = sprintf('%04d-%02d-%02d', $DisplayedYear, $DisplayedMonth, $day);
-% my $class;
-% if ( ( $DisplayedYear == $today[5] + 1900 ) && ( $DisplayedMonth == $today[4] + 1 ) && ( $day == $today[3] ) ) {
-% $class = 'today';
-% }
- <a <% $class && 'class="'.$class.'"' |n%> href="#" onclick="updateParentField('<% $field %>','<% $datestr %>'); return false;"><% $day %></a>
-% } else {
- &nbsp;
-% }
- </td>
-% } #foreach $day
- </tr>
-% } # foreach $week
- </table>
-</div>
-</div>
-</body>
-</html>
-% $m->abort();
-
-<%init>
-use Calendar::Simple;
-my @today = localtime(time());
-
-my @weekdays;
-push @weekdays, loc($_)
- for qw(Sun Mon Tue Wed Thu Fri Sat);
-
-my @months;
-push @months, loc($_)
- for qw(January February March April May June July August
- September October November December);
-
-unless ($DisplayedYear) {
- $DisplayedMonth = $today[4] + 1;
- $DisplayedYear = ($today[5] + 1900);
-}
-
-my ($prev_year, $next_year, $prev_month, $next_month);
-$prev_month = $next_month = $DisplayedMonth;
-$prev_year = $next_year = $DisplayedYear;
-
-$next_month++;
-$prev_month--;
-
-if ($DisplayedMonth == 12) {
- $next_year++;
- $next_month = 1;
-}
-elsif ($DisplayedMonth == 1) {
- $prev_month = 12;
- $prev_year--;
-}
-
-my @cal;
-{
- my $error;
- # RT defines a __DIE__ and Calendar::Simple uses Carp::Croak to report errors
- # work around this so we get a better error message if something is out of range
- eval { local $SIG{__DIE__} = sub { $error = $_[0] }; @cal = calendar($DisplayedMonth, $DisplayedYear) };
- if ($error) {
- $RT::Logger->error("error $error");
- $m->comp('/Elements/Error', Why => $error );
- }
-}
-</%init>
-
-<%args>
-$field => 'none'
-$DisplayedMonth => undef
-$DisplayedYear => undef
-</%args>
diff --git a/rt/share/html/Helpers/TicketHistory b/rt/share/html/Helpers/TicketHistory
new file mode 100644
index 000000000..357ee8f96
--- /dev/null
+++ b/rt/share/html/Helpers/TicketHistory
@@ -0,0 +1,67 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%ARGS>
+$id
+</%ARGS>
+<%INIT>
+my $TicketObj = RT::Ticket->new($session{'CurrentUser'});
+$TicketObj->Load($id);
+
+my $attachments = $m->comp('/Ticket/Elements/FindAttachments', Ticket => $TicketObj);
+my $attachment_content = $m->comp('/Ticket/Elements/LoadTextAttachments', Ticket => $TicketObj);
+
+$m->comp('/Ticket/Elements/ShowHistory',
+ Ticket => $TicketObj,
+ Collapsed => $ARGS{'Collapsed'},
+ ShowHeaders => $ARGS{'ShowHeaders'},
+ Attachments => $attachments,
+ AttachmentContent => $attachment_content
+);
+
+$m->abort();
+</%INIT>
diff --git a/rt/share/html/Helpers/Toggle/ShowRequestor b/rt/share/html/Helpers/Toggle/ShowRequestor
new file mode 100644
index 000000000..68e8a0517
--- /dev/null
+++ b/rt/share/html/Helpers/Toggle/ShowRequestor
@@ -0,0 +1,65 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+my $TicketTemplate = "/Ticket/Elements/ShowRequestorTickets$Status";
+$TicketTemplate = "/Ticket/Elements/ShowRequestorTicketsActive"
+ unless RT::Interface::Web->ComponentPathIsSafe($TicketTemplate)
+ and $m->comp_exists($TicketTemplate);
+my $user_obj = RT::User->new($session{CurrentUser});
+my ($val, $msg) = $user_obj->Load($Requestor);
+unless ($val) {
+ $RT::Logger->error("Unable to load User $Requestor: $msg");
+} else {
+ $m->comp( $TicketTemplate, Requestor => $user_obj );
+}
+$m->abort();
+</%INIT>
+<%ARGS>
+$Status
+$Requestor
+</%ARGS>
diff --git a/rt/share/html/Helpers/Toggle/TicketBookmark b/rt/share/html/Helpers/Toggle/TicketBookmark
index 3fa83a474..3833f27fa 100644
--- a/rt/share/html/Helpers/Toggle/TicketBookmark
+++ b/rt/share/html/Helpers/Toggle/TicketBookmark
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Install/Basics.html b/rt/share/html/Install/Basics.html
index d3e0a3ea0..6b5522431 100644
--- a/rt/share/html/Install/Basics.html
+++ b/rt/share/html/Install/Basics.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -81,9 +81,16 @@ if ( $Run ) {
push @errors, loc("Invalid [_1]: it should be a number", 'WebPort');
}
- unless ( $ARGS{Password} ) {
+ if ( !$ARGS{Password} ) {
push @errors, loc("You must enter an Administrative password");
}
+ else {
+ my $dummy_user = RT::User->new($session{CurrentUser});
+ my ($ok, $msg) = $dummy_user->ValidatePassword($ARGS{Password});
+ unless ($ok) {
+ push @errors, $msg;
+ }
+ }
if ( $Back ) {
RT::Interface::Web::Redirect(RT->Config->Get('WebURL') .
diff --git a/rt/share/html/Install/DatabaseDetails.html b/rt/share/html/Install/DatabaseDetails.html
index 904d6b848..ff7aa9e7f 100644
--- a/rt/share/html/Install/DatabaseDetails.html
+++ b/rt/share/html/Install/DatabaseDetails.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Install/DatabaseType.html b/rt/share/html/Install/DatabaseType.html
index 60bf79cf2..68f8a67ed 100644
--- a/rt/share/html/Install/DatabaseType.html
+++ b/rt/share/html/Install/DatabaseType.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -58,7 +58,7 @@
<&|/l&>SQLite is a database that doesn't need a server or any configuration whatsoever. RT's authors recommend it for testing, demoing and development, but it's not quite right for a high-volume production RT server.</&>
</b></p>
<p>
-<&|/l, '<a href="http://search.cpan.org" target="_new">CPAN</a>' &>If your preferred database isn't listed in the dropdown below, that means RT couldn't find a <i>database driver</i> for it installed locally. You may be able to remedy this by using [_1] to download and install DBD::MySQL, DBD::Oracle or DBD::Pg.</&>
+<&|/l_unsafe, '<a href="http://search.cpan.org" target="_new">CPAN</a>' &>If your preferred database isn't listed in the dropdown below, that means RT couldn't find a <i>database driver</i> for it installed locally. You may be able to remedy this by using [_1] to download and install DBD::MySQL, DBD::Oracle or DBD::Pg.</&>
</p>
</div>
diff --git a/rt/share/html/Install/Elements/Errors b/rt/share/html/Install/Elements/Errors
index 192ba53de..ceb120221 100644
--- a/rt/share/html/Install/Elements/Errors
+++ b/rt/share/html/Install/Elements/Errors
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Install/Elements/Wrapper b/rt/share/html/Install/Elements/Wrapper
index 809481323..66271d7bf 100644
--- a/rt/share/html/Install/Elements/Wrapper
+++ b/rt/share/html/Install/Elements/Wrapper
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,13 +48,6 @@
<&/Elements/Header, title => $Title &>
<& /Elements/PageLayout,
title => $Title,
- toptabs => { a => { title => loc('Install RT'),
- path => 'Install/'
- },
- b => { title => loc('Buy Support'),
- path => 'mailto:sales@bestpractical.com'}
- },
-
show_menu => 1
&>
<a name="skipnav" id="skipnav" accesskey="8"></a>
diff --git a/rt/share/html/Install/Finish.html b/rt/share/html/Install/Finish.html
index 3ebd407ea..24ac0ff71 100644
--- a/rt/share/html/Install/Finish.html
+++ b/rt/share/html/Install/Finish.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,11 +53,11 @@
</p>
<p>
-<&|/l&>You should be taken directly to a login page. You'll be able to log in with username of <tt>root</tt> and the password you set earlier.</&>
+<&|/l_unsafe, '<tt>root</tt>' &>You should be taken directly to a login page. You'll be able to log in with username of [_1] and the password you set earlier.</&>
</p>
<p>
-<&|/l&>If you've change the Port that RT runs on, you'll need to restart the server in order to log in.</&>
+<&|/l&>If you've changed the Port that RT runs on, you'll need to restart the server in order to log in.</&>
</p>
<p>
@@ -82,9 +82,10 @@ if ( $Run ) {
system( 'chmod -w ' . RT::Installer->ConfigFile ) &&
$RT::Logger->error(
'failed to make ' . RT::Installer->ConfigFile . ' readonly' );
- my $root = RT::User->new( $RT::SystemUser );
+ my $root = RT::User->new( RT->SystemUser );
$root->Load('root');
- $root->SetPassword( $RT::Installer->{InstallConfig}{Password} );
+ my ($ok, $val) = $root->SetPassword( $RT::Installer->{InstallConfig}{Password} );
+ $RT::Logger->warning("Unable to set root password: $val") if !$ok;
RT::Interface::Web::Redirect(RT->Config->Get('WebURL'));
}
diff --git a/rt/share/html/Install/Global.html b/rt/share/html/Install/Global.html
index 5292d21c1..ea0114983 100644
--- a/rt/share/html/Install/Global.html
+++ b/rt/share/html/Install/Global.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,7 +53,6 @@
<p><&|/l&>When RT sends an email it sets the From: and Reply-To: headers so users can add to the conversation by just hitting Reply in their mail client. It uses different addresses for Replies and Comments. These can be changed for each of your queues. These addresses will need to be configured to use the <tt>rt-mailgate</tt> program.</&></p>
-<p><&|/l&>By default, RT will use the timezone of your system. This lets you set a global default for the display of dates and times in RT. Your users can choose a different Timezone in their preferences.</&></p>
<form method="post">
<& /Widgets/BulkEdit, Types => \@Types,Meta => $RT::Installer->{Meta},
CurrentValue => RT::Installer->CurrentValues(@Types)
@@ -70,7 +69,7 @@
<%init>
my @errors;
-my @Types = qw/CommentAddress CorrespondAddress Timezone/;
+my @Types = qw/CommentAddress CorrespondAddress/;
if ( $Run ) {
diff --git a/rt/share/html/Install/Initialize.html b/rt/share/html/Install/Initialize.html
index 0b9ed6d39..0cc39aff6 100644
--- a/rt/share/html/Install/Initialize.html
+++ b/rt/share/html/Install/Initialize.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -73,6 +73,11 @@ if ( $Run ) {
my @actions = split /,/, $RT::Installer->{DatabaseAction};
+ # RT::Handle's ISA is dynamical, so we need to unshift the right one.
+ my $class = 'DBIx::SearchBuilder::Handle::' . RT->Config->Get('DatabaseType');
+ $class->require or die $UNIVERSAL::require::ERROR;
+ unshift @RT::Handle::ISA, $class;
+
my $sysdbh = DBI->connect(
RT::Handle->SystemDSN,
$RT::Installer->{InstallConfig}{DatabaseAdmin},
@@ -110,17 +115,17 @@ if ( $Run ) {
($status, $msg) = RT::Handle->InsertACL( $dbh );
}
elsif ( $action eq 'coredata' ) {
- $RT::Handle = new RT::Handle;
+ $RT::Handle = RT::Handle->new;
$RT::Handle->dbh( undef );
RT::ConnectToDatabase();
RT::InitLogging();
($status, $msg) = $RT::Handle->InsertInitialData;
}
elsif ( $action eq 'insert' ) {
- $RT::Handle = new RT::Handle;
+ $RT::Handle = RT::Handle->new;
RT::Init();
my $file = $RT::EtcPath . "/initialdata";
- ($status, $msg) = $RT::Handle->InsertData( $file );
+ ($status, $msg) = $RT::Handle->InsertData( $file, undef, disconnect_after => 0 );
}
unless ( $status ) {
push @errors, loc('ERROR: [_1]', $msg);
diff --git a/rt/share/html/Install/Sendmail.html b/rt/share/html/Install/Sendmail.html
index 269916eb0..132433da0 100644
--- a/rt/share/html/Install/Sendmail.html
+++ b/rt/share/html/Install/Sendmail.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Install/autohandler b/rt/share/html/Install/autohandler
index eabde3fd4..da7bd0ba8 100644
--- a/rt/share/html/Install/autohandler
+++ b/rt/share/html/Install/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Install/index.html b/rt/share/html/Install/index.html
index bc9573bdc..78069afe3 100644
--- a/rt/share/html/Install/index.html
+++ b/rt/share/html/Install/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -76,11 +76,12 @@
<h2><% loc('Getting started') %></h2>
<p>
<b>
-<&|/l&>You're seeing this screen because you started up an RT server without a working database. Most likely, this is the first time you're running RT. If you click <i>Let's go!</i> below, RT will guide you through setting up your RT server and database.</&>
+<&|/l, loc("Let's go!") &>You're seeing this screen because you started up an RT server without a working database. Most likely, this is the first time you're running RT. If you click "[_1]" below, RT will guide you through setting up your RT server and database.</&>
</b>
</p>
<p>
-<&|/l&>If you already have a working RT server and database, you should take this opportunity to make sure that your database server is running and that the RT server can connect to it. Once you've done that, stop and start the RT server.</p></&>
+<&|/l&>If you already have a working RT server and database, you should take this opportunity to make sure that your database server is running and that the RT server can connect to it. Once you've done that, stop and start the RT server.</&>
+</p>
</div>
<& /Elements/Submit, Label => loc( "Let's go!"), Name => 'Run' &>
@@ -91,7 +92,7 @@
my @errors;
my $locked;
-my $file = File::Spec->catfile( $RT::EtcPath, 'RT_SiteConfig.pm' );
+my $file = RT::Installer->ConfigFile;
if ( ! -e $file ) {
# write a blank RT_SiteConfig.pm
@@ -110,7 +111,7 @@ elsif ( $Run ) {
for my $field (
qw/DatabaseType DatabaseName DatabaseHost DatabasePort
DatabaseUser DatabaseRequireSSL rtname
- Organization Timezone CommentAddress CorrespondAddress
+ Organization CommentAddress CorrespondAddress
SendmailPath WebDomain WebPort/
) {
$RT::Installer->{InstallConfig}{$field} ||= RT->Config->Get($field);
@@ -124,12 +125,12 @@ elsif ( $Run ) {
RT::Interface::Web::Redirect(RT->Config->Get('WebURL') . 'Install/DatabaseType.html');
} elsif ( $ChangeLang && $Lang ) {
# hackish, but works
- $session{'CurrentUser'} = new RT::CurrentUser;
+ $session{'CurrentUser'} = RT::CurrentUser->new;
$session{'CurrentUser'}->LanguageHandle( $Lang );
}
my $lang_handle = do { local $@;
eval {
- ($session{'CurrentUser'} || RT::CurrentUser->new($RT::SystemUser->Id))
+ ($session{'CurrentUser'} || RT::CurrentUser->new(RT->SystemUser->Id))
->LanguageHandle
}
};
diff --git a/rt/share/html/NoAuth/Calendar/dhandler b/rt/share/html/NoAuth/Calendar/dhandler
index 4b4aa631e..ea08c9a76 100644
--- a/rt/share/html/NoAuth/Calendar/dhandler
+++ b/rt/share/html/NoAuth/Calendar/dhandler
@@ -101,14 +101,14 @@ my $cal = $calendar->as_string;
$r->content_type('text/calendar;charset=utf-8');
$m->clear_buffer();
$m->out($cal);
-$m->abort;
+$m->abort;
sub add_event {
my ($Reminder, $uid) = @_;
return unless defined $Reminder->RefersTo->First;
my $Ticket = $Reminder->RefersTo->First->TargetObj;
-
+
my %event = (
summary => $Reminder->Subject ? $Reminder->Subject : '',
url => "${RT::WebURL}/Ticket/Display.html?id=" . $Ticket->id,
@@ -142,7 +142,7 @@ sub add_todo {
$vtodo{attendee} = "MAILTO:" . $Ticket->OwnerObj->EmailAddress;
} elsif ($Ticket->QueueObj->CommentAddress) {
$vtodo{organizer} = "MAILTO:" . $Ticket->QueueObj->CommentAddress;
- $vtodo{attendee} = "MAILTO:" . $Ticket->QueueObj->CommentAddress;
+ $vtodo{attendee} = "MAILTO:" . $Ticket->QueueObj->CommentAddress;
}
$vtodo{priority} = $Ticket->Priority
diff --git a/rt/share/html/NoAuth/Helpers/CustomLogo/dhandler b/rt/share/html/NoAuth/Helpers/CustomLogo/dhandler
new file mode 100644
index 000000000..86e48e2e5
--- /dev/null
+++ b/rt/share/html/NoAuth/Helpers/CustomLogo/dhandler
@@ -0,0 +1,61 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+if ( my $attr = $RT::System->FirstAttribute('UserLogo') ) {
+ # The extra path in the url doesn't matter, we always want to serve the
+ # latest logo if we have one.
+ RT::Interface::Web::StaticFileHeaders();
+ my $content = $attr->Content;
+ $r->content_type( $content->{type} );
+ $m->out( $content->{data} );
+}
+else {
+ # 404
+ return $m->decline;
+}
+</%INIT>
diff --git a/rt/share/html/NoAuth/Login.html b/rt/share/html/NoAuth/Login.html
index b33bb0a8d..086e1122e 100755
--- a/rt/share/html/NoAuth/Login.html
+++ b/rt/share/html/NoAuth/Login.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/NoAuth/Logout.html b/rt/share/html/NoAuth/Logout.html
index fa211005c..20024ccec 100755
--- a/rt/share/html/NoAuth/Logout.html
+++ b/rt/share/html/NoAuth/Logout.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -81,5 +81,5 @@ if (keys %session) {
}
$m->callback( %ARGS, CallbackName => 'AfterSessionDelete' );
-$m->notes->{LogoutURL} = $URL;
+$m->notes->{RefreshURL} = $URL;
</%INIT>
diff --git a/rt/share/html/NoAuth/Reminder.html b/rt/share/html/NoAuth/Reminder.html
index d62118d51..15760883a 100755
--- a/rt/share/html/NoAuth/Reminder.html
+++ b/rt/share/html/NoAuth/Reminder.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckcontextmenu.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckcontextmenu.js
deleted file mode 100644
index 56027dc05..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckcontextmenu.js
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKContextMenu Class: renders an control a context menu.
- */
-
-var FCKContextMenu = function( parentWindow, langDir )
-{
- this.CtrlDisable = false ;
-
- var oPanel = this._Panel = new FCKPanel( parentWindow ) ;
- oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
- oPanel.IsContextMenu = true ;
-
- // The FCKTools.DisableSelection doesn't seems to work to avoid dragging of the icons in Mozilla
- // so we stop the start of the dragging
- if ( FCKBrowserInfo.IsGecko )
- oPanel.Document.addEventListener( 'draggesture', function(e) {e.preventDefault(); return false;}, true ) ;
-
- var oMenuBlock = this._MenuBlock = new FCKMenuBlock() ;
- oMenuBlock.Panel = oPanel ;
- oMenuBlock.OnClick = FCKTools.CreateEventListener( FCKContextMenu_MenuBlock_OnClick, this ) ;
-
- this._Redraw = true ;
-}
-
-
-FCKContextMenu.prototype.SetMouseClickWindow = function( mouseClickWindow )
-{
- if ( !FCKBrowserInfo.IsIE )
- {
- this._Document = mouseClickWindow.document ;
- if ( FCKBrowserInfo.IsOpera && !( 'oncontextmenu' in document.createElement('foo') ) )
- {
- this._Document.addEventListener( 'mousedown', FCKContextMenu_Document_OnMouseDown, false ) ;
- this._Document.addEventListener( 'mouseup', FCKContextMenu_Document_OnMouseUp, false ) ;
- }
- this._Document.addEventListener( 'contextmenu', FCKContextMenu_Document_OnContextMenu, false ) ;
- }
-}
-
-/**
- The customData parameter is just a value that will be send to the command that is executed,
- so it's possible to reuse the same command for several items just by assigning different data for each one.
-*/
-FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
-{
- var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
- this._Redraw = true ;
- return oItem ;
-}
-
-FCKContextMenu.prototype.AddSeparator = function()
-{
- this._MenuBlock.AddSeparator() ;
- this._Redraw = true ;
-}
-
-FCKContextMenu.prototype.RemoveAllItems = function()
-{
- this._MenuBlock.RemoveAllItems() ;
- this._Redraw = true ;
-}
-
-FCKContextMenu.prototype.AttachToElement = function( element )
-{
- if ( FCKBrowserInfo.IsIE )
- FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ;
- else
- element._FCKContextMenu = this ;
-}
-
-function FCKContextMenu_Document_OnContextMenu( e )
-{
- if ( FCKConfig.BrowserContextMenu )
- return true ;
-
- var el = e.target ;
-
- while ( el )
- {
- if ( el._FCKContextMenu )
- {
- if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) )
- return true ;
-
- FCKTools.CancelEvent( e ) ;
- FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ;
- return false ;
- }
- el = el.parentNode ;
- }
- return true ;
-}
-
-var FCKContextMenu_OverrideButton ;
-
-function FCKContextMenu_Document_OnMouseDown( e )
-{
- if( !e || e.button != 2 )
- return false ;
-
- if ( FCKConfig.BrowserContextMenu )
- return true ;
-
- var el = e.target ;
-
- while ( el )
- {
- if ( el._FCKContextMenu )
- {
- if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) )
- return true ;
-
- var overrideButton = FCKContextMenu_OverrideButton ;
- if( !overrideButton )
- {
- var doc = FCKTools.GetElementDocument( e.target ) ;
- overrideButton = FCKContextMenu_OverrideButton = doc.createElement('input') ;
- overrideButton.type = 'button' ;
- var buttonHolder = doc.createElement('p') ;
- doc.body.appendChild( buttonHolder ) ;
- buttonHolder.appendChild( overrideButton ) ;
- }
-
- overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) +
- 'px;left:' + ( e.clientX - 2 ) +
- 'px;width:5px;height:5px;opacity:0.01' ;
- }
- el = el.parentNode ;
- }
- return false ;
-}
-
-function FCKContextMenu_Document_OnMouseUp( e )
-{
- if ( FCKConfig.BrowserContextMenu )
- return true ;
-
- var overrideButton = FCKContextMenu_OverrideButton ;
-
- if ( overrideButton )
- {
- var parent = overrideButton.parentNode ;
- parent.parentNode.removeChild( parent ) ;
- FCKContextMenu_OverrideButton = undefined ;
-
- if( e && e.button == 2 )
- {
- FCKContextMenu_Document_OnContextMenu( e ) ;
- return false ;
- }
- }
- return true ;
-}
-
-function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el )
-{
- if ( ( fckContextMenu.CtrlDisable && ( ev.ctrlKey || ev.metaKey ) ) || FCKConfig.BrowserContextMenu )
- return true ;
-
- var eTarget = el || this ;
-
- if ( fckContextMenu.OnBeforeOpen )
- fckContextMenu.OnBeforeOpen.call( fckContextMenu, eTarget ) ;
-
- if ( fckContextMenu._MenuBlock.Count() == 0 )
- return false ;
-
- if ( fckContextMenu._Redraw )
- {
- fckContextMenu._MenuBlock.Create( fckContextMenu._Panel.MainNode ) ;
- fckContextMenu._Redraw = false ;
- }
-
- // This will avoid that the content of the context menu can be dragged in IE
- // as the content of the panel is recreated we need to do it every time
- FCKTools.DisableSelection( fckContextMenu._Panel.Document.body ) ;
-
- var x = 0 ;
- var y = 0 ;
- if ( FCKBrowserInfo.IsIE )
- {
- x = ev.screenX ;
- y = ev.screenY ;
- }
- else if ( FCKBrowserInfo.IsSafari )
- {
- x = ev.clientX ;
- y = ev.clientY ;
- }
- else
- {
- x = ev.pageX ;
- y = ev.pageY ;
- }
- fckContextMenu._Panel.Show( x, y, ev.currentTarget || null ) ;
-
- return false ;
-}
-
-function FCKContextMenu_MenuBlock_OnClick( menuItem, contextMenu )
-{
- contextMenu._Panel.Hide() ;
- FCKTools.RunFunction( contextMenu.OnItemClick, contextMenu, menuItem ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdataprocessor.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdataprocessor.js
deleted file mode 100644
index f0ac79d74..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdataprocessor.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * The Data Processor is responsible for transforming the input and output data
- * in the editor. For more info:
- * http://dev.fckeditor.net/wiki/Components/DataProcessor
- *
- * The default implementation offers the base XHTML compatibility features of
- * FCKeditor. Further Data Processors may be implemented for other purposes.
- *
- */
-
-var FCKDataProcessor = function()
-{}
-
-FCKDataProcessor.prototype =
-{
- /*
- * Returns a string representing the HTML format of "data". The returned
- * value will be loaded in the editor.
- * The HTML must be from <html> to </html>, including <head>, <body> and
- * eventually the DOCTYPE.
- * Note: HTML comments may already be part of the data because of the
- * pre-processing made with ProtectedSource.
- * @param {String} data The data to be converted in the
- * DataProcessor specific format.
- */
- ConvertToHtml : function( data )
- {
- // The default data processor must handle two different cases depending
- // on the FullPage setting. Custom Data Processors will not be
- // compatible with FullPage, much probably.
- if ( FCKConfig.FullPage )
- {
- // Save the DOCTYPE.
- FCK.DocTypeDeclaration = data.match( FCKRegexLib.DocTypeTag ) ;
-
- // Check if the <body> tag is available.
- if ( !FCKRegexLib.HasBodyTag.test( data ) )
- data = '<body>' + data + '</body>' ;
-
- // Check if the <html> tag is available.
- if ( !FCKRegexLib.HtmlOpener.test( data ) )
- data = '<html dir="' + FCKConfig.ContentLangDirection + '">' + data + '</html>' ;
-
- // Check if the <head> tag is available.
- if ( !FCKRegexLib.HeadOpener.test( data ) )
- data = data.replace( FCKRegexLib.HtmlOpener, '$&<head><title></title></head>' ) ;
-
- return data ;
- }
- else
- {
- var html =
- FCKConfig.DocType +
- '<html dir="' + FCKConfig.ContentLangDirection + '"' ;
-
- // On IE, if you are using a DOCTYPE different of HTML 4 (like
- // XHTML), you must force the vertical scroll to show, otherwise
- // the horizontal one may appear when the page needs vertical scrolling.
- // TODO : Check it with IE7 and make it IE6- if it is the case.
- if ( FCKBrowserInfo.IsIE && FCKConfig.DocType.length > 0 && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) )
- html += ' style="overflow-y: scroll"' ;
-
- html += '><head><title></title></head>' +
- '<body' + FCKConfig.GetBodyAttributes() + '>' +
- data +
- '</body></html>' ;
-
- return html ;
- }
- },
-
- /*
- * Converts a DOM (sub-)tree to a string in the data format.
- * @param {Object} rootNode The node that contains the DOM tree to be
- * converted to the data format.
- * @param {Boolean} excludeRoot Indicates that the root node must not
- * be included in the conversion, only its children.
- * @param {Boolean} format Indicates that the data must be formatted
- * for human reading. Not all Data Processors may provide it.
- */
- ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format )
- {
- var data = FCKXHtml.GetXHTML( rootNode, !excludeRoot, format ) ;
-
- if ( ignoreIfEmptyParagraph && FCKRegexLib.EmptyOutParagraph.test( data ) )
- return '' ;
-
- return data ;
- },
-
- /*
- * Makes any necessary changes to a piece of HTML for insertion in the
- * editor selection position.
- * @param {String} html The HTML to be fixed.
- */
- FixHtml : function( html )
- {
- return html ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_gecko.js
deleted file mode 100644
index 04a3099d6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_gecko.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is a generic Document Fragment object. It is not intended to provide
- * the W3C implementation, but is a way to fix the missing of a real Document
- * Fragment in IE (where document.createDocumentFragment() returns a normal
- * document instead), giving a standard interface for it.
- * (IE Implementation)
- */
-
-var FCKDocumentFragment = function( parentDocument, baseDocFrag )
-{
- this.RootNode = baseDocFrag || parentDocument.createDocumentFragment() ;
-}
-
-FCKDocumentFragment.prototype =
-{
-
- // Append the contents of this Document Fragment to another element.
- AppendTo : function( targetNode )
- {
- targetNode.appendChild( this.RootNode ) ;
- },
-
- AppendHtml : function( html )
- {
- var eTmpDiv = this.RootNode.ownerDocument.createElement( 'div' ) ;
- eTmpDiv.innerHTML = html ;
- FCKDomTools.MoveChildren( eTmpDiv, this.RootNode ) ;
- },
-
- InsertAfterNode : function( existingNode )
- {
- FCKDomTools.InsertAfterNode( existingNode, this.RootNode ) ;
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_ie.js
deleted file mode 100644
index d9e4b3d97..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdocumentfragment_ie.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is a generic Document Fragment object. It is not intended to provide
- * the W3C implementation, but is a way to fix the missing of a real Document
- * Fragment in IE (where document.createDocumentFragment() returns a normal
- * document instead), giving a standard interface for it.
- * (IE Implementation)
- */
-
-var FCKDocumentFragment = function( parentDocument )
-{
- this._Document = parentDocument ;
- this.RootNode = parentDocument.createElement( 'div' ) ;
-}
-
-// Append the contents of this Document Fragment to another node.
-FCKDocumentFragment.prototype =
-{
-
- AppendTo : function( targetNode )
- {
- FCKDomTools.MoveChildren( this.RootNode, targetNode ) ;
- },
-
- AppendHtml : function( html )
- {
- var eTmpDiv = this._Document.createElement( 'div' ) ;
- eTmpDiv.innerHTML = html ;
- FCKDomTools.MoveChildren( eTmpDiv, this.RootNode ) ;
- },
-
- InsertAfterNode : function( existingNode )
- {
- var eRoot = this.RootNode ;
- var eLast ;
-
- while( ( eLast = eRoot.lastChild ) )
- FCKDomTools.InsertAfterNode( existingNode, eRoot.removeChild( eLast ) ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange.js
deleted file mode 100644
index b0912ebb5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange.js
+++ /dev/null
@@ -1,935 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Class for working with a selection range, much like the W3C DOM Range, but
- * it is not intended to be an implementation of the W3C interface.
- */
-
-var FCKDomRange = function( sourceWindow )
-{
- this.Window = sourceWindow ;
- this._Cache = {} ;
-}
-
-FCKDomRange.prototype =
-{
-
- _UpdateElementInfo : function()
- {
- var innerRange = this._Range ;
-
- if ( !innerRange )
- this.Release( true ) ;
- else
- {
- // For text nodes, the node itself is the StartNode.
- var eStart = innerRange.startContainer ;
-
- var oElementPath = new FCKElementPath( eStart ) ;
- this.StartNode = eStart.nodeType == 3 ? eStart : eStart.childNodes[ innerRange.startOffset ] ;
- this.StartContainer = eStart ;
- this.StartBlock = oElementPath.Block ;
- this.StartBlockLimit = oElementPath.BlockLimit ;
-
- if ( innerRange.collapsed )
- {
- this.EndNode = this.StartNode ;
- this.EndContainer = this.StartContainer ;
- this.EndBlock = this.StartBlock ;
- this.EndBlockLimit = this.StartBlockLimit ;
- }
- else
- {
- var eEnd = innerRange.endContainer ;
-
- if ( eStart != eEnd )
- oElementPath = new FCKElementPath( eEnd ) ;
-
- // The innerRange.endContainer[ innerRange.endOffset ] is not
- // usually part of the range, but the marker for the range end. So,
- // let's get the previous available node as the real end.
- var eEndNode = eEnd ;
- if ( innerRange.endOffset == 0 )
- {
- while ( eEndNode && !eEndNode.previousSibling )
- eEndNode = eEndNode.parentNode ;
-
- if ( eEndNode )
- eEndNode = eEndNode.previousSibling ;
- }
- else if ( eEndNode.nodeType == 1 )
- eEndNode = eEndNode.childNodes[ innerRange.endOffset - 1 ] ;
-
- this.EndNode = eEndNode ;
- this.EndContainer = eEnd ;
- this.EndBlock = oElementPath.Block ;
- this.EndBlockLimit = oElementPath.BlockLimit ;
- }
- }
-
- this._Cache = {} ;
- },
-
- CreateRange : function()
- {
- return new FCKW3CRange( this.Window.document ) ;
- },
-
- DeleteContents : function()
- {
- if ( this._Range )
- {
- this._Range.deleteContents() ;
- this._UpdateElementInfo() ;
- }
- },
-
- ExtractContents : function()
- {
- if ( this._Range )
- {
- var docFrag = this._Range.extractContents() ;
- this._UpdateElementInfo() ;
- return docFrag ;
- }
- return null ;
- },
-
- CheckIsCollapsed : function()
- {
- if ( this._Range )
- return this._Range.collapsed ;
-
- return false ;
- },
-
- Collapse : function( toStart )
- {
- if ( this._Range )
- this._Range.collapse( toStart ) ;
-
- this._UpdateElementInfo() ;
- },
-
- Clone : function()
- {
- var oClone = FCKTools.CloneObject( this ) ;
-
- if ( this._Range )
- oClone._Range = this._Range.cloneRange() ;
-
- return oClone ;
- },
-
- MoveToNodeContents : function( targetNode )
- {
- if ( !this._Range )
- this._Range = this.CreateRange() ;
-
- this._Range.selectNodeContents( targetNode ) ;
-
- this._UpdateElementInfo() ;
- },
-
- MoveToElementStart : function( targetElement )
- {
- this.SetStart(targetElement,1) ;
- this.SetEnd(targetElement,1) ;
- },
-
- // Moves to the first editing point inside a element. For example, in a
- // element tree like "<p><b><i></i></b> Text</p>", the start editing point
- // is "<p><b><i>^</i></b> Text</p>" (inside <i>).
- MoveToElementEditStart : function( targetElement )
- {
- var editableElement ;
-
- while ( targetElement && targetElement.nodeType == 1 )
- {
- if ( FCKDomTools.CheckIsEditable( targetElement ) )
- editableElement = targetElement ;
- else if ( editableElement )
- break ; // If we already found an editable element, stop the loop.
-
- targetElement = targetElement.firstChild ;
- }
-
- if ( editableElement )
- this.MoveToElementStart( editableElement ) ;
- },
-
- InsertNode : function( node )
- {
- if ( this._Range )
- this._Range.insertNode( node ) ;
- },
-
- CheckIsEmpty : function()
- {
- if ( this.CheckIsCollapsed() )
- return true ;
-
- // Inserts the contents of the range in a div tag.
- var eToolDiv = this.Window.document.createElement( 'div' ) ;
- this._Range.cloneContents().AppendTo( eToolDiv ) ;
-
- FCKDomTools.TrimNode( eToolDiv ) ;
-
- return ( eToolDiv.innerHTML.length == 0 ) ;
- },
-
- /**
- * Checks if the start boundary of the current range is "visually" (like a
- * selection caret) at the beginning of the block. It means that some
- * things could be brefore the range, like spaces or empty inline elements,
- * but it would still be considered at the beginning of the block.
- */
- CheckStartOfBlock : function()
- {
- var cache = this._Cache ;
- var bIsStartOfBlock = cache.IsStartOfBlock ;
-
- if ( bIsStartOfBlock != undefined )
- return bIsStartOfBlock ;
-
- // Take the block reference.
- var block = this.StartBlock || this.StartBlockLimit ;
-
- var container = this._Range.startContainer ;
- var offset = this._Range.startOffset ;
- var currentNode ;
-
- if ( offset > 0 )
- {
- // First, check the start container. If it is a text node, get the
- // substring of the node value before the range offset.
- if ( container.nodeType == 3 )
- {
- var textValue = container.nodeValue.substr( 0, offset ).Trim() ;
-
- // If we have some text left in the container, we are not at
- // the end for the block.
- if ( textValue.length != 0 )
- return cache.IsStartOfBlock = false ;
- }
- else
- currentNode = container.childNodes[ offset - 1 ] ;
- }
-
- // We'll not have a currentNode if the container was a text node, or
- // the offset is zero.
- if ( !currentNode )
- currentNode = FCKDomTools.GetPreviousSourceNode( container, true, null, block ) ;
-
- while ( currentNode )
- {
- switch ( currentNode.nodeType )
- {
- case 1 :
- // It's not an inline element.
- if ( !FCKListsLib.InlineChildReqElements[ currentNode.nodeName.toLowerCase() ] )
- return cache.IsStartOfBlock = false ;
-
- break ;
-
- case 3 :
- // It's a text node with real text.
- if ( currentNode.nodeValue.Trim().length > 0 )
- return cache.IsStartOfBlock = false ;
- }
-
- currentNode = FCKDomTools.GetPreviousSourceNode( currentNode, false, null, block ) ;
- }
-
- return cache.IsStartOfBlock = true ;
- },
-
- /**
- * Checks if the end boundary of the current range is "visually" (like a
- * selection caret) at the end of the block. It means that some things
- * could be after the range, like spaces, empty inline elements, or a
- * single <br>, but it would still be considered at the end of the block.
- */
- CheckEndOfBlock : function( refreshSelection )
- {
- var isEndOfBlock = this._Cache.IsEndOfBlock ;
-
- if ( isEndOfBlock != undefined )
- return isEndOfBlock ;
-
- // Take the block reference.
- var block = this.EndBlock || this.EndBlockLimit ;
-
- var container = this._Range.endContainer ;
- var offset = this._Range.endOffset ;
- var currentNode ;
-
- // First, check the end container. If it is a text node, get the
- // substring of the node value after the range offset.
- if ( container.nodeType == 3 )
- {
- var textValue = container.nodeValue ;
- if ( offset < textValue.length )
- {
- textValue = textValue.substr( offset ) ;
-
- // If we have some text left in the container, we are not at
- // the end for the block.
- if ( textValue.Trim().length != 0 )
- return this._Cache.IsEndOfBlock = false ;
- }
- }
- else
- currentNode = container.childNodes[ offset ] ;
-
- // We'll not have a currentNode if the container was a text node, of
- // the offset is out the container children limits (after it probably).
- if ( !currentNode )
- currentNode = FCKDomTools.GetNextSourceNode( container, true, null, block ) ;
-
- var hadBr = false ;
-
- while ( currentNode )
- {
- switch ( currentNode.nodeType )
- {
- case 1 :
- var nodeName = currentNode.nodeName.toLowerCase() ;
-
- // It's an inline element.
- if ( FCKListsLib.InlineChildReqElements[ nodeName ] )
- break ;
-
- // It is the first <br> found.
- if ( nodeName == 'br' && !hadBr )
- {
- hadBr = true ;
- break ;
- }
-
- return this._Cache.IsEndOfBlock = false ;
-
- case 3 :
- // It's a text node with real text.
- if ( currentNode.nodeValue.Trim().length > 0 )
- return this._Cache.IsEndOfBlock = false ;
- }
-
- currentNode = FCKDomTools.GetNextSourceNode( currentNode, false, null, block ) ;
- }
-
- if ( refreshSelection )
- this.Select() ;
-
- return this._Cache.IsEndOfBlock = true ;
- },
-
- // This is an "intrusive" way to create a bookmark. It includes <span> tags
- // in the range boundaries. The advantage of it is that it is possible to
- // handle DOM mutations when moving back to the bookmark.
- // Attention: the inclusion of nodes in the DOM is a design choice and
- // should not be changed as there are other points in the code that may be
- // using those nodes to perform operations. See GetBookmarkNode.
- // For performance, includeNodes=true if intended to SelectBookmark.
- CreateBookmark : function( includeNodes )
- {
- // Create the bookmark info (random IDs).
- var oBookmark =
- {
- StartId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'S',
- EndId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'E'
- } ;
-
- var oDoc = this.Window.document ;
- var eStartSpan ;
- var eEndSpan ;
- var oClone ;
-
- // For collapsed ranges, add just the start marker.
- if ( !this.CheckIsCollapsed() )
- {
- eEndSpan = oDoc.createElement( 'span' ) ;
- eEndSpan.style.display = 'none' ;
- eEndSpan.id = oBookmark.EndId ;
- eEndSpan.setAttribute( '_fck_bookmark', true ) ;
-
- // For IE, it must have something inside, otherwise it may be
- // removed during DOM operations.
-// if ( FCKBrowserInfo.IsIE )
- eEndSpan.innerHTML = '&nbsp;' ;
-
- oClone = this.Clone() ;
- oClone.Collapse( false ) ;
- oClone.InsertNode( eEndSpan ) ;
- }
-
- eStartSpan = oDoc.createElement( 'span' ) ;
- eStartSpan.style.display = 'none' ;
- eStartSpan.id = oBookmark.StartId ;
- eStartSpan.setAttribute( '_fck_bookmark', true ) ;
-
- // For IE, it must have something inside, otherwise it may be removed
- // during DOM operations.
-// if ( FCKBrowserInfo.IsIE )
- eStartSpan.innerHTML = '&nbsp;' ;
-
- oClone = this.Clone() ;
- oClone.Collapse( true ) ;
- oClone.InsertNode( eStartSpan ) ;
-
- if ( includeNodes )
- {
- oBookmark.StartNode = eStartSpan ;
- oBookmark.EndNode = eEndSpan ;
- }
-
- // Update the range position.
- if ( eEndSpan )
- {
- this.SetStart( eStartSpan, 4 ) ;
- this.SetEnd( eEndSpan, 3 ) ;
- }
- else
- this.MoveToPosition( eStartSpan, 4 ) ;
-
- return oBookmark ;
- },
-
- // This one should be a part of a hypothetic "bookmark" object.
- GetBookmarkNode : function( bookmark, start )
- {
- var doc = this.Window.document ;
-
- if ( start )
- return bookmark.StartNode || doc.getElementById( bookmark.StartId ) ;
- else
- return bookmark.EndNode || doc.getElementById( bookmark.EndId ) ;
- },
-
- MoveToBookmark : function( bookmark, preserveBookmark )
- {
- var eStartSpan = this.GetBookmarkNode( bookmark, true ) ;
- var eEndSpan = this.GetBookmarkNode( bookmark, false ) ;
-
- this.SetStart( eStartSpan, 3 ) ;
-
- if ( !preserveBookmark )
- FCKDomTools.RemoveNode( eStartSpan ) ;
-
- // If collapsed, the end span will not be available.
- if ( eEndSpan )
- {
- this.SetEnd( eEndSpan, 3 ) ;
-
- if ( !preserveBookmark )
- FCKDomTools.RemoveNode( eEndSpan ) ;
- }
- else
- this.Collapse( true ) ;
-
- this._UpdateElementInfo() ;
- },
-
- // Non-intrusive bookmark algorithm
- CreateBookmark2 : function()
- {
- // If there is no range then get out of here.
- // It happens on initial load in Safari #962 and if the editor it's hidden also in Firefox
- if ( ! this._Range )
- return { "Start" : 0, "End" : 0 } ;
-
- // First, we record down the offset values
- var bookmark =
- {
- "Start" : [ this._Range.startOffset ],
- "End" : [ this._Range.endOffset ]
- } ;
- // Since we're treating the document tree as normalized, we need to backtrack the text lengths
- // of previous text nodes into the offset value.
- var curStart = this._Range.startContainer.previousSibling ;
- var curEnd = this._Range.endContainer.previousSibling ;
-
- // Also note that the node that we use for "address base" would change during backtracking.
- var addrStart = this._Range.startContainer ;
- var addrEnd = this._Range.endContainer ;
- while ( curStart && curStart.nodeType == 3 && addrStart.nodeType == 3 )
- {
- bookmark.Start[0] += curStart.length ;
- addrStart = curStart ;
- curStart = curStart.previousSibling ;
- }
- while ( curEnd && curEnd.nodeType == 3 && addrEnd.nodeType == 3 )
- {
- bookmark.End[0] += curEnd.length ;
- addrEnd = curEnd ;
- curEnd = curEnd.previousSibling ;
- }
-
- // If the object pointed to by the startOffset and endOffset are text nodes, we need
- // to backtrack and add in the text offset to the bookmark addresses.
- if ( addrStart.nodeType == 1 && addrStart.childNodes[bookmark.Start[0]] && addrStart.childNodes[bookmark.Start[0]].nodeType == 3 )
- {
- var curNode = addrStart.childNodes[bookmark.Start[0]] ;
- var offset = 0 ;
- while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 )
- {
- curNode = curNode.previousSibling ;
- offset += curNode.length ;
- }
- addrStart = curNode ;
- bookmark.Start[0] = offset ;
- }
- if ( addrEnd.nodeType == 1 && addrEnd.childNodes[bookmark.End[0]] && addrEnd.childNodes[bookmark.End[0]].nodeType == 3 )
- {
- var curNode = addrEnd.childNodes[bookmark.End[0]] ;
- var offset = 0 ;
- while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 )
- {
- curNode = curNode.previousSibling ;
- offset += curNode.length ;
- }
- addrEnd = curNode ;
- bookmark.End[0] = offset ;
- }
-
- // Then, we record down the precise position of the container nodes
- // by walking up the DOM tree and counting their childNode index
- bookmark.Start = FCKDomTools.GetNodeAddress( addrStart, true ).concat( bookmark.Start ) ;
- bookmark.End = FCKDomTools.GetNodeAddress( addrEnd, true ).concat( bookmark.End ) ;
- return bookmark;
- },
-
- MoveToBookmark2 : function( bookmark )
- {
- // Reverse the childNode counting algorithm in CreateBookmark2()
- var curStart = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.Start.slice( 0, -1 ), true ) ;
- var curEnd = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.End.slice( 0, -1 ), true ) ;
-
- // Generate the W3C Range object and update relevant data
- this.Release( true ) ;
- this._Range = new FCKW3CRange( this.Window.document ) ;
- var startOffset = bookmark.Start[ bookmark.Start.length - 1 ] ;
- var endOffset = bookmark.End[ bookmark.End.length - 1 ] ;
- while ( curStart.nodeType == 3 && startOffset > curStart.length )
- {
- if ( ! curStart.nextSibling || curStart.nextSibling.nodeType != 3 )
- break ;
- startOffset -= curStart.length ;
- curStart = curStart.nextSibling ;
- }
- while ( curEnd.nodeType == 3 && endOffset > curEnd.length )
- {
- if ( ! curEnd.nextSibling || curEnd.nextSibling.nodeType != 3 )
- break ;
- endOffset -= curEnd.length ;
- curEnd = curEnd.nextSibling ;
- }
- this._Range.setStart( curStart, startOffset ) ;
- this._Range.setEnd( curEnd, endOffset ) ;
- this._UpdateElementInfo() ;
- },
-
- MoveToPosition : function( targetElement, position )
- {
- this.SetStart( targetElement, position ) ;
- this.Collapse( true ) ;
- },
-
- /*
- * Moves the position of the start boundary of the range to a specific position
- * relatively to a element.
- * @position:
- * 1 = After Start <target>^contents</target>
- * 2 = Before End <target>contents^</target>
- * 3 = Before Start ^<target>contents</target>
- * 4 = After End <target>contents</target>^
- */
- SetStart : function( targetElement, position, noInfoUpdate )
- {
- var oRange = this._Range ;
- if ( !oRange )
- oRange = this._Range = this.CreateRange() ;
-
- switch( position )
- {
- case 1 : // After Start <target>^contents</target>
- oRange.setStart( targetElement, 0 ) ;
- break ;
-
- case 2 : // Before End <target>contents^</target>
- oRange.setStart( targetElement, targetElement.childNodes.length ) ;
- break ;
-
- case 3 : // Before Start ^<target>contents</target>
- oRange.setStartBefore( targetElement ) ;
- break ;
-
- case 4 : // After End <target>contents</target>^
- oRange.setStartAfter( targetElement ) ;
- }
-
- if ( !noInfoUpdate )
- this._UpdateElementInfo() ;
- },
-
- /*
- * Moves the position of the start boundary of the range to a specific position
- * relatively to a element.
- * @position:
- * 1 = After Start <target>^contents</target>
- * 2 = Before End <target>contents^</target>
- * 3 = Before Start ^<target>contents</target>
- * 4 = After End <target>contents</target>^
- */
- SetEnd : function( targetElement, position, noInfoUpdate )
- {
- var oRange = this._Range ;
- if ( !oRange )
- oRange = this._Range = this.CreateRange() ;
-
- switch( position )
- {
- case 1 : // After Start <target>^contents</target>
- oRange.setEnd( targetElement, 0 ) ;
- break ;
-
- case 2 : // Before End <target>contents^</target>
- oRange.setEnd( targetElement, targetElement.childNodes.length ) ;
- break ;
-
- case 3 : // Before Start ^<target>contents</target>
- oRange.setEndBefore( targetElement ) ;
- break ;
-
- case 4 : // After End <target>contents</target>^
- oRange.setEndAfter( targetElement ) ;
- }
-
- if ( !noInfoUpdate )
- this._UpdateElementInfo() ;
- },
-
- Expand : function( unit )
- {
- var oNode, oSibling ;
-
- switch ( unit )
- {
- // Expand the range to include all inline parent elements if we are
- // are in their boundary limits.
- // For example (where [ ] are the range limits):
- // Before => Some <b>[<i>Some sample text]</i></b>.
- // After => Some [<b><i>Some sample text</i></b>].
- case 'inline_elements' :
- // Expand the start boundary.
- if ( this._Range.startOffset == 0 )
- {
- oNode = this._Range.startContainer ;
-
- if ( oNode.nodeType != 1 )
- oNode = oNode.previousSibling ? null : oNode.parentNode ;
-
- if ( oNode )
- {
- while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
- {
- this._Range.setStartBefore( oNode ) ;
-
- if ( oNode != oNode.parentNode.firstChild )
- break ;
-
- oNode = oNode.parentNode ;
- }
- }
- }
-
- // Expand the end boundary.
- oNode = this._Range.endContainer ;
- var offset = this._Range.endOffset ;
-
- if ( ( oNode.nodeType == 3 && offset >= oNode.nodeValue.length ) || ( oNode.nodeType == 1 && offset >= oNode.childNodes.length ) || ( oNode.nodeType != 1 && oNode.nodeType != 3 ) )
- {
- if ( oNode.nodeType != 1 )
- oNode = oNode.nextSibling ? null : oNode.parentNode ;
-
- if ( oNode )
- {
- while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] )
- {
- this._Range.setEndAfter( oNode ) ;
-
- if ( oNode != oNode.parentNode.lastChild )
- break ;
-
- oNode = oNode.parentNode ;
- }
- }
- }
-
- break ;
-
- case 'block_contents' :
- case 'list_contents' :
- var boundarySet = FCKListsLib.BlockBoundaries ;
- if ( unit == 'list_contents' || FCKConfig.EnterMode == 'br' )
- boundarySet = FCKListsLib.ListBoundaries ;
-
- if ( this.StartBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' )
- this.SetStart( this.StartBlock, 1 ) ;
- else
- {
- // Get the start node for the current range.
- oNode = this._Range.startContainer ;
-
- // If it is an element, get the node right before of it (in source order).
- if ( oNode.nodeType == 1 )
- {
- var lastNode = oNode.childNodes[ this._Range.startOffset ] ;
- if ( lastNode )
- oNode = FCKDomTools.GetPreviousSourceNode( lastNode, true ) ;
- else
- oNode = oNode.lastChild || oNode ;
- }
-
- // We must look for the left boundary, relative to the range
- // start, which is limited by a block element.
- while ( oNode
- && ( oNode.nodeType != 1
- || ( oNode != this.StartBlockLimit
- && !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) )
- {
- this._Range.setStartBefore( oNode ) ;
- oNode = oNode.previousSibling || oNode.parentNode ;
- }
- }
-
- if ( this.EndBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' && this.EndBlock.nodeName.toLowerCase() != 'li' )
- this.SetEnd( this.EndBlock, 2 ) ;
- else
- {
- oNode = this._Range.endContainer ;
- if ( oNode.nodeType == 1 )
- oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ;
-
- // We must look for the right boundary, relative to the range
- // end, which is limited by a block element.
- while ( oNode
- && ( oNode.nodeType != 1
- || ( oNode != this.StartBlockLimit
- && !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) )
- {
- this._Range.setEndAfter( oNode ) ;
- oNode = oNode.nextSibling || oNode.parentNode ;
- }
-
- // In EnterMode='br', the end <br> boundary element must
- // be included in the expanded range.
- if ( oNode && oNode.nodeName.toLowerCase() == 'br' )
- this._Range.setEndAfter( oNode ) ;
- }
-
- this._UpdateElementInfo() ;
- }
- },
-
- /**
- * Split the block element for the current range. It deletes the contents
- * of the range and splits the block in the collapsed position, resulting
- * in two sucessive blocks. The range is then positioned in the middle of
- * them.
- *
- * It returns and object with the following properties:
- * - PreviousBlock : a reference to the block element that preceeds
- * the range after the split.
- * - NextBlock : a reference to the block element that follows the
- * range after the split.
- * - WasStartOfBlock : a boolean indicating that the range was
- * originaly at the start of the block.
- * - WasEndOfBlock : a boolean indicating that the range was originaly
- * at the end of the block.
- *
- * If the range was originaly at the start of the block, no split will happen
- * and the PreviousBlock value will be null. The same is valid for the
- * NextBlock value if the range was at the end of the block.
- */
- SplitBlock : function( forceBlockTag )
- {
- var blockTag = forceBlockTag || FCKConfig.EnterMode ;
-
- if ( !this._Range )
- this.MoveToSelection() ;
-
- // The range boundaries must be in the same "block limit" element.
- if ( this.StartBlockLimit == this.EndBlockLimit )
- {
- // Get the current blocks.
- var eStartBlock = this.StartBlock ;
- var eEndBlock = this.EndBlock ;
- var oElementPath = null ;
-
- if ( blockTag != 'br' )
- {
- if ( !eStartBlock )
- {
- eStartBlock = this.FixBlock( true, blockTag ) ;
- eEndBlock = this.EndBlock ; // FixBlock may have fixed the EndBlock too.
- }
-
- if ( !eEndBlock )
- eEndBlock = this.FixBlock( false, blockTag ) ;
- }
-
- // Get the range position.
- var bIsStartOfBlock = ( eStartBlock != null && this.CheckStartOfBlock() ) ;
- var bIsEndOfBlock = ( eEndBlock != null && this.CheckEndOfBlock() ) ;
-
- // Delete the current contents.
- if ( !this.CheckIsEmpty() )
- this.DeleteContents() ;
-
- if ( eStartBlock && eEndBlock && eStartBlock == eEndBlock )
- {
- if ( bIsEndOfBlock )
- {
- oElementPath = new FCKElementPath( this.StartContainer ) ;
- this.MoveToPosition( eEndBlock, 4 ) ;
- eEndBlock = null ;
- }
- else if ( bIsStartOfBlock )
- {
- oElementPath = new FCKElementPath( this.StartContainer ) ;
- this.MoveToPosition( eStartBlock, 3 ) ;
- eStartBlock = null ;
- }
- else
- {
- // Extract the contents of the block from the selection point to the end of its contents.
- this.SetEnd( eStartBlock, 2 ) ;
- var eDocFrag = this.ExtractContents() ;
-
- // Duplicate the block element after it.
- eEndBlock = eStartBlock.cloneNode( false ) ;
- eEndBlock.removeAttribute( 'id', false ) ;
-
- // Place the extracted contents in the duplicated block.
- eDocFrag.AppendTo( eEndBlock ) ;
-
- FCKDomTools.InsertAfterNode( eStartBlock, eEndBlock ) ;
-
- this.MoveToPosition( eStartBlock, 4 ) ;
-
- // In Gecko, the last child node must be a bogus <br>.
- // Note: bogus <br> added under <ul> or <ol> would cause lists to be incorrectly rendered.
- if ( FCKBrowserInfo.IsGecko &&
- ! eStartBlock.nodeName.IEquals( ['ul', 'ol'] ) )
- FCKTools.AppendBogusBr( eStartBlock ) ;
- }
- }
-
- return {
- PreviousBlock : eStartBlock,
- NextBlock : eEndBlock,
- WasStartOfBlock : bIsStartOfBlock,
- WasEndOfBlock : bIsEndOfBlock,
- ElementPath : oElementPath
- } ;
- }
-
- return null ;
- },
-
- // Transform a block without a block tag in a valid block (orphan text in the body or td, usually).
- FixBlock : function( isStart, blockTag )
- {
- // Bookmark the range so we can restore it later.
- var oBookmark = this.CreateBookmark() ;
-
- // Collapse the range to the requested ending boundary.
- this.Collapse( isStart ) ;
-
- // Expands it to the block contents.
- this.Expand( 'block_contents' ) ;
-
- // Create the fixed block.
- var oFixedBlock = this.Window.document.createElement( blockTag ) ;
-
- // Move the contents of the temporary range to the fixed block.
- this.ExtractContents().AppendTo( oFixedBlock ) ;
- FCKDomTools.TrimNode( oFixedBlock ) ;
-
- // If the fixed block is empty (not counting bookmark nodes)
- // Add a <br /> inside to expand it.
- if ( FCKDomTools.CheckIsEmptyElement(oFixedBlock, function( element ) { return element.getAttribute('_fck_bookmark') != 'true' ; } )
- && FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( oFixedBlock ) ;
-
- // Insert the fixed block into the DOM.
- this.InsertNode( oFixedBlock ) ;
-
- // Move the range back to the bookmarked place.
- this.MoveToBookmark( oBookmark ) ;
-
- return oFixedBlock ;
- },
-
- Release : function( preserveWindow )
- {
- if ( !preserveWindow )
- this.Window = null ;
-
- this.StartNode = null ;
- this.StartContainer = null ;
- this.StartBlock = null ;
- this.StartBlockLimit = null ;
- this.EndNode = null ;
- this.EndContainer = null ;
- this.EndBlock = null ;
- this.EndBlockLimit = null ;
- this._Range = null ;
- this._Cache = null ;
- },
-
- CheckHasRange : function()
- {
- return !!this._Range ;
- },
-
- GetTouchedStartNode : function()
- {
- var range = this._Range ;
- var container = range.startContainer ;
-
- if ( range.collapsed || container.nodeType != 1 )
- return container ;
-
- return container.childNodes[ range.startOffset ] || container ;
- },
-
- GetTouchedEndNode : function()
- {
- var range = this._Range ;
- var container = range.endContainer ;
-
- if ( range.collapsed || container.nodeType != 1 )
- return container ;
-
- return container.childNodes[ range.endOffset - 1 ] || container ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_gecko.js
deleted file mode 100644
index 45d7c1c97..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_gecko.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Class for working with a selection range, much like the W3C DOM Range, but
- * it is not intended to be an implementation of the W3C interface.
- * (Gecko Implementation)
- */
-
-FCKDomRange.prototype.MoveToSelection = function()
-{
- this.Release( true ) ;
-
- var oSel = this.Window.getSelection() ;
-
- if ( oSel && oSel.rangeCount > 0 )
- {
- this._Range = FCKW3CRange.CreateFromRange( this.Window.document, oSel.getRangeAt(0) ) ;
- this._UpdateElementInfo() ;
- }
- else
- if ( this.Window.document )
- this.MoveToElementStart( this.Window.document.body ) ;
-}
-
-FCKDomRange.prototype.Select = function()
-{
- var oRange = this._Range ;
- if ( oRange )
- {
- var startContainer = oRange.startContainer ;
-
- // If we have a collapsed range, inside an empty element, we must add
- // something to it, otherwise the caret will not be visible.
- if ( oRange.collapsed && startContainer.nodeType == 1 && startContainer.childNodes.length == 0 )
- startContainer.appendChild( oRange._Document.createTextNode('') ) ;
-
- var oDocRange = this.Window.document.createRange() ;
- oDocRange.setStart( startContainer, oRange.startOffset ) ;
-
- try
- {
- oDocRange.setEnd( oRange.endContainer, oRange.endOffset ) ;
- }
- catch ( e )
- {
- // There is a bug in Firefox implementation (it would be too easy
- // otherwise). The new start can't be after the end (W3C says it can).
- // So, let's create a new range and collapse it to the desired point.
- if ( e.toString().Contains( 'NS_ERROR_ILLEGAL_VALUE' ) )
- {
- oRange.collapse( true ) ;
- oDocRange.setEnd( oRange.endContainer, oRange.endOffset ) ;
- }
- else
- throw( e ) ;
- }
-
- var oSel = this.Window.getSelection() ;
- oSel.removeAllRanges() ;
-
- // We must add a clone otherwise Firefox will have rendering issues.
- oSel.addRange( oDocRange ) ;
- }
-}
-
-// Not compatible with bookmark created with CreateBookmark2.
-// The bookmark nodes will be deleted from the document.
-FCKDomRange.prototype.SelectBookmark = function( bookmark )
-{
- var domRange = this.Window.document.createRange() ;
-
- var startNode = this.GetBookmarkNode( bookmark, true ) ;
- var endNode = this.GetBookmarkNode( bookmark, false ) ;
-
- domRange.setStart( startNode.parentNode, FCKDomTools.GetIndexOf( startNode ) ) ;
- FCKDomTools.RemoveNode( startNode ) ;
-
- if ( endNode )
- {
- domRange.setEnd( endNode.parentNode, FCKDomTools.GetIndexOf( endNode ) ) ;
- FCKDomTools.RemoveNode( endNode ) ;
- }
-
- var selection = this.Window.getSelection() ;
- selection.removeAllRanges() ;
- selection.addRange( domRange ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_ie.js
deleted file mode 100644
index 0773afd6a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrange_ie.js
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Class for working with a selection range, much like the W3C DOM Range, but
- * it is not intended to be an implementation of the W3C interface.
- * (IE Implementation)
- */
-
-FCKDomRange.prototype.MoveToSelection = function()
-{
- this.Release( true ) ;
-
- this._Range = new FCKW3CRange( this.Window.document ) ;
-
- var oSel = this.Window.document.selection ;
-
- if ( oSel.type != 'Control' )
- {
- var eMarkerStart = this._GetSelectionMarkerTag( true ) ;
- var eMarkerEnd = this._GetSelectionMarkerTag( false ) ;
-
- if ( !eMarkerStart && !eMarkerEnd )
- {
- this._Range.setStart( this.Window.document.body, 0 ) ;
- this._UpdateElementInfo() ;
- return ;
- }
-
- // Set the start boundary.
- this._Range.setStart( eMarkerStart.parentNode, FCKDomTools.GetIndexOf( eMarkerStart ) ) ;
- eMarkerStart.parentNode.removeChild( eMarkerStart ) ;
-
- // Set the end boundary.
- this._Range.setEnd( eMarkerEnd.parentNode, FCKDomTools.GetIndexOf( eMarkerEnd ) ) ;
- eMarkerEnd.parentNode.removeChild( eMarkerEnd ) ;
-
- this._UpdateElementInfo() ;
- }
- else
- {
- var oControl = oSel.createRange().item(0) ;
-
- if ( oControl )
- {
- this._Range.setStartBefore( oControl ) ;
- this._Range.setEndAfter( oControl ) ;
- this._UpdateElementInfo() ;
- }
- }
-}
-
-FCKDomRange.prototype.Select = function( forceExpand )
-{
- if ( this._Range )
- this.SelectBookmark( this.CreateBookmark( true ), forceExpand ) ;
-}
-
-// Not compatible with bookmark created with CreateBookmark2.
-// The bookmark nodes will be deleted from the document.
-FCKDomRange.prototype.SelectBookmark = function( bookmark, forceExpand )
-{
- var bIsCollapsed = this.CheckIsCollapsed() ;
- var bIsStartMakerAlone ;
- var dummySpan ;
-
- // Create marker tags for the start and end boundaries.
- var eStartMarker = this.GetBookmarkNode( bookmark, true ) ;
-
- if ( !eStartMarker )
- return ;
-
- var eEndMarker ;
- if ( !bIsCollapsed )
- eEndMarker = this.GetBookmarkNode( bookmark, false ) ;
-
- // Create the main range which will be used for the selection.
- var oIERange = this.Window.document.body.createTextRange() ;
-
- // Position the range at the start boundary.
- oIERange.moveToElementText( eStartMarker ) ;
- oIERange.moveStart( 'character', 1 ) ;
-
- if ( eEndMarker )
- {
- // Create a tool range for the end.
- var oIERangeEnd = this.Window.document.body.createTextRange() ;
-
- // Position the tool range at the end.
- oIERangeEnd.moveToElementText( eEndMarker ) ;
-
- // Move the end boundary of the main range to match the tool range.
- oIERange.setEndPoint( 'EndToEnd', oIERangeEnd ) ;
- oIERange.moveEnd( 'character', -1 ) ;
- }
- else
- {
- bIsStartMakerAlone = ( forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br' ) && !eStartMarker.nextSibing ;
-
- // Append a temporary <span>&#65279;</span> before the selection.
- // This is needed to avoid IE destroying selections inside empty
- // inline elements, like <b></b> (#253).
- // It is also needed when placing the selection right after an inline
- // element to avoid the selection moving inside of it.
- dummySpan = this.Window.document.createElement( 'span' ) ;
- dummySpan.innerHTML = '&#65279;' ; // Zero Width No-Break Space (U+FEFF). See #1359.
- eStartMarker.parentNode.insertBefore( dummySpan, eStartMarker ) ;
-
- if ( bIsStartMakerAlone )
- {
- // To expand empty blocks or line spaces after <br>, we need
- // instead to have any char, which will be later deleted using the
- // selection.
- // \ufeff = Zero Width No-Break Space (U+FEFF). See #1359.
- eStartMarker.parentNode.insertBefore( this.Window.document.createTextNode( '\ufeff' ), eStartMarker ) ;
- }
- }
-
- if ( !this._Range )
- this._Range = this.CreateRange() ;
-
- // Remove the markers (reset the position, because of the changes in the DOM tree).
- this._Range.setStartBefore( eStartMarker ) ;
- eStartMarker.parentNode.removeChild( eStartMarker ) ;
-
- if ( bIsCollapsed )
- {
- if ( bIsStartMakerAlone )
- {
- // Move the selection start to include the temporary &#65279;.
- oIERange.moveStart( 'character', -1 ) ;
-
- oIERange.select() ;
-
- // Remove our temporary stuff.
- this.Window.document.selection.clear() ;
- }
- else
- oIERange.select() ;
-
- FCKDomTools.RemoveNode( dummySpan ) ;
- }
- else
- {
- this._Range.setEndBefore( eEndMarker ) ;
- eEndMarker.parentNode.removeChild( eEndMarker ) ;
- oIERange.select() ;
- }
-}
-
-FCKDomRange.prototype._GetSelectionMarkerTag = function( toStart )
-{
- var doc = this.Window.document ;
- var selection = doc.selection ;
-
- // Get a range for the start boundary.
- var oRange ;
-
- // IE may throw an "unspecified error" on some cases (it happened when
- // loading _samples/default.html), so try/catch.
- try
- {
- oRange = selection.createRange() ;
- }
- catch (e)
- {
- return null ;
- }
-
- // IE might take the range object to the main window instead of inside the editor iframe window.
- // This is known to happen when the editor window has not been selected before (See #933).
- // We need to avoid that.
- if ( oRange.parentElement().document != doc )
- return null ;
-
- oRange.collapse( toStart === true ) ;
-
- // Paste a marker element at the collapsed range and get it from the DOM.
- var sMarkerId = 'fck_dom_range_temp_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) ;
- oRange.pasteHTML( '<span id="' + sMarkerId + '"></span>' ) ;
-
- return doc.getElementById( sMarkerId ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrangeiterator.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrangeiterator.js
deleted file mode 100644
index 962b8b1a1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckdomrangeiterator.js
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This class can be used to interate through nodes inside a range.
- *
- * During interation, the provided range can become invalid, due to document
- * mutations, so CreateBookmark() used to restore it after processing, if
- * needed.
- */
-
-var FCKDomRangeIterator = function( range )
-{
- /**
- * The FCKDomRange object that marks the interation boundaries.
- */
- this.Range = range ;
-
- /**
- * Indicates that <br> elements must be used as paragraph boundaries.
- */
- this.ForceBrBreak = false ;
-
- /**
- * Guarantees that the iterator will always return "real" block elements.
- * If "false", elements like <li>, <th> and <td> are returned. If "true", a
- * dedicated block element block element will be created inside those
- * elements to hold the selected content.
- */
- this.EnforceRealBlocks = false ;
-}
-
-FCKDomRangeIterator.CreateFromSelection = function( targetWindow )
-{
- var range = new FCKDomRange( targetWindow ) ;
- range.MoveToSelection() ;
- return new FCKDomRangeIterator( range ) ;
-}
-
-FCKDomRangeIterator.prototype =
-{
- /**
- * Get the next paragraph element. It automatically breaks the document
- * when necessary to generate block elements for the paragraphs.
- */
- GetNextParagraph : function()
- {
- // The block element to be returned.
- var block ;
-
- // The range object used to identify the paragraph contents.
- var range ;
-
- // Indicated that the current element in the loop is the last one.
- var isLast ;
-
- // Instructs to cleanup remaining BRs.
- var removePreviousBr ;
- var removeLastBr ;
-
- var boundarySet = this.ForceBrBreak ? FCKListsLib.ListBoundaries : FCKListsLib.BlockBoundaries ;
-
- // This is the first iteration. Let's initialize it.
- if ( !this._LastNode )
- {
- var range = this.Range.Clone() ;
- range.Expand( this.ForceBrBreak ? 'list_contents' : 'block_contents' ) ;
-
- this._NextNode = range.GetTouchedStartNode() ;
- this._LastNode = range.GetTouchedEndNode() ;
-
- // Let's reuse this variable.
- range = null ;
- }
-
- var currentNode = this._NextNode ;
- var lastNode = this._LastNode ;
-
- this._NextNode = null ;
-
- while ( currentNode )
- {
- // closeRange indicates that a paragraph boundary has been found,
- // so the range can be closed.
- var closeRange = false ;
-
- // includeNode indicates that the current node is good to be part
- // of the range. By default, any non-element node is ok for it.
- var includeNode = ( currentNode.nodeType != 1 ) ;
-
- var continueFromSibling = false ;
-
- // If it is an element node, let's check if it can be part of the
- // range.
- if ( !includeNode )
- {
- var nodeName = currentNode.nodeName.toLowerCase() ;
-
- if ( boundarySet[ nodeName ] && ( !FCKBrowserInfo.IsIE || currentNode.scopeName == 'HTML' ) )
- {
- // <br> boundaries must be part of the range. It will
- // happen only if ForceBrBreak.
- if ( nodeName == 'br' )
- includeNode = true ;
- else if ( !range && currentNode.childNodes.length == 0 && nodeName != 'hr' )
- {
- // If we have found an empty block, and haven't started
- // the range yet, it means we must return this block.
- block = currentNode ;
- isLast = currentNode == lastNode ;
- break ;
- }
-
- // The range must finish right before the boundary,
- // including possibly skipped empty spaces. (#1603)
- if ( range )
- {
- range.SetEnd( currentNode, 3, true ) ;
-
- // The found boundary must be set as the next one at this
- // point. (#1717)
- if ( nodeName != 'br' )
- this._NextNode = FCKDomTools.GetNextSourceNode( currentNode, true, null, lastNode ) || currentNode ;
- }
-
- closeRange = true ;
- }
- else
- {
- // If we have child nodes, let's check them.
- if ( currentNode.firstChild )
- {
- // If we don't have a range yet, let's start it.
- if ( !range )
- {
- range = new FCKDomRange( this.Range.Window ) ;
- range.SetStart( currentNode, 3, true ) ;
- }
-
- currentNode = currentNode.firstChild ;
- continue ;
- }
- includeNode = true ;
- }
- }
- else if ( currentNode.nodeType == 3 )
- {
- // Ignore normal whitespaces (i.e. not including &nbsp; or
- // other unicode whitespaces) before/after a block node.
- if ( /^[\r\n\t ]+$/.test( currentNode.nodeValue ) )
- includeNode = false ;
- }
-
- // The current node is good to be part of the range and we are
- // starting a new range, initialize it first.
- if ( includeNode && !range )
- {
- range = new FCKDomRange( this.Range.Window ) ;
- range.SetStart( currentNode, 3, true ) ;
- }
-
- // The last node has been found.
- isLast = ( ( !closeRange || includeNode ) && currentNode == lastNode ) ;
-// isLast = ( currentNode == lastNode && ( currentNode.nodeType != 1 || currentNode.childNodes.length == 0 ) ) ;
-
- // If we are in an element boundary, let's check if it is time
- // to close the range, otherwise we include the parent within it.
- if ( range && !closeRange )
- {
- while ( !currentNode.nextSibling && !isLast )
- {
- var parentNode = currentNode.parentNode ;
-
- if ( boundarySet[ parentNode.nodeName.toLowerCase() ] )
- {
- closeRange = true ;
- isLast = isLast || ( parentNode == lastNode ) ;
- break ;
- }
-
- currentNode = parentNode ;
- includeNode = true ;
- isLast = ( currentNode == lastNode ) ;
- continueFromSibling = true ;
- }
- }
-
- // Now finally include the node.
- if ( includeNode )
- range.SetEnd( currentNode, 4, true ) ;
-
- // We have found a block boundary. Let's close the range and move out of the
- // loop.
- if ( ( closeRange || isLast ) && range )
- {
- range._UpdateElementInfo() ;
-
- if ( range.StartNode == range.EndNode
- && range.StartNode.parentNode == range.StartBlockLimit
- && range.StartNode.getAttribute && range.StartNode.getAttribute( '_fck_bookmark' ) )
- range = null ;
- else
- break ;
- }
-
- if ( isLast )
- break ;
-
- currentNode = FCKDomTools.GetNextSourceNode( currentNode, continueFromSibling, null, lastNode ) ;
- }
-
- // Now, based on the processed range, look for (or create) the block to be returned.
- if ( !block )
- {
- // If no range has been found, this is the end.
- if ( !range )
- {
- this._NextNode = null ;
- return null ;
- }
-
- block = range.StartBlock ;
-
- if ( !block
- && !this.EnforceRealBlocks
- && range.StartBlockLimit.nodeName.IEquals( 'DIV', 'TH', 'TD' )
- && range.CheckStartOfBlock()
- && range.CheckEndOfBlock() )
- {
- block = range.StartBlockLimit ;
- }
- else if ( !block || ( this.EnforceRealBlocks && block.nodeName.toLowerCase() == 'li' ) )
- {
- // Create the fixed block.
- block = this.Range.Window.document.createElement( FCKConfig.EnterMode == 'p' ? 'p' : 'div' ) ;
-
- // Move the contents of the temporary range to the fixed block.
- range.ExtractContents().AppendTo( block ) ;
- FCKDomTools.TrimNode( block ) ;
-
- // Insert the fixed block into the DOM.
- range.InsertNode( block ) ;
-
- removePreviousBr = true ;
- removeLastBr = true ;
- }
- else if ( block.nodeName.toLowerCase() != 'li' )
- {
- // If the range doesn't includes the entire contents of the
- // block, we must split it, isolating the range in a dedicated
- // block.
- if ( !range.CheckStartOfBlock() || !range.CheckEndOfBlock() )
- {
- // The resulting block will be a clone of the current one.
- block = block.cloneNode( false ) ;
-
- // Extract the range contents, moving it to the new block.
- range.ExtractContents().AppendTo( block ) ;
- FCKDomTools.TrimNode( block ) ;
-
- // Split the block. At this point, the range will be in the
- // right position for our intents.
- var splitInfo = range.SplitBlock() ;
-
- removePreviousBr = !splitInfo.WasStartOfBlock ;
- removeLastBr = !splitInfo.WasEndOfBlock ;
-
- // Insert the new block into the DOM.
- range.InsertNode( block ) ;
- }
- }
- else if ( !isLast )
- {
- // LIs are returned as is, with all their children (due to the
- // nested lists). But, the next node is the node right after
- // the current range, which could be an <li> child (nested
- // lists) or the next sibling <li>.
-
- this._NextNode = block == lastNode ? null : FCKDomTools.GetNextSourceNode( range.EndNode, true, null, lastNode ) ;
- return block ;
- }
- }
-
- if ( removePreviousBr )
- {
- var previousSibling = block.previousSibling ;
- if ( previousSibling && previousSibling.nodeType == 1 )
- {
- if ( previousSibling.nodeName.toLowerCase() == 'br' )
- previousSibling.parentNode.removeChild( previousSibling ) ;
- else if ( previousSibling.lastChild && previousSibling.lastChild.nodeName.IEquals( 'br' ) )
- previousSibling.removeChild( previousSibling.lastChild ) ;
- }
- }
-
- if ( removeLastBr )
- {
- var lastChild = block.lastChild ;
- if ( lastChild && lastChild.nodeType == 1 && lastChild.nodeName.toLowerCase() == 'br' )
- block.removeChild( lastChild ) ;
- }
-
- // Get a reference for the next element. This is important because the
- // above block can be removed or changed, so we can rely on it for the
- // next interation.
- if ( !this._NextNode )
- this._NextNode = ( isLast || block == lastNode ) ? null : FCKDomTools.GetNextSourceNode( block, true, null, lastNode ) ;
-
- return block ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckeditingarea.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckeditingarea.js
deleted file mode 100644
index 4f7044ee6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckeditingarea.js
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKEditingArea Class: renders an editable area.
- */
-
-/**
- * @constructor
- * @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted.
- */
-var FCKEditingArea = function( targetElement )
-{
- this.TargetElement = targetElement ;
- this.Mode = FCK_EDITMODE_WYSIWYG ;
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ;
-}
-
-
-/**
- * @param {String} html The complete HTML for the page, including DOCTYPE and the <html> tag.
- */
-FCKEditingArea.prototype.Start = function( html, secondCall )
-{
- var eTargetElement = this.TargetElement ;
- var oTargetDocument = FCKTools.GetElementDocument( eTargetElement ) ;
-
- // Remove all child nodes from the target.
- while( eTargetElement.firstChild )
- eTargetElement.removeChild( eTargetElement.firstChild ) ;
-
- if ( this.Mode == FCK_EDITMODE_WYSIWYG )
- {
- // For FF, document.domain must be set only when different, otherwhise
- // we'll strangely have "Permission denied" issues.
- if ( FCK_IS_CUSTOM_DOMAIN )
- html = '<script>document.domain="' + FCK_RUNTIME_DOMAIN + '";</script>' + html ;
-
- // IE has a bug with the <base> tag... it must have a </base> closer,
- // otherwise the all successive tags will be set as children nodes of the <base>.
- if ( FCKBrowserInfo.IsIE )
- html = html.replace( /(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1></base>' ) ;
- else if ( !secondCall )
- {
- // Gecko moves some tags out of the body to the head, so we must use
- // innerHTML to set the body contents (SF BUG 1526154).
-
- // Extract the BODY contents from the html.
- var oMatchBefore = html.match( FCKRegexLib.BeforeBody ) ;
- var oMatchAfter = html.match( FCKRegexLib.AfterBody ) ;
-
- if ( oMatchBefore && oMatchAfter )
- {
- var sBody = html.substr( oMatchBefore[1].length,
- html.length - oMatchBefore[1].length - oMatchAfter[1].length ) ; // This is the BODY tag contents.
-
- html =
- oMatchBefore[1] + // This is the HTML until the <body...> tag, inclusive.
- '&nbsp;' +
- oMatchAfter[1] ; // This is the HTML from the </body> tag, inclusive.
-
- // If nothing in the body, place a BOGUS tag so the cursor will appear.
- if ( FCKBrowserInfo.IsGecko && ( sBody.length == 0 || FCKRegexLib.EmptyParagraph.test( sBody ) ) )
- sBody = '<br type="_moz">' ;
-
- this._BodyHTML = sBody ;
-
- }
- else
- this._BodyHTML = html ; // Invalid HTML input.
- }
-
- // Create the editing area IFRAME.
- var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
-
- // IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
- // See #1055.
- var sOverrideError = '<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>' ;
-
- oIFrame.frameBorder = 0 ;
- oIFrame.style.width = oIFrame.style.height = '100%' ;
-
- if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE )
- {
- window._FCKHtmlToLoad = html.replace( /<head>/i, '<head>' + sOverrideError ) ;
- oIFrame.src = 'javascript:void( (function(){' +
- 'document.open() ;' +
- 'document.domain="' + document.domain + '" ;' +
- 'document.write( window.parent._FCKHtmlToLoad );' +
- 'document.close() ;' +
- 'window.parent._FCKHtmlToLoad = null ;' +
- '})() )' ;
- }
- else if ( !FCKBrowserInfo.IsGecko )
- {
- // Firefox will render the tables inside the body in Quirks mode if the
- // source of the iframe is set to javascript. see #515
- oIFrame.src = 'javascript:void(0)' ;
- }
-
- // Append the new IFRAME to the target. For IE, it must be done after
- // setting the "src", to avoid the "secure/unsecure" message under HTTPS.
- eTargetElement.appendChild( oIFrame ) ;
-
- // Get the window and document objects used to interact with the newly created IFRAME.
- this.Window = oIFrame.contentWindow ;
-
- // IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
- // TODO: This error handler is not being fired.
- // this.Window.onerror = function() { alert( 'Error!' ) ; return true ; }
-
- if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
- {
- var oDoc = this.Window.document ;
-
- oDoc.open() ;
- oDoc.write( html.replace( /<head>/i, '<head>' + sOverrideError ) ) ;
- oDoc.close() ;
- }
-
- if ( FCKBrowserInfo.IsAIR )
- FCKAdobeAIR.EditingArea_Start( oDoc, html ) ;
-
- // Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it
- // will magically work.
- if ( FCKBrowserInfo.IsGecko10 && !secondCall )
- {
- this.Start( html, true ) ;
- return ;
- }
-
- if ( oIFrame.readyState && oIFrame.readyState != 'completed' )
- {
- var editArea = this ;
-
- // Using a IE alternative for DOMContentLoaded, similar to the
- // solution proposed at http://javascript.nwbox.com/IEContentLoaded/
- setTimeout( function()
- {
- try
- {
- editArea.Window.document.documentElement.doScroll("left") ;
- }
- catch(e)
- {
- setTimeout( arguments.callee, 0 ) ;
- return ;
- }
- editArea.Window._FCKEditingArea = editArea ;
- FCKEditingArea_CompleteStart.call( editArea.Window ) ;
- }, 0 ) ;
- }
- else
- {
- this.Window._FCKEditingArea = this ;
-
- // FF 1.0.x is buggy... we must wait a lot to enable editing because
- // sometimes the content simply disappears, for example when pasting
- // "bla1!<img src='some_url'>!bla2" in the source and then switching
- // back to design.
- if ( FCKBrowserInfo.IsGecko10 )
- this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
- else
- FCKEditingArea_CompleteStart.call( this.Window ) ;
- }
- }
- else
- {
- var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ;
- eTextarea.className = 'SourceField' ;
- eTextarea.dir = 'ltr' ;
- FCKDomTools.SetElementStyles( eTextarea,
- {
- width : '100%',
- height : '100%',
- border : 'none',
- resize : 'none',
- outline : 'none'
- } ) ;
- eTargetElement.appendChild( eTextarea ) ;
-
- eTextarea.value = html ;
-
- // Fire the "OnLoad" event.
- FCKTools.RunFunction( this.OnLoad ) ;
- }
-}
-
-// "this" here is FCKEditingArea.Window
-function FCKEditingArea_CompleteStart()
-{
- // On Firefox, the DOM takes a little to become available. So we must wait for it in a loop.
- if ( !this.document.body )
- {
- this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ;
- return ;
- }
-
- var oEditorArea = this._FCKEditingArea ;
-
- // Save this reference to be re-used later.
- oEditorArea.Document = oEditorArea.Window.document ;
-
- oEditorArea.MakeEditable() ;
-
- // Fire the "OnLoad" event.
- FCKTools.RunFunction( oEditorArea.OnLoad ) ;
-}
-
-FCKEditingArea.prototype.MakeEditable = function()
-{
- var oDoc = this.Document ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- // Kludge for #141 and #523
- oDoc.body.disabled = true ;
- oDoc.body.contentEditable = true ;
- oDoc.body.removeAttribute( "disabled" ) ;
-
- /* The following commands don't throw errors, but have no effect.
- oDoc.execCommand( 'AutoDetect', false, false ) ;
- oDoc.execCommand( 'KeepSelection', false, true ) ;
- */
- }
- else
- {
- try
- {
- // Disable Firefox 2 Spell Checker.
- oDoc.body.spellcheck = ( this.FFSpellChecker !== false ) ;
-
- if ( this._BodyHTML )
- {
- oDoc.body.innerHTML = this._BodyHTML ;
- oDoc.body.offsetLeft ; // Don't remove, this is a hack to fix Opera 9.50, see #2264.
- this._BodyHTML = null ;
- }
-
- oDoc.designMode = 'on' ;
-
- // Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez)
- oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ;
-
- // Disable the standard table editing features of Firefox.
- oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ;
- }
- catch (e)
- {
- // In Firefox if the iframe is initially hidden it can't be set to designMode and it raises an exception
- // So we set up a DOM Mutation event Listener on the HTML, as it will raise several events when the document is visible again
- FCKTools.AddEventListener( this.Window.frameElement, 'DOMAttrModified', FCKEditingArea_Document_AttributeNodeModified ) ;
- }
-
- }
-}
-
-// This function processes the notifications of the DOM Mutation event on the document
-// We use it to know that the document will be ready to be editable again (or we hope so)
-function FCKEditingArea_Document_AttributeNodeModified( evt )
-{
- var editingArea = evt.currentTarget.contentWindow._FCKEditingArea ;
-
- // We want to run our function after the events no longer fire, so we can know that it's a stable situation
- if ( editingArea._timer )
- window.clearTimeout( editingArea._timer ) ;
-
- editingArea._timer = FCKTools.SetTimeout( FCKEditingArea_MakeEditableByMutation, 1000, editingArea ) ;
-}
-
-// This function ideally should be called after the document is visible, it does clean up of the
-// mutation tracking and tries again to make the area editable.
-function FCKEditingArea_MakeEditableByMutation()
-{
- // Clean up
- delete this._timer ;
- // Now we don't want to keep on getting this event
- FCKTools.RemoveEventListener( this.Window.frameElement, 'DOMAttrModified', FCKEditingArea_Document_AttributeNodeModified ) ;
- // Let's try now to set the editing area editable
- // If it fails it will set up the Mutation Listener again automatically
- this.MakeEditable() ;
-}
-
-FCKEditingArea.prototype.Focus = function()
-{
- try
- {
- if ( this.Mode == FCK_EDITMODE_WYSIWYG )
- {
- if ( FCKBrowserInfo.IsIE )
- this._FocusIE() ;
- else
- this.Window.focus() ;
- }
- else
- {
- var oDoc = FCKTools.GetElementDocument( this.Textarea ) ;
- if ( (!oDoc.hasFocus || oDoc.hasFocus() ) && oDoc.activeElement == this.Textarea )
- return ;
-
- this.Textarea.focus() ;
- }
- }
- catch(e) {}
-}
-
-FCKEditingArea.prototype._FocusIE = function()
-{
- // In IE it can happen that the document is in theory focused but the
- // active element is outside of it.
- this.Document.body.setActive() ;
-
- this.Window.focus() ;
-
- // Kludge for #141... yet more code to workaround IE bugs
- var range = this.Document.selection.createRange() ;
-
- var parentNode = range.parentElement() ;
- var parentTag = parentNode.nodeName.toLowerCase() ;
-
- // Only apply the fix when in a block, and the block is empty.
- if ( parentNode.childNodes.length > 0 ||
- !( FCKListsLib.BlockElements[parentTag] ||
- FCKListsLib.NonEmptyBlockElements[parentTag] ) )
- {
- return ;
- }
-
- // Force the selection to happen, in this way we guarantee the focus will
- // be there.
- range = new FCKDomRange( this.Window ) ;
- range.MoveToElementEditStart( parentNode ) ;
- range.Select() ;
-}
-
-function FCKEditingArea_Cleanup()
-{
- if ( this.Document )
- this.Document.body.innerHTML = "" ;
- this.TargetElement = null ;
- this.IFrame = null ;
- this.Document = null ;
- this.Textarea = null ;
-
- if ( this.Window )
- {
- this.Window._FCKEditingArea = null ;
- this.Window = null ;
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckelementpath.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckelementpath.js
deleted file mode 100644
index 488b19f31..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckelementpath.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Manages the DOM ascensors element list of a specific DOM node
- * (limited to body, inclusive).
- */
-
-var FCKElementPath = function( lastNode )
-{
- var eBlock = null ;
- var eBlockLimit = null ;
-
- var aElements = new Array() ;
-
- var e = lastNode ;
- while ( e )
- {
- if ( e.nodeType == 1 )
- {
- if ( !this.LastElement )
- this.LastElement = e ;
-
- var sElementName = e.nodeName.toLowerCase() ;
- if ( FCKBrowserInfo.IsIE && e.scopeName != 'HTML' )
- sElementName = e.scopeName.toLowerCase() + ':' + sElementName ;
-
- if ( !eBlockLimit )
- {
- if ( !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null )
- eBlock = e ;
-
- if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null )
- {
- // DIV is considered the Block, if no block is available (#525)
- // and if it doesn't contain other blocks.
- if ( !eBlock && sElementName == 'div' && !FCKElementPath._CheckHasBlock( e ) )
- eBlock = e ;
- else
- eBlockLimit = e ;
- }
- }
-
- aElements.push( e ) ;
-
- if ( sElementName == 'body' )
- break ;
- }
- e = e.parentNode ;
- }
-
- this.Block = eBlock ;
- this.BlockLimit = eBlockLimit ;
- this.Elements = aElements ;
-}
-
-/**
- * Check if an element contains any block element.
- */
-FCKElementPath._CheckHasBlock = function( element )
-{
- var childNodes = element.childNodes ;
-
- for ( var i = 0, count = childNodes.length ; i < count ; i++ )
- {
- var child = childNodes[i] ;
-
- if ( child.nodeType == 1 && FCKListsLib.BlockElements[ child.nodeName.toLowerCase() ] )
- return true ;
- }
-
- return false ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckenterkey.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckenterkey.js
deleted file mode 100644
index 8819a199f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckenterkey.js
+++ /dev/null
@@ -1,708 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Controls the [Enter] keystroke behavior in a document.
- */
-
-/*
- * Constructor.
- * @targetDocument : the target document.
- * @enterMode : the behavior for the <Enter> keystroke.
- * May be "p", "div", "br". Default is "p".
- * @shiftEnterMode : the behavior for the <Shift>+<Enter> keystroke.
- * May be "p", "div", "br". Defaults to "br".
- */
-var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode, tabSpaces )
-{
- this.Window = targetWindow ;
- this.EnterMode = enterMode || 'p' ;
- this.ShiftEnterMode = shiftEnterMode || 'br' ;
-
- // Setup the Keystroke Handler.
- var oKeystrokeHandler = new FCKKeystrokeHandler( false ) ;
- oKeystrokeHandler._EnterKey = this ;
- oKeystrokeHandler.OnKeystroke = FCKEnterKey_OnKeystroke ;
-
- oKeystrokeHandler.SetKeystrokes( [
- [ 13 , 'Enter' ],
- [ SHIFT + 13, 'ShiftEnter' ],
- [ 8 , 'Backspace' ],
- [ CTRL + 8 , 'CtrlBackspace' ],
- [ 46 , 'Delete' ]
- ] ) ;
-
- this.TabText = '' ;
-
- // Safari by default inserts 4 spaces on TAB, while others make the editor
- // loose focus. So, we need to handle it here to not include those spaces.
- if ( tabSpaces > 0 || FCKBrowserInfo.IsSafari )
- {
- while ( tabSpaces-- )
- this.TabText += '\xa0' ;
-
- oKeystrokeHandler.SetKeystrokes( [ 9, 'Tab' ] );
- }
-
- oKeystrokeHandler.AttachToElement( targetWindow.document ) ;
-}
-
-
-function FCKEnterKey_OnKeystroke( keyCombination, keystrokeValue )
-{
- var oEnterKey = this._EnterKey ;
-
- try
- {
- switch ( keystrokeValue )
- {
- case 'Enter' :
- return oEnterKey.DoEnter() ;
- break ;
- case 'ShiftEnter' :
- return oEnterKey.DoShiftEnter() ;
- break ;
- case 'Backspace' :
- return oEnterKey.DoBackspace() ;
- break ;
- case 'Delete' :
- return oEnterKey.DoDelete() ;
- break ;
- case 'Tab' :
- return oEnterKey.DoTab() ;
- break ;
- case 'CtrlBackspace' :
- return oEnterKey.DoCtrlBackspace() ;
- break ;
- }
- }
- catch (e)
- {
- // If for any reason we are not able to handle it, go
- // ahead with the browser default behavior.
- }
-
- return false ;
-}
-
-/*
- * Executes the <Enter> key behavior.
- */
-FCKEnterKey.prototype.DoEnter = function( mode, hasShift )
-{
- // Save an undo snapshot before doing anything
- FCKUndo.SaveUndoStep() ;
-
- this._HasShift = ( hasShift === true ) ;
-
- var parentElement = FCKSelection.GetParentElement() ;
- var parentPath = new FCKElementPath( parentElement ) ;
- var sMode = mode || this.EnterMode ;
-
- if ( sMode == 'br' || parentPath.Block && parentPath.Block.tagName.toLowerCase() == 'pre' )
- return this._ExecuteEnterBr() ;
- else
- return this._ExecuteEnterBlock( sMode ) ;
-}
-
-/*
- * Executes the <Shift>+<Enter> key behavior.
- */
-FCKEnterKey.prototype.DoShiftEnter = function()
-{
- return this.DoEnter( this.ShiftEnterMode, true ) ;
-}
-
-/*
- * Executes the <Backspace> key behavior.
- */
-FCKEnterKey.prototype.DoBackspace = function()
-{
- var bCustom = false ;
-
- // Get the current selection.
- var oRange = new FCKDomRange( this.Window ) ;
- oRange.MoveToSelection() ;
-
- // Kludge for #247
- if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) )
- {
- this._FixIESelectAllBug( oRange ) ;
- return true ;
- }
-
- var isCollapsed = oRange.CheckIsCollapsed() ;
-
- if ( !isCollapsed )
- {
- // Bug #327, Backspace with an img selection would activate the default action in IE.
- // Let's override that with our logic here.
- if ( FCKBrowserInfo.IsIE && this.Window.document.selection.type.toLowerCase() == "control" )
- {
- var controls = this.Window.document.selection.createRange() ;
- for ( var i = controls.length - 1 ; i >= 0 ; i-- )
- {
- var el = controls.item( i ) ;
- el.parentNode.removeChild( el ) ;
- }
- return true ;
- }
-
- return false ;
- }
-
- // On IE, it is better for us handle the deletion if the caret is preceeded
- // by a <br> (#1383).
- if ( FCKBrowserInfo.IsIE )
- {
- var previousElement = FCKDomTools.GetPreviousSourceElement( oRange.StartNode, true ) ;
-
- if ( previousElement && previousElement.nodeName.toLowerCase() == 'br' )
- {
- // Create a range that starts after the <br> and ends at the
- // current range position.
- var testRange = oRange.Clone() ;
- testRange.SetStart( previousElement, 4 ) ;
-
- // If that range is empty, we can proceed cleaning that <br> manually.
- if ( testRange.CheckIsEmpty() )
- {
- previousElement.parentNode.removeChild( previousElement ) ;
- return true ;
- }
- }
- }
-
- var oStartBlock = oRange.StartBlock ;
- var oEndBlock = oRange.EndBlock ;
-
- // The selection boundaries must be in the same "block limit" element
- if ( oRange.StartBlockLimit == oRange.EndBlockLimit && oStartBlock && oEndBlock )
- {
- if ( !isCollapsed )
- {
- var bEndOfBlock = oRange.CheckEndOfBlock() ;
-
- oRange.DeleteContents() ;
-
- if ( oStartBlock != oEndBlock )
- {
- oRange.SetStart(oEndBlock,1) ;
- oRange.SetEnd(oEndBlock,1) ;
-
-// if ( bEndOfBlock )
-// oEndBlock.parentNode.removeChild( oEndBlock ) ;
- }
-
- oRange.Select() ;
-
- bCustom = ( oStartBlock == oEndBlock ) ;
- }
-
- if ( oRange.CheckStartOfBlock() )
- {
- var oCurrentBlock = oRange.StartBlock ;
-
- var ePrevious = FCKDomTools.GetPreviousSourceElement( oCurrentBlock, true, [ 'BODY', oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ;
-
- bCustom = this._ExecuteBackspace( oRange, ePrevious, oCurrentBlock ) ;
- }
- else if ( FCKBrowserInfo.IsGeckoLike )
- {
- // Firefox and Opera (#1095) loose the selection when executing
- // CheckStartOfBlock, so we must reselect.
- oRange.Select() ;
- }
- }
-
- oRange.Release() ;
- return bCustom ;
-}
-
-FCKEnterKey.prototype.DoCtrlBackspace = function()
-{
- FCKUndo.SaveUndoStep() ;
- var oRange = new FCKDomRange( this.Window ) ;
- oRange.MoveToSelection() ;
- if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) )
- {
- this._FixIESelectAllBug( oRange ) ;
- return true ;
- }
- return false ;
-}
-
-FCKEnterKey.prototype._ExecuteBackspace = function( range, previous, currentBlock )
-{
- var bCustom = false ;
-
- // We could be in a nested LI.
- if ( !previous && currentBlock && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) )
- {
- this._OutdentWithSelection( currentBlock, range ) ;
- return true ;
- }
-
- if ( previous && previous.nodeName.IEquals( 'LI' ) )
- {
- var oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ;
-
- while ( oNestedList )
- {
- previous = FCKDomTools.GetLastChild( oNestedList, 'LI' ) ;
- oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ;
- }
- }
-
- if ( previous && currentBlock )
- {
- // If we are in a LI, and the previous block is not an LI, we must outdent it.
- if ( currentBlock.nodeName.IEquals( 'LI' ) && !previous.nodeName.IEquals( 'LI' ) )
- {
- this._OutdentWithSelection( currentBlock, range ) ;
- return true ;
- }
-
- // Take a reference to the parent for post processing cleanup.
- var oCurrentParent = currentBlock.parentNode ;
-
- var sPreviousName = previous.nodeName.toLowerCase() ;
- if ( FCKListsLib.EmptyElements[ sPreviousName ] != null || sPreviousName == 'table' )
- {
- FCKDomTools.RemoveNode( previous ) ;
- bCustom = true ;
- }
- else
- {
- // Remove the current block.
- FCKDomTools.RemoveNode( currentBlock ) ;
-
- // Remove any empty tag left by the block removal.
- while ( oCurrentParent.innerHTML.Trim().length == 0 )
- {
- var oParent = oCurrentParent.parentNode ;
- oParent.removeChild( oCurrentParent ) ;
- oCurrentParent = oParent ;
- }
-
- // Cleanup the previous and the current elements.
- FCKDomTools.LTrimNode( currentBlock ) ;
- FCKDomTools.RTrimNode( previous ) ;
-
- // Append a space to the previous.
- // Maybe it is not always desirable...
- // previous.appendChild( this.Window.document.createTextNode( ' ' ) ) ;
-
- // Set the range to the end of the previous element and bookmark it.
- range.SetStart( previous, 2, true ) ;
- range.Collapse( true ) ;
- var oBookmark = range.CreateBookmark( true ) ;
-
- // Move the contents of the block to the previous element and delete it.
- // But for some block types (e.g. table), moving the children to the previous block makes no sense.
- // So a check is needed. (See #1081)
- if ( ! currentBlock.tagName.IEquals( [ 'TABLE' ] ) )
- FCKDomTools.MoveChildren( currentBlock, previous ) ;
-
- // Place the selection at the bookmark.
- range.SelectBookmark( oBookmark ) ;
-
- bCustom = true ;
- }
- }
-
- return bCustom ;
-}
-
-/*
- * Executes the <Delete> key behavior.
- */
-FCKEnterKey.prototype.DoDelete = function()
-{
- // Save an undo snapshot before doing anything
- // This is to conform with the behavior seen in MS Word
- FCKUndo.SaveUndoStep() ;
-
- // The <Delete> has the same effect as the <Backspace>, so we have the same
- // results if we just move to the next block and apply the same <Backspace> logic.
-
- var bCustom = false ;
-
- // Get the current selection.
- var oRange = new FCKDomRange( this.Window ) ;
- oRange.MoveToSelection() ;
-
- // Kludge for #247
- if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) )
- {
- this._FixIESelectAllBug( oRange ) ;
- return true ;
- }
-
- // There is just one special case for collapsed selections at the end of a block.
- if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGeckoLike ) )
- {
- var oCurrentBlock = oRange.StartBlock ;
- var eCurrentCell = FCKTools.GetElementAscensor( oCurrentBlock, 'td' );
-
- var eNext = FCKDomTools.GetNextSourceElement( oCurrentBlock, true, [ oRange.StartBlockLimit.nodeName ],
- ['UL','OL','TR'], true ) ;
-
- // Bug #1323 : if we're in a table cell, and the next node belongs to a different cell, then don't
- // delete anything.
- if ( eCurrentCell )
- {
- var eNextCell = FCKTools.GetElementAscensor( eNext, 'td' );
- if ( eNextCell != eCurrentCell )
- return true ;
- }
-
- bCustom = this._ExecuteBackspace( oRange, oCurrentBlock, eNext ) ;
- }
-
- oRange.Release() ;
- return bCustom ;
-}
-
-/*
- * Executes the <Tab> key behavior.
- */
-FCKEnterKey.prototype.DoTab = function()
-{
- var oRange = new FCKDomRange( this.Window );
- oRange.MoveToSelection() ;
-
- // If the user pressed <tab> inside a table, we should give him the default behavior ( moving between cells )
- // instead of giving him more non-breaking spaces. (Bug #973)
- var node = oRange._Range.startContainer ;
- while ( node )
- {
- if ( node.nodeType == 1 )
- {
- var tagName = node.tagName.toLowerCase() ;
- if ( tagName == "tr" || tagName == "td" || tagName == "th" || tagName == "tbody" || tagName == "table" )
- return false ;
- else
- break ;
- }
- node = node.parentNode ;
- }
-
- if ( this.TabText )
- {
- oRange.DeleteContents() ;
- oRange.InsertNode( this.Window.document.createTextNode( this.TabText ) ) ;
- oRange.Collapse( false ) ;
- oRange.Select() ;
- }
- return true ;
-}
-
-FCKEnterKey.prototype._ExecuteEnterBlock = function( blockTag, range )
-{
- // Get the current selection.
- var oRange = range || new FCKDomRange( this.Window ) ;
-
- var oSplitInfo = oRange.SplitBlock( blockTag ) ;
-
- if ( oSplitInfo )
- {
- // Get the current blocks.
- var ePreviousBlock = oSplitInfo.PreviousBlock ;
- var eNextBlock = oSplitInfo.NextBlock ;
-
- var bIsStartOfBlock = oSplitInfo.WasStartOfBlock ;
- var bIsEndOfBlock = oSplitInfo.WasEndOfBlock ;
-
- // If there is one block under a list item, modify the split so that the list item gets split as well. (Bug #1647)
- if ( eNextBlock )
- {
- if ( eNextBlock.parentNode.nodeName.IEquals( 'li' ) )
- {
- FCKDomTools.BreakParent( eNextBlock, eNextBlock.parentNode ) ;
- FCKDomTools.MoveNode( eNextBlock, eNextBlock.nextSibling, true ) ;
- }
- }
- else if ( ePreviousBlock && ePreviousBlock.parentNode.nodeName.IEquals( 'li' ) )
- {
- FCKDomTools.BreakParent( ePreviousBlock, ePreviousBlock.parentNode ) ;
- oRange.MoveToElementEditStart( ePreviousBlock.nextSibling );
- FCKDomTools.MoveNode( ePreviousBlock, ePreviousBlock.previousSibling ) ;
- }
-
- // If we have both the previous and next blocks, it means that the
- // boundaries were on separated blocks, or none of them where on the
- // block limits (start/end).
- if ( !bIsStartOfBlock && !bIsEndOfBlock )
- {
- // If the next block is an <li> with another list tree as the first child
- // We'll need to append a placeholder or the list item wouldn't be editable. (Bug #1420)
- if ( eNextBlock.nodeName.IEquals( 'li' ) && eNextBlock.firstChild
- && eNextBlock.firstChild.nodeName.IEquals( ['ul', 'ol'] ) )
- eNextBlock.insertBefore( FCKTools.GetElementDocument( eNextBlock ).createTextNode( '\xa0' ), eNextBlock.firstChild ) ;
- // Move the selection to the end block.
- if ( eNextBlock )
- oRange.MoveToElementEditStart( eNextBlock ) ;
- }
- else
- {
- if ( bIsStartOfBlock && bIsEndOfBlock && ePreviousBlock.tagName.toUpperCase() == 'LI' )
- {
- oRange.MoveToElementStart( ePreviousBlock ) ;
- this._OutdentWithSelection( ePreviousBlock, oRange ) ;
- oRange.Release() ;
- return true ;
- }
-
- var eNewBlock ;
-
- if ( ePreviousBlock )
- {
- var sPreviousBlockTag = ePreviousBlock.tagName.toUpperCase() ;
-
- // If is a header tag, or we are in a Shift+Enter (#77),
- // create a new block element (later in the code).
- if ( !this._HasShift && !(/^H[1-6]$/).test( sPreviousBlockTag ) )
- {
- // Otherwise, duplicate the previous block.
- eNewBlock = FCKDomTools.CloneElement( ePreviousBlock ) ;
- }
- }
- else if ( eNextBlock )
- eNewBlock = FCKDomTools.CloneElement( eNextBlock ) ;
-
- if ( !eNewBlock )
- eNewBlock = this.Window.document.createElement( blockTag ) ;
-
- // Recreate the inline elements tree, which was available
- // before the hitting enter, so the same styles will be
- // available in the new block.
- var elementPath = oSplitInfo.ElementPath ;
- if ( elementPath )
- {
- for ( var i = 0, len = elementPath.Elements.length ; i < len ; i++ )
- {
- var element = elementPath.Elements[i] ;
-
- if ( element == elementPath.Block || element == elementPath.BlockLimit )
- break ;
-
- if ( FCKListsLib.InlineChildReqElements[ element.nodeName.toLowerCase() ] )
- {
- element = FCKDomTools.CloneElement( element ) ;
- FCKDomTools.MoveChildren( eNewBlock, element ) ;
- eNewBlock.appendChild( element ) ;
- }
- }
- }
-
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( eNewBlock ) ;
-
- oRange.InsertNode( eNewBlock ) ;
-
- // This is tricky, but to make the new block visible correctly
- // we must select it.
- if ( FCKBrowserInfo.IsIE )
- {
- // Move the selection to the new block.
- oRange.MoveToElementEditStart( eNewBlock ) ;
- oRange.Select() ;
- }
-
- // Move the selection to the new block.
- oRange.MoveToElementEditStart( bIsStartOfBlock && !bIsEndOfBlock ? eNextBlock : eNewBlock ) ;
- }
-
- if ( FCKBrowserInfo.IsGeckoLike )
- {
- if ( eNextBlock )
- {
- // If we have split the block, adds a temporary span at the
- // range position and scroll relatively to it.
- var tmpNode = this.Window.document.createElement( 'span' ) ;
-
- // We need some content for Safari.
- tmpNode.innerHTML = '&nbsp;';
-
- oRange.InsertNode( tmpNode ) ;
- FCKDomTools.ScrollIntoView( tmpNode, false ) ;
- oRange.DeleteContents() ;
- }
- else
- {
- // We may use the above scroll logic for the new block case
- // too, but it gives some weird result with Opera.
- FCKDomTools.ScrollIntoView( eNextBlock || eNewBlock, false ) ;
- }
- }
-
- oRange.Select() ;
- }
-
- // Release the resources used by the range.
- oRange.Release() ;
-
- return true ;
-}
-
-FCKEnterKey.prototype._ExecuteEnterBr = function( blockTag )
-{
- // Get the current selection.
- var oRange = new FCKDomRange( this.Window ) ;
- oRange.MoveToSelection() ;
-
- // The selection boundaries must be in the same "block limit" element.
- if ( oRange.StartBlockLimit == oRange.EndBlockLimit )
- {
- oRange.DeleteContents() ;
-
- // Get the new selection (it is collapsed at this point).
- oRange.MoveToSelection() ;
-
- var bIsStartOfBlock = oRange.CheckStartOfBlock() ;
- var bIsEndOfBlock = oRange.CheckEndOfBlock() ;
-
- var sStartBlockTag = oRange.StartBlock ? oRange.StartBlock.tagName.toUpperCase() : '' ;
-
- var bHasShift = this._HasShift ;
- var bIsPre = false ;
-
- if ( !bHasShift && sStartBlockTag == 'LI' )
- return this._ExecuteEnterBlock( null, oRange ) ;
-
- // If we are at the end of a header block.
- if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) )
- {
- // Insert a BR after the current paragraph.
- FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ;
-
- // The space is required by Gecko only to make the cursor blink.
- if ( FCKBrowserInfo.IsGecko )
- FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createTextNode( '' ) ) ;
-
- // IE and Gecko have different behaviors regarding the position.
- oRange.SetStart( oRange.StartBlock.nextSibling, FCKBrowserInfo.IsIE ? 3 : 1 ) ;
- }
- else
- {
- var eLineBreak ;
- bIsPre = sStartBlockTag.IEquals( 'pre' ) ;
- if ( bIsPre )
- eLineBreak = this.Window.document.createTextNode( FCKBrowserInfo.IsIE ? '\r' : '\n' ) ;
- else
- eLineBreak = this.Window.document.createElement( 'br' ) ;
-
- oRange.InsertNode( eLineBreak ) ;
-
- // The space is required by Gecko only to make the cursor blink.
- if ( FCKBrowserInfo.IsGecko )
- FCKDomTools.InsertAfterNode( eLineBreak, this.Window.document.createTextNode( '' ) ) ;
-
- // If we are at the end of a block, we must be sure the bogus node is available in that block.
- if ( bIsEndOfBlock && FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( eLineBreak.parentNode ) ;
-
- if ( FCKBrowserInfo.IsIE )
- oRange.SetStart( eLineBreak, 4 ) ;
- else
- oRange.SetStart( eLineBreak.nextSibling, 1 ) ;
-
- if ( ! FCKBrowserInfo.IsIE )
- {
- var dummy = null ;
- if ( FCKBrowserInfo.IsOpera )
- dummy = this.Window.document.createElement( 'span' ) ;
- else
- dummy = this.Window.document.createElement( 'br' ) ;
-
- eLineBreak.parentNode.insertBefore( dummy, eLineBreak.nextSibling ) ;
-
- FCKDomTools.ScrollIntoView( dummy, false ) ;
-
- dummy.parentNode.removeChild( dummy ) ;
- }
- }
-
- // This collapse guarantees the cursor will be blinking.
- oRange.Collapse( true ) ;
-
- oRange.Select( bIsPre ) ;
- }
-
- // Release the resources used by the range.
- oRange.Release() ;
-
- return true ;
-}
-
-// Outdents a LI, maintaining the selection defined on a range.
-FCKEnterKey.prototype._OutdentWithSelection = function( li, range )
-{
- var oBookmark = range.CreateBookmark() ;
-
- FCKListHandler.OutdentListItem( li ) ;
-
- range.MoveToBookmark( oBookmark ) ;
- range.Select() ;
-}
-
-// Is all the contents under a node included by a range?
-FCKEnterKey.prototype._CheckIsAllContentsIncluded = function( range, node )
-{
- var startOk = false ;
- var endOk = false ;
-
- /*
- FCKDebug.Output( 'sc='+range.StartContainer.nodeName+
- ',so='+range._Range.startOffset+
- ',ec='+range.EndContainer.nodeName+
- ',eo='+range._Range.endOffset ) ;
- */
- if ( range.StartContainer == node || range.StartContainer == node.firstChild )
- startOk = ( range._Range.startOffset == 0 ) ;
-
- if ( range.EndContainer == node || range.EndContainer == node.lastChild )
- {
- var nodeLength = range.EndContainer.nodeType == 3 ? range.EndContainer.length : range.EndContainer.childNodes.length ;
- endOk = ( range._Range.endOffset == nodeLength ) ;
- }
-
- return startOk && endOk ;
-}
-
-// Kludge for #247
-FCKEnterKey.prototype._FixIESelectAllBug = function( range )
-{
- var doc = this.Window.document ;
- doc.body.innerHTML = '' ;
- var editBlock ;
- if ( FCKConfig.EnterMode.IEquals( ['div', 'p'] ) )
- {
- editBlock = doc.createElement( FCKConfig.EnterMode ) ;
- doc.body.appendChild( editBlock ) ;
- }
- else
- editBlock = doc.body ;
-
- range.MoveToNodeContents( editBlock ) ;
- range.Collapse( true ) ;
- range.Select() ;
- range.Release() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckevents.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckevents.js
deleted file mode 100644
index 0bae94df9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckevents.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKEvents Class: used to handle events is a advanced way.
- */
-
-var FCKEvents = function( eventsOwner )
-{
- this.Owner = eventsOwner ;
- this._RegisteredEvents = new Object() ;
-}
-
-FCKEvents.prototype.AttachEvent = function( eventName, functionPointer )
-{
- var aTargets ;
-
- if ( !( aTargets = this._RegisteredEvents[ eventName ] ) )
- this._RegisteredEvents[ eventName ] = [ functionPointer ] ;
- else
- {
- // Check that the event handler isn't already registered with the same listener
- // It doesn't detect function pointers belonging to an object (at least in Gecko)
- if ( aTargets.IndexOf( functionPointer ) == -1 )
- aTargets.push( functionPointer ) ;
- }
-}
-
-FCKEvents.prototype.FireEvent = function( eventName, params )
-{
- var bReturnValue = true ;
-
- var oCalls = this._RegisteredEvents[ eventName ] ;
-
- if ( oCalls )
- {
- for ( var i = 0 ; i < oCalls.length ; i++ )
- {
- try
- {
- bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
- }
- catch(e)
- {
- // Ignore the following error. It may happen if pointing to a
- // script not anymore available (#934):
- // -2146823277 = Can't execute code from a freed script
- if ( e.number != -2146823277 )
- throw e ;
- }
- }
- }
-
- return bReturnValue ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckhtmliterator.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckhtmliterator.js
deleted file mode 100644
index 2fb3a9064..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckhtmliterator.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This class can be used to interate through nodes inside a range.
- *
- * During interation, the provided range can become invalid, due to document
- * mutations, so CreateBookmark() used to restore it after processing, if
- * needed.
- */
-
-var FCKHtmlIterator = function( source )
-{
- this._sourceHtml = source ;
-}
-FCKHtmlIterator.prototype =
-{
- Next : function()
- {
- var sourceHtml = this._sourceHtml ;
- if ( sourceHtml == null )
- return null ;
-
- var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ;
- var isTag = false ;
- var value = "" ;
- if ( match )
- {
- if ( match.index > 0 )
- {
- value = sourceHtml.substr( 0, match.index ) ;
- this._sourceHtml = sourceHtml.substr( match.index ) ;
- }
- else
- {
- isTag = true ;
- value = match[0] ;
- this._sourceHtml = sourceHtml.substr( match[0].length ) ;
- }
- }
- else
- {
- value = sourceHtml ;
- this._sourceHtml = null ;
- }
- return { 'isTag' : isTag, 'value' : value } ;
- },
-
- Each : function( func )
- {
- var chunk ;
- while ( ( chunk = this.Next() ) )
- func( chunk.isTag, chunk.value ) ;
- }
-} ;
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This class can be used to interate through nodes inside a range.
- *
- * During interation, the provided range can become invalid, due to document
- * mutations, so CreateBookmark() used to restore it after processing, if
- * needed.
- */
-
-var FCKHtmlIterator = function( source )
-{
- this._sourceHtml = source ;
-}
-FCKHtmlIterator.prototype =
-{
- Next : function()
- {
- var sourceHtml = this._sourceHtml ;
- if ( sourceHtml == null )
- return null ;
-
- var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ;
- var isTag = false ;
- var value = "" ;
- if ( match )
- {
- if ( match.index > 0 )
- {
- value = sourceHtml.substr( 0, match.index ) ;
- this._sourceHtml = sourceHtml.substr( match.index ) ;
- }
- else
- {
- isTag = true ;
- value = match[0] ;
- this._sourceHtml = sourceHtml.substr( match[0].length ) ;
- }
- }
- else
- {
- value = sourceHtml ;
- this._sourceHtml = null ;
- }
- return { 'isTag' : isTag, 'value' : value } ;
- },
-
- Each : function( func )
- {
- var chunk ;
- while ( ( chunk = this.Next() ) )
- func( chunk.isTag, chunk.value ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckicon.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckicon.js
deleted file mode 100644
index be1bde00b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckicon.js
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKIcon Class: renders an icon from a single image, a strip or even a
- * spacer.
- */
-
-var FCKIcon = function( iconPathOrStripInfoArray )
-{
- var sTypeOf = iconPathOrStripInfoArray ? typeof( iconPathOrStripInfoArray ) : 'undefined' ;
- switch ( sTypeOf )
- {
- case 'number' :
- this.Path = FCKConfig.SkinPath + 'fck_strip.gif' ;
- this.Size = 16 ;
- this.Position = iconPathOrStripInfoArray ;
- break ;
-
- case 'undefined' :
- this.Path = FCK_SPACER_PATH ;
- break ;
-
- case 'string' :
- this.Path = iconPathOrStripInfoArray ;
- break ;
-
- default :
- // It is an array in the format [ StripFilePath, IconSize, IconPosition ]
- this.Path = iconPathOrStripInfoArray[0] ;
- this.Size = iconPathOrStripInfoArray[1] ;
- this.Position = iconPathOrStripInfoArray[2] ;
- }
-}
-
-FCKIcon.prototype.CreateIconElement = function( document )
-{
- var eIcon, eIconImage ;
-
- if ( this.Position ) // It is using an icons strip image.
- {
- var sPos = '-' + ( ( this.Position - 1 ) * this.Size ) + 'px' ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- // <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
-
- eIcon = document.createElement( 'DIV' ) ;
-
- eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
- eIconImage.src = this.Path ;
- eIconImage.style.top = sPos ;
- }
- else
- {
- // <img class="TB_Button_Image" src="spacer.gif" style="background-position: 0px -16px;background-image: url(strip.gif);">
-
- eIcon = document.createElement( 'IMG' ) ;
- eIcon.src = FCK_SPACER_PATH ;
- eIcon.style.backgroundPosition = '0px ' + sPos ;
- eIcon.style.backgroundImage = 'url("' + this.Path + '")' ;
- }
- }
- else // It is using a single icon image.
- {
- if ( FCKBrowserInfo.IsIE )
- {
- // IE makes the button 1px higher if using the <img> directly, so we
- // are changing to the <div> system to clip the image correctly.
- eIcon = document.createElement( 'DIV' ) ;
-
- eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
- eIconImage.src = this.Path ? this.Path : FCK_SPACER_PATH ;
- }
- else
- {
- // This is not working well with IE. See notes above.
- // <img class="TB_Button_Image" src="smiley.gif">
- eIcon = document.createElement( 'IMG' ) ;
- eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
- }
- }
-
- eIcon.className = 'TB_Button_Image' ;
-
- return eIcon ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckiecleanup.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckiecleanup.js
deleted file mode 100644
index e25d6482e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckiecleanup.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
- */
-
-var FCKIECleanup = function( attachWindow )
-{
- // If the attachWindow already have a cleanup object, just use that one.
- if ( attachWindow._FCKCleanupObj )
- this.Items = attachWindow._FCKCleanupObj.Items ;
- else
- {
- this.Items = new Array() ;
-
- attachWindow._FCKCleanupObj = this ;
- FCKTools.AddEventListenerEx( attachWindow, 'unload', FCKIECleanup_Cleanup ) ;
-// attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;
- }
-}
-
-FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
-{
- this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
-}
-
-function FCKIECleanup_Cleanup()
-{
- if ( !this._FCKCleanupObj || ( FCKConfig.MsWebBrowserControlCompat && !window.FCKUnloadFlag ) )
- return ;
-
- var aItems = this._FCKCleanupObj.Items ;
-
- while ( aItems.length > 0 )
- {
-
- // It is important to remove from the end to the beginning (pop()),
- // because of the order things get created in the editor. In the code,
- // elements in deeper position in the DOM are placed at the end of the
- // cleanup function, so we must cleanup then first, otherwise IE could
- // throw some crazy memory errors (IE bug).
- var oItem = aItems.pop() ;
- if ( oItem )
- oItem[1].call( oItem[0] ) ;
- }
-
- this._FCKCleanupObj = null ;
-
- if ( CollectGarbage )
- CollectGarbage() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckimagepreloader.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckimagepreloader.js
deleted file mode 100644
index b5f0a47dc..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckimagepreloader.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Preload a list of images, firing an event when complete.
- */
-
-var FCKImagePreloader = function()
-{
- this._Images = new Array() ;
-}
-
-FCKImagePreloader.prototype =
-{
- AddImages : function( images )
- {
- if ( typeof( images ) == 'string' )
- images = images.split( ';' ) ;
-
- this._Images = this._Images.concat( images ) ;
- },
-
- Start : function()
- {
- var aImages = this._Images ;
- this._PreloadCount = aImages.length ;
-
- for ( var i = 0 ; i < aImages.length ; i++ )
- {
- var eImg = document.createElement( 'img' ) ;
- FCKTools.AddEventListenerEx( eImg, 'load', _FCKImagePreloader_OnImage, this ) ;
- FCKTools.AddEventListenerEx( eImg, 'error', _FCKImagePreloader_OnImage, this ) ;
- eImg.src = aImages[i] ;
-
- _FCKImagePreloader_ImageCache.push( eImg ) ;
- }
- }
-};
-
-// All preloaded images must be placed in a global array, otherwise the preload
-// magic will not happen.
-var _FCKImagePreloader_ImageCache = new Array() ;
-
-function _FCKImagePreloader_OnImage( ev, imagePreloader )
-{
- if ( (--imagePreloader._PreloadCount) == 0 && imagePreloader.OnComplete )
- imagePreloader.OnComplete() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckkeystrokehandler.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckkeystrokehandler.js
deleted file mode 100644
index dadd05a8f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckkeystrokehandler.js
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Control keyboard keystroke combinations.
- */
-
-var FCKKeystrokeHandler = function( cancelCtrlDefaults )
-{
- this.Keystrokes = new Object() ;
- this.CancelCtrlDefaults = ( cancelCtrlDefaults !== false ) ;
-}
-
-/*
- * Listen to keystroke events in an element or DOM document object.
- * @target: The element or document to listen to keystroke events.
- */
-FCKKeystrokeHandler.prototype.AttachToElement = function( target )
-{
- // For newer browsers, it is enough to listen to the keydown event only.
- // Some browsers instead, don't cancel key events in the keydown, but in the
- // keypress. So we must do a longer trip in those cases.
- FCKTools.AddEventListenerEx( target, 'keydown', _FCKKeystrokeHandler_OnKeyDown, this ) ;
- if ( FCKBrowserInfo.IsGecko10 || FCKBrowserInfo.IsOpera || ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac ) )
- FCKTools.AddEventListenerEx( target, 'keypress', _FCKKeystrokeHandler_OnKeyPress, this ) ;
-}
-
-/*
- * Sets a list of keystrokes. It can receive either a single array or "n"
- * arguments, each one being an array of 1 or 2 elemenst. The first element
- * is the keystroke combination, and the second is the value to assign to it.
- * If the second element is missing, the keystroke definition is removed.
- */
-FCKKeystrokeHandler.prototype.SetKeystrokes = function()
-{
- // Look through the arguments.
- for ( var i = 0 ; i < arguments.length ; i++ )
- {
- var keyDef = arguments[i] ;
-
- // If the configuration for the keystrokes is missing some element or has any extra comma
- // this item won't be valid, so skip it and keep on processing.
- if ( !keyDef )
- continue ;
-
- if ( typeof( keyDef[0] ) == 'object' ) // It is an array with arrays defining the keystrokes.
- this.SetKeystrokes.apply( this, keyDef ) ;
- else
- {
- if ( keyDef.length == 1 ) // If it has only one element, remove the keystroke.
- delete this.Keystrokes[ keyDef[0] ] ;
- else // Otherwise add it.
- this.Keystrokes[ keyDef[0] ] = keyDef[1] === true ? true : keyDef ;
- }
- }
-}
-
-function _FCKKeystrokeHandler_OnKeyDown( ev, keystrokeHandler )
-{
- // Get the key code.
- var keystroke = ev.keyCode || ev.which ;
-
- // Combine it with the CTRL, SHIFT and ALT states.
- var keyModifiers = 0 ;
-
- if ( ev.ctrlKey || ev.metaKey )
- keyModifiers += CTRL ;
-
- if ( ev.shiftKey )
- keyModifiers += SHIFT ;
-
- if ( ev.altKey )
- keyModifiers += ALT ;
-
- var keyCombination = keystroke + keyModifiers ;
-
- var cancelIt = keystrokeHandler._CancelIt = false ;
-
- // Look for its definition availability.
- var keystrokeValue = keystrokeHandler.Keystrokes[ keyCombination ] ;
-
-// FCKDebug.Output( 'KeyDown: ' + keyCombination + ' - Value: ' + keystrokeValue ) ;
-
- // If the keystroke is defined
- if ( keystrokeValue )
- {
- // If the keystroke has been explicitly set to "true" OR calling the
- // "OnKeystroke" event, it doesn't return "true", the default behavior
- // must be preserved.
- if ( keystrokeValue === true || !( keystrokeHandler.OnKeystroke && keystrokeHandler.OnKeystroke.apply( keystrokeHandler, keystrokeValue ) ) )
- return true ;
-
- cancelIt = true ;
- }
-
- // By default, it will cancel all combinations with the CTRL key only (except positioning keys).
- if ( cancelIt || ( keystrokeHandler.CancelCtrlDefaults && keyModifiers == CTRL && ( keystroke < 33 || keystroke > 40 ) ) )
- {
- keystrokeHandler._CancelIt = true ;
-
- if ( ev.preventDefault )
- return ev.preventDefault() ;
-
- ev.returnValue = false ;
- ev.cancelBubble = true ;
- return false ;
- }
-
- return true ;
-}
-
-function _FCKKeystrokeHandler_OnKeyPress( ev, keystrokeHandler )
-{
- if ( keystrokeHandler._CancelIt )
- {
-// FCKDebug.Output( 'KeyPress Cancel', 'Red') ;
-
- if ( ev.preventDefault )
- return ev.preventDefault() ;
-
- return false ;
- }
-
- return true ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublock.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublock.js
deleted file mode 100644
index e26858a48..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublock.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Renders a list of menu items.
- */
-
-var FCKMenuBlock = function()
-{
- this._Items = new Array() ;
-}
-
-
-FCKMenuBlock.prototype.Count = function()
-{
- return this._Items.length ;
-}
-
-FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
-{
- var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
-
- oItem.OnClick = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
- oItem.OnActivate = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ;
-
- this._Items.push( oItem ) ;
-
- return oItem ;
-}
-
-FCKMenuBlock.prototype.AddSeparator = function()
-{
- this._Items.push( new FCKMenuSeparator() ) ;
-}
-
-FCKMenuBlock.prototype.RemoveAllItems = function()
-{
- this._Items = new Array() ;
-
- var eItemsTable = this._ItemsTable ;
- if ( eItemsTable )
- {
- while ( eItemsTable.rows.length > 0 )
- eItemsTable.deleteRow( 0 ) ;
- }
-}
-
-FCKMenuBlock.prototype.Create = function( parentElement )
-{
- if ( !this._ItemsTable )
- {
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( this, FCKMenuBlock_Cleanup ) ;
-
- this._Window = FCKTools.GetElementWindow( parentElement ) ;
-
- var oDoc = FCKTools.GetElementDocument( parentElement ) ;
-
- var eTable = parentElement.appendChild( oDoc.createElement( 'table' ) ) ;
- eTable.cellPadding = 0 ;
- eTable.cellSpacing = 0 ;
-
- FCKTools.DisableSelection( eTable ) ;
-
- var oMainElement = eTable.insertRow(-1).insertCell(-1) ;
- oMainElement.className = 'MN_Menu' ;
-
- var eItemsTable = this._ItemsTable = oMainElement.appendChild( oDoc.createElement( 'table' ) ) ;
- eItemsTable.cellPadding = 0 ;
- eItemsTable.cellSpacing = 0 ;
- }
-
- for ( var i = 0 ; i < this._Items.length ; i++ )
- this._Items[i].Create( this._ItemsTable ) ;
-}
-
-/* Events */
-
-function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock )
-{
- if ( menuBlock.Hide )
- menuBlock.Hide() ;
-
- FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ;
-}
-
-function FCKMenuBlock_Item_OnActivate( menuBlock )
-{
- var oActiveItem = menuBlock._ActiveItem ;
-
- if ( oActiveItem && oActiveItem != this )
- {
- // Set the focus to this menu block window (to fire OnBlur on opened panels).
- if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu )
- {
- menuBlock._Window.focus() ;
-
- // Due to the event model provided by Opera, we need to set
- // HasFocus here as the above focus() call will not fire the focus
- // event in the panel immediately (#1200).
- menuBlock.Panel.HasFocus = true ;
- }
-
- oActiveItem.Deactivate() ;
- }
-
- menuBlock._ActiveItem = this ;
-}
-
-function FCKMenuBlock_Cleanup()
-{
- this._Window = null ;
- this._ItemsTable = null ;
-}
-
-// ################# //
-
-var FCKMenuSeparator = function()
-{}
-
-FCKMenuSeparator.prototype.Create = function( parentTable )
-{
- var oDoc = FCKTools.GetElementDocument( parentTable ) ;
-
- var r = parentTable.insertRow(-1) ;
-
- var eCell = r.insertCell(-1) ;
- eCell.className = 'MN_Separator MN_Icon' ;
-
- eCell = r.insertCell(-1) ;
- eCell.className = 'MN_Separator' ;
- eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
-
- eCell = r.insertCell(-1) ;
- eCell.className = 'MN_Separator' ;
- eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublockpanel.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublockpanel.js
deleted file mode 100644
index 86e4c5820..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenublockpanel.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This class is a menu block that behaves like a panel. It's a mix of the
- * FCKMenuBlock and FCKPanel classes.
- */
-
-var FCKMenuBlockPanel = function()
-{
- // Call the "base" constructor.
- FCKMenuBlock.call( this ) ;
-}
-
-FCKMenuBlockPanel.prototype = new FCKMenuBlock() ;
-
-
-// Override the create method.
-FCKMenuBlockPanel.prototype.Create = function()
-{
- var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ;
- oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
-
- // Call the "base" implementation.
- FCKMenuBlock.prototype.Create.call( this, oPanel.MainNode ) ;
-}
-
-FCKMenuBlockPanel.prototype.Show = function( x, y, relElement )
-{
- if ( !this.Panel.CheckIsOpened() )
- this.Panel.Show( x, y, relElement ) ;
-}
-
-FCKMenuBlockPanel.prototype.Hide = function()
-{
- if ( this.Panel.CheckIsOpened() )
- this.Panel.Hide() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenuitem.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenuitem.js
deleted file mode 100644
index 3db1291de..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckmenuitem.js
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines and renders a menu items in a menu block.
- */
-
-var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled, customData )
-{
- this.Name = name ;
- this.Label = label || name ;
- this.IsDisabled = isDisabled ;
-
- this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
-
- this.SubMenu = new FCKMenuBlockPanel() ;
- this.SubMenu.Parent = parentMenuBlock ;
- this.SubMenu.OnClick = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ;
- this.CustomData = customData ;
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( this, FCKMenuItem_Cleanup ) ;
-}
-
-
-FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData )
-{
- this.HasSubMenu = true ;
- return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ;
-}
-
-FCKMenuItem.prototype.AddSeparator = function()
-{
- this.SubMenu.AddSeparator() ;
-}
-
-FCKMenuItem.prototype.Create = function( parentTable )
-{
- var bHasSubMenu = this.HasSubMenu ;
-
- var oDoc = FCKTools.GetElementDocument( parentTable ) ;
-
- // Add a row in the table to hold the menu item.
- var r = this.MainElement = parentTable.insertRow(-1) ;
- r.className = this.IsDisabled ? 'MN_Item_Disabled' : 'MN_Item' ;
-
- // Set the row behavior.
- if ( !this.IsDisabled )
- {
- FCKTools.AddEventListenerEx( r, 'mouseover', FCKMenuItem_OnMouseOver, [ this ] ) ;
- FCKTools.AddEventListenerEx( r, 'click', FCKMenuItem_OnClick, [ this ] ) ;
-
- if ( !bHasSubMenu )
- FCKTools.AddEventListenerEx( r, 'mouseout', FCKMenuItem_OnMouseOut, [ this ] ) ;
- }
-
- // Create the icon cell.
- var eCell = r.insertCell(-1) ;
- eCell.className = 'MN_Icon' ;
- eCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
-
- // Create the label cell.
- eCell = r.insertCell(-1) ;
- eCell.className = 'MN_Label' ;
- eCell.noWrap = true ;
- eCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
-
- // Create the arrow cell and setup the sub menu panel (if needed).
- eCell = r.insertCell(-1) ;
- if ( bHasSubMenu )
- {
- eCell.className = 'MN_Arrow' ;
-
- // The arrow is a fixed size image.
- var eArrowImg = eCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
- eArrowImg.src = FCK_IMAGES_PATH + 'arrow_' + FCKLang.Dir + '.gif' ;
- eArrowImg.width = 4 ;
- eArrowImg.height = 7 ;
-
- this.SubMenu.Create() ;
- this.SubMenu.Panel.OnHide = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnHide, this ) ;
- }
-}
-
-FCKMenuItem.prototype.Activate = function()
-{
- this.MainElement.className = 'MN_Item_Over' ;
-
- if ( this.HasSubMenu )
- {
- // Show the child menu block. The ( +2, -2 ) correction is done because
- // of the padding in the skin. It is not a good solution because one
- // could change the skin and so the final result would not be accurate.
- // For now it is ok because we are controlling the skin.
- this.SubMenu.Show( this.MainElement.offsetWidth + 2, -2, this.MainElement ) ;
- }
-
- FCKTools.RunFunction( this.OnActivate, this ) ;
-}
-
-FCKMenuItem.prototype.Deactivate = function()
-{
- this.MainElement.className = 'MN_Item' ;
-
- if ( this.HasSubMenu )
- this.SubMenu.Hide() ;
-}
-
-/* Events */
-
-function FCKMenuItem_SubMenu_OnClick( clickedItem, listeningItem )
-{
- FCKTools.RunFunction( listeningItem.OnClick, listeningItem, [ clickedItem ] ) ;
-}
-
-function FCKMenuItem_SubMenu_OnHide( menuItem )
-{
- menuItem.Deactivate() ;
-}
-
-function FCKMenuItem_OnClick( ev, menuItem )
-{
- if ( menuItem.HasSubMenu )
- menuItem.Activate() ;
- else
- {
- menuItem.Deactivate() ;
- FCKTools.RunFunction( menuItem.OnClick, menuItem, [ menuItem ] ) ;
- }
-}
-
-function FCKMenuItem_OnMouseOver( ev, menuItem )
-{
- menuItem.Activate() ;
-}
-
-function FCKMenuItem_OnMouseOut( ev, menuItem )
-{
- menuItem.Deactivate() ;
-}
-
-function FCKMenuItem_Cleanup()
-{
- this.MainElement = null ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckpanel.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckpanel.js
deleted file mode 100644
index 650a26479..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckpanel.js
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Component that creates floating panels. It is used by many
- * other components, like the toolbar items, context menu, etc...
- */
-
-var FCKPanel = function( parentWindow )
-{
- this.IsRTL = ( FCKLang.Dir == 'rtl' ) ;
- this.IsContextMenu = false ;
- this._LockCounter = 0 ;
-
- this._Window = parentWindow || window ;
-
- var oDocument ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- // Create the Popup that will hold the panel.
- // The popup has to be created before playing with domain hacks, see #1666.
- this._Popup = this._Window.createPopup() ;
-
- // this._Window cannot be accessed while playing with domain hacks, but local variable is ok.
- // See #1666.
- var pDoc = this._Window.document ;
-
- // This is a trick to IE6 (not IE7). The original domain must be set
- // before creating the popup, so we are able to take a refence to the
- // document inside of it, and the set the proper domain for it. (#123)
- if ( FCK_IS_CUSTOM_DOMAIN && !FCKBrowserInfo.IsIE7 )
- {
- pDoc.domain = FCK_ORIGINAL_DOMAIN ;
- document.domain = FCK_ORIGINAL_DOMAIN ;
- }
-
- oDocument = this.Document = this._Popup.document ;
-
- // Set the proper domain inside the popup.
- if ( FCK_IS_CUSTOM_DOMAIN )
- {
- oDocument.domain = FCK_RUNTIME_DOMAIN ;
- pDoc.domain = FCK_RUNTIME_DOMAIN ;
- document.domain = FCK_RUNTIME_DOMAIN ;
- }
-
- FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
- }
- else
- {
- var oIFrame = this._IFrame = this._Window.document.createElement('iframe') ;
- FCKTools.ResetStyles( oIFrame );
- oIFrame.src = 'javascript:void(0)' ;
- oIFrame.allowTransparency = true ;
- oIFrame.frameBorder = '0' ;
- oIFrame.scrolling = 'no' ;
- oIFrame.style.width = oIFrame.style.height = '0px' ;
- FCKDomTools.SetElementStyles( oIFrame,
- {
- position : 'absolute',
- zIndex : FCKConfig.FloatingPanelsZIndex
- } ) ;
-
- this._Window.document.body.appendChild( oIFrame ) ;
-
- var oIFrameWindow = oIFrame.contentWindow ;
-
- oDocument = this.Document = oIFrameWindow.document ;
-
- // Workaround for Safari 12256. Ticket #63
- var sBase = '' ;
- if ( FCKBrowserInfo.IsSafari )
- sBase = '<base href="' + window.document.location + '">' ;
-
- // Initialize the IFRAME document body.
- oDocument.open() ;
- oDocument.write( '<html><head>' + sBase + '<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ;
- oDocument.close() ;
-
- if( FCKBrowserInfo.IsAIR )
- FCKAdobeAIR.Panel_Contructor( oDocument, window.document.location ) ;
-
- FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ;
- FCKTools.AddEventListenerEx( oIFrameWindow, 'blur', FCKPanel_Window_OnBlur, this ) ;
- }
-
- oDocument.dir = FCKLang.Dir ;
-
- FCKTools.AddEventListener( oDocument, 'contextmenu', FCKTools.CancelEvent ) ;
-
-
- // Create the main DIV that is used as the panel base.
- this.MainNode = oDocument.body.appendChild( oDocument.createElement('DIV') ) ;
-
- // The "float" property must be set so Firefox calculates the size correctly.
- this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left' ;
-}
-
-
-FCKPanel.prototype.AppendStyleSheet = function( styleSheet )
-{
- FCKTools.AppendStyleSheet( this.Document, styleSheet ) ;
-}
-
-FCKPanel.prototype.Preload = function( x, y, relElement )
-{
- // The offsetWidth and offsetHeight properties are not available if the
- // element is not visible. So we must "show" the popup with no size to
- // be able to use that values in the second call (IE only).
- if ( this._Popup )
- this._Popup.show( x, y, 0, 0, relElement ) ;
-}
-
-// Workaround for IE7 problem. See #1982
-// Submenus are restricted to the size of its parent, so we increase it as needed.
-// Returns true if the panel has been repositioned
-FCKPanel.prototype.ResizeForSubpanel = function( panel, width, height )
-{
- if ( !FCKBrowserInfo.IsIE7 )
- return false ;
-
- if ( !this._Popup.isOpen )
- {
- this.Subpanel = null ;
- return false ;
- }
-
- // If we are resetting the extra space
- if ( width == 0 && height == 0 )
- {
- // Another subpanel is being shown, so we must not shrink back
- if (this.Subpanel !== panel)
- return false ;
-
- // Reset values.
- // We leave the IncreasedY untouched to avoid vertical movement of the
- // menu if the submenu is higher than the main menu.
- this.Subpanel = null ;
- this.IncreasedX = 0 ;
- }
- else
- {
- this.Subpanel = panel ;
- // If the panel has already been increased enough, get out
- if ( ( this.IncreasedX >= width ) && ( this.IncreasedY >= height ) )
- return false ;
-
- this.IncreasedX = Math.max( this.IncreasedX, width ) ;
- this.IncreasedY = Math.max( this.IncreasedY, height ) ;
- }
-
- var x = this.ShowRect.x ;
- var w = this.IncreasedX ;
- if ( this.IsRTL )
- x = x - w ;
-
- // Horizontally increase as needed (sum of widths).
- // Vertically, use only the maximum of this menu or the submenu
- var finalWidth = this.ShowRect.w + w ;
- var finalHeight = Math.max( this.ShowRect.h, this.IncreasedY ) ;
- if ( this.ParentPanel )
- this.ParentPanel.ResizeForSubpanel( this, finalWidth, finalHeight ) ;
- this._Popup.show( x, this.ShowRect.y, finalWidth, finalHeight, this.RelativeElement ) ;
-
- return this.IsRTL ;
-}
-
-FCKPanel.prototype.Show = function( x, y, relElement, width, height )
-{
- var iMainWidth ;
- var eMainNode = this.MainNode ;
-
- if ( this._Popup )
- {
- // The offsetWidth and offsetHeight properties are not available if the
- // element is not visible. So we must "show" the popup with no size to
- // be able to use that values in the second call.
- this._Popup.show( x, y, 0, 0, relElement ) ;
-
- // The following lines must be place after the above "show", otherwise it
- // doesn't has the desired effect.
- FCKDomTools.SetElementStyles( eMainNode,
- {
- width : width ? width + 'px' : '',
- height : height ? height + 'px' : ''
- } ) ;
-
- iMainWidth = eMainNode.offsetWidth ;
-
- if ( FCKBrowserInfo.IsIE7 )
- {
- if (this.ParentPanel && this.ParentPanel.ResizeForSubpanel(this, iMainWidth, eMainNode.offsetHeight) )
- {
- // As the parent has moved, allow the browser to update its internal data, so the new position is correct.
- FCKTools.RunFunction( this.Show, this, [x, y, relElement] ) ;
- return ;
- }
- }
-
- if ( this.IsRTL )
- {
- if ( this.IsContextMenu )
- x = x - iMainWidth + 1 ;
- else if ( relElement )
- x = ( x * -1 ) + relElement.offsetWidth - iMainWidth ;
- }
-
- if ( FCKBrowserInfo.IsIE7 )
- {
- // Store the values that will be used by the ResizeForSubpanel function
- this.ShowRect = {x:x, y:y, w:iMainWidth, h:eMainNode.offsetHeight} ;
- this.IncreasedX = 0 ;
- this.IncreasedY = 0 ;
- this.RelativeElement = relElement ;
- }
-
- // Second call: Show the Popup at the specified location, with the correct size.
- this._Popup.show( x, y, iMainWidth, eMainNode.offsetHeight, relElement ) ;
-
- if ( this.OnHide )
- {
- if ( this._Timer )
- CheckPopupOnHide.call( this, true ) ;
-
- this._Timer = FCKTools.SetInterval( CheckPopupOnHide, 100, this ) ;
- }
- }
- else
- {
- // Do not fire OnBlur while the panel is opened.
- if ( typeof( FCK.ToolbarSet.CurrentInstance.FocusManager ) != 'undefined' )
- FCK.ToolbarSet.CurrentInstance.FocusManager.Lock() ;
-
- if ( this.ParentPanel )
- {
- this.ParentPanel.Lock() ;
-
- // Due to a bug on FF3, we must ensure that the parent panel will
- // blur (#1584).
- FCKPanel_Window_OnBlur( null, this.ParentPanel ) ;
- }
-
- // Toggle the iframe scrolling attribute to prevent the panel
- // scrollbars from disappearing in FF Mac. (#191)
- if ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac )
- {
- this._IFrame.scrolling = '' ;
- FCKTools.RunFunction( function(){ this._IFrame.scrolling = 'no'; }, this ) ;
- }
-
- // Be sure we'll not have more than one Panel opened at the same time.
- // Do not unlock focus manager here because we're displaying another floating panel
- // instead of returning the editor to a "no panel" state (Bug #1514).
- if ( FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel &&
- FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel != this )
- FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel.Hide( false, true ) ;
-
- FCKDomTools.SetElementStyles( eMainNode,
- {
- width : width ? width + 'px' : '',
- height : height ? height + 'px' : ''
- } ) ;
-
- iMainWidth = eMainNode.offsetWidth ;
-
- if ( !width ) this._IFrame.width = 1 ;
- if ( !height ) this._IFrame.height = 1 ;
-
- // This is weird... but with Firefox, we must get the offsetWidth before
- // setting the _IFrame size (which returns "0"), and then after that,
- // to return the correct width. Remove the first step and it will not
- // work when the editor is in RTL.
- //
- // The "|| eMainNode.firstChild.offsetWidth" part has been added
- // for Opera compatibility (see #570).
- iMainWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ;
-
- // Base the popup coordinates upon the coordinates of relElement.
- var oPos = FCKTools.GetDocumentPosition( this._Window,
- relElement.nodeType == 9 ?
- ( FCKTools.IsStrictMode( relElement ) ? relElement.documentElement : relElement.body ) :
- relElement ) ;
-
- // Minus the offsets provided by any positioned parent element of the panel iframe.
- var positionedAncestor = FCKDomTools.GetPositionedAncestor( this._IFrame.parentNode ) ;
- if ( positionedAncestor )
- {
- var nPos = FCKTools.GetDocumentPosition( FCKTools.GetElementWindow( positionedAncestor ), positionedAncestor ) ;
- oPos.x -= nPos.x ;
- oPos.y -= nPos.y ;
- }
-
- if ( this.IsRTL && !this.IsContextMenu )
- x = ( x * -1 ) ;
-
- x += oPos.x ;
- y += oPos.y ;
-
- if ( this.IsRTL )
- {
- if ( this.IsContextMenu )
- x = x - iMainWidth + 1 ;
- else if ( relElement )
- x = x + relElement.offsetWidth - iMainWidth ;
- }
- else
- {
- var oViewPaneSize = FCKTools.GetViewPaneSize( this._Window ) ;
- var oScrollPosition = FCKTools.GetScrollPosition( this._Window ) ;
-
- var iViewPaneHeight = oViewPaneSize.Height + oScrollPosition.Y ;
- var iViewPaneWidth = oViewPaneSize.Width + oScrollPosition.X ;
-
- if ( ( x + iMainWidth ) > iViewPaneWidth )
- x -= x + iMainWidth - iViewPaneWidth ;
-
- if ( ( y + eMainNode.offsetHeight ) > iViewPaneHeight )
- y -= y + eMainNode.offsetHeight - iViewPaneHeight ;
- }
-
- // Set the context menu DIV in the specified location.
- FCKDomTools.SetElementStyles( this._IFrame,
- {
- left : x + 'px',
- top : y + 'px'
- } ) ;
-
- // Move the focus to the IFRAME so we catch the "onblur".
- this._IFrame.contentWindow.focus() ;
- this._IsOpened = true ;
-
- var me = this ;
- this._resizeTimer = setTimeout( function()
- {
- var iWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ;
- var iHeight = eMainNode.offsetHeight ;
- me._IFrame.style.width = iWidth + 'px' ;
- me._IFrame.style.height = iHeight + 'px' ;
-
- }, 0 ) ;
-
- FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel = this ;
- }
-
- FCKTools.RunFunction( this.OnShow, this ) ;
-}
-
-FCKPanel.prototype.Hide = function( ignoreOnHide, ignoreFocusManagerUnlock )
-{
- if ( this._Popup )
- this._Popup.hide() ;
- else
- {
- if ( !this._IsOpened || this._LockCounter > 0 )
- return ;
-
- // Enable the editor to fire the "OnBlur".
- if ( typeof( FCKFocusManager ) != 'undefined' && !ignoreFocusManagerUnlock )
- FCKFocusManager.Unlock() ;
-
- // It is better to set the sizes to 0, otherwise Firefox would have
- // rendering problems.
- this._IFrame.style.width = this._IFrame.style.height = '0px' ;
-
- this._IsOpened = false ;
-
- if ( this._resizeTimer )
- {
- clearTimeout( this._resizeTimer ) ;
- this._resizeTimer = null ;
- }
-
- if ( this.ParentPanel )
- this.ParentPanel.Unlock() ;
-
- if ( !ignoreOnHide )
- FCKTools.RunFunction( this.OnHide, this ) ;
- }
-}
-
-FCKPanel.prototype.CheckIsOpened = function()
-{
- if ( this._Popup )
- return this._Popup.isOpen ;
- else
- return this._IsOpened ;
-}
-
-FCKPanel.prototype.CreateChildPanel = function()
-{
- var oWindow = this._Popup ? FCKTools.GetDocumentWindow( this.Document ) : this._Window ;
-
- var oChildPanel = new FCKPanel( oWindow ) ;
- oChildPanel.ParentPanel = this ;
-
- return oChildPanel ;
-}
-
-FCKPanel.prototype.Lock = function()
-{
- this._LockCounter++ ;
-}
-
-FCKPanel.prototype.Unlock = function()
-{
- if ( --this._LockCounter == 0 && !this.HasFocus )
- this.Hide() ;
-}
-
-/* Events */
-
-function FCKPanel_Window_OnFocus( e, panel )
-{
- panel.HasFocus = true ;
-}
-
-function FCKPanel_Window_OnBlur( e, panel )
-{
- panel.HasFocus = false ;
-
- if ( panel._LockCounter == 0 )
- FCKTools.RunFunction( panel.Hide, panel ) ;
-}
-
-function CheckPopupOnHide( forceHide )
-{
- if ( forceHide || !this._Popup.isOpen )
- {
- window.clearInterval( this._Timer ) ;
- this._Timer = null ;
-
- if (this._Popup && this.ParentPanel && !forceHide)
- this.ParentPanel.ResizeForSubpanel(this, 0, 0) ;
-
- FCKTools.RunFunction( this.OnHide, this ) ;
- }
-}
-
-function FCKPanel_Cleanup()
-{
- this._Popup = null ;
- this._Window = null ;
- this.Document = null ;
- this.MainNode = null ;
- this.RelativeElement = null ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckplugin.js
deleted file mode 100644
index 28e54b464..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckplugin.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKPlugin Class: Represents a single plugin.
- */
-
-var FCKPlugin = function( name, availableLangs, basePath )
-{
- this.Name = name ;
- this.BasePath = basePath ? basePath : FCKConfig.PluginsPath ;
- this.Path = this.BasePath + name + '/' ;
-
- if ( !availableLangs || availableLangs.length == 0 )
- this.AvailableLangs = new Array() ;
- else
- this.AvailableLangs = availableLangs.split(',') ;
-}
-
-FCKPlugin.prototype.Load = function()
-{
- // Load the language file, if defined.
- if ( this.AvailableLangs.length > 0 )
- {
- var sLang ;
-
- // Check if the plugin has the language file for the active language.
- if ( this.AvailableLangs.IndexOf( FCKLanguageManager.ActiveLanguage.Code ) >= 0 )
- sLang = FCKLanguageManager.ActiveLanguage.Code ;
- else
- // Load the default language file (first one) if the current one is not available.
- sLang = this.AvailableLangs[0] ;
-
- // Add the main plugin script.
- LoadScript( this.Path + 'lang/' + sLang + '.js' ) ;
- }
-
- // Add the main plugin script.
- LoadScript( this.Path + 'fckplugin.js' ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckspecialcombo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckspecialcombo.js
deleted file mode 100644
index b31a8f6f5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckspecialcombo.js
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKSpecialCombo Class: represents a special combo.
- */
-
-var FCKSpecialCombo = function( caption, fieldWidth, panelWidth, panelMaxHeight, parentWindow )
-{
- // Default properties values.
- this.FieldWidth = fieldWidth || 100 ;
- this.PanelWidth = panelWidth || 150 ;
- this.PanelMaxHeight = panelMaxHeight || 150 ;
- this.Label = '&nbsp;' ;
- this.Caption = caption ;
- this.Tooltip = caption ;
- this.Style = FCK_TOOLBARITEM_ICONTEXT ;
-
- this.Enabled = true ;
-
- this.Items = new Object() ;
-
- this._Panel = new FCKPanel( parentWindow || window ) ;
- this._Panel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
- this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
- this._PanelBox.className = 'SC_Panel' ;
- this._PanelBox.style.width = this.PanelWidth + 'px' ;
-
- this._PanelBox.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
-
- this._ItemsHolderEl = this._PanelBox.getElementsByTagName('TD')[0] ;
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( this, FCKSpecialCombo_Cleanup ) ;
-
-// this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
-// this._Panel.Create() ;
-// this._Panel.PanelDiv.className += ' SC_Panel' ;
-// this._Panel.PanelDiv.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
-// this._ItemsHolderEl = this._Panel.PanelDiv.getElementsByTagName('TD')[0] ;
-}
-
-function FCKSpecialCombo_ItemOnMouseOver()
-{
- this.className += ' SC_ItemOver' ;
-}
-
-function FCKSpecialCombo_ItemOnMouseOut()
-{
- this.className = this.originalClass ;
-}
-
-function FCKSpecialCombo_ItemOnClick( ev, specialCombo, itemId )
-{
- this.className = this.originalClass ;
-
- specialCombo._Panel.Hide() ;
-
- specialCombo.SetLabel( this.FCKItemLabel ) ;
-
- if ( typeof( specialCombo.OnSelect ) == 'function' )
- specialCombo.OnSelect( itemId, this ) ;
-}
-
-FCKSpecialCombo.prototype.ClearItems = function ()
-{
- if ( this.Items )
- this.Items = {} ;
-
- var itemsholder = this._ItemsHolderEl ;
- while ( itemsholder.firstChild )
- itemsholder.removeChild( itemsholder.firstChild ) ;
-}
-
-FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor )
-{
- // <div class="SC_Item" onmouseover="this.className='SC_Item SC_ItemOver';" onmouseout="this.className='SC_Item';"><b>Bold 1</b></div>
- var oDiv = this._ItemsHolderEl.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
- oDiv.className = oDiv.originalClass = 'SC_Item' ;
- oDiv.innerHTML = html ;
- oDiv.FCKItemLabel = label || id ;
- oDiv.Selected = false ;
-
- // In IE, the width must be set so the borders are shown correctly when the content overflows.
- if ( FCKBrowserInfo.IsIE )
- oDiv.style.width = '100%' ;
-
- if ( bgColor )
- oDiv.style.backgroundColor = bgColor ;
-
- FCKTools.AddEventListenerEx( oDiv, 'mouseover', FCKSpecialCombo_ItemOnMouseOver ) ;
- FCKTools.AddEventListenerEx( oDiv, 'mouseout', FCKSpecialCombo_ItemOnMouseOut ) ;
- FCKTools.AddEventListenerEx( oDiv, 'click', FCKSpecialCombo_ItemOnClick, [ this, id ] ) ;
-
- this.Items[ id.toString().toLowerCase() ] = oDiv ;
-
- return oDiv ;
-}
-
-FCKSpecialCombo.prototype.SelectItem = function( item )
-{
- if ( typeof item == 'string' )
- item = this.Items[ item.toString().toLowerCase() ] ;
-
- if ( item )
- {
- item.className = item.originalClass = 'SC_ItemSelected' ;
- item.Selected = true ;
- }
-}
-
-FCKSpecialCombo.prototype.SelectItemByLabel = function( itemLabel, setLabel )
-{
- for ( var id in this.Items )
- {
- var oDiv = this.Items[id] ;
-
- if ( oDiv.FCKItemLabel == itemLabel )
- {
- oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
- oDiv.Selected = true ;
-
- if ( setLabel )
- this.SetLabel( itemLabel ) ;
- }
- }
-}
-
-FCKSpecialCombo.prototype.DeselectAll = function( clearLabel )
-{
- for ( var i in this.Items )
- {
- if ( !this.Items[i] ) continue;
- this.Items[i].className = this.Items[i].originalClass = 'SC_Item' ;
- this.Items[i].Selected = false ;
- }
-
- if ( clearLabel )
- this.SetLabel( '' ) ;
-}
-
-FCKSpecialCombo.prototype.SetLabelById = function( id )
-{
- id = id ? id.toString().toLowerCase() : '' ;
-
- var oDiv = this.Items[ id ] ;
- this.SetLabel( oDiv ? oDiv.FCKItemLabel : '' ) ;
-}
-
-FCKSpecialCombo.prototype.SetLabel = function( text )
-{
- text = ( !text || text.length == 0 ) ? '&nbsp;' : text ;
-
- if ( text == this.Label )
- return ;
-
- this.Label = text ;
-
- var labelEl = this._LabelEl ;
- if ( labelEl )
- {
- labelEl.innerHTML = text ;
-
- // It may happen that the label is some HTML, including tags. This
- // would be a problem because when the user click on those tags, the
- // combo will get the selection from the editing area. So we must
- // disable any kind of selection here.
- FCKTools.DisableSelection( labelEl ) ;
- }
-}
-
-FCKSpecialCombo.prototype.SetEnabled = function( isEnabled )
-{
- this.Enabled = isEnabled ;
-
- // In IE it can happen when the page is reloaded that _OuterTable is null, so check its existence
- if ( this._OuterTable )
- this._OuterTable.className = isEnabled ? '' : 'SC_FieldDisabled' ;
-}
-
-FCKSpecialCombo.prototype.Create = function( targetElement )
-{
- var oDoc = FCKTools.GetElementDocument( targetElement ) ;
- var eOuterTable = this._OuterTable = targetElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
- eOuterTable.cellPadding = 0 ;
- eOuterTable.cellSpacing = 0 ;
-
- eOuterTable.insertRow(-1) ;
-
- var sClass ;
- var bShowLabel ;
-
- switch ( this.Style )
- {
- case FCK_TOOLBARITEM_ONLYICON :
- sClass = 'TB_ButtonType_Icon' ;
- bShowLabel = false;
- break ;
- case FCK_TOOLBARITEM_ONLYTEXT :
- sClass = 'TB_ButtonType_Text' ;
- bShowLabel = false;
- break ;
- case FCK_TOOLBARITEM_ICONTEXT :
- bShowLabel = true;
- break ;
- }
-
- if ( this.Caption && this.Caption.length > 0 && bShowLabel )
- {
- var oCaptionCell = eOuterTable.rows[0].insertCell(-1) ;
- oCaptionCell.innerHTML = this.Caption ;
- oCaptionCell.className = 'SC_FieldCaption' ;
- }
-
- // Create the main DIV element.
- var oField = FCKTools.AppendElement( eOuterTable.rows[0].insertCell(-1), 'div' ) ;
- if ( bShowLabel )
- {
- oField.className = 'SC_Field' ;
- oField.style.width = this.FieldWidth + 'px' ;
- oField.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>' ;
-
- this._LabelEl = oField.getElementsByTagName('label')[0] ; // Memory Leak
- this._LabelEl.innerHTML = this.Label ;
- }
- else
- {
- oField.className = 'TB_Button_Off' ;
- //oField.innerHTML = '<span className="SC_FieldCaption">' + this.Caption + '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
- //oField.innerHTML = '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
-
- // Gets the correct CSS class to use for the specified style (param).
- oField.innerHTML = '<table title="' + this.Tooltip + '" class="' + sClass + '" cellspacing="0" cellpadding="0" border="0">' +
- '<tr>' +
- //'<td class="TB_Icon"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21"></td>' +
- '<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
- '<td class="TB_Text">' + this.Caption + '</td>' +
- '<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
- '<td class="TB_ButtonArrow"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
- '<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
- '</tr>' +
- '</table>' ;
- }
-
-
- // Events Handlers
-
- FCKTools.AddEventListenerEx( oField, 'mouseover', FCKSpecialCombo_OnMouseOver, this ) ;
- FCKTools.AddEventListenerEx( oField, 'mouseout', FCKSpecialCombo_OnMouseOut, this ) ;
- FCKTools.AddEventListenerEx( oField, 'click', FCKSpecialCombo_OnClick, this ) ;
-
- FCKTools.DisableSelection( this._Panel.Document.body ) ;
-}
-
-function FCKSpecialCombo_Cleanup()
-{
- this._LabelEl = null ;
- this._OuterTable = null ;
- this._ItemsHolderEl = null ;
- this._PanelBox = null ;
-
- if ( this.Items )
- {
- for ( var key in this.Items )
- this.Items[key] = null ;
- }
-}
-
-function FCKSpecialCombo_OnMouseOver( ev, specialCombo )
-{
- if ( specialCombo.Enabled )
- {
- switch ( specialCombo.Style )
- {
- case FCK_TOOLBARITEM_ONLYICON :
- this.className = 'TB_Button_On_Over';
- break ;
- case FCK_TOOLBARITEM_ONLYTEXT :
- this.className = 'TB_Button_On_Over';
- break ;
- case FCK_TOOLBARITEM_ICONTEXT :
- this.className = 'SC_Field SC_FieldOver' ;
- break ;
- }
- }
-}
-
-function FCKSpecialCombo_OnMouseOut( ev, specialCombo )
-{
- switch ( specialCombo.Style )
- {
- case FCK_TOOLBARITEM_ONLYICON :
- this.className = 'TB_Button_Off';
- break ;
- case FCK_TOOLBARITEM_ONLYTEXT :
- this.className = 'TB_Button_Off';
- break ;
- case FCK_TOOLBARITEM_ICONTEXT :
- this.className='SC_Field' ;
- break ;
- }
-}
-
-function FCKSpecialCombo_OnClick( e, specialCombo )
-{
- // For Mozilla we must stop the event propagation to avoid it hiding
- // the panel because of a click outside of it.
-// if ( e )
-// {
-// e.stopPropagation() ;
-// FCKPanelEventHandlers.OnDocumentClick( e ) ;
-// }
-
- if ( specialCombo.Enabled )
- {
- var oPanel = specialCombo._Panel ;
- var oPanelBox = specialCombo._PanelBox ;
- var oItemsHolder = specialCombo._ItemsHolderEl ;
- var iMaxHeight = specialCombo.PanelMaxHeight ;
-
- if ( specialCombo.OnBeforeClick )
- specialCombo.OnBeforeClick( specialCombo ) ;
-
- // This is a tricky thing. We must call the "Load" function, otherwise
- // it will not be possible to retrieve "oItemsHolder.offsetHeight" (IE only).
- if ( FCKBrowserInfo.IsIE )
- oPanel.Preload( 0, this.offsetHeight, this ) ;
-
- if ( oItemsHolder.offsetHeight > iMaxHeight )
-// {
- oPanelBox.style.height = iMaxHeight + 'px' ;
-
-// if ( FCKBrowserInfo.IsGecko )
-// oPanelBox.style.overflow = '-moz-scrollbars-vertical' ;
-// }
- else
- oPanelBox.style.height = '' ;
-
-// oPanel.PanelDiv.style.width = specialCombo.PanelWidth + 'px' ;
-
- oPanel.Show( 0, this.offsetHeight, this ) ;
- }
-
-// return false ;
-}
-
-/*
-Sample Combo Field HTML output:
-
-<div class="SC_Field" style="width: 80px;">
- <table width="100%" cellpadding="0" cellspacing="0" style="table-layout: fixed;">
- <tbody>
- <tr>
- <td class="SC_FieldLabel"><label>&nbsp;</label></td>
- <td class="SC_FieldButton">&nbsp;</td>
- </tr>
- </tbody>
- </table>
-</div>
-*/
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckstyle.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckstyle.js
deleted file mode 100644
index 540f70ecd..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckstyle.js
+++ /dev/null
@@ -1,1500 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKStyle Class: contains a style definition, and all methods to work with
- * the style in a document.
- */
-
-/**
- * @param {Object} styleDesc A "style descriptor" object, containing the raw
- * style definition in the following format:
- * '<style name>' : {
- * Element : '<element name>',
- * Attributes : {
- * '<att name>' : '<att value>',
- * ...
- * },
- * Styles : {
- * '<style name>' : '<style value>',
- * ...
- * },
- * Overrides : '<element name>'|{
- * Element : '<element name>',
- * Attributes : {
- * '<att name>' : '<att value>'|/<att regex>/
- * },
- * Styles : {
- * '<style name>' : '<style value>'|/<style regex>/
- * },
- * }
- * }
- */
-var FCKStyle = function( styleDesc )
-{
- this.Element = ( styleDesc.Element || 'span' ).toLowerCase() ;
- this._StyleDesc = styleDesc ;
-}
-
-FCKStyle.prototype =
-{
- /**
- * Get the style type, based on its element name:
- * - FCK_STYLE_BLOCK (0): Block Style
- * - FCK_STYLE_INLINE (1): Inline Style
- * - FCK_STYLE_OBJECT (2): Object Style
- */
- GetType : function()
- {
- var type = this.GetType_$ ;
-
- if ( type != undefined )
- return type ;
-
- var elementName = this.Element ;
-
- if ( elementName == '#' || FCKListsLib.StyleBlockElements[ elementName ] )
- type = FCK_STYLE_BLOCK ;
- else if ( FCKListsLib.StyleObjectElements[ elementName ] )
- type = FCK_STYLE_OBJECT ;
- else
- type = FCK_STYLE_INLINE ;
-
- return ( this.GetType_$ = type ) ;
- },
-
- /**
- * Apply the style to the current selection.
- */
- ApplyToSelection : function( targetWindow )
- {
- // Create a range for the current selection.
- var range = new FCKDomRange( targetWindow ) ;
- range.MoveToSelection() ;
-
- this.ApplyToRange( range, true ) ;
- },
-
- /**
- * Apply the style to a FCKDomRange.
- */
- ApplyToRange : function( range, selectIt, updateRange )
- {
- // ApplyToRange is not valid for FCK_STYLE_OBJECT types.
- // Use ApplyToObject instead.
-
- switch ( this.GetType() )
- {
- case FCK_STYLE_BLOCK :
- this.ApplyToRange = this._ApplyBlockStyle ;
- break ;
- case FCK_STYLE_INLINE :
- this.ApplyToRange = this._ApplyInlineStyle ;
- break ;
- default :
- return ;
- }
-
- this.ApplyToRange( range, selectIt, updateRange ) ;
- },
-
- /**
- * Apply the style to an object. Valid for FCK_STYLE_BLOCK types only.
- */
- ApplyToObject : function( objectElement )
- {
- if ( !objectElement )
- return ;
-
- this.BuildElement( null, objectElement ) ;
- },
-
- /**
- * Remove the style from the current selection.
- */
- RemoveFromSelection : function( targetWindow )
- {
- // Create a range for the current selection.
- var range = new FCKDomRange( targetWindow ) ;
- range.MoveToSelection() ;
-
- this.RemoveFromRange( range, true ) ;
- },
-
- /**
- * Remove the style from a FCKDomRange. Block type styles will have no
- * effect.
- */
- RemoveFromRange : function( range, selectIt, updateRange )
- {
- var bookmark ;
-
- // Create the attribute list to be used later for element comparisons.
- var styleAttribs = this._GetAttribsForComparison() ;
- var styleOverrides = this._GetOverridesForComparison() ;
-
- // If collapsed, we are removing all conflicting styles from the range
- // parent tree.
- if ( range.CheckIsCollapsed() )
- {
- // Bookmark the range so we can re-select it after processing.
- var bookmark = range.CreateBookmark( true ) ;
-
- // Let's start from the bookmark <span> parent.
- var bookmarkStart = range.GetBookmarkNode( bookmark, true ) ;
-
- var path = new FCKElementPath( bookmarkStart.parentNode ) ;
-
- // While looping through the path, we'll be saving references to
- // parent elements if the range is in one of their boundaries. In
- // this way, we are able to create a copy of those elements when
- // removing a style if the range is in a boundary limit (see #1270).
- var boundaryElements = [] ;
-
- // Check if the range is in the boundary limits of an element
- // (related to #1270).
- var isBoundaryRight = !FCKDomTools.GetNextSibling( bookmarkStart ) ;
- var isBoundary = isBoundaryRight || !FCKDomTools.GetPreviousSibling( bookmarkStart ) ;
-
- // This is the last element to be removed in the boundary situation
- // described at #1270.
- var lastBoundaryElement ;
- var boundaryLimitIndex = -1 ;
-
- for ( var i = 0 ; i < path.Elements.length ; i++ )
- {
- var pathElement = path.Elements[i] ;
- if ( this.CheckElementRemovable( pathElement ) )
- {
- if ( isBoundary
- && !FCKDomTools.CheckIsEmptyElement( pathElement,
- function( el )
- {
- return ( el != bookmarkStart ) ;
- } )
- )
- {
- lastBoundaryElement = pathElement ;
-
- // We'll be continuously including elements in the
- // boundaryElements array, but only those added before
- // setting lastBoundaryElement must be used later, so
- // let's mark the current index here.
- boundaryLimitIndex = boundaryElements.length - 1 ;
- }
- else
- {
- var pathElementName = pathElement.nodeName.toLowerCase() ;
-
- if ( pathElementName == this.Element )
- {
- // Remove any attribute that conflict with this style, no
- // matter their values.
- for ( var att in styleAttribs )
- {
- if ( FCKDomTools.HasAttribute( pathElement, att ) )
- {
- switch ( att )
- {
- case 'style' :
- this._RemoveStylesFromElement( pathElement ) ;
- break ;
-
- case 'class' :
- // The 'class' element value must match (#1318).
- if ( FCKDomTools.GetAttributeValue( pathElement, att ) != this.GetFinalAttributeValue( att ) )
- continue ;
-
- /*jsl:fallthru*/
-
- default :
- FCKDomTools.RemoveAttribute( pathElement, att ) ;
- }
- }
- }
- }
-
- // Remove overrides defined to the same element name.
- this._RemoveOverrides( pathElement, styleOverrides[ pathElementName ] ) ;
-
- // Remove the element if no more attributes are available and it's an inline style element
- if ( this.GetType() == FCK_STYLE_INLINE)
- this._RemoveNoAttribElement( pathElement ) ;
- }
- }
- else if ( isBoundary )
- boundaryElements.push( pathElement ) ;
-
- // Check if we are still in a boundary (at the same side).
- isBoundary = isBoundary && ( ( isBoundaryRight && !FCKDomTools.GetNextSibling( pathElement ) ) || ( !isBoundaryRight && !FCKDomTools.GetPreviousSibling( pathElement ) ) ) ;
-
- // If we are in an element that is not anymore a boundary, or
- // we are at the last element, let's move things outside the
- // boundary (if available).
- if ( lastBoundaryElement && ( !isBoundary || ( i == path.Elements.length - 1 ) ) )
- {
- // Remove the bookmark node from the DOM.
- var currentElement = FCKDomTools.RemoveNode( bookmarkStart ) ;
-
- // Build the collapsed group of elements that are not
- // removed by this style, but share the boundary.
- // (see comment 1 and 2 at #1270)
- for ( var j = 0 ; j <= boundaryLimitIndex ; j++ )
- {
- var newElement = FCKDomTools.CloneElement( boundaryElements[j] ) ;
- newElement.appendChild( currentElement ) ;
- currentElement = newElement ;
- }
-
- // Re-insert the bookmark node (and the collapsed elements)
- // in the DOM, in the new position next to the styled element.
- if ( isBoundaryRight )
- FCKDomTools.InsertAfterNode( lastBoundaryElement, currentElement ) ;
- else
- lastBoundaryElement.parentNode.insertBefore( currentElement, lastBoundaryElement ) ;
-
- isBoundary = false ;
- lastBoundaryElement = null ;
- }
- }
-
- // Re-select the original range.
- if ( selectIt )
- range.SelectBookmark( bookmark ) ;
-
- if ( updateRange )
- range.MoveToBookmark( bookmark ) ;
-
- return ;
- }
-
- // Expand the range, if inside inline element boundaries.
- range.Expand( 'inline_elements' ) ;
-
- // Bookmark the range so we can re-select it after processing.
- bookmark = range.CreateBookmark( true ) ;
-
- // The style will be applied within the bookmark boundaries.
- var startNode = range.GetBookmarkNode( bookmark, true ) ;
- var endNode = range.GetBookmarkNode( bookmark, false ) ;
-
- range.Release( true ) ;
-
- // We need to check the selection boundaries (bookmark spans) to break
- // the code in a way that we can properly remove partially selected nodes.
- // For example, removing a <b> style from
- // <b>This is [some text</b> to show <b>the] problem</b>
- // ... where [ and ] represent the selection, must result:
- // <b>This is </b>[some text to show the]<b> problem</b>
- // The strategy is simple, we just break the partial nodes before the
- // removal logic, having something that could be represented this way:
- // <b>This is </b>[<b>some text</b> to show <b>the</b>]<b> problem</b>
-
- // Let's start checking the start boundary.
- var path = new FCKElementPath( startNode ) ;
- var pathElements = path.Elements ;
- var pathElement ;
-
- for ( var i = 1 ; i < pathElements.length ; i++ )
- {
- pathElement = pathElements[i] ;
-
- if ( pathElement == path.Block || pathElement == path.BlockLimit )
- break ;
-
- // If this element can be removed (even partially).
- if ( this.CheckElementRemovable( pathElement ) )
- FCKDomTools.BreakParent( startNode, pathElement, range ) ;
- }
-
- // Now the end boundary.
- path = new FCKElementPath( endNode ) ;
- pathElements = path.Elements ;
-
- for ( var i = 1 ; i < pathElements.length ; i++ )
- {
- pathElement = pathElements[i] ;
-
- if ( pathElement == path.Block || pathElement == path.BlockLimit )
- break ;
-
- elementName = pathElement.nodeName.toLowerCase() ;
-
- // If this element can be removed (even partially).
- if ( this.CheckElementRemovable( pathElement ) )
- FCKDomTools.BreakParent( endNode, pathElement, range ) ;
- }
-
- // Navigate through all nodes between the bookmarks.
- var currentNode = FCKDomTools.GetNextSourceNode( startNode, true ) ;
-
- while ( currentNode )
- {
- // Cache the next node to be processed. Do it now, because
- // currentNode may be removed.
- var nextNode = FCKDomTools.GetNextSourceNode( currentNode ) ;
-
- // Remove elements nodes that match with this style rules.
- if ( currentNode.nodeType == 1 )
- {
- var elementName = currentNode.nodeName.toLowerCase() ;
-
- var mayRemove = ( elementName == this.Element ) ;
- if ( mayRemove )
- {
- // Remove any attribute that conflict with this style, no matter
- // their values.
- for ( var att in styleAttribs )
- {
- if ( FCKDomTools.HasAttribute( currentNode, att ) )
- {
- switch ( att )
- {
- case 'style' :
- this._RemoveStylesFromElement( currentNode ) ;
- break ;
-
- case 'class' :
- // The 'class' element value must match (#1318).
- if ( FCKDomTools.GetAttributeValue( currentNode, att ) != this.GetFinalAttributeValue( att ) )
- continue ;
-
- /*jsl:fallthru*/
-
- default :
- FCKDomTools.RemoveAttribute( currentNode, att ) ;
- }
- }
- }
- }
- else
- mayRemove = !!styleOverrides[ elementName ] ;
-
- if ( mayRemove )
- {
- // Remove overrides defined to the same element name.
- this._RemoveOverrides( currentNode, styleOverrides[ elementName ] ) ;
-
- // Remove the element if no more attributes are available.
- this._RemoveNoAttribElement( currentNode ) ;
- }
- }
-
- // If we have reached the end of the selection, stop looping.
- if ( nextNode == endNode )
- break ;
-
- currentNode = nextNode ;
- }
-
- this._FixBookmarkStart( startNode ) ;
-
- // Re-select the original range.
- if ( selectIt )
- range.SelectBookmark( bookmark ) ;
-
- if ( updateRange )
- range.MoveToBookmark( bookmark ) ;
- },
-
- /**
- * Checks if an element, or any of its attributes, is removable by the
- * current style definition.
- */
- CheckElementRemovable : function( element, fullMatch )
- {
- if ( !element )
- return false ;
-
- var elementName = element.nodeName.toLowerCase() ;
-
- // If the element name is the same as the style name.
- if ( elementName == this.Element )
- {
- // If no attributes are defined in the element.
- if ( !fullMatch && !FCKDomTools.HasAttributes( element ) )
- return true ;
-
- // If any attribute conflicts with the style attributes.
- var attribs = this._GetAttribsForComparison() ;
- var allMatched = ( attribs._length == 0 ) ;
- for ( var att in attribs )
- {
- if ( att == '_length' )
- continue ;
-
- if ( this._CompareAttributeValues( att, FCKDomTools.GetAttributeValue( element, att ), ( this.GetFinalAttributeValue( att ) || '' ) ) )
- {
- allMatched = true ;
- if ( !fullMatch )
- break ;
- }
- else
- {
- allMatched = false ;
- if ( fullMatch )
- return false ;
- }
- }
- if ( allMatched )
- return true ;
- }
-
- // Check if the element can be somehow overriden.
- var override = this._GetOverridesForComparison()[ elementName ] ;
- if ( override )
- {
- // If no attributes have been defined, remove the element.
- if ( !( attribs = override.Attributes ) ) // Only one "="
- return true ;
-
- for ( var i = 0 ; i < attribs.length ; i++ )
- {
- var attName = attribs[i][0] ;
- if ( FCKDomTools.HasAttribute( element, attName ) )
- {
- var attValue = attribs[i][1] ;
-
- // Remove the attribute if:
- // - The override definition value is null ;
- // - The override definition valie is a string that
- // matches the attribute value exactly.
- // - The override definition value is a regex that
- // has matches in the attribute value.
- if ( attValue == null ||
- ( typeof attValue == 'string' && FCKDomTools.GetAttributeValue( element, attName ) == attValue ) ||
- attValue.test( FCKDomTools.GetAttributeValue( element, attName ) ) )
- return true ;
- }
- }
- }
-
- return false ;
- },
-
- /**
- * Get the style state for an element path. Returns "true" if the element
- * is active in the path.
- */
- CheckActive : function( elementPath )
- {
- switch ( this.GetType() )
- {
- case FCK_STYLE_BLOCK :
- return this.CheckElementRemovable( elementPath.Block || elementPath.BlockLimit, true ) ;
-
- case FCK_STYLE_INLINE :
-
- var elements = elementPath.Elements ;
-
- for ( var i = 0 ; i < elements.length ; i++ )
- {
- var element = elements[i] ;
-
- if ( element == elementPath.Block || element == elementPath.BlockLimit )
- continue ;
-
- if ( this.CheckElementRemovable( element, true ) )
- return true ;
- }
- }
- return false ;
- },
-
- /**
- * Removes an inline style from inside an element tree. The element node
- * itself is not checked or removed, only the child tree inside of it.
- */
- RemoveFromElement : function( element )
- {
- var attribs = this._GetAttribsForComparison() ;
- var overrides = this._GetOverridesForComparison() ;
-
- // Get all elements with the same name.
- var innerElements = element.getElementsByTagName( this.Element ) ;
-
- for ( var i = innerElements.length - 1 ; i >= 0 ; i-- )
- {
- var innerElement = innerElements[i] ;
-
- // Remove any attribute that conflict with this style, no matter
- // their values.
- for ( var att in attribs )
- {
- if ( FCKDomTools.HasAttribute( innerElement, att ) )
- {
- switch ( att )
- {
- case 'style' :
- this._RemoveStylesFromElement( innerElement ) ;
- break ;
-
- case 'class' :
- // The 'class' element value must match (#1318).
- if ( FCKDomTools.GetAttributeValue( innerElement, att ) != this.GetFinalAttributeValue( att ) )
- continue ;
-
- /*jsl:fallthru*/
-
- default :
- FCKDomTools.RemoveAttribute( innerElement, att ) ;
- }
- }
- }
-
- // Remove overrides defined to the same element name.
- this._RemoveOverrides( innerElement, overrides[ this.Element ] ) ;
-
- // Remove the element if no more attributes are available.
- this._RemoveNoAttribElement( innerElement ) ;
- }
-
- // Now remove any other element with different name that is
- // defined to be overriden.
- for ( var overrideElement in overrides )
- {
- if ( overrideElement != this.Element )
- {
- // Get all elements.
- innerElements = element.getElementsByTagName( overrideElement ) ;
-
- for ( var i = innerElements.length - 1 ; i >= 0 ; i-- )
- {
- var innerElement = innerElements[i] ;
- this._RemoveOverrides( innerElement, overrides[ overrideElement ] ) ;
- this._RemoveNoAttribElement( innerElement ) ;
- }
- }
- }
- },
-
- _RemoveStylesFromElement : function( element )
- {
- var elementStyle = element.style.cssText ;
- var pattern = this.GetFinalStyleValue() ;
-
- if ( elementStyle.length > 0 && pattern.length == 0 )
- return ;
-
- pattern = '(^|;)\\s*(' +
- pattern.replace( /\s*([^ ]+):.*?(;|$)/g, '$1|' ).replace( /\|$/, '' ) +
- '):[^;]+' ;
-
- var regex = new RegExp( pattern, 'gi' ) ;
-
- elementStyle = elementStyle.replace( regex, '' ).Trim() ;
-
- if ( elementStyle.length == 0 || elementStyle == ';' )
- FCKDomTools.RemoveAttribute( element, 'style' ) ;
- else
- element.style.cssText = elementStyle.replace( regex, '' ) ;
- },
-
- /**
- * Remove all attributes that are defined to be overriden,
- */
- _RemoveOverrides : function( element, override )
- {
- var attributes = override && override.Attributes ;
-
- if ( attributes )
- {
- for ( var i = 0 ; i < attributes.length ; i++ )
- {
- var attName = attributes[i][0] ;
-
- if ( FCKDomTools.HasAttribute( element, attName ) )
- {
- var attValue = attributes[i][1] ;
-
- // Remove the attribute if:
- // - The override definition value is null ;
- // - The override definition valie is a string that
- // matches the attribute value exactly.
- // - The override definition value is a regex that
- // has matches in the attribute value.
- if ( attValue == null ||
- ( attValue.test && attValue.test( FCKDomTools.GetAttributeValue( element, attName ) ) ) ||
- ( typeof attValue == 'string' && FCKDomTools.GetAttributeValue( element, attName ) == attValue ) )
- FCKDomTools.RemoveAttribute( element, attName ) ;
- }
- }
- }
- },
-
- /**
- * If the element has no more attributes, remove it.
- */
- _RemoveNoAttribElement : function( element )
- {
- // If no more attributes remained in the element, remove it,
- // leaving its children.
- if ( !FCKDomTools.HasAttributes( element ) )
- {
- // Removing elements may open points where merging is possible,
- // so let's cache the first and last nodes for later checking.
- var firstChild = element.firstChild ;
- var lastChild = element.lastChild ;
-
- FCKDomTools.RemoveNode( element, true ) ;
-
- // Check the cached nodes for merging.
- this._MergeSiblings( firstChild ) ;
-
- if ( firstChild != lastChild )
- this._MergeSiblings( lastChild ) ;
- }
- },
-
- /**
- * Creates a DOM element for this style object.
- */
- BuildElement : function( targetDoc, element )
- {
- // Create the element.
- var el = element || targetDoc.createElement( this.Element ) ;
-
- // Assign all defined attributes.
- var attribs = this._StyleDesc.Attributes ;
- var attValue ;
- if ( attribs )
- {
- for ( var att in attribs )
- {
- attValue = this.GetFinalAttributeValue( att ) ;
-
- if ( att.toLowerCase() == 'class' )
- el.className = attValue ;
- else
- el.setAttribute( att, attValue ) ;
- }
- }
-
- // Assign the style attribute.
- if ( this._GetStyleText().length > 0 )
- el.style.cssText = this.GetFinalStyleValue() ;
-
- return el ;
- },
-
- _CompareAttributeValues : function( attName, valueA, valueB )
- {
- if ( attName == 'style' && valueA && valueB )
- {
- valueA = valueA.replace( /;$/, '' ).toLowerCase() ;
- valueB = valueB.replace( /;$/, '' ).toLowerCase() ;
- }
-
- // Return true if they match or if valueA is null and valueB is an empty string
- return ( valueA == valueB || ( ( valueA === null || valueA === '' ) && ( valueB === null || valueB === '' ) ) )
- },
-
- GetFinalAttributeValue : function( attName )
- {
- var attValue = this._StyleDesc.Attributes ;
- var attValue = attValue ? attValue[ attName ] : null ;
-
- if ( !attValue && attName == 'style' )
- return this.GetFinalStyleValue() ;
-
- if ( attValue && this._Variables )
- // Using custom Replace() to guarantee the correct scope.
- attValue = attValue.Replace( FCKRegexLib.StyleVariableAttName, this._GetVariableReplace, this ) ;
-
- return attValue ;
- },
-
- GetFinalStyleValue : function()
- {
- var attValue = this._GetStyleText() ;
-
- if ( attValue.length > 0 && this._Variables )
- {
- // Using custom Replace() to guarantee the correct scope.
- attValue = attValue.Replace( FCKRegexLib.StyleVariableAttName, this._GetVariableReplace, this ) ;
- attValue = FCKTools.NormalizeCssText( attValue ) ;
- }
-
- return attValue ;
- },
-
- _GetVariableReplace : function()
- {
- // The second group in the regex is the variable name.
- return this._Variables[ arguments[2] ] || arguments[0] ;
- },
-
- /**
- * Set the value of a variable attribute or style, to be used when
- * appliying the style.
- */
- SetVariable : function( name, value )
- {
- var variables = this._Variables ;
-
- if ( !variables )
- variables = this._Variables = {} ;
-
- this._Variables[ name ] = value ;
- },
-
- /**
- * Converting from a PRE block to a non-PRE block in formatting operations.
- */
- _FromPre : function( doc, block, newBlock )
- {
- var innerHTML = block.innerHTML ;
-
- // Trim the first and last linebreaks immediately after and before <pre>, </pre>,
- // if they exist.
- // This is done because the linebreaks are not rendered.
- innerHTML = innerHTML.replace( /(\r\n|\r)/g, '\n' ) ;
- innerHTML = innerHTML.replace( /^[ \t]*\n/, '' ) ;
- innerHTML = innerHTML.replace( /\n$/, '' ) ;
-
- // 1. Convert spaces or tabs at the beginning or at the end to &nbsp;
- innerHTML = innerHTML.replace( /^[ \t]+|[ \t]+$/g, function( match, offset, s )
- {
- if ( match.length == 1 ) // one space, preserve it
- return '&nbsp;' ;
- else if ( offset == 0 ) // beginning of block
- return new Array( match.length ).join( '&nbsp;' ) + ' ' ;
- else // end of block
- return ' ' + new Array( match.length ).join( '&nbsp;' ) ;
- } ) ;
-
- // 2. Convert \n to <BR>.
- // 3. Convert contiguous (i.e. non-singular) spaces or tabs to &nbsp;
- var htmlIterator = new FCKHtmlIterator( innerHTML ) ;
- var results = [] ;
- htmlIterator.Each( function( isTag, value )
- {
- if ( !isTag )
- {
- value = value.replace( /\n/g, '<br>' ) ;
- value = value.replace( /[ \t]{2,}/g,
- function ( match )
- {
- return new Array( match.length ).join( '&nbsp;' ) + ' ' ;
- } ) ;
- }
- results.push( value ) ;
- } ) ;
- newBlock.innerHTML = results.join( '' ) ;
- return newBlock ;
- },
-
- /**
- * Converting from a non-PRE block to a PRE block in formatting operations.
- */
- _ToPre : function( doc, block, newBlock )
- {
- // Handle converting from a regular block to a <pre> block.
- var innerHTML = block.innerHTML.Trim() ;
-
- // 1. Delete ANSI whitespaces immediately before and after <BR> because
- // they are not visible.
- // 2. Mark down any <BR /> nodes here so they can be turned into \n in
- // the next step and avoid being compressed.
- innerHTML = innerHTML.replace( /[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, '<br />' ) ;
-
- // 3. Compress other ANSI whitespaces since they're only visible as one
- // single space previously.
- // 4. Convert &nbsp; to spaces since &nbsp; is no longer needed in <PRE>.
- // 5. Convert any <BR /> to \n. This must not be done earlier because
- // the \n would then get compressed.
- var htmlIterator = new FCKHtmlIterator( innerHTML ) ;
- var results = [] ;
- htmlIterator.Each( function( isTag, value )
- {
- if ( !isTag )
- value = value.replace( /([ \t\n\r]+|&nbsp;)/g, ' ' ) ;
- else if ( isTag && value == '<br />' )
- value = '\n' ;
- results.push( value ) ;
- } ) ;
-
- // Assigning innerHTML to <PRE> in IE causes all linebreaks to be
- // reduced to spaces.
- // Assigning outerHTML to <PRE> in IE doesn't work if the <PRE> isn't
- // contained in another node since the node reference is changed after
- // outerHTML assignment.
- // So, we need some hacks to workaround IE bugs here.
- if ( FCKBrowserInfo.IsIE )
- {
- var temp = doc.createElement( 'div' ) ;
- temp.appendChild( newBlock ) ;
- newBlock.outerHTML = '<pre>\n' + results.join( '' ) + '</pre>' ;
- newBlock = temp.removeChild( temp.firstChild ) ;
- }
- else
- newBlock.innerHTML = results.join( '' ) ;
-
- return newBlock ;
- },
-
- /**
- * Merge a <pre> block with a previous <pre> block, if available.
- */
- _CheckAndMergePre : function( previousBlock, preBlock )
- {
- // Check if the previous block and the current block are next
- // to each other.
- if ( previousBlock != FCKDomTools.GetPreviousSourceElement( preBlock, true ) )
- return ;
-
- // Merge the previous <pre> block contents into the current <pre>
- // block.
- //
- // Another thing to be careful here is that currentBlock might contain
- // a '\n' at the beginning, and previousBlock might contain a '\n'
- // towards the end. These new lines are not normally displayed but they
- // become visible after merging.
- var innerHTML = previousBlock.innerHTML.replace( /\n$/, '' ) + '\n\n' +
- preBlock.innerHTML.replace( /^\n/, '' ) ;
-
- // Buggy IE normalizes innerHTML from <pre>, breaking whitespaces.
- if ( FCKBrowserInfo.IsIE )
- preBlock.outerHTML = '<pre>' + innerHTML + '</pre>' ;
- else
- preBlock.innerHTML = innerHTML ;
-
- // Remove the previous <pre> block.
- //
- // The preBlock must not be moved or deleted from the DOM tree. This
- // guarantees the FCKDomRangeIterator in _ApplyBlockStyle would not
- // get lost at the next iteration.
- FCKDomTools.RemoveNode( previousBlock ) ;
- },
-
- _CheckAndSplitPre : function( newBlock )
- {
- var lastNewBlock ;
-
- var cursor = newBlock.firstChild ;
-
- // We are not splitting <br><br> at the beginning of the block, so
- // we'll start from the second child.
- cursor = cursor && cursor.nextSibling ;
-
- while ( cursor )
- {
- var next = cursor.nextSibling ;
-
- // If we have two <BR>s, and they're not at the beginning or the end,
- // then we'll split up the contents following them into another block.
- // Stop processing if we are at the last child couple.
- if ( next && next.nextSibling && cursor.nodeName.IEquals( 'br' ) && next.nodeName.IEquals( 'br' ) )
- {
- // Remove the first <br>.
- FCKDomTools.RemoveNode( cursor ) ;
-
- // Move to the node after the second <br>.
- cursor = next.nextSibling ;
-
- // Remove the second <br>.
- FCKDomTools.RemoveNode( next ) ;
-
- // Create the block that will hold the child nodes from now on.
- lastNewBlock = FCKDomTools.InsertAfterNode( lastNewBlock || newBlock, FCKDomTools.CloneElement( newBlock ) ) ;
-
- continue ;
- }
-
- // If we split it, then start moving the nodes to the new block.
- if ( lastNewBlock )
- {
- cursor = cursor.previousSibling ;
- FCKDomTools.MoveNode(cursor.nextSibling, lastNewBlock ) ;
- }
-
- cursor = cursor.nextSibling ;
- }
- },
-
- /**
- * Apply an inline style to a FCKDomRange.
- *
- * TODO
- * - Implement the "#" style handling.
- * - Properly handle block containers like <div> and <blockquote>.
- */
- _ApplyBlockStyle : function( range, selectIt, updateRange )
- {
- // Bookmark the range so we can re-select it after processing.
- var bookmark ;
-
- if ( selectIt )
- bookmark = range.CreateBookmark() ;
-
- var iterator = new FCKDomRangeIterator( range ) ;
- iterator.EnforceRealBlocks = true ;
-
- var block ;
- var doc = range.Window.document ;
- var previousPreBlock ;
-
- while( ( block = iterator.GetNextParagraph() ) ) // Only one =
- {
- // Create the new node right before the current one.
- var newBlock = this.BuildElement( doc ) ;
-
- // Check if we are changing from/to <pre>.
- var newBlockIsPre = newBlock.nodeName.IEquals( 'pre' ) ;
- var blockIsPre = block.nodeName.IEquals( 'pre' ) ;
-
- var toPre = newBlockIsPre && !blockIsPre ;
- var fromPre = !newBlockIsPre && blockIsPre ;
-
- // Move everything from the current node to the new one.
- if ( toPre )
- newBlock = this._ToPre( doc, block, newBlock ) ;
- else if ( fromPre )
- newBlock = this._FromPre( doc, block, newBlock ) ;
- else // Convering from a regular block to another regular block.
- FCKDomTools.MoveChildren( block, newBlock ) ;
-
- // Replace the current block.
- block.parentNode.insertBefore( newBlock, block ) ;
- FCKDomTools.RemoveNode( block ) ;
-
- // Complete other tasks after inserting the node in the DOM.
- if ( newBlockIsPre )
- {
- if ( previousPreBlock )
- this._CheckAndMergePre( previousPreBlock, newBlock ) ; // Merge successive <pre> blocks.
- previousPreBlock = newBlock ;
- }
- else if ( fromPre )
- this._CheckAndSplitPre( newBlock ) ; // Split <br><br> in successive <pre>s.
- }
-
- // Re-select the original range.
- if ( selectIt )
- range.SelectBookmark( bookmark ) ;
-
- if ( updateRange )
- range.MoveToBookmark( bookmark ) ;
- },
-
- /**
- * Apply an inline style to a FCKDomRange.
- *
- * TODO
- * - Merge elements, when applying styles to similar elements that enclose
- * the entire selection, outputing:
- * <span style="color: #ff0000; background-color: #ffffff">XYZ</span>
- * instead of:
- * <span style="color: #ff0000;"><span style="background-color: #ffffff">XYZ</span></span>
- */
- _ApplyInlineStyle : function( range, selectIt, updateRange )
- {
- var doc = range.Window.document ;
-
- if ( range.CheckIsCollapsed() )
- {
- // Create the element to be inserted in the DOM.
- var collapsedElement = this.BuildElement( doc ) ;
- range.InsertNode( collapsedElement ) ;
- range.MoveToPosition( collapsedElement, 2 ) ;
- range.Select() ;
-
- return ;
- }
-
- // The general idea here is navigating through all nodes inside the
- // current selection, working on distinct range blocks, defined by the
- // DTD compatibility between the style element and the nodes inside the
- // ranges.
- //
- // For example, suppose we have the following selection (where [ and ]
- // are the boundaries), and we apply a <b> style there:
- //
- // <p>Here we [have <b>some</b> text.<p>
- // <p>And some here] here.</p>
- //
- // Two different ranges will be detected:
- //
- // "have <b>some</b> text."
- // "And some here"
- //
- // Both ranges will be extracted, moved to a <b> element, and
- // re-inserted, resulting in the following output:
- //
- // <p>Here we [<b>have some text.</b><p>
- // <p><b>And some here</b>] here.</p>
- //
- // Note that the <b> element at <b>some</b> is also removed because it
- // is not needed anymore.
-
- var elementName = this.Element ;
-
- // Get the DTD definition for the element. Defaults to "span".
- var elementDTD = FCK.DTD[ elementName ] || FCK.DTD.span ;
-
- // Create the attribute list to be used later for element comparisons.
- var styleAttribs = this._GetAttribsForComparison() ;
- var styleNode ;
-
- // Expand the range, if inside inline element boundaries.
- range.Expand( 'inline_elements' ) ;
-
- // Bookmark the range so we can re-select it after processing.
- var bookmark = range.CreateBookmark( true ) ;
-
- // The style will be applied within the bookmark boundaries.
- var startNode = range.GetBookmarkNode( bookmark, true ) ;
- var endNode = range.GetBookmarkNode( bookmark, false ) ;
-
- // We'll be reusing the range to apply the styles. So, release it here
- // to indicate that it has not been initialized.
- range.Release( true ) ;
-
- // Let's start the nodes lookup from the node right after the bookmark
- // span.
- var currentNode = FCKDomTools.GetNextSourceNode( startNode, true ) ;
-
- while ( currentNode )
- {
- var applyStyle = false ;
-
- var nodeType = currentNode.nodeType ;
- var nodeName = nodeType == 1 ? currentNode.nodeName.toLowerCase() : null ;
-
- // Check if the current node can be a child of the style element.
- if ( !nodeName || elementDTD[ nodeName ] )
- {
- // Check if the style element can be a child of the current
- // node parent or if the element is not defined in the DTD.
- if ( ( FCK.DTD[ currentNode.parentNode.nodeName.toLowerCase() ] || FCK.DTD.span )[ elementName ] || !FCK.DTD[ elementName ] )
- {
- // This node will be part of our range, so if it has not
- // been started, place its start right before the node.
- if ( !range.CheckHasRange() )
- range.SetStart( currentNode, 3 ) ;
-
- // Non element nodes, or empty elements can be added
- // completely to the range.
- if ( nodeType != 1 || currentNode.childNodes.length == 0 )
- {
- var includedNode = currentNode ;
- var parentNode = includedNode.parentNode ;
-
- // This node is about to be included completelly, but,
- // if this is the last node in its parent, we must also
- // check if the parent itself can be added completelly
- // to the range.
- while ( includedNode == parentNode.lastChild
- && elementDTD[ parentNode.nodeName.toLowerCase() ] )
- {
- includedNode = parentNode ;
- }
-
- range.SetEnd( includedNode, 4 ) ;
-
- // If the included node is the last node in its parent
- // and its parent can't be inside the style node, apply
- // the style immediately.
- if ( includedNode == includedNode.parentNode.lastChild && !elementDTD[ includedNode.parentNode.nodeName.toLowerCase() ] )
- applyStyle = true ;
- }
- else
- {
- // Element nodes will not be added directly. We need to
- // check their children because the selection could end
- // inside the node, so let's place the range end right
- // before the element.
- range.SetEnd( currentNode, 3 ) ;
- }
- }
- else
- applyStyle = true ;
- }
- else
- applyStyle = true ;
-
- // Get the next node to be processed.
- currentNode = FCKDomTools.GetNextSourceNode( currentNode ) ;
-
- // If we have reached the end of the selection, just apply the
- // style ot the range, and stop looping.
- if ( currentNode == endNode )
- {
- currentNode = null ;
- applyStyle = true ;
- }
-
- // Apply the style if we have something to which apply it.
- if ( applyStyle && range.CheckHasRange() && !range.CheckIsCollapsed() )
- {
- // Build the style element, based on the style object definition.
- styleNode = this.BuildElement( doc ) ;
-
- // Move the contents of the range to the style element.
- range.ExtractContents().AppendTo( styleNode ) ;
-
- // If it is not empty.
- if ( styleNode.innerHTML.RTrim().length > 0 )
- {
- // Insert it in the range position (it is collapsed after
- // ExtractContents.
- range.InsertNode( styleNode ) ;
-
- // Here we do some cleanup, removing all duplicated
- // elements from the style element.
- this.RemoveFromElement( styleNode ) ;
-
- // Let's merge our new style with its neighbors, if possible.
- this._MergeSiblings( styleNode, this._GetAttribsForComparison() ) ;
-
- // As the style system breaks text nodes constantly, let's normalize
- // things for performance.
- // With IE, some paragraphs get broken when calling normalize()
- // repeatedly. Also, for IE, we must normalize body, not documentElement.
- // IE is also known for having a "crash effect" with normalize().
- // We should try to normalize with IE too in some way, somewhere.
- if ( !FCKBrowserInfo.IsIE )
- styleNode.normalize() ;
- }
-
- // Style applied, let's release the range, so it gets marked to
- // re-initialization in the next loop.
- range.Release( true ) ;
- }
- }
-
- this._FixBookmarkStart( startNode ) ;
-
- // Re-select the original range.
- if ( selectIt )
- range.SelectBookmark( bookmark ) ;
-
- if ( updateRange )
- range.MoveToBookmark( bookmark ) ;
- },
-
- _FixBookmarkStart : function( startNode )
- {
- // After appliying or removing an inline style, the start boundary of
- // the selection must be placed inside all inline elements it is
- // bordering.
- var startSibling ;
- while ( ( startSibling = startNode.nextSibling ) ) // Only one "=".
- {
- if ( startSibling.nodeType == 1
- && FCKListsLib.InlineNonEmptyElements[ startSibling.nodeName.toLowerCase() ] )
- {
- // If it is an empty inline element, we can safely remove it.
- if ( !startSibling.firstChild )
- FCKDomTools.RemoveNode( startSibling ) ;
- else
- FCKDomTools.MoveNode( startNode, startSibling, true ) ;
- continue ;
- }
-
- // Empty text nodes can be safely removed to not disturb.
- if ( startSibling.nodeType == 3 && startSibling.length == 0 )
- {
- FCKDomTools.RemoveNode( startSibling ) ;
- continue ;
- }
-
- break ;
- }
- },
-
- /**
- * Merge an element with its similar siblings.
- * "attribs" is and object computed with _CreateAttribsForComparison.
- */
- _MergeSiblings : function( element, attribs )
- {
- if ( !element || element.nodeType != 1 || !FCKListsLib.InlineNonEmptyElements[ element.nodeName.toLowerCase() ] )
- return ;
-
- this._MergeNextSibling( element, attribs ) ;
- this._MergePreviousSibling( element, attribs ) ;
- },
-
- /**
- * Merge an element with its similar siblings after it.
- * "attribs" is and object computed with _CreateAttribsForComparison.
- */
- _MergeNextSibling : function( element, attribs )
- {
- // Check the next sibling.
- var sibling = element.nextSibling ;
-
- // Check if the next sibling is a bookmark element. In this case, jump it.
- var hasBookmark = ( sibling && sibling.nodeType == 1 && sibling.getAttribute( '_fck_bookmark' ) ) ;
- if ( hasBookmark )
- sibling = sibling.nextSibling ;
-
- if ( sibling && sibling.nodeType == 1 && sibling.nodeName == element.nodeName )
- {
- if ( !attribs )
- attribs = this._CreateElementAttribsForComparison( element ) ;
-
- if ( this._CheckAttributesMatch( sibling, attribs ) )
- {
- // Save the last child to be checked too (to merge things like <b><i></i></b><b><i></i></b>).
- var innerSibling = element.lastChild ;
-
- if ( hasBookmark )
- FCKDomTools.MoveNode( element.nextSibling, element ) ;
-
- // Move contents from the sibling.
- FCKDomTools.MoveChildren( sibling, element ) ;
- FCKDomTools.RemoveNode( sibling ) ;
-
- // Now check the last inner child (see two comments above).
- if ( innerSibling )
- this._MergeNextSibling( innerSibling ) ;
- }
- }
- },
-
- /**
- * Merge an element with its similar siblings before it.
- * "attribs" is and object computed with _CreateAttribsForComparison.
- */
- _MergePreviousSibling : function( element, attribs )
- {
- // Check the previous sibling.
- var sibling = element.previousSibling ;
-
- // Check if the previous sibling is a bookmark element. In this case, jump it.
- var hasBookmark = ( sibling && sibling.nodeType == 1 && sibling.getAttribute( '_fck_bookmark' ) ) ;
- if ( hasBookmark )
- sibling = sibling.previousSibling ;
-
- if ( sibling && sibling.nodeType == 1 && sibling.nodeName == element.nodeName )
- {
- if ( !attribs )
- attribs = this._CreateElementAttribsForComparison( element ) ;
-
- if ( this._CheckAttributesMatch( sibling, attribs ) )
- {
- // Save the first child to be checked too (to merge things like <b><i></i></b><b><i></i></b>).
- var innerSibling = element.firstChild ;
-
- if ( hasBookmark )
- FCKDomTools.MoveNode( element.previousSibling, element, true ) ;
-
- // Move contents to the sibling.
- FCKDomTools.MoveChildren( sibling, element, true ) ;
- FCKDomTools.RemoveNode( sibling ) ;
-
- // Now check the first inner child (see two comments above).
- if ( innerSibling )
- this._MergePreviousSibling( innerSibling ) ;
- }
- }
- },
-
- /**
- * Build the cssText based on the styles definition.
- */
- _GetStyleText : function()
- {
- var stylesDef = this._StyleDesc.Styles ;
-
- // Builds the StyleText.
- var stylesText = ( this._StyleDesc.Attributes ? this._StyleDesc.Attributes['style'] || '' : '' ) ;
-
- if ( stylesText.length > 0 )
- stylesText += ';' ;
-
- for ( var style in stylesDef )
- stylesText += style + ':' + stylesDef[style] + ';' ;
-
- // Browsers make some changes to the style when applying them. So, here
- // we normalize it to the browser format. We'll not do that if there
- // are variables inside the style.
- if ( stylesText.length > 0 && !( /#\(/.test( stylesText ) ) )
- {
- stylesText = FCKTools.NormalizeCssText( stylesText ) ;
- }
-
- return (this._GetStyleText = function() { return stylesText ; })() ;
- },
-
- /**
- * Get the the collection used to compare the attributes defined in this
- * style with attributes in an element. All information in it is lowercased.
- */
- _GetAttribsForComparison : function()
- {
- // If we have already computed it, just return it.
- var attribs = this._GetAttribsForComparison_$ ;
- if ( attribs )
- return attribs ;
-
- attribs = new Object() ;
-
- // Loop through all defined attributes.
- var styleAttribs = this._StyleDesc.Attributes ;
- if ( styleAttribs )
- {
- for ( var styleAtt in styleAttribs )
- {
- attribs[ styleAtt.toLowerCase() ] = styleAttribs[ styleAtt ].toLowerCase() ;
- }
- }
-
- // Includes the style definitions.
- if ( this._GetStyleText().length > 0 )
- {
- attribs['style'] = this._GetStyleText().toLowerCase() ;
- }
-
- // Appends the "length" information to the object.
- FCKTools.AppendLengthProperty( attribs, '_length' ) ;
-
- // Return it, saving it to the next request.
- return ( this._GetAttribsForComparison_$ = attribs ) ;
- },
-
- /**
- * Get the the collection used to compare the elements and attributes,
- * defined in this style overrides, with other element. All information in
- * it is lowercased.
- */
- _GetOverridesForComparison : function()
- {
- // If we have already computed it, just return it.
- var overrides = this._GetOverridesForComparison_$ ;
- if ( overrides )
- return overrides ;
-
- overrides = new Object() ;
-
- var overridesDesc = this._StyleDesc.Overrides ;
-
- if ( overridesDesc )
- {
- // The override description can be a string, object or array.
- // Internally, well handle arrays only, so transform it if needed.
- if ( !FCKTools.IsArray( overridesDesc ) )
- overridesDesc = [ overridesDesc ] ;
-
- // Loop through all override definitions.
- for ( var i = 0 ; i < overridesDesc.length ; i++ )
- {
- var override = overridesDesc[i] ;
- var elementName ;
- var overrideEl ;
- var attrs ;
-
- // If can be a string with the element name.
- if ( typeof override == 'string' )
- elementName = override.toLowerCase() ;
- // Or an object.
- else
- {
- elementName = override.Element ? override.Element.toLowerCase() : this.Element ;
- attrs = override.Attributes ;
- }
-
- // We can have more than one override definition for the same
- // element name, so we attempt to simply append information to
- // it if it already exists.
- overrideEl = overrides[ elementName ] || ( overrides[ elementName ] = {} ) ;
-
- if ( attrs )
- {
- // The returning attributes list is an array, because we
- // could have different override definitions for the same
- // attribute name.
- var overrideAttrs = ( overrideEl.Attributes = overrideEl.Attributes || new Array() ) ;
- for ( var attName in attrs )
- {
- // Each item in the attributes array is also an array,
- // where [0] is the attribute name and [1] is the
- // override value.
- overrideAttrs.push( [ attName.toLowerCase(), attrs[ attName ] ] ) ;
- }
- }
- }
- }
-
- return ( this._GetOverridesForComparison_$ = overrides ) ;
- },
-
- /*
- * Create and object containing all attributes specified in an element,
- * added by a "_length" property. All values are lowercased.
- */
- _CreateElementAttribsForComparison : function( element )
- {
- var attribs = new Object() ;
- var attribsCount = 0 ;
-
- for ( var i = 0 ; i < element.attributes.length ; i++ )
- {
- var att = element.attributes[i] ;
-
- if ( att.specified )
- {
- attribs[ att.nodeName.toLowerCase() ] = FCKDomTools.GetAttributeValue( element, att ).toLowerCase() ;
- attribsCount++ ;
- }
- }
-
- attribs._length = attribsCount ;
-
- return attribs ;
- },
-
- /**
- * Checks is the element attributes have a perfect match with the style
- * attributes.
- */
- _CheckAttributesMatch : function( element, styleAttribs )
- {
- // Loop through all specified attributes. The same number of
- // attributes must be found and their values must match to
- // declare them as equal.
-
- var elementAttrbs = element.attributes ;
- var matchCount = 0 ;
-
- for ( var i = 0 ; i < elementAttrbs.length ; i++ )
- {
- var att = elementAttrbs[i] ;
- if ( att.specified )
- {
- var attName = att.nodeName.toLowerCase() ;
- var styleAtt = styleAttribs[ attName ] ;
-
- // The attribute is not defined in the style.
- if ( !styleAtt )
- break ;
-
- // The values are different.
- if ( styleAtt != FCKDomTools.GetAttributeValue( element, att ).toLowerCase() )
- break ;
-
- matchCount++ ;
- }
- }
-
- return ( matchCount == styleAttribs._length ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbar.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbar.js
deleted file mode 100644
index 73114a16f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbar.js
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbar Class: represents a toolbar in the toolbarset. It is a group of
- * toolbar items.
- */
-
-var FCKToolbar = function()
-{
- this.Items = new Array() ;
-}
-
-FCKToolbar.prototype.AddItem = function( item )
-{
- return this.Items[ this.Items.length ] = item ;
-}
-
-FCKToolbar.prototype.AddButton = function( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state )
-{
- if ( typeof( iconPathOrStripInfoArrayOrIndex ) == 'number' )
- iconPathOrStripInfoArrayOrIndex = [ this.DefaultIconsStrip, this.DefaultIconSize, iconPathOrStripInfoArrayOrIndex ] ;
-
- var oButton = new FCKToolbarButtonUI( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state ) ;
- oButton._FCKToolbar = this ;
- oButton.OnClick = FCKToolbar_OnItemClick ;
-
- return this.AddItem( oButton ) ;
-}
-
-function FCKToolbar_OnItemClick( item )
-{
- var oToolbar = item._FCKToolbar ;
-
- if ( oToolbar.OnItemClick )
- oToolbar.OnItemClick( oToolbar, item ) ;
-}
-
-FCKToolbar.prototype.AddSeparator = function()
-{
- this.AddItem( new FCKToolbarSeparator() ) ;
-}
-
-FCKToolbar.prototype.Create = function( parentElement )
-{
- var oDoc = FCKTools.GetElementDocument( parentElement ) ;
-
- var e = oDoc.createElement( 'table' ) ;
- e.className = 'TB_Toolbar' ;
- e.style.styleFloat = e.style.cssFloat = ( FCKLang.Dir == 'ltr' ? 'left' : 'right' ) ;
- e.dir = FCKLang.Dir ;
- e.cellPadding = 0 ;
- e.cellSpacing = 0 ;
-
- var targetRow = e.insertRow(-1) ;
-
- // Insert the start cell.
- var eCell ;
-
- if ( !this.HideStart )
- {
- eCell = targetRow.insertCell(-1) ;
- eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_Start' ;
- }
-
- for ( var i = 0 ; i < this.Items.length ; i++ )
- {
- this.Items[i].Create( targetRow.insertCell(-1) ) ;
- }
-
- // Insert the ending cell.
- if ( !this.HideEnd )
- {
- eCell = targetRow.insertCell(-1) ;
- eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_End' ;
- }
-
- parentElement.appendChild( e ) ;
-}
-
-var FCKToolbarSeparator = function()
-{}
-
-FCKToolbarSeparator.prototype.Create = function( parentElement )
-{
- FCKTools.AppendElement( parentElement, 'div' ).className = 'TB_Separator' ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js
deleted file mode 100644
index f738455c1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarBreak Class: breaks the toolbars.
- * It makes it possible to force the toolbar to break to a new line.
- * This is the Gecko specific implementation.
- */
-
-var FCKToolbarBreak = function()
-{}
-
-FCKToolbarBreak.prototype.Create = function( targetElement )
-{
- var oBreakDiv = targetElement.ownerDocument.createElement( 'div' ) ;
-
- oBreakDiv.style.clear = oBreakDiv.style.cssFloat = FCKLang.Dir == 'rtl' ? 'right' : 'left' ;
-
- targetElement.appendChild( oBreakDiv ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js
deleted file mode 100644
index 787bbbf80..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarBreak Class: breaks the toolbars.
- * It makes it possible to force the toolbar to break to a new line.
- * This is the IE specific implementation.
- */
-
-var FCKToolbarBreak = function()
-{}
-
-FCKToolbarBreak.prototype.Create = function( targetElement )
-{
- var oBreakDiv = FCKTools.GetElementDocument( targetElement ).createElement( 'div' ) ;
-
- oBreakDiv.className = 'TB_Break' ;
-
- oBreakDiv.style.clear = FCKLang.Dir == 'rtl' ? 'left' : 'right' ;
-
- targetElement.appendChild( oBreakDiv ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbutton.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbutton.js
deleted file mode 100644
index 6e7de6026..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbutton.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarButton Class: represents a button in the toolbar.
- */
-
-var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive, icon )
-{
- this.CommandName = commandName ;
- this.Label = label ;
- this.Tooltip = tooltip ;
- this.Style = style ;
- this.SourceView = sourceView ? true : false ;
- this.ContextSensitive = contextSensitive ? true : false ;
-
- if ( icon == null )
- this.IconPath = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
- else if ( typeof( icon ) == 'number' )
- this.IconPath = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
- else
- this.IconPath = icon ;
-}
-
-FCKToolbarButton.prototype.Create = function( targetElement )
-{
- this._UIButton = new FCKToolbarButtonUI( this.CommandName, this.Label, this.Tooltip, this.IconPath, this.Style ) ;
- this._UIButton.OnClick = this.Click ;
- this._UIButton._ToolbarButton = this ;
- this._UIButton.Create( targetElement ) ;
-}
-
-FCKToolbarButton.prototype.RefreshState = function()
-{
- var uiButton = this._UIButton ;
-
- if ( !uiButton )
- return ;
-
- // Gets the actual state.
- var eState = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
-
- // If there are no state changes than do nothing and return.
- if ( eState == uiButton.State ) return ;
-
- // Sets the actual state.
- uiButton.ChangeState( eState ) ;
-}
-
-FCKToolbarButton.prototype.Click = function()
-{
- var oToolbarButton = this._ToolbarButton || this ;
- FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oToolbarButton.CommandName ).Execute() ;
-}
-
-FCKToolbarButton.prototype.Enable = function()
-{
- this.RefreshState() ;
-}
-
-FCKToolbarButton.prototype.Disable = function()
-{
- // Sets the actual state.
- this._UIButton.ChangeState( FCK_TRISTATE_DISABLED ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js
deleted file mode 100644
index 08598a1df..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarButtonUI Class: interface representation of a toolbar button.
- */
-
-var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )
-{
- this.Name = name ;
- this.Label = label || name ;
- this.Tooltip = tooltip || this.Label ;
- this.Style = style || FCK_TOOLBARITEM_ONLYICON ;
- this.State = state || FCK_TRISTATE_OFF ;
-
- this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;
-}
-
-
-FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )
-{
- var oImg = document.createElement( 'IMG' ) ;
- oImg.className = 'TB_Button_Padding' ;
- oImg.src = FCK_SPACER_PATH ;
- return oImg ;
-}
-
-FCKToolbarButtonUI.prototype.Create = function( parentElement )
-{
- var oDoc = FCKTools.GetElementDocument( parentElement ) ;
-
- // Create the Main Element.
- var oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;
- oMainElement.title = this.Tooltip ;
-
- // The following will prevent the button from catching the focus.
- if ( FCKBrowserInfo.IsGecko )
- oMainElement.onmousedown = FCKTools.CancelEvent ;
-
- FCKTools.AddEventListenerEx( oMainElement, 'mouseover', FCKToolbarButtonUI_OnMouseOver, this ) ;
- FCKTools.AddEventListenerEx( oMainElement, 'mouseout', FCKToolbarButtonUI_OnMouseOut, this ) ;
- FCKTools.AddEventListenerEx( oMainElement, 'click', FCKToolbarButtonUI_OnClick, this ) ;
-
- this.ChangeState( this.State, true ) ;
-
- if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )
- {
- // <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
-
- oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
- }
- else
- {
- // <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
- // <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
-
- var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
- oTable.cellPadding = 0 ;
- oTable.cellSpacing = 0 ;
-
- var oRow = oTable.insertRow(-1) ;
-
- // The Image cell (icon or padding).
- var oCell = oRow.insertCell(-1) ;
-
- if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )
- oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
- else
- oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
-
- if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )
- {
- // The Text cell.
- oCell = oRow.insertCell(-1) ;
- oCell.className = 'TB_Button_Text' ;
- oCell.noWrap = true ;
- oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
- }
-
- if ( this.ShowArrow )
- {
- if ( this.Style != FCK_TOOLBARITEM_ONLYICON )
- {
- // A padding cell.
- oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;
- }
-
- oCell = oRow.insertCell(-1) ;
- var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
- eImg.src = FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;
- eImg.width = 5 ;
- eImg.height = 3 ;
- }
-
- // The last padding cell.
- oCell = oRow.insertCell(-1) ;
- oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
- }
-
- parentElement.appendChild( oMainElement ) ;
-}
-
-FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )
-{
- if ( !force && this.State == newState )
- return ;
-
- var e = this.MainElement ;
-
- // In IE it can happen when the page is reloaded that MainElement is null, so exit here
- if ( !e )
- return ;
-
- switch ( parseInt( newState, 10 ) )
- {
- case FCK_TRISTATE_OFF :
- e.className = 'TB_Button_Off' ;
- break ;
-
- case FCK_TRISTATE_ON :
- e.className = 'TB_Button_On' ;
- break ;
-
- case FCK_TRISTATE_DISABLED :
- e.className = 'TB_Button_Disabled' ;
- break ;
- }
-
- this.State = newState ;
-}
-
-function FCKToolbarButtonUI_OnMouseOver( ev, button )
-{
- if ( button.State == FCK_TRISTATE_OFF )
- this.className = 'TB_Button_Off_Over' ;
- else if ( button.State == FCK_TRISTATE_ON )
- this.className = 'TB_Button_On_Over' ;
-}
-
-function FCKToolbarButtonUI_OnMouseOut( ev, button )
-{
- if ( button.State == FCK_TRISTATE_OFF )
- this.className = 'TB_Button_Off' ;
- else if ( button.State == FCK_TRISTATE_ON )
- this.className = 'TB_Button_On' ;
-}
-
-function FCKToolbarButtonUI_OnClick( ev, button )
-{
- if ( button.OnClick && button.State != FCK_TRISTATE_DISABLED )
- button.OnClick( button ) ;
-}
-
-function FCKToolbarButtonUI_Cleanup()
-{
- // This one should not cause memory leak, but just for safety, let's clean
- // it up.
- this.MainElement = null ;
-}
-
-/*
- Sample outputs:
-
- This is the base structure. The variation is the image that is marked as {Image}:
- <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
- <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
- <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
-
- These are samples of possible {Image} values:
-
- Strip - IE version:
- <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
-
- Strip : Firefox, Safari and Opera version
- <img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">
-
- No-Strip : Browser independent:
- <img class="TB_Button_Image" src="smiley.gif">
-*/
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js
deleted file mode 100644
index 6c8b7de1c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarFontFormatCombo = function( tooltip, style )
-{
- if ( tooltip === false )
- return ;
-
- this.CommandName = 'FontFormat' ;
- this.Label = this.GetLabel() ;
- this.Tooltip = tooltip ? tooltip : this.Label ;
- this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
- this.NormalLabel = 'Normal' ;
-
- this.PanelWidth = 190 ;
-
- this.DefaultLabel = FCKConfig.DefaultFontFormatLabel || '' ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarFontFormatCombo.prototype = new FCKToolbarStyleCombo( false ) ;
-
-FCKToolbarFontFormatCombo.prototype.GetLabel = function()
-{
- return FCKLang.FontFormat ;
-}
-
-FCKToolbarFontFormatCombo.prototype.GetStyles = function()
-{
- var styles = {} ;
-
- // Get the format names from the language file.
- var aNames = FCKLang['FontFormats'].split(';') ;
- var oNames = {
- p : aNames[0],
- pre : aNames[1],
- address : aNames[2],
- h1 : aNames[3],
- h2 : aNames[4],
- h3 : aNames[5],
- h4 : aNames[6],
- h5 : aNames[7],
- h6 : aNames[8],
- div : aNames[9] || ( aNames[0] + ' (DIV)')
- } ;
-
- // Get the available formats from the configuration file.
- var elements = FCKConfig.FontFormats.split(';') ;
-
- for ( var i = 0 ; i < elements.length ; i++ )
- {
- var elementName = elements[ i ] ;
- var style = FCKStyles.GetStyle( '_FCK_' + elementName ) ;
- if ( style )
- {
- style.Label = oNames[ elementName ] ;
- styles[ '_FCK_' + elementName ] = style ;
- }
- else
- alert( "The FCKConfig.CoreStyles['" + elementName + "'] setting was not found. Please check the fckconfig.js file" ) ;
- }
-
- return styles ;
-}
-
-FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
-{
- var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
-
- if ( startElement )
- {
- var path = new FCKElementPath( startElement ) ;
- var blockElement = path.Block ;
-
- if ( blockElement )
- {
- for ( var i in targetSpecialCombo.Items )
- {
- var item = targetSpecialCombo.Items[i] ;
- var style = item.Style ;
-
- if ( style.CheckElementRemovable( blockElement ) )
- {
- targetSpecialCombo.SetLabel( style.Label ) ;
- return ;
- }
- }
- }
- }
-
- targetSpecialCombo.SetLabel( this.DefaultLabel ) ;
-}
-
-FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
-{
- // Clear the current selection.
- targetSpecialCombo.DeselectAll() ;
-
- var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
-
- if ( startElement )
- {
- var path = new FCKElementPath( startElement ) ;
- var blockElement = path.Block ;
-
- for ( var i in targetSpecialCombo.Items )
- {
- var item = targetSpecialCombo.Items[i] ;
- var style = item.Style ;
-
- if ( style.CheckElementRemovable( blockElement ) )
- {
- targetSpecialCombo.SelectItem( item ) ;
- return ;
- }
- }
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js
deleted file mode 100644
index 47322a964..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarFontsCombo = function( tooltip, style )
-{
- this.CommandName = 'FontName' ;
- this.Label = this.GetLabel() ;
- this.Tooltip = tooltip ? tooltip : this.Label ;
- this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
- this.DefaultLabel = FCKConfig.DefaultFontLabel || '' ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarFontsCombo.prototype = new FCKToolbarFontFormatCombo( false ) ;
-
-FCKToolbarFontsCombo.prototype.GetLabel = function()
-{
- return FCKLang.Font ;
-}
-
-FCKToolbarFontsCombo.prototype.GetStyles = function()
-{
- var baseStyle = FCKStyles.GetStyle( '_FCK_FontFace' ) ;
-
- if ( !baseStyle )
- {
- alert( "The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file" ) ;
- return {} ;
- }
-
- var styles = {} ;
-
- var fonts = FCKConfig.FontNames.split(';') ;
-
- for ( var i = 0 ; i < fonts.length ; i++ )
- {
- var fontParts = fonts[i].split('/') ;
- var font = fontParts[0] ;
- var caption = fontParts[1] || font ;
-
- var style = FCKTools.CloneObject( baseStyle ) ;
-
- style.SetVariable( 'Font', font ) ;
- style.Label = caption ;
-
- styles[ caption ] = style ;
- }
-
- return styles ;
-}
-
-FCKToolbarFontsCombo.prototype.RefreshActiveItems = FCKToolbarStyleCombo.prototype.RefreshActiveItems ;
-
-FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
-{
- // Clear the current selection.
- targetSpecialCombo.DeselectAll() ;
-
- var startElement = FCKSelection.GetBoundaryParentElement( true ) ;
-
- if ( startElement )
- {
- var path = new FCKElementPath( startElement ) ;
-
- for ( var i in targetSpecialCombo.Items )
- {
- var item = targetSpecialCombo.Items[i] ;
- var style = item.Style ;
-
- if ( style.CheckActive( path ) )
- {
- targetSpecialCombo.SelectItem( item ) ;
- return ;
- }
- }
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js
deleted file mode 100644
index 4a4386d4c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarFontSizeCombo = function( tooltip, style )
-{
- this.CommandName = 'FontSize' ;
- this.Label = this.GetLabel() ;
- this.Tooltip = tooltip ? tooltip : this.Label ;
- this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
- this.DefaultLabel = FCKConfig.DefaultFontSizeLabel || '' ;
-
- this.FieldWidth = 70 ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarFontSizeCombo.prototype = new FCKToolbarFontFormatCombo( false ) ;
-
-FCKToolbarFontSizeCombo.prototype.GetLabel = function()
-{
- return FCKLang.FontSize ;
-}
-
-FCKToolbarFontSizeCombo.prototype.GetStyles = function()
-{
- var baseStyle = FCKStyles.GetStyle( '_FCK_Size' ) ;
-
- if ( !baseStyle )
- {
- alert( "The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file" ) ;
- return {} ;
- }
-
- var styles = {} ;
-
- var fonts = FCKConfig.FontSizes.split(';') ;
-
- for ( var i = 0 ; i < fonts.length ; i++ )
- {
- var fontParts = fonts[i].split('/') ;
- var font = fontParts[0] ;
- var caption = fontParts[1] || font ;
-
- var style = FCKTools.CloneObject( baseStyle ) ;
- style.SetVariable( 'Size', font ) ;
- style.Label = caption ;
-
- styles[ caption ] = style ;
- }
-
- return styles ;
-}
-
-FCKToolbarFontSizeCombo.prototype.RefreshActiveItems = FCKToolbarStyleCombo.prototype.RefreshActiveItems ;
-
-FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick = FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js
deleted file mode 100644
index a507696a3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarPanelButton Class: represents a special button in the toolbar
- * that shows a panel when pressed.
- */
-
-var FCKToolbarPanelButton = function( commandName, label, tooltip, style, icon )
-{
- this.CommandName = commandName ;
-
- var oIcon ;
-
- if ( icon == null )
- oIcon = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
- else if ( typeof( icon ) == 'number' )
- oIcon = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
-
- var oUIButton = this._UIButton = new FCKToolbarButtonUI( commandName, label, tooltip, oIcon, style ) ;
- oUIButton._FCKToolbarPanelButton = this ;
- oUIButton.ShowArrow = true ;
- oUIButton.OnClick = FCKToolbarPanelButton_OnButtonClick ;
-}
-
-FCKToolbarPanelButton.prototype.TypeName = 'FCKToolbarPanelButton' ;
-
-FCKToolbarPanelButton.prototype.Create = function( parentElement )
-{
- parentElement.className += 'Menu' ;
-
- this._UIButton.Create( parentElement ) ;
-
- var oPanel = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName )._Panel ;
- this.RegisterPanel( oPanel ) ;
-}
-
-FCKToolbarPanelButton.prototype.RegisterPanel = function( oPanel )
-{
- if ( oPanel._FCKToolbarPanelButton )
- return ;
-
- oPanel._FCKToolbarPanelButton = this ;
-
- var eLineDiv = oPanel.Document.body.appendChild( oPanel.Document.createElement( 'div' ) ) ;
- eLineDiv.style.position = 'absolute' ;
- eLineDiv.style.top = '0px' ;
-
- var eLine = oPanel._FCKToolbarPanelButtonLineDiv = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
- eLine.className = 'TB_ConnectionLine' ;
- eLine.style.position = 'absolute' ;
-// eLine.style.backgroundColor = 'Red' ;
- eLine.src = FCK_SPACER_PATH ;
-
- oPanel.OnHide = FCKToolbarPanelButton_OnPanelHide ;
-}
-
-/*
- Events
-*/
-
-function FCKToolbarPanelButton_OnButtonClick( toolbarButton )
-{
- var oButton = this._FCKToolbarPanelButton ;
- var e = oButton._UIButton.MainElement ;
-
- oButton._UIButton.ChangeState( FCK_TRISTATE_ON ) ;
-
- // oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
-
- var oCommand = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ) ;
- var oPanel = oCommand._Panel ;
- oPanel._FCKToolbarPanelButtonLineDiv.style.width = ( e.offsetWidth - 2 ) + 'px' ;
- oCommand.Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
-}
-
-function FCKToolbarPanelButton_OnPanelHide()
-{
- var oMenuButton = this._FCKToolbarPanelButton ;
- oMenuButton._UIButton.ChangeState( FCK_TRISTATE_OFF ) ;
-}
-
-// The Panel Button works like a normal button so the refresh state functions
-// defined for the normal button can be reused here.
-FCKToolbarPanelButton.prototype.RefreshState = FCKToolbarButton.prototype.RefreshState ;
-FCKToolbarPanelButton.prototype.Enable = FCKToolbarButton.prototype.Enable ;
-FCKToolbarPanelButton.prototype.Disable = FCKToolbarButton.prototype.Disable ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js
deleted file mode 100644
index c5ea58033..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarSpecialCombo Class: This is a "abstract" base class to be used
- * by the special combo toolbar elements like font name, font size, paragraph format, etc...
- *
- * The following properties and methods must be implemented when inheriting from
- * this class:
- * - Property: CommandName [ The command name to be executed ]
- * - Method: GetLabel() [ Returns the label ]
- * - CreateItems( targetSpecialCombo ) [ Add all items in the special combo ]
- */
-
-var FCKToolbarSpecialCombo = function()
-{
- this.SourceView = false ;
- this.ContextSensitive = true ;
- this.FieldWidth = null ;
- this.PanelWidth = null ;
- this.PanelMaxHeight = null ;
- //this._LastValue = null ;
-}
-
-
-FCKToolbarSpecialCombo.prototype.DefaultLabel = '' ;
-
-function FCKToolbarSpecialCombo_OnSelect( itemId, item )
-{
- FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Execute( itemId, item ) ;
-}
-
-FCKToolbarSpecialCombo.prototype.Create = function( targetElement )
-{
- this._Combo = new FCKSpecialCombo( this.GetLabel(), this.FieldWidth, this.PanelWidth, this.PanelMaxHeight, FCKBrowserInfo.IsIE ? window : FCKTools.GetElementWindow( targetElement ).parent ) ;
-
- /*
- this._Combo.FieldWidth = this.FieldWidth != null ? this.FieldWidth : 100 ;
- this._Combo.PanelWidth = this.PanelWidth != null ? this.PanelWidth : 150 ;
- this._Combo.PanelMaxHeight = this.PanelMaxHeight != null ? this.PanelMaxHeight : 150 ;
- */
-
- //this._Combo.Command.Name = this.Command.Name;
-// this._Combo.Label = this.Label ;
- this._Combo.Tooltip = this.Tooltip ;
- this._Combo.Style = this.Style ;
-
- this.CreateItems( this._Combo ) ;
-
- this._Combo.Create( targetElement ) ;
-
- this._Combo.CommandName = this.CommandName ;
-
- this._Combo.OnSelect = FCKToolbarSpecialCombo_OnSelect ;
-}
-
-function FCKToolbarSpecialCombo_RefreshActiveItems( combo, value )
-{
- combo.DeselectAll() ;
- combo.SelectItem( value ) ;
- combo.SetLabelById( value ) ;
-}
-
-FCKToolbarSpecialCombo.prototype.RefreshState = function()
-{
- // Gets the actual state.
- var eState ;
-
-// if ( FCK.EditMode == FCK_EDITMODE_SOURCE && ! this.SourceView )
-// eState = FCK_TRISTATE_DISABLED ;
-// else
-// {
- var sValue = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
-
-// FCKDebug.Output( 'RefreshState of Special Combo "' + this.TypeOf + '" - State: ' + sValue ) ;
-
- if ( sValue != FCK_TRISTATE_DISABLED )
- {
- eState = FCK_TRISTATE_ON ;
-
- if ( this.RefreshActiveItems )
- this.RefreshActiveItems( this._Combo, sValue ) ;
- else
- {
- if ( this._LastValue !== sValue)
- {
- this._LastValue = sValue ;
-
- if ( !sValue || sValue.length == 0 )
- {
- this._Combo.DeselectAll() ;
- this._Combo.SetLabel( this.DefaultLabel ) ;
- }
- else
- FCKToolbarSpecialCombo_RefreshActiveItems( this._Combo, sValue ) ;
- }
- }
- }
- else
- eState = FCK_TRISTATE_DISABLED ;
-// }
-
- // If there are no state changes then do nothing and return.
- if ( eState == this.State ) return ;
-
- if ( eState == FCK_TRISTATE_DISABLED )
- {
- this._Combo.DeselectAll() ;
- this._Combo.SetLabel( '' ) ;
- }
-
- // Sets the actual state.
- this.State = eState ;
-
- // Updates the graphical state.
- this._Combo.SetEnabled( eState != FCK_TRISTATE_DISABLED ) ;
-}
-
-FCKToolbarSpecialCombo.prototype.Enable = function()
-{
- this.RefreshState() ;
-}
-
-FCKToolbarSpecialCombo.prototype.Disable = function()
-{
- this.State = FCK_TRISTATE_DISABLED ;
- this._Combo.DeselectAll() ;
- this._Combo.SetLabel( '' ) ;
- this._Combo.SetEnabled( false ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js
deleted file mode 100644
index 341b2d901..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKToolbarPanelButton Class: Handles the Fonts combo selector.
- */
-
-var FCKToolbarStyleCombo = function( tooltip, style )
-{
- if ( tooltip === false )
- return ;
-
- this.CommandName = 'Style' ;
- this.Label = this.GetLabel() ;
- this.Tooltip = tooltip ? tooltip : this.Label ;
- this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
-
- this.DefaultLabel = FCKConfig.DefaultStyleLabel || '' ;
-}
-
-// Inherit from FCKToolbarSpecialCombo.
-FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
-
-FCKToolbarStyleCombo.prototype.GetLabel = function()
-{
- return FCKLang.Style ;
-}
-
-FCKToolbarStyleCombo.prototype.GetStyles = function()
-{
- var styles = {} ;
- var allStyles = FCK.ToolbarSet.CurrentInstance.Styles.GetStyles() ;
-
- for ( var styleName in allStyles )
- {
- var style = allStyles[ styleName ] ;
- if ( !style.IsCore )
- styles[ styleName ] = style ;
- }
- return styles ;
-}
-
-FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
-{
- var targetDoc = targetSpecialCombo._Panel.Document ;
-
- // Add the Editor Area CSS to the panel so the style classes are previewed correctly.
- FCKTools.AppendStyleSheet( targetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
- FCKTools.AppendStyleString( targetDoc, FCKConfig.EditorAreaStyles ) ;
- targetDoc.body.className += ' ForceBaseFont' ;
-
- // Add ID and Class to the body.
- FCKConfig.ApplyBodyAttributes( targetDoc.body ) ;
-
- // Get the styles list.
- var styles = this.GetStyles() ;
-
- for ( var styleName in styles )
- {
- var style = styles[ styleName ] ;
-
- // Object type styles have no preview.
- var caption = style.GetType() == FCK_STYLE_OBJECT ?
- styleName :
- FCKToolbarStyleCombo_BuildPreview( style, style.Label || styleName ) ;
-
- var item = targetSpecialCombo.AddItem( styleName, caption ) ;
-
- item.Style = style ;
- }
-
- // We must prepare the list before showing it.
- targetSpecialCombo.OnBeforeClick = this.StyleCombo_OnBeforeClick ;
-}
-
-FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
-{
- var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
-
- if ( startElement )
- {
- var path = new FCKElementPath( startElement ) ;
- var elements = path.Elements ;
-
- for ( var e = 0 ; e < elements.length ; e++ )
- {
- for ( var i in targetSpecialCombo.Items )
- {
- var item = targetSpecialCombo.Items[i] ;
- var style = item.Style ;
-
- if ( style.CheckElementRemovable( elements[ e ], true ) )
- {
- targetSpecialCombo.SetLabel( style.Label || style.Name ) ;
- return ;
- }
- }
- }
- }
-
- targetSpecialCombo.SetLabel( this.DefaultLabel ) ;
-}
-
-FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
-{
- // Two things are done here:
- // - In a control selection, get the element name, so we'll display styles
- // for that element only.
- // - Select the styles that are active for the current selection.
-
- // Clear the current selection.
- targetSpecialCombo.DeselectAll() ;
-
- var startElement ;
- var path ;
- var tagName ;
-
- var selection = FCK.ToolbarSet.CurrentInstance.Selection ;
-
- if ( selection.GetType() == 'Control' )
- {
- startElement = selection.GetSelectedElement() ;
- tagName = startElement.nodeName.toLowerCase() ;
- }
- else
- {
- startElement = selection.GetBoundaryParentElement( true ) ;
- path = new FCKElementPath( startElement ) ;
- }
-
- for ( var i in targetSpecialCombo.Items )
- {
- var item = targetSpecialCombo.Items[i] ;
- var style = item.Style ;
-
- if ( ( tagName && style.Element == tagName ) || ( !tagName && style.GetType() != FCK_STYLE_OBJECT ) )
- {
- item.style.display = '' ;
-
- if ( ( path && style.CheckActive( path ) ) || ( !path && style.CheckElementRemovable( startElement, true ) ) )
- targetSpecialCombo.SelectItem( style.Name ) ;
- }
- else
- item.style.display = 'none' ;
- }
-}
-
-function FCKToolbarStyleCombo_BuildPreview( style, caption )
-{
- var styleType = style.GetType() ;
- var html = [] ;
-
- if ( styleType == FCK_STYLE_BLOCK )
- html.push( '<div class="BaseFont">' ) ;
-
- var elementName = style.Element ;
-
- // Avoid <bdo> in the preview.
- if ( elementName == 'bdo' )
- elementName = 'span' ;
-
- html = [ '<', elementName ] ;
-
- // Assign all defined attributes.
- var attribs = style._StyleDesc.Attributes ;
- if ( attribs )
- {
- for ( var att in attribs )
- {
- html.push( ' ', att, '="', style.GetFinalAttributeValue( att ), '"' ) ;
- }
- }
-
- // Assign the style attribute.
- if ( style._GetStyleText().length > 0 )
- html.push( ' style="', style.GetFinalStyleValue(), '"' ) ;
-
- html.push( '>', caption, '</', elementName, '>' ) ;
-
- if ( styleType == FCK_STYLE_BLOCK )
- html.push( '</div>' ) ;
-
- return html.join( '' ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckw3crange.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckw3crange.js
deleted file mode 100644
index ae6ab8a06..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckw3crange.js
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This class partially implements the W3C DOM Range for browser that don't
- * support the standards (like IE):
- * http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html
- */
-
-var FCKW3CRange = function( parentDocument )
-{
- this._Document = parentDocument ;
-
- this.startContainer = null ;
- this.startOffset = null ;
- this.endContainer = null ;
- this.endOffset = null ;
- this.collapsed = true ;
-}
-
-FCKW3CRange.CreateRange = function( parentDocument )
-{
- // We could opt to use the Range implementation of the browsers. The problem
- // is that every browser have different bugs on their implementations,
- // mostly related to different interpretations of the W3C specifications.
- // So, for now, let's use our implementation and pray for browsers fixings
- // soon. Otherwise will go crazy on trying to find out workarounds.
- /*
- // Get the browser implementation of the range, if available.
- if ( parentDocument.createRange )
- {
- var range = parentDocument.createRange() ;
- if ( typeof( range.startContainer ) != 'undefined' )
- return range ;
- }
- */
- return new FCKW3CRange( parentDocument ) ;
-}
-
-FCKW3CRange.CreateFromRange = function( parentDocument, sourceRange )
-{
- var range = FCKW3CRange.CreateRange( parentDocument ) ;
- range.setStart( sourceRange.startContainer, sourceRange.startOffset ) ;
- range.setEnd( sourceRange.endContainer, sourceRange.endOffset ) ;
- return range ;
-}
-
-FCKW3CRange.prototype =
-{
-
- _UpdateCollapsed : function()
- {
- this.collapsed = ( this.startContainer == this.endContainer && this.startOffset == this.endOffset ) ;
- },
-
- // W3C requires a check for the new position. If it is after the end
- // boundary, the range should be collapsed to the new start. It seams we
- // will not need this check for our use of this class so we can ignore it for now.
- setStart : function( refNode, offset )
- {
- this.startContainer = refNode ;
- this.startOffset = offset ;
-
- if ( !this.endContainer )
- {
- this.endContainer = refNode ;
- this.endOffset = offset ;
- }
-
- this._UpdateCollapsed() ;
- },
-
- // W3C requires a check for the new position. If it is before the start
- // boundary, the range should be collapsed to the new end. It seams we
- // will not need this check for our use of this class so we can ignore it for now.
- setEnd : function( refNode, offset )
- {
- this.endContainer = refNode ;
- this.endOffset = offset ;
-
- if ( !this.startContainer )
- {
- this.startContainer = refNode ;
- this.startOffset = offset ;
- }
-
- this._UpdateCollapsed() ;
- },
-
- setStartAfter : function( refNode )
- {
- this.setStart( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) + 1 ) ;
- },
-
- setStartBefore : function( refNode )
- {
- this.setStart( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) ) ;
- },
-
- setEndAfter : function( refNode )
- {
- this.setEnd( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) + 1 ) ;
- },
-
- setEndBefore : function( refNode )
- {
- this.setEnd( refNode.parentNode, FCKDomTools.GetIndexOf( refNode ) ) ;
- },
-
- collapse : function( toStart )
- {
- if ( toStart )
- {
- this.endContainer = this.startContainer ;
- this.endOffset = this.startOffset ;
- }
- else
- {
- this.startContainer = this.endContainer ;
- this.startOffset = this.endOffset ;
- }
-
- this.collapsed = true ;
- },
-
- selectNodeContents : function( refNode )
- {
- this.setStart( refNode, 0 ) ;
- this.setEnd( refNode, refNode.nodeType == 3 ? refNode.data.length : refNode.childNodes.length ) ;
- },
-
- insertNode : function( newNode )
- {
- var startContainer = this.startContainer ;
- var startOffset = this.startOffset ;
-
- // If we are in a text node.
- if ( startContainer.nodeType == 3 )
- {
- startContainer.splitText( startOffset ) ;
-
- // Check if it is necessary to update the end boundary.
- if ( startContainer == this.endContainer )
- this.setEnd( startContainer.nextSibling, this.endOffset - this.startOffset ) ;
-
- // Insert the new node it after the text node.
- FCKDomTools.InsertAfterNode( startContainer, newNode ) ;
-
- return ;
- }
- else
- {
- // Simply insert the new node before the current start node.
- startContainer.insertBefore( newNode, startContainer.childNodes[ startOffset ] || null ) ;
-
- // Check if it is necessary to update the end boundary.
- if ( startContainer == this.endContainer )
- {
- this.endOffset++ ;
- this.collapsed = false ;
- }
- }
- },
-
- deleteContents : function()
- {
- if ( this.collapsed )
- return ;
-
- this._ExecContentsAction( 0 ) ;
- },
-
- extractContents : function()
- {
- var docFrag = new FCKDocumentFragment( this._Document ) ;
-
- if ( !this.collapsed )
- this._ExecContentsAction( 1, docFrag ) ;
-
- return docFrag ;
- },
-
- // The selection may be lost when cloning (due to the splitText() call).
- cloneContents : function()
- {
- var docFrag = new FCKDocumentFragment( this._Document ) ;
-
- if ( !this.collapsed )
- this._ExecContentsAction( 2, docFrag ) ;
-
- return docFrag ;
- },
-
- _ExecContentsAction : function( action, docFrag )
- {
- var startNode = this.startContainer ;
- var endNode = this.endContainer ;
-
- var startOffset = this.startOffset ;
- var endOffset = this.endOffset ;
-
- var removeStartNode = false ;
- var removeEndNode = false ;
-
- // Check the start and end nodes and make the necessary removals or changes.
-
- // Start from the end, otherwise DOM mutations (splitText) made in the
- // start boundary may interfere on the results here.
-
- // For text containers, we must simply split the node and point to the
- // second part. The removal will be handled by the rest of the code .
- if ( endNode.nodeType == 3 )
- endNode = endNode.splitText( endOffset ) ;
- else
- {
- // If the end container has children and the offset is pointing
- // to a child, then we should start from it.
- if ( endNode.childNodes.length > 0 )
- {
- // If the offset points after the last node.
- if ( endOffset > endNode.childNodes.length - 1 )
- {
- // Let's create a temporary node and mark it for removal.
- endNode = FCKDomTools.InsertAfterNode( endNode.lastChild, this._Document.createTextNode('') ) ;
- removeEndNode = true ;
- }
- else
- endNode = endNode.childNodes[ endOffset ] ;
- }
- }
-
- // For text containers, we must simply split the node. The removal will
- // be handled by the rest of the code .
- if ( startNode.nodeType == 3 )
- {
- startNode.splitText( startOffset ) ;
-
- // In cases the end node is the same as the start node, the above
- // splitting will also split the end, so me must move the end to
- // the second part of the split.
- if ( startNode == endNode )
- endNode = startNode.nextSibling ;
- }
- else
- {
- // If the start container has children and the offset is pointing
- // to a child, then we should start from its previous sibling.
-
- // If the offset points to the first node, we don't have a
- // sibling, so let's use the first one, but mark it for removal.
- if ( startOffset == 0 )
- {
- // Let's create a temporary node and mark it for removal.
- startNode = startNode.insertBefore( this._Document.createTextNode(''), startNode.firstChild ) ;
- removeStartNode = true ;
- }
- else if ( startOffset > startNode.childNodes.length - 1 )
- {
- // Let's create a temporary node and mark it for removal.
- startNode = startNode.appendChild( this._Document.createTextNode('') ) ;
- removeStartNode = true ;
- }
- else
- startNode = startNode.childNodes[ startOffset ].previousSibling ;
- }
-
- // Get the parent nodes tree for the start and end boundaries.
- var startParents = FCKDomTools.GetParents( startNode ) ;
- var endParents = FCKDomTools.GetParents( endNode ) ;
-
- // Compare them, to find the top most siblings.
- var i, topStart, topEnd ;
-
- for ( i = 0 ; i < startParents.length ; i++ )
- {
- topStart = startParents[i] ;
- topEnd = endParents[i] ;
-
- // The compared nodes will match until we find the top most
- // siblings (different nodes that have the same parent).
- // "i" will hold the index in the parents array for the top
- // most element.
- if ( topStart != topEnd )
- break ;
- }
-
- var clone, levelStartNode, levelClone, currentNode, currentSibling ;
-
- if ( docFrag )
- clone = docFrag.RootNode ;
-
- // Remove all successive sibling nodes for every node in the
- // startParents tree.
- for ( var j = i ; j < startParents.length ; j++ )
- {
- levelStartNode = startParents[j] ;
-
- // For Extract and Clone, we must clone this level.
- if ( clone && levelStartNode != startNode ) // action = 0 = Delete
- levelClone = clone.appendChild( levelStartNode.cloneNode( levelStartNode == startNode ) ) ;
-
- currentNode = levelStartNode.nextSibling ;
-
- while( currentNode )
- {
- // Stop processing when the current node matches a node in the
- // endParents tree or if it is the endNode.
- if ( currentNode == endParents[j] || currentNode == endNode )
- break ;
-
- // Cache the next sibling.
- currentSibling = currentNode.nextSibling ;
-
- // If cloning, just clone it.
- if ( action == 2 ) // 2 = Clone
- clone.appendChild( currentNode.cloneNode( true ) ) ;
- else
- {
- // Both Delete and Extract will remove the node.
- currentNode.parentNode.removeChild( currentNode ) ;
-
- // When Extracting, move the removed node to the docFrag.
- if ( action == 1 ) // 1 = Extract
- clone.appendChild( currentNode ) ;
- }
-
- currentNode = currentSibling ;
- }
-
- if ( clone )
- clone = levelClone ;
- }
-
- if ( docFrag )
- clone = docFrag.RootNode ;
-
- // Remove all previous sibling nodes for every node in the
- // endParents tree.
- for ( var k = i ; k < endParents.length ; k++ )
- {
- levelStartNode = endParents[k] ;
-
- // For Extract and Clone, we must clone this level.
- if ( action > 0 && levelStartNode != endNode ) // action = 0 = Delete
- levelClone = clone.appendChild( levelStartNode.cloneNode( levelStartNode == endNode ) ) ;
-
- // The processing of siblings may have already been done by the parent.
- if ( !startParents[k] || levelStartNode.parentNode != startParents[k].parentNode )
- {
- currentNode = levelStartNode.previousSibling ;
-
- while( currentNode )
- {
- // Stop processing when the current node matches a node in the
- // startParents tree or if it is the startNode.
- if ( currentNode == startParents[k] || currentNode == startNode )
- break ;
-
- // Cache the next sibling.
- currentSibling = currentNode.previousSibling ;
-
- // If cloning, just clone it.
- if ( action == 2 ) // 2 = Clone
- clone.insertBefore( currentNode.cloneNode( true ), clone.firstChild ) ;
- else
- {
- // Both Delete and Extract will remove the node.
- currentNode.parentNode.removeChild( currentNode ) ;
-
- // When Extracting, mode the removed node to the docFrag.
- if ( action == 1 ) // 1 = Extract
- clone.insertBefore( currentNode, clone.firstChild ) ;
- }
-
- currentNode = currentSibling ;
- }
- }
-
- if ( clone )
- clone = levelClone ;
- }
-
- if ( action == 2 ) // 2 = Clone.
- {
- // No changes in the DOM should be done, so fix the split text (if any).
-
- var startTextNode = this.startContainer ;
- if ( startTextNode.nodeType == 3 )
- {
- startTextNode.data += startTextNode.nextSibling.data ;
- startTextNode.parentNode.removeChild( startTextNode.nextSibling ) ;
- }
-
- var endTextNode = this.endContainer ;
- if ( endTextNode.nodeType == 3 && endTextNode.nextSibling )
- {
- endTextNode.data += endTextNode.nextSibling.data ;
- endTextNode.parentNode.removeChild( endTextNode.nextSibling ) ;
- }
- }
- else
- {
- // Collapse the range.
-
- // If a node has been partially selected, collapse the range between
- // topStart and topEnd. Otherwise, simply collapse it to the start. (W3C specs).
- if ( topStart && topEnd && ( startNode.parentNode != topStart.parentNode || endNode.parentNode != topEnd.parentNode ) )
- {
- var endIndex = FCKDomTools.GetIndexOf( topEnd ) ;
-
- // If the start node is to be removed, we must correct the
- // index to reflect the removal.
- if ( removeStartNode && topEnd.parentNode == startNode.parentNode )
- endIndex-- ;
-
- this.setStart( topEnd.parentNode, endIndex ) ;
- }
-
- // Collapse it to the start.
- this.collapse( true ) ;
- }
-
- // Cleanup any marked node.
- if( removeStartNode )
- startNode.parentNode.removeChild( startNode ) ;
-
- if( removeEndNode && endNode.parentNode )
- endNode.parentNode.removeChild( endNode ) ;
- },
-
- cloneRange : function()
- {
- return FCKW3CRange.CreateFromRange( this._Document, this ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml.js
deleted file mode 100644
index 930ab3048..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKXml Class: class to load and manipulate XML files.
- * (IE specific implementation)
- */
-
-var FCKXml = function()
-{
- this.Error = false ;
-}
-
-FCKXml.GetAttribute = function( node, attName, defaultValue )
-{
- var attNode = node.attributes.getNamedItem( attName ) ;
- return attNode ? attNode.value : defaultValue ;
-}
-
-/**
- * Transforms a XML element node in a JavaScript object. Attributes defined for
- * the element will be available as properties, as long as child element
- * nodes, but the later will generate arrays with property names prefixed with "$".
- *
- * For example, the following XML element:
- *
- * <SomeNode name="Test" key="2">
- * <MyChild id="10">
- * <OtherLevel name="Level 3" />
- * </MyChild>
- * <MyChild id="25" />
- * <AnotherChild price="499" />
- * </SomeNode>
- *
- * ... results in the following object:
- *
- * {
- * name : "Test",
- * key : "2",
- * $MyChild :
- * [
- * {
- * id : "10",
- * $OtherLevel :
- * {
- * name : "Level 3"
- * }
- * },
- * {
- * id : "25"
- * }
- * ],
- * $AnotherChild :
- * [
- * {
- * price : "499"
- * }
- * ]
- * }
- */
-FCKXml.TransformToObject = function( element )
-{
- if ( !element )
- return null ;
-
- var obj = {} ;
-
- var attributes = element.attributes ;
- for ( var i = 0 ; i < attributes.length ; i++ )
- {
- var att = attributes[i] ;
- obj[ att.name ] = att.value ;
- }
-
- var childNodes = element.childNodes ;
- for ( i = 0 ; i < childNodes.length ; i++ )
- {
- var child = childNodes[i] ;
-
- if ( child.nodeType == 1 )
- {
- var childName = '$' + child.nodeName ;
- var childList = obj[ childName ] ;
- if ( !childList )
- childList = obj[ childName ] = [] ;
-
- childList.push( this.TransformToObject( child ) ) ;
- }
- }
-
- return obj ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_gecko.js
deleted file mode 100644
index 03f287fe1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_gecko.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKXml Class: class to load and manipulate XML files.
- */
-
-FCKXml.prototype =
-{
- LoadUrl : function( urlToCall )
- {
- this.Error = false ;
-
- var oXml ;
- var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
- oXmlHttp.open( 'GET', urlToCall, false ) ;
- oXmlHttp.send( null ) ;
-
- if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 || ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 ) )
- {
- oXml = oXmlHttp.responseXML ;
- // #1426: Fallback if responseXML isn't set for some
- // reason (e.g. improperly configured web server)
- if ( !oXml )
- oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
- }
- else
- oXml = null ;
-
- if ( oXml )
- {
- // Try to access something on it.
- try
- {
- var test = oXml.firstChild ;
- }
- catch (e)
- {
- // If document.domain has been changed (#123), we'll have a security
- // error at this point. The workaround here is parsing the responseText:
- // http://alexander.kirk.at/2006/07/27/firefox-15-xmlhttprequest-reqresponsexml-and-documentdomain/
- oXml = (new DOMParser()).parseFromString( oXmlHttp.responseText, 'text/xml' ) ;
- }
- }
-
- if ( !oXml || !oXml.firstChild )
- {
- this.Error = true ;
- if ( window.confirm( 'Error loading "' + urlToCall + '" (HTTP Status: ' + oXmlHttp.status + ').\r\nDo you want to see the server response dump?' ) )
- alert( oXmlHttp.responseText ) ;
- }
-
- this.DOMDocument = oXml ;
- },
-
- SelectNodes : function( xpath, contextNode )
- {
- if ( this.Error )
- return new Array() ;
-
- var aNodeArray = new Array();
-
- var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
- this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
- if ( xPathResult )
- {
- var oNode = xPathResult.iterateNext() ;
- while( oNode )
- {
- aNodeArray[aNodeArray.length] = oNode ;
- oNode = xPathResult.iterateNext();
- }
- }
- return aNodeArray ;
- },
-
- SelectSingleNode : function( xpath, contextNode )
- {
- if ( this.Error )
- return null ;
-
- var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
- this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
-
- if ( xPathResult && xPathResult.singleNodeValue )
- return xPathResult.singleNodeValue ;
- else
- return null ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_ie.js
deleted file mode 100644
index 0a18f45b0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/classes/fckxml_ie.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKXml Class: class to load and manipulate XML files.
- * (IE specific implementation)
- */
-
-FCKXml.prototype =
-{
- LoadUrl : function( urlToCall )
- {
- this.Error = false ;
-
- var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
-
- if ( !oXmlHttp )
- {
- this.Error = true ;
- return ;
- }
-
- oXmlHttp.open( "GET", urlToCall, false ) ;
-
- oXmlHttp.send( null ) ;
-
- if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 || ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 ) )
- {
- this.DOMDocument = oXmlHttp.responseXML ;
-
- // #1426: Fallback if responseXML isn't set for some
- // reason (e.g. improperly configured web server)
- if ( !this.DOMDocument || this.DOMDocument.firstChild == null )
- {
- this.DOMDocument = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
- this.DOMDocument.async = false ;
- this.DOMDocument.resolveExternals = false ;
- this.DOMDocument.loadXML( oXmlHttp.responseText ) ;
- }
- }
- else
- {
- this.DOMDocument = null ;
- }
-
- if ( this.DOMDocument == null || this.DOMDocument.firstChild == null )
- {
- this.Error = true ;
- if (window.confirm( 'Error loading "' + urlToCall + '"\r\nDo you want to see more info?' ) )
- alert( 'URL requested: "' + urlToCall + '"\r\n' +
- 'Server response:\r\nStatus: ' + oXmlHttp.status + '\r\n' +
- 'Response text:\r\n' + oXmlHttp.responseText ) ;
- }
- },
-
- SelectNodes : function( xpath, contextNode )
- {
- if ( this.Error )
- return new Array() ;
-
- if ( contextNode )
- return contextNode.selectNodes( xpath ) ;
- else
- return this.DOMDocument.selectNodes( xpath ) ;
- },
-
- SelectSingleNode : function( xpath, contextNode )
- {
- if ( this.Error )
- return null ;
-
- if ( contextNode )
- return contextNode.selectSingleNode( xpath ) ;
- else
- return this.DOMDocument.selectSingleNode( xpath ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fck_othercommands.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fck_othercommands.js
deleted file mode 100644
index ac2608505..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fck_othercommands.js
+++ /dev/null
@@ -1,634 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Definition of other commands that are not available internaly in the
- * browser (see FCKNamedCommand).
- */
-
-// ### General Dialog Box Commands.
-var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam, customValue )
-{
- this.Name = name ;
- this.Title = title ;
- this.Url = url ;
- this.Width = width ;
- this.Height = height ;
- this.CustomValue = customValue ;
-
- this.GetStateFunction = getStateFunction ;
- this.GetStateParam = getStateParam ;
-
- this.Resizable = false ;
-}
-
-FCKDialogCommand.prototype.Execute = function()
-{
- FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, this.CustomValue, null, this.Resizable ) ;
-}
-
-FCKDialogCommand.prototype.GetState = function()
-{
- if ( this.GetStateFunction )
- return this.GetStateFunction( this.GetStateParam ) ;
- else
- return FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}
-
-// Generic Undefined command (usually used when a command is under development).
-var FCKUndefinedCommand = function()
-{
- this.Name = 'Undefined' ;
-}
-
-FCKUndefinedCommand.prototype.Execute = function()
-{
- alert( FCKLang.NotImplemented ) ;
-}
-
-FCKUndefinedCommand.prototype.GetState = function()
-{
- return FCK_TRISTATE_OFF ;
-}
-
-
-// ### FormatBlock
-var FCKFormatBlockCommand = function()
-{}
-
-FCKFormatBlockCommand.prototype =
-{
- Name : 'FormatBlock',
-
- Execute : FCKStyleCommand.prototype.Execute,
-
- GetState : function()
- {
- return FCK.EditorDocument ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
- }
-};
-
-// ### FontName
-
-var FCKFontNameCommand = function()
-{}
-
-FCKFontNameCommand.prototype =
-{
- Name : 'FontName',
- Execute : FCKStyleCommand.prototype.Execute,
- GetState : FCKFormatBlockCommand.prototype.GetState
-};
-
-// ### FontSize
-var FCKFontSizeCommand = function()
-{}
-
-FCKFontSizeCommand.prototype =
-{
- Name : 'FontSize',
- Execute : FCKStyleCommand.prototype.Execute,
- GetState : FCKFormatBlockCommand.prototype.GetState
-};
-
-// ### Preview
-var FCKPreviewCommand = function()
-{
- this.Name = 'Preview' ;
-}
-
-FCKPreviewCommand.prototype.Execute = function()
-{
- FCK.Preview() ;
-}
-
-FCKPreviewCommand.prototype.GetState = function()
-{
- return FCK_TRISTATE_OFF ;
-}
-
-// ### Save
-var FCKSaveCommand = function()
-{
- this.Name = 'Save' ;
-}
-
-FCKSaveCommand.prototype.Execute = function()
-{
- // Get the linked field form.
- var oForm = FCK.GetParentForm() ;
-
- if ( typeof( oForm.onsubmit ) == 'function' )
- {
- var bRet = oForm.onsubmit() ;
- if ( bRet != null && bRet === false )
- return ;
- }
-
- // Submit the form.
- // If there's a button named "submit" then the form.submit() function is masked and
- // can't be called in Mozilla, so we call the click() method of that button.
- if ( typeof( oForm.submit ) == 'function' )
- oForm.submit() ;
- else
- oForm.submit.click() ;
-}
-
-FCKSaveCommand.prototype.GetState = function()
-{
- return FCK_TRISTATE_OFF ;
-}
-
-// ### NewPage
-var FCKNewPageCommand = function()
-{
- this.Name = 'NewPage' ;
-}
-
-FCKNewPageCommand.prototype.Execute = function()
-{
- FCKUndo.SaveUndoStep() ;
- FCK.SetData( '' ) ;
- FCKUndo.Typing = true ;
- FCK.Focus() ;
-}
-
-FCKNewPageCommand.prototype.GetState = function()
-{
- return FCK_TRISTATE_OFF ;
-}
-
-// ### Source button
-var FCKSourceCommand = function()
-{
- this.Name = 'Source' ;
-}
-
-FCKSourceCommand.prototype.Execute = function()
-{
- if ( FCKConfig.SourcePopup ) // Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko.
- {
- var iWidth = FCKConfig.ScreenWidth * 0.65 ;
- var iHeight = FCKConfig.ScreenHeight * 0.65 ;
- FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, null, true ) ;
- }
- else
- FCK.SwitchEditMode() ;
-}
-
-FCKSourceCommand.prototype.GetState = function()
-{
- return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_ON ) ;
-}
-
-// ### Undo
-var FCKUndoCommand = function()
-{
- this.Name = 'Undo' ;
-}
-
-FCKUndoCommand.prototype.Execute = function()
-{
- FCKUndo.Undo() ;
-}
-
-FCKUndoCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
-}
-
-// ### Redo
-var FCKRedoCommand = function()
-{
- this.Name = 'Redo' ;
-}
-
-FCKRedoCommand.prototype.Execute = function()
-{
- FCKUndo.Redo() ;
-}
-
-FCKRedoCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
-}
-
-// ### Page Break
-var FCKPageBreakCommand = function()
-{
- this.Name = 'PageBreak' ;
-}
-
-FCKPageBreakCommand.prototype.Execute = function()
-{
- // Take an undo snapshot before changing the document
- FCKUndo.SaveUndoStep() ;
-
-// var e = FCK.EditorDocument.createElement( 'CENTER' ) ;
-// e.style.pageBreakAfter = 'always' ;
-
- // Tidy was removing the empty CENTER tags, so the following solution has
- // been found. It also validates correctly as XHTML 1.0 Strict.
- var e = FCK.EditorDocument.createElement( 'DIV' ) ;
- e.style.pageBreakAfter = 'always' ;
- e.innerHTML = '<span style="DISPLAY:none">&nbsp;</span>' ;
-
- var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ;
- var oRange = new FCKDomRange( FCK.EditorWindow ) ;
- oRange.MoveToSelection() ;
- var oSplitInfo = oRange.SplitBlock() ;
- oRange.InsertNode( oFakeImage ) ;
-
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-}
-
-FCKPageBreakCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return 0 ; // FCK_TRISTATE_OFF
-}
-
-// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com)
-var FCKUnlinkCommand = function()
-{
- this.Name = 'Unlink' ;
-}
-
-FCKUnlinkCommand.prototype.Execute = function()
-{
- // Take an undo snapshot before changing the document
- FCKUndo.SaveUndoStep() ;
-
- if ( FCKBrowserInfo.IsGeckoLike )
- {
- var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
- // The unlink command can generate a span in Firefox, so let's do it our way. See #430
- if ( oLink )
- FCKTools.RemoveOuterTags( oLink ) ;
-
- return ;
- }
-
- FCK.ExecuteNamedCommand( this.Name ) ;
-}
-
-FCKUnlinkCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- var state = FCK.GetNamedCommandState( this.Name ) ;
-
- // Check that it isn't an anchor
- if ( state == FCK_TRISTATE_OFF && FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ;
- var bIsAnchor = ( oLink && oLink.name.length > 0 && oLink.href.length == 0 ) ;
- if ( bIsAnchor )
- state = FCK_TRISTATE_DISABLED ;
- }
-
- return state ;
-}
-
-var FCKVisitLinkCommand = function()
-{
- this.Name = 'VisitLink';
-}
-FCKVisitLinkCommand.prototype =
-{
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- var state = FCK.GetNamedCommandState( 'Unlink' ) ;
-
- if ( state == FCK_TRISTATE_OFF )
- {
- var el = FCKSelection.MoveToAncestorNode( 'A' ) ;
- if ( !el.href )
- state = FCK_TRISTATE_DISABLED ;
- }
-
- return state ;
- },
-
- Execute : function()
- {
- var el = FCKSelection.MoveToAncestorNode( 'A' ) ;
- var url = el.getAttribute( '_fcksavedurl' ) || el.getAttribute( 'href', 2 ) ;
-
- // Check if it's a full URL.
- // If not full URL, we'll need to apply the BaseHref setting.
- if ( ! /:\/\//.test( url ) )
- {
- var baseHref = FCKConfig.BaseHref ;
- var parentWindow = FCK.GetInstanceObject( 'parent' ) ;
- if ( !baseHref )
- {
- baseHref = parentWindow.document.location.href ;
- baseHref = baseHref.substring( 0, baseHref.lastIndexOf( '/' ) + 1 ) ;
- }
-
- if ( /^\//.test( url ) )
- {
- try
- {
- baseHref = baseHref.match( /^.*:\/\/+[^\/]+/ )[0] ;
- }
- catch ( e )
- {
- baseHref = parentWindow.document.location.protocol + '://' + parentWindow.parent.document.location.host ;
- }
- }
-
- url = baseHref + url ;
- }
-
- if ( !window.open( url, '_blank' ) )
- alert( FCKLang.VisitLinkBlocked ) ;
- }
-} ;
-
-// FCKSelectAllCommand
-var FCKSelectAllCommand = function()
-{
- this.Name = 'SelectAll' ;
-}
-
-FCKSelectAllCommand.prototype.Execute = function()
-{
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- FCK.ExecuteNamedCommand( 'SelectAll' ) ;
- }
- else
- {
- // Select the contents of the textarea
- var textarea = FCK.EditingArea.Textarea ;
- if ( FCKBrowserInfo.IsIE )
- {
- textarea.createTextRange().execCommand( 'SelectAll' ) ;
- }
- else
- {
- textarea.selectionStart = 0 ;
- textarea.selectionEnd = textarea.value.length ;
- }
- textarea.focus() ;
- }
-}
-
-FCKSelectAllCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK_TRISTATE_OFF ;
-}
-
-// FCKPasteCommand
-var FCKPasteCommand = function()
-{
- this.Name = 'Paste' ;
-}
-
-FCKPasteCommand.prototype =
-{
- Execute : function()
- {
- if ( FCKBrowserInfo.IsIE )
- FCK.Paste() ;
- else
- FCK.ExecuteNamedCommand( 'Paste' ) ;
- },
-
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK.GetNamedCommandState( 'Paste' ) ;
- }
-} ;
-
-// FCKRuleCommand
-var FCKRuleCommand = function()
-{
- this.Name = 'Rule' ;
-}
-
-FCKRuleCommand.prototype =
-{
- Execute : function()
- {
- FCKUndo.SaveUndoStep() ;
- FCK.InsertElement( 'hr' ) ;
- },
-
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK.GetNamedCommandState( 'InsertHorizontalRule' ) ;
- }
-} ;
-
-// FCKCutCopyCommand
-var FCKCutCopyCommand = function( isCut )
-{
- this.Name = isCut ? 'Cut' : 'Copy' ;
-}
-
-FCKCutCopyCommand.prototype =
-{
- Execute : function()
- {
- var enabled = false ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- // The following seems to be the only reliable way to detect that
- // cut/copy is enabled in IE. It will fire the oncut/oncopy event
- // only if the security settings enabled the command to execute.
-
- var onEvent = function()
- {
- enabled = true ;
- } ;
-
- var eventName = 'on' + this.Name.toLowerCase() ;
-
- FCK.EditorDocument.body.attachEvent( eventName, onEvent ) ;
- FCK.ExecuteNamedCommand( this.Name ) ;
- FCK.EditorDocument.body.detachEvent( eventName, onEvent ) ;
- }
- else
- {
- try
- {
- // Other browsers throw an error if the command is disabled.
- FCK.ExecuteNamedCommand( this.Name ) ;
- enabled = true ;
- }
- catch(e){}
- }
-
- if ( !enabled )
- alert( FCKLang[ 'PasteError' + this.Name ] ) ;
- },
-
- GetState : function()
- {
- // Strangely, the Cut command happens to have the correct states for
- // both Copy and Cut in all browsers.
- return FCK.EditMode != FCK_EDITMODE_WYSIWYG ?
- FCK_TRISTATE_DISABLED :
- FCK.GetNamedCommandState( 'Cut' ) ;
- }
-};
-
-var FCKAnchorDeleteCommand = function()
-{
- this.Name = 'AnchorDelete' ;
-}
-
-FCKAnchorDeleteCommand.prototype =
-{
- Execute : function()
- {
- if (FCK.Selection.GetType() == 'Control')
- {
- FCK.Selection.Delete();
- }
- else
- {
- var oFakeImage = FCK.Selection.GetSelectedElement() ;
- if ( oFakeImage )
- {
- if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
- oAnchor = FCK.GetRealElement( oFakeImage ) ;
- else
- oFakeImage = null ;
- }
-
- //Search for a real anchor
- if ( !oFakeImage )
- {
- oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
- if ( oAnchor )
- FCK.Selection.SelectNode( oAnchor ) ;
- }
-
- // If it's also a link, then just remove the name and exit
- if ( oAnchor.href.length != 0 )
- {
- oAnchor.removeAttribute( 'name' ) ;
- // Remove temporary class for IE
- if ( FCKBrowserInfo.IsIE )
- oAnchor.className = oAnchor.className.replace( FCKRegexLib.FCK_Class, '' ) ;
- return ;
- }
-
- // We need to remove the anchor
- // If we got a fake image, then just remove it and we're done
- if ( oFakeImage )
- {
- oFakeImage.parentNode.removeChild( oFakeImage ) ;
- return ;
- }
- // Empty anchor, so just remove it
- if ( oAnchor.innerHTML.length == 0 )
- {
- oAnchor.parentNode.removeChild( oAnchor ) ;
- return ;
- }
- // Anchor with content, leave the content
- FCKTools.RemoveOuterTags( oAnchor ) ;
- }
- if ( FCKBrowserInfo.IsGecko )
- FCK.Selection.Collapse( true ) ;
- },
-
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK.GetNamedCommandState( 'Unlink') ;
- }
-};
-
-var FCKDeleteDivCommand = function()
-{
-}
-FCKDeleteDivCommand.prototype =
-{
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
-
- var node = FCKSelection.GetParentElement() ;
- var path = new FCKElementPath( node ) ;
- return path.BlockLimit && path.BlockLimit.nodeName.IEquals( 'div' ) ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
- },
-
- Execute : function()
- {
- // Create an undo snapshot before doing anything.
- FCKUndo.SaveUndoStep() ;
-
- // Find out the nodes to delete.
- var nodes = FCKDomTools.GetSelectedDivContainers() ;
-
- // Remember the current selection position.
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
- var bookmark = range.CreateBookmark() ;
-
- // Delete the container DIV node.
- for ( var i = 0 ; i < nodes.length ; i++)
- FCKDomTools.RemoveNode( nodes[i], true ) ;
-
- // Restore selection.
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
- }
-} ;
-
-// FCKRuleCommand
-var FCKNbsp = function()
-{
- this.Name = 'Non Breaking Space' ;
-}
-
-FCKNbsp.prototype =
-{
- Execute : function()
- {
- FCK.InsertHtml( '&nbsp;' ) ;
- },
-
- GetState : function()
- {
- return ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_DISABLED : FCK_TRISTATE_OFF ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckblockquotecommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckblockquotecommand.js
deleted file mode 100644
index 2caff1bf0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckblockquotecommand.js
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKBlockQuoteCommand Class: adds or removes blockquote tags.
- */
-
-var FCKBlockQuoteCommand = function()
-{
-}
-
-FCKBlockQuoteCommand.prototype =
-{
- Execute : function()
- {
- FCKUndo.SaveUndoStep() ;
-
- var state = this.GetState() ;
-
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
-
- var bookmark = range.CreateBookmark() ;
-
- // Kludge for #1592: if the bookmark nodes are in the beginning of
- // blockquote, then move them to the nearest block element in the
- // blockquote.
- if ( FCKBrowserInfo.IsIE )
- {
- var bStart = range.GetBookmarkNode( bookmark, true ) ;
- var bEnd = range.GetBookmarkNode( bookmark, false ) ;
-
- var cursor ;
-
- if ( bStart
- && bStart.parentNode.nodeName.IEquals( 'blockquote' )
- && !bStart.previousSibling )
- {
- cursor = bStart ;
- while ( ( cursor = cursor.nextSibling ) )
- {
- if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
- FCKDomTools.MoveNode( bStart, cursor, true ) ;
- }
- }
-
- if ( bEnd
- && bEnd.parentNode.nodeName.IEquals( 'blockquote' )
- && !bEnd.previousSibling )
- {
- cursor = bEnd ;
- while ( ( cursor = cursor.nextSibling ) )
- {
- if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
- {
- if ( cursor.firstChild == bStart )
- FCKDomTools.InsertAfterNode( bStart, bEnd ) ;
- else
- FCKDomTools.MoveNode( bEnd, cursor, true ) ;
- }
- }
- }
- }
-
- var iterator = new FCKDomRangeIterator( range ) ;
- var block ;
-
- if ( state == FCK_TRISTATE_OFF )
- {
- var paragraphs = [] ;
- while ( ( block = iterator.GetNextParagraph() ) )
- paragraphs.push( block ) ;
-
- // If no paragraphs, create one from the current selection position.
- if ( paragraphs.length < 1 )
- {
- para = range.Window.document.createElement( FCKConfig.EnterMode.IEquals( 'p' ) ? 'p' : 'div' ) ;
- range.InsertNode( para ) ;
- para.appendChild( range.Window.document.createTextNode( '\ufeff' ) ) ;
- range.MoveToBookmark( bookmark ) ;
- range.MoveToNodeContents( para ) ;
- range.Collapse( true ) ;
- bookmark = range.CreateBookmark() ;
- paragraphs.push( para ) ;
- }
-
- // Make sure all paragraphs have the same parent.
- var commonParent = paragraphs[0].parentNode ;
- var tmp = [] ;
- for ( var i = 0 ; i < paragraphs.length ; i++ )
- {
- block = paragraphs[i] ;
- commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ;
- }
-
- // The common parent must not be the following tags: table, tbody, tr, ol, ul.
- while ( commonParent.nodeName.IEquals( 'table', 'tbody', 'tr', 'ol', 'ul' ) )
- commonParent = commonParent.parentNode ;
-
- // Reconstruct the block list to be processed such that all resulting blocks
- // satisfy parentNode == commonParent.
- var lastBlock = null ;
- while ( paragraphs.length > 0 )
- {
- block = paragraphs.shift() ;
- while ( block.parentNode != commonParent )
- block = block.parentNode ;
- if ( block != lastBlock )
- tmp.push( block ) ;
- lastBlock = block ;
- }
-
- // If any of the selected blocks is a blockquote, remove it to prevent nested blockquotes.
- while ( tmp.length > 0 )
- {
- block = tmp.shift() ;
- if ( block.nodeName.IEquals( 'blockquote' ) )
- {
- var docFrag = FCKTools.GetElementDocument( block ).createDocumentFragment() ;
- while ( block.firstChild )
- {
- docFrag.appendChild( block.removeChild( block.firstChild ) ) ;
- paragraphs.push( docFrag.lastChild ) ;
- }
- block.parentNode.replaceChild( docFrag, block ) ;
- }
- else
- paragraphs.push( block ) ;
- }
-
- // Now we have all the blocks to be included in a new blockquote node.
- var bqBlock = range.Window.document.createElement( 'blockquote' ) ;
- commonParent.insertBefore( bqBlock, paragraphs[0] ) ;
- while ( paragraphs.length > 0 )
- {
- block = paragraphs.shift() ;
- bqBlock.appendChild( block ) ;
- }
- }
- else if ( state == FCK_TRISTATE_ON )
- {
- var moveOutNodes = [] ;
- var elementMarkers = {} ;
- while ( ( block = iterator.GetNextParagraph() ) )
- {
- var bqParent = null ;
- var bqChild = null ;
- while ( block.parentNode )
- {
- if ( block.parentNode.nodeName.IEquals( 'blockquote' ) )
- {
- bqParent = block.parentNode ;
- bqChild = block ;
- break ;
- }
- block = block.parentNode ;
- }
-
- // Remember the blocks that were recorded down in the moveOutNodes array
- // to prevent duplicates.
- if ( bqParent && bqChild && !bqChild._fckblockquotemoveout )
- {
- moveOutNodes.push( bqChild ) ;
- FCKDomTools.SetElementMarker( elementMarkers, bqChild, '_fckblockquotemoveout', true ) ;
- }
- }
- FCKDomTools.ClearAllMarkers( elementMarkers ) ;
-
- var movedNodes = [] ;
- var processedBlockquoteBlocks = [], elementMarkers = {} ;
- var noBlockLeft = function( bqBlock )
- {
- for ( var i = 0 ; i < bqBlock.childNodes.length ; i++ )
- {
- if ( FCKListsLib.BlockElements[ bqBlock.childNodes[i].nodeName.toLowerCase() ] )
- return false ;
- }
- return true ;
- } ;
- while ( moveOutNodes.length > 0 )
- {
- var node = moveOutNodes.shift() ;
- var bqBlock = node.parentNode ;
-
- // If the node is located at the beginning or the end, just take it out without splitting.
- // Otherwise, split the blockquote node and move the paragraph in between the two blockquote nodes.
- if ( node == node.parentNode.firstChild )
- bqBlock.parentNode.insertBefore( bqBlock.removeChild( node ), bqBlock ) ;
- else if ( node == node.parentNode.lastChild )
- bqBlock.parentNode.insertBefore( bqBlock.removeChild( node ), bqBlock.nextSibling ) ;
- else
- FCKDomTools.BreakParent( node, node.parentNode, range ) ;
-
- // Remember the blockquote node so we can clear it later (if it becomes empty).
- if ( !bqBlock._fckbqprocessed )
- {
- processedBlockquoteBlocks.push( bqBlock ) ;
- FCKDomTools.SetElementMarker( elementMarkers, bqBlock, '_fckbqprocessed', true );
- }
-
- movedNodes.push( node ) ;
- }
-
- // Clear blockquote nodes that have become empty.
- for ( var i = processedBlockquoteBlocks.length - 1 ; i >= 0 ; i-- )
- {
- var bqBlock = processedBlockquoteBlocks[i] ;
- if ( noBlockLeft( bqBlock ) )
- FCKDomTools.RemoveNode( bqBlock ) ;
- }
- FCKDomTools.ClearAllMarkers( elementMarkers ) ;
-
- if ( FCKConfig.EnterMode.IEquals( 'br' ) )
- {
- while ( movedNodes.length )
- {
- var node = movedNodes.shift() ;
- var firstTime = true ;
- if ( node.nodeName.IEquals( 'div' ) )
- {
- var docFrag = FCKTools.GetElementDocument( node ).createDocumentFragment() ;
- var needBeginBr = firstTime && node.previousSibling &&
- !FCKListsLib.BlockBoundaries[node.previousSibling.nodeName.toLowerCase()] ;
- if ( firstTime && needBeginBr )
- docFrag.appendChild( FCKTools.GetElementDocument( node ).createElement( 'br' ) ) ;
- var needEndBr = node.nextSibling &&
- !FCKListsLib.BlockBoundaries[node.nextSibling.nodeName.toLowerCase()] ;
- while ( node.firstChild )
- docFrag.appendChild( node.removeChild( node.firstChild ) ) ;
- if ( needEndBr )
- docFrag.appendChild( FCKTools.GetElementDocument( node ).createElement( 'br' ) ) ;
- node.parentNode.replaceChild( docFrag, node ) ;
- firstTime = false ;
- }
- }
- }
- }
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetState : function()
- {
- // Disabled if not WYSIWYG.
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
- return FCK_TRISTATE_DISABLED ;
-
- var path = new FCKElementPath( FCKSelection.GetBoundaryParentElement( true ) ) ;
- var firstBlock = path.Block || path.BlockLimit ;
-
- if ( !firstBlock || firstBlock.nodeName.toLowerCase() == 'body' )
- return FCK_TRISTATE_OFF ;
-
- // See if the first block has a blockquote parent.
- for ( var i = 0 ; i < path.Elements.length ; i++ )
- {
- if ( path.Elements[i].nodeName.IEquals( 'blockquote' ) )
- return FCK_TRISTATE_ON ;
- }
- return FCK_TRISTATE_OFF ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckcorestylecommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckcorestylecommand.js
deleted file mode 100644
index b99ba5b7b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckcorestylecommand.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKCoreStyleCommand Class: controls the execution of a core style. Core
- * styles are usually represented as buttons in the toolbar., like Bold and
- * Italic.
- */
-
- var FCKCoreStyleCommand = function( coreStyleName )
- {
- this.Name = 'CoreStyle' ;
- this.StyleName = '_FCK_' + coreStyleName ;
- this.IsActive = false ;
-
- FCKStyles.AttachStyleStateChange( this.StyleName, this._OnStyleStateChange, this ) ;
- }
-
- FCKCoreStyleCommand.prototype =
- {
- Execute : function()
- {
- FCKUndo.SaveUndoStep() ;
-
- if ( this.IsActive )
- FCKStyles.RemoveStyle( this.StyleName ) ;
- else
- FCKStyles.ApplyStyle( this.StyleName ) ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return this.IsActive ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
- },
-
- _OnStyleStateChange : function( styleName, isActive )
- {
- this.IsActive = isActive ;
- }
- };
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
deleted file mode 100644
index c1b8f9a5b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckfitwindow.js
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Stretch the editor to full window size and back.
- */
-
-var FCKFitWindow = function()
-{
- this.Name = 'FitWindow' ;
-}
-
-FCKFitWindow.prototype.Execute = function()
-{
- var eEditorFrame = window.frameElement ;
- var eEditorFrameStyle = eEditorFrame.style ;
-
- var eMainWindow = parent ;
- var eDocEl = eMainWindow.document.documentElement ;
- var eBody = eMainWindow.document.body ;
- var eBodyStyle = eBody.style ;
- var eParent ;
-
- // Save the current selection and scroll position.
- var oRange, oEditorScrollPos ;
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- oRange = new FCKDomRange( FCK.EditorWindow ) ;
- oRange.MoveToSelection() ;
- oEditorScrollPos = FCKTools.GetScrollPosition( FCK.EditorWindow ) ;
- }
- else
- {
- var eTextarea = FCK.EditingArea.Textarea ;
- oRange = !FCKBrowserInfo.IsIE && [ eTextarea.selectionStart, eTextarea.selectionEnd ] ;
- oEditorScrollPos = [ eTextarea.scrollLeft, eTextarea.scrollTop ] ;
- }
-
- // No original style properties known? Go fullscreen.
- if ( !this.IsMaximized )
- {
- // Registering an event handler when the window gets resized.
- if( FCKBrowserInfo.IsIE )
- eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
- else
- eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
-
- // Save the scrollbars position.
- this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
-
- // Save and reset the styles for the entire node tree. They could interfere in the result.
- eParent = eEditorFrame ;
- // The extra () is to avoid a warning with strict error checking. This is ok.
- while( (eParent = eParent.parentNode) )
- {
- if ( eParent.nodeType == 1 )
- {
- eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
- eParent.style.zIndex = FCKConfig.FloatingPanelsZIndex - 1 ;
- }
- }
-
- // Hide IE scrollbars (in strict mode).
- if ( FCKBrowserInfo.IsIE )
- {
- this.documentElementOverflow = eDocEl.style.overflow ;
- eDocEl.style.overflow = 'hidden' ;
- eBodyStyle.overflow = 'hidden' ;
- }
- else
- {
- // Hide the scroolbars in Firefox.
- eBodyStyle.overflow = 'hidden' ;
- eBodyStyle.width = '0px' ;
- eBodyStyle.height = '0px' ;
- }
-
- // Save the IFRAME styles.
- this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
-
- // Resize.
- var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
-
- eEditorFrameStyle.position = "absolute";
- eEditorFrame.offsetLeft ; // Kludge for Safari 3.1 browser bug, do not remove. See #2066.
- eEditorFrameStyle.zIndex = FCKConfig.FloatingPanelsZIndex - 1;
- eEditorFrameStyle.left = "0px";
- eEditorFrameStyle.top = "0px";
- eEditorFrameStyle.width = oViewPaneSize.Width + "px";
- eEditorFrameStyle.height = oViewPaneSize.Height + "px";
-
- // Giving the frame some (huge) borders on his right and bottom
- // side to hide the background that would otherwise show when the
- // editor is in fullsize mode and the window is increased in size
- // not for IE, because IE immediately adapts the editor on resize,
- // without showing any of the background oddly in firefox, the
- // editor seems not to fill the whole frame, so just setting the
- // background of it to white to cover the page laying behind it anyway.
- if ( !FCKBrowserInfo.IsIE )
- {
- eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
- eEditorFrameStyle.backgroundColor = "white";
- }
-
- // Scroll to top left.
- eMainWindow.scrollTo(0, 0);
-
- // Is the editor still not on the top left? Let's find out and fix that as well. (Bug #174)
- var editorPos = FCKTools.GetWindowPosition( eMainWindow, eEditorFrame ) ;
- if ( editorPos.x != 0 )
- eEditorFrameStyle.left = ( -1 * editorPos.x ) + "px" ;
- if ( editorPos.y != 0 )
- eEditorFrameStyle.top = ( -1 * editorPos.y ) + "px" ;
-
- this.IsMaximized = true ;
- }
- else // Resize to original size.
- {
- // Remove the event handler of window resizing.
- if( FCKBrowserInfo.IsIE )
- eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
- else
- eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
-
- // Restore the CSS position for the entire node tree.
- eParent = eEditorFrame ;
- // The extra () is to avoid a warning with strict error checking. This is ok.
- while( (eParent = eParent.parentNode) )
- {
- if ( eParent._fckSavedStyles )
- {
- FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
- eParent._fckSavedStyles = null ;
- }
- }
-
- // Restore IE scrollbars
- if ( FCKBrowserInfo.IsIE )
- eDocEl.style.overflow = this.documentElementOverflow ;
-
- // Restore original size
- FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
-
- // Restore the window scroll position.
- eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
-
- this.IsMaximized = false ;
- }
-
- FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
-
- // It seams that Firefox restarts the editing area when making this changes.
- // On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special
- //configuration, like DisableFFTableHandles and DisableObjectResizing get
- //lost, so we must reset it. Also, the cursor position and selection are
- //also lost, even if you comment the following line (MakeEditable).
- // if ( FCKBrowserInfo.IsGecko10 ) // Initially I thought it was a FF 1.0 only problem.
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- FCK.EditingArea.MakeEditable() ;
-
- FCK.Focus() ;
-
- // Restore the selection and scroll position of inside the document.
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- oRange.Select() ;
- FCK.EditorWindow.scrollTo( oEditorScrollPos.X, oEditorScrollPos.Y ) ;
- }
- else
- {
- if ( !FCKBrowserInfo.IsIE )
- {
- eTextarea.selectionStart = oRange[0] ;
- eTextarea.selectionEnd = oRange[1] ;
- }
- eTextarea.scrollLeft = oEditorScrollPos[0] ;
- eTextarea.scrollTop = oEditorScrollPos[1] ;
- }
-}
-
-FCKFitWindow.prototype.GetState = function()
-{
- if ( FCKConfig.ToolbarLocation != 'In' )
- return FCK_TRISTATE_DISABLED ;
- else
- return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
-}
-
-function FCKFitWindow_Resize()
-{
- var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
-
- var eEditorFrameStyle = window.frameElement.style ;
-
- eEditorFrameStyle.width = oViewPaneSize.Width + 'px' ;
- eEditorFrameStyle.height = oViewPaneSize.Height + 'px' ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckindentcommands.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckindentcommands.js
deleted file mode 100644
index 5ae8de9d8..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckindentcommands.js
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKIndentCommand Class: controls block indentation.
- */
-
-var FCKIndentCommand = function( name, offset )
-{
- this.Name = name ;
- this.Offset = offset ;
- this.IndentCSSProperty = FCKConfig.ContentLangDirection.IEquals( 'ltr' ) ? 'marginLeft' : 'marginRight' ;
-}
-
-FCKIndentCommand._InitIndentModeParameters = function()
-{
- if ( FCKConfig.IndentClasses && FCKConfig.IndentClasses.length > 0 )
- {
- this._UseIndentClasses = true ;
- this._IndentClassMap = {} ;
- for ( var i = 0 ; i < FCKConfig.IndentClasses.length ;i++ )
- this._IndentClassMap[FCKConfig.IndentClasses[i]] = i + 1 ;
- this._ClassNameRegex = new RegExp( '(?:^|\\s+)(' + FCKConfig.IndentClasses.join( '|' ) + ')(?=$|\\s)' ) ;
- }
- else
- this._UseIndentClasses = false ;
-}
-
-
-FCKIndentCommand.prototype =
-{
- Execute : function()
- {
- // Save an undo snapshot before doing anything.
- FCKUndo.SaveUndoStep() ;
-
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
- var bookmark = range.CreateBookmark() ;
-
- // Two cases to handle here: either we're in a list, or not.
- // If we're in a list, then the indent/outdent operations would be done on the list nodes.
- // Otherwise, apply the operation on the nearest block nodes.
- var nearestListBlock = FCKDomTools.GetCommonParentNode( range.StartNode || range.StartContainer ,
- range.EndNode || range.EndContainer,
- ['ul', 'ol'] ) ;
- if ( nearestListBlock )
- this._IndentList( range, nearestListBlock ) ;
- else
- this._IndentBlock( range ) ;
-
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetState : function()
- {
- // Disabled if not WYSIWYG.
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
- return FCK_TRISTATE_DISABLED ;
-
- // Initialize parameters if not already initialzed.
- if ( FCKIndentCommand._UseIndentClasses == undefined )
- FCKIndentCommand._InitIndentModeParameters() ;
-
- // If we're not in a list, and the starting block's indentation is zero, and the current
- // command is the outdent command, then we should return FCK_TRISTATE_DISABLED.
- var startContainer = FCKSelection.GetBoundaryParentElement( true ) ;
- var endContainer = FCKSelection.GetBoundaryParentElement( false ) ;
- var listNode = FCKDomTools.GetCommonParentNode( startContainer, endContainer, ['ul','ol'] ) ;
-
- if ( listNode )
- {
- if ( this.Name.IEquals( 'outdent' ) )
- return FCK_TRISTATE_OFF ;
- var firstItem = FCKTools.GetElementAscensor( startContainer, 'li' ) ;
- if ( !firstItem || !firstItem.previousSibling )
- return FCK_TRISTATE_DISABLED ;
- return FCK_TRISTATE_OFF ;
- }
- if ( ! FCKIndentCommand._UseIndentClasses && this.Name.IEquals( 'indent' ) )
- return FCK_TRISTATE_OFF;
-
- var path = new FCKElementPath( startContainer ) ;
- var firstBlock = path.Block || path.BlockLimit ;
- if ( !firstBlock )
- return FCK_TRISTATE_DISABLED ;
-
- if ( FCKIndentCommand._UseIndentClasses )
- {
- var indentClass = firstBlock.className.match( FCKIndentCommand._ClassNameRegex ) ;
- var indentStep = 0 ;
- if ( indentClass != null )
- {
- indentClass = indentClass[1] ;
- indentStep = FCKIndentCommand._IndentClassMap[indentClass] ;
- }
- if ( ( this.Name == 'outdent' && indentStep == 0 ) ||
- ( this.Name == 'indent' && indentStep == FCKConfig.IndentClasses.length ) )
- return FCK_TRISTATE_DISABLED ;
- return FCK_TRISTATE_OFF ;
- }
- else
- {
- var indent = parseInt( firstBlock.style[this.IndentCSSProperty], 10 ) ;
- if ( isNaN( indent ) )
- indent = 0 ;
- if ( indent <= 0 )
- return FCK_TRISTATE_DISABLED ;
- return FCK_TRISTATE_OFF ;
- }
- },
-
- _IndentBlock : function( range )
- {
- var iterator = new FCKDomRangeIterator( range ) ;
- iterator.EnforceRealBlocks = true ;
-
- range.Expand( 'block_contents' ) ;
- var commonParents = FCKDomTools.GetCommonParents( range.StartContainer, range.EndContainer ) ;
- var nearestParent = commonParents[commonParents.length - 1] ;
- var block ;
-
- while ( ( block = iterator.GetNextParagraph() ) )
- {
- // We don't want to indent subtrees recursively, so only perform the indent operation
- // if the block itself is the nearestParent, or the block's parent is the nearestParent.
- if ( ! ( block == nearestParent || block.parentNode == nearestParent ) )
- continue ;
-
- if ( FCKIndentCommand._UseIndentClasses )
- {
- // Transform current class name to indent step index.
- var indentClass = block.className.match( FCKIndentCommand._ClassNameRegex ) ;
- var indentStep = 0 ;
- if ( indentClass != null )
- {
- indentClass = indentClass[1] ;
- indentStep = FCKIndentCommand._IndentClassMap[indentClass] ;
- }
-
- // Operate on indent step index, transform indent step index back to class name.
- if ( this.Name.IEquals( 'outdent' ) )
- indentStep-- ;
- else if ( this.Name.IEquals( 'indent' ) )
- indentStep++ ;
- indentStep = Math.min( indentStep, FCKConfig.IndentClasses.length ) ;
- indentStep = Math.max( indentStep, 0 ) ;
- var className = block.className.replace( FCKIndentCommand._ClassNameRegex, '' ) ;
- if ( indentStep < 1 )
- block.className = className ;
- else
- block.className = ( className.length > 0 ? className + ' ' : '' ) +
- FCKConfig.IndentClasses[indentStep - 1] ;
- }
- else
- {
- // Offset distance is assumed to be in pixels for now.
- var currentOffset = parseInt( block.style[this.IndentCSSProperty], 10 ) ;
- if ( isNaN( currentOffset ) )
- currentOffset = 0 ;
- currentOffset += this.Offset ;
- currentOffset = Math.max( currentOffset, 0 ) ;
- currentOffset = Math.ceil( currentOffset / this.Offset ) * this.Offset ;
- block.style[this.IndentCSSProperty] = currentOffset ? currentOffset + FCKConfig.IndentUnit : '' ;
- if ( block.getAttribute( 'style' ) == '' )
- block.removeAttribute( 'style' ) ;
- }
- }
- },
-
- _IndentList : function( range, listNode )
- {
- // Our starting and ending points of the range might be inside some blocks under a list item...
- // So before playing with the iterator, we need to expand the block to include the list items.
- var startContainer = range.StartContainer ;
- var endContainer = range.EndContainer ;
- while ( startContainer && startContainer.parentNode != listNode )
- startContainer = startContainer.parentNode ;
- while ( endContainer && endContainer.parentNode != listNode )
- endContainer = endContainer.parentNode ;
-
- if ( ! startContainer || ! endContainer )
- return ;
-
- // Now we can iterate over the individual items on the same tree depth.
- var block = startContainer ;
- var itemsToMove = [] ;
- var stopFlag = false ;
- while ( stopFlag == false )
- {
- if ( block == endContainer )
- stopFlag = true ;
- itemsToMove.push( block ) ;
- block = block.nextSibling ;
- }
- if ( itemsToMove.length < 1 )
- return ;
-
- // Do indent or outdent operations on the array model of the list, not the list's DOM tree itself.
- // The array model demands that it knows as much as possible about the surrounding lists, we need
- // to feed it the further ancestor node that is still a list.
- var listParents = FCKDomTools.GetParents( listNode ) ;
- for ( var i = 0 ; i < listParents.length ; i++ )
- {
- if ( listParents[i].nodeName.IEquals( ['ul', 'ol'] ) )
- {
- listNode = listParents[i] ;
- break ;
- }
- }
- var indentOffset = this.Name.IEquals( 'indent' ) ? 1 : -1 ;
- var startItem = itemsToMove[0] ;
- var lastItem = itemsToMove[ itemsToMove.length - 1 ] ;
- var markerObj = {} ;
-
- // Convert the list DOM tree into a one dimensional array.
- var listArray = FCKDomTools.ListToArray( listNode, markerObj ) ;
-
- // Apply indenting or outdenting on the array.
- var baseIndent = listArray[lastItem._FCK_ListArray_Index].indent ;
- for ( var i = startItem._FCK_ListArray_Index ; i <= lastItem._FCK_ListArray_Index ; i++ )
- listArray[i].indent += indentOffset ;
- for ( var i = lastItem._FCK_ListArray_Index + 1 ; i < listArray.length && listArray[i].indent > baseIndent ; i++ )
- listArray[i].indent += indentOffset ;
-
- /* For debug use only
- var PrintArray = function( listArray, doc )
- {
- var s = [] ;
- for ( var i = 0 ; i < listArray.length ; i++ )
- {
- for ( var j in listArray[i] )
- {
- if ( j != 'contents' )
- s.push( j + ":" + listArray[i][j] + "; " ) ;
- else
- {
- var docFrag = doc.createDocumentFragment() ;
- var tmpNode = doc.createElement( 'span' ) ;
- for ( var k = 0 ; k < listArray[i][j].length ; k++ )
- docFrag.appendChild( listArray[i][j][k].cloneNode( true ) ) ;
- tmpNode.appendChild( docFrag ) ;
- s.push( j + ":" + tmpNode.innerHTML + "; ") ;
- }
- }
- s.push( '\n' ) ;
- }
- alert( s.join('') ) ;
- }
- PrintArray( listArray, FCK.EditorDocument ) ;
- */
-
- // Convert the array back to a DOM forest (yes we might have a few subtrees now).
- // And replace the old list with the new forest.
- var newList = FCKDomTools.ArrayToList( listArray ) ;
- if ( newList )
- listNode.parentNode.replaceChild( newList.listNode, listNode ) ;
-
- // Clean up the markers.
- FCKDomTools.ClearAllMarkers( markerObj ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckjustifycommands.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckjustifycommands.js
deleted file mode 100644
index f72c2cbea..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckjustifycommands.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKJustifyCommand Class: controls block justification.
- */
-
-var FCKJustifyCommand = function( alignValue )
-{
- this.AlignValue = alignValue ;
-
- // Detect whether this is the instance for the default alignment.
- var contentDir = FCKConfig.ContentLangDirection.toLowerCase() ;
- this.IsDefaultAlign = ( alignValue == 'left' && contentDir == 'ltr' ) ||
- ( alignValue == 'right' && contentDir == 'rtl' ) ;
-
- // Get the class name to be used by this instance.
- var cssClassName = this._CssClassName = ( function()
- {
- var classes = FCKConfig.JustifyClasses ;
- if ( classes )
- {
- switch ( alignValue )
- {
- case 'left' :
- return classes[0] || null ;
- case 'center' :
- return classes[1] || null ;
- case 'right' :
- return classes[2] || null ;
- case 'justify' :
- return classes[3] || null ;
- }
- }
- return null ;
- } )() ;
-
- if ( cssClassName && cssClassName.length > 0 )
- this._CssClassRegex = new RegExp( '(?:^|\\s+)' + cssClassName + '(?=$|\\s)' ) ;
-}
-
-FCKJustifyCommand._GetClassNameRegex = function()
-{
- var regex = FCKJustifyCommand._ClassRegex ;
- if ( regex != undefined )
- return regex ;
-
- var names = [] ;
-
- var classes = FCKConfig.JustifyClasses ;
- if ( classes )
- {
- for ( var i = 0 ; i < 4 ; i++ )
- {
- var className = classes[i] ;
- if ( className && className.length > 0 )
- names.push( className ) ;
- }
- }
-
- if ( names.length > 0 )
- regex = new RegExp( '(?:^|\\s+)(?:' + names.join( '|' ) + ')(?=$|\\s)' ) ;
- else
- regex = null ;
-
- return FCKJustifyCommand._ClassRegex = regex ;
-}
-
-FCKJustifyCommand.prototype =
-{
- Execute : function()
- {
- // Save an undo snapshot before doing anything.
- FCKUndo.SaveUndoStep() ;
-
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
-
- var currentState = this.GetState() ;
- if ( currentState == FCK_TRISTATE_DISABLED )
- return ;
-
- // Store a bookmark of the selection since the paragraph iterator might
- // change the DOM tree and break selections.
- var bookmark = range.CreateBookmark() ;
-
- var cssClassName = this._CssClassName ;
-
- // Apply alignment setting for each paragraph.
- var iterator = new FCKDomRangeIterator( range ) ;
- var block ;
- while ( ( block = iterator.GetNextParagraph() ) )
- {
- block.removeAttribute( 'align' ) ;
-
- if ( cssClassName )
- {
- // Remove the any of the alignment classes from the className.
- var className = block.className.replace( FCKJustifyCommand._GetClassNameRegex(), '' ) ;
-
- // Append the desired class name.
- if ( currentState == FCK_TRISTATE_OFF )
- {
- if ( className.length > 0 )
- className += ' ' ;
- block.className = className + cssClassName ;
- }
- else if ( className.length == 0 )
- FCKDomTools.RemoveAttribute( block, 'class' ) ;
- }
- else
- {
- var style = block.style ;
- if ( currentState == FCK_TRISTATE_OFF )
- style.textAlign = this.AlignValue ;
- else
- {
- style.textAlign = '' ;
- if ( style.cssText.length == 0 )
- block.removeAttribute( 'style' ) ;
- }
- }
- }
-
- // Restore previous selection.
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetState : function()
- {
- // Disabled if not WYSIWYG.
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
- return FCK_TRISTATE_DISABLED ;
-
- // Retrieve the first selected block.
- var path = new FCKElementPath( FCKSelection.GetBoundaryParentElement( true ) ) ;
- var firstBlock = path.Block || path.BlockLimit ;
-
- if ( !firstBlock || firstBlock.nodeName.toLowerCase() == 'body' )
- return FCK_TRISTATE_OFF ;
-
- // Check if the desired style is already applied to the block.
- var currentAlign ;
- if ( FCKBrowserInfo.IsIE )
- currentAlign = firstBlock.currentStyle.textAlign ;
- else
- currentAlign = FCK.EditorWindow.getComputedStyle( firstBlock, '' ).getPropertyValue( 'text-align' );
- currentAlign = currentAlign.replace( /(-moz-|-webkit-|start|auto)/i, '' );
- if ( ( !currentAlign && this.IsDefaultAlign ) || currentAlign == this.AlignValue )
- return FCK_TRISTATE_ON ;
- return FCK_TRISTATE_OFF ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcklistcommands.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcklistcommands.js
deleted file mode 100644
index 16f71eade..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcklistcommands.js
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Implementation for the "Insert/Remove Ordered/Unordered List" commands.
- */
-
-var FCKListCommand = function( name, tagName )
-{
- this.Name = name ;
- this.TagName = tagName ;
-}
-
-FCKListCommand.prototype =
-{
- GetState : function()
- {
- // Disabled if not WYSIWYG.
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || ! FCK.EditorWindow )
- return FCK_TRISTATE_DISABLED ;
-
- // We'll use the style system's convention to determine list state here...
- // If the starting block is a descendant of an <ol> or <ul> node, then we're in a list.
- var startContainer = FCKSelection.GetBoundaryParentElement( true ) ;
- var listNode = startContainer ;
- while ( listNode )
- {
- if ( listNode.nodeName.IEquals( [ 'ul', 'ol' ] ) )
- break ;
- listNode = listNode.parentNode ;
- }
- if ( listNode && listNode.nodeName.IEquals( this.TagName ) )
- return FCK_TRISTATE_ON ;
- else
- return FCK_TRISTATE_OFF ;
- },
-
- Execute : function()
- {
- FCKUndo.SaveUndoStep() ;
-
- var doc = FCK.EditorDocument ;
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
- var state = this.GetState() ;
-
- // Midas lists rule #1 says we can create a list even in an empty document.
- // But FCKDomRangeIterator wouldn't run if the document is really empty.
- // So create a paragraph if the document is empty and we're going to create a list.
- if ( state == FCK_TRISTATE_OFF )
- {
- FCKDomTools.TrimNode( doc.body ) ;
- if ( ! doc.body.firstChild )
- {
- var paragraph = doc.createElement( 'p' ) ;
- doc.body.appendChild( paragraph ) ;
- range.MoveToNodeContents( paragraph ) ;
- }
- }
-
- var bookmark = range.CreateBookmark() ;
-
- // Group the blocks up because there are many cases where multiple lists have to be created,
- // or multiple lists have to be cancelled.
- var listGroups = [] ;
- var markerObj = {} ;
- var iterator = new FCKDomRangeIterator( range ) ;
- var block ;
-
- iterator.ForceBrBreak = ( state == FCK_TRISTATE_OFF ) ;
- var nextRangeExists = true ;
- var rangeQueue = null ;
- while ( nextRangeExists )
- {
- while ( ( block = iterator.GetNextParagraph() ) )
- {
- var path = new FCKElementPath( block ) ;
- var listNode = null ;
- var processedFlag = false ;
- var blockLimit = path.BlockLimit ;
-
- // First, try to group by a list ancestor.
- for ( var i = path.Elements.length - 1 ; i >= 0 ; i-- )
- {
- var el = path.Elements[i] ;
- if ( el.nodeName.IEquals( ['ol', 'ul'] ) )
- {
- // If we've encountered a list inside a block limit
- // The last group object of the block limit element should
- // no longer be valid. Since paragraphs after the list
- // should belong to a different group of paragraphs before
- // the list. (Bug #1309)
- if ( blockLimit._FCK_ListGroupObject )
- blockLimit._FCK_ListGroupObject = null ;
-
- var groupObj = el._FCK_ListGroupObject ;
- if ( groupObj )
- groupObj.contents.push( block ) ;
- else
- {
- groupObj = { 'root' : el, 'contents' : [ block ] } ;
- listGroups.push( groupObj ) ;
- FCKDomTools.SetElementMarker( markerObj, el, '_FCK_ListGroupObject', groupObj ) ;
- }
- processedFlag = true ;
- break ;
- }
- }
-
- if ( processedFlag )
- continue ;
-
- // No list ancestor? Group by block limit.
- var root = blockLimit ;
- if ( root._FCK_ListGroupObject )
- root._FCK_ListGroupObject.contents.push( block ) ;
- else
- {
- var groupObj = { 'root' : root, 'contents' : [ block ] } ;
- FCKDomTools.SetElementMarker( markerObj, root, '_FCK_ListGroupObject', groupObj ) ;
- listGroups.push( groupObj ) ;
- }
- }
-
- if ( FCKBrowserInfo.IsIE )
- nextRangeExists = false ;
- else
- {
- if ( rangeQueue == null )
- {
- rangeQueue = [] ;
- var selectionObject = FCKSelection.GetSelection() ;
- if ( selectionObject && listGroups.length == 0 )
- rangeQueue.push( selectionObject.getRangeAt( 0 ) ) ;
- for ( var i = 1 ; selectionObject && i < selectionObject.rangeCount ; i++ )
- rangeQueue.push( selectionObject.getRangeAt( i ) ) ;
- }
- if ( rangeQueue.length < 1 )
- nextRangeExists = false ;
- else
- {
- var internalRange = FCKW3CRange.CreateFromRange( doc, rangeQueue.shift() ) ;
- range._Range = internalRange ;
- range._UpdateElementInfo() ;
- if ( range.StartNode.nodeName.IEquals( 'td' ) )
- range.SetStart( range.StartNode, 1 ) ;
- if ( range.EndNode.nodeName.IEquals( 'td' ) )
- range.SetEnd( range.EndNode, 2 ) ;
- iterator = new FCKDomRangeIterator( range ) ;
- iterator.ForceBrBreak = ( state == FCK_TRISTATE_OFF ) ;
- }
- }
- }
-
- // Now we have two kinds of list groups, groups rooted at a list, and groups rooted at a block limit element.
- // We either have to build lists or remove lists, for removing a list does not makes sense when we are looking
- // at the group that's not rooted at lists. So we have three cases to handle.
- var listsCreated = [] ;
- while ( listGroups.length > 0 )
- {
- var groupObj = listGroups.shift() ;
- if ( state == FCK_TRISTATE_OFF )
- {
- if ( groupObj.root.nodeName.IEquals( ['ul', 'ol'] ) )
- this._ChangeListType( groupObj, markerObj, listsCreated ) ;
- else
- this._CreateList( groupObj, listsCreated ) ;
- }
- else if ( state == FCK_TRISTATE_ON && groupObj.root.nodeName.IEquals( ['ul', 'ol'] ) )
- this._RemoveList( groupObj, markerObj ) ;
- }
-
- // For all new lists created, merge adjacent, same type lists.
- for ( var i = 0 ; i < listsCreated.length ; i++ )
- {
- var listNode = listsCreated[i] ;
- var stopFlag = false ;
- var currentNode = listNode ;
- while ( ! stopFlag )
- {
- currentNode = currentNode.nextSibling ;
- if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 )
- continue ;
- stopFlag = true ;
- }
-
- if ( currentNode && currentNode.nodeName.IEquals( this.TagName ) )
- {
- currentNode.parentNode.removeChild( currentNode ) ;
- while ( currentNode.firstChild )
- listNode.appendChild( currentNode.removeChild( currentNode.firstChild ) ) ;
- }
-
- stopFlag = false ;
- currentNode = listNode ;
- while ( ! stopFlag )
- {
- currentNode = currentNode.previousSibling ;
- if ( currentNode && currentNode.nodeType == 3 && currentNode.nodeValue.search( /^[\n\r\t ]*$/ ) == 0 )
- continue ;
- stopFlag = true ;
- }
- if ( currentNode && currentNode.nodeName.IEquals( this.TagName ) )
- {
- currentNode.parentNode.removeChild( currentNode ) ;
- while ( currentNode.lastChild )
- listNode.insertBefore( currentNode.removeChild( currentNode.lastChild ),
- listNode.firstChild ) ;
- }
- }
-
- // Clean up, restore selection and update toolbar button states.
- FCKDomTools.ClearAllMarkers( markerObj ) ;
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- _ChangeListType : function( groupObj, markerObj, listsCreated )
- {
- // This case is easy...
- // 1. Convert the whole list into a one-dimensional array.
- // 2. Change the list type by modifying the array.
- // 3. Recreate the whole list by converting the array to a list.
- // 4. Replace the original list with the recreated list.
- var listArray = FCKDomTools.ListToArray( groupObj.root, markerObj ) ;
- var selectedListItems = [] ;
- for ( var i = 0 ; i < groupObj.contents.length ; i++ )
- {
- var itemNode = groupObj.contents[i] ;
- itemNode = FCKTools.GetElementAscensor( itemNode, 'li' ) ;
- if ( ! itemNode || itemNode._FCK_ListItem_Processed )
- continue ;
- selectedListItems.push( itemNode ) ;
- FCKDomTools.SetElementMarker( markerObj, itemNode, '_FCK_ListItem_Processed', true ) ;
- }
- var fakeParent = FCKTools.GetElementDocument( groupObj.root ).createElement( this.TagName ) ;
- for ( var i = 0 ; i < selectedListItems.length ; i++ )
- {
- var listIndex = selectedListItems[i]._FCK_ListArray_Index ;
- listArray[listIndex].parent = fakeParent ;
- }
- var newList = FCKDomTools.ArrayToList( listArray, markerObj ) ;
- for ( var i = 0 ; i < newList.listNode.childNodes.length ; i++ )
- {
- if ( newList.listNode.childNodes[i].nodeName.IEquals( this.TagName ) )
- listsCreated.push( newList.listNode.childNodes[i] ) ;
- }
- groupObj.root.parentNode.replaceChild( newList.listNode, groupObj.root ) ;
- },
-
- _CreateList : function( groupObj, listsCreated )
- {
- var contents = groupObj.contents ;
- var doc = FCKTools.GetElementDocument( groupObj.root ) ;
- var listContents = [] ;
-
- // It is possible to have the contents returned by DomRangeIterator to be the same as the root.
- // e.g. when we're running into table cells.
- // In such a case, enclose the childNodes of contents[0] into a <div>.
- if ( contents.length == 1 && contents[0] == groupObj.root )
- {
- var divBlock = doc.createElement( 'div' );
- while ( contents[0].firstChild )
- divBlock.appendChild( contents[0].removeChild( contents[0].firstChild ) ) ;
- contents[0].appendChild( divBlock ) ;
- contents[0] = divBlock ;
- }
-
- // Calculate the common parent node of all content blocks.
- var commonParent = groupObj.contents[0].parentNode ;
- for ( var i = 0 ; i < contents.length ; i++ )
- commonParent = FCKDomTools.GetCommonParents( commonParent, contents[i].parentNode ).pop() ;
-
- // We want to insert things that are in the same tree level only, so calculate the contents again
- // by expanding the selected blocks to the same tree level.
- for ( var i = 0 ; i < contents.length ; i++ )
- {
- var contentNode = contents[i] ;
- while ( contentNode.parentNode )
- {
- if ( contentNode.parentNode == commonParent )
- {
- listContents.push( contentNode ) ;
- break ;
- }
- contentNode = contentNode.parentNode ;
- }
- }
-
- if ( listContents.length < 1 )
- return ;
-
- // Insert the list to the DOM tree.
- var insertAnchor = listContents[listContents.length - 1].nextSibling ;
- var listNode = doc.createElement( this.TagName ) ;
- listsCreated.push( listNode ) ;
- while ( listContents.length )
- {
- var contentBlock = listContents.shift() ;
- var docFrag = doc.createDocumentFragment() ;
- while ( contentBlock.firstChild )
- docFrag.appendChild( contentBlock.removeChild( contentBlock.firstChild ) ) ;
- contentBlock.parentNode.removeChild( contentBlock ) ;
- var listItem = doc.createElement( 'li' ) ;
- listItem.appendChild( docFrag ) ;
- listNode.appendChild( listItem ) ;
- }
- commonParent.insertBefore( listNode, insertAnchor ) ;
- },
-
- _RemoveList : function( groupObj, markerObj )
- {
- // This is very much like the change list type operation.
- // Except that we're changing the selected items' indent to -1 in the list array.
- var listArray = FCKDomTools.ListToArray( groupObj.root, markerObj ) ;
- var selectedListItems = [] ;
- for ( var i = 0 ; i < groupObj.contents.length ; i++ )
- {
- var itemNode = groupObj.contents[i] ;
- itemNode = FCKTools.GetElementAscensor( itemNode, 'li' ) ;
- if ( ! itemNode || itemNode._FCK_ListItem_Processed )
- continue ;
- selectedListItems.push( itemNode ) ;
- FCKDomTools.SetElementMarker( markerObj, itemNode, '_FCK_ListItem_Processed', true ) ;
- }
-
- var lastListIndex = null ;
- for ( var i = 0 ; i < selectedListItems.length ; i++ )
- {
- var listIndex = selectedListItems[i]._FCK_ListArray_Index ;
- listArray[listIndex].indent = -1 ;
- lastListIndex = listIndex ;
- }
-
- // After cutting parts of the list out with indent=-1, we still have to maintain the array list
- // model's nextItem.indent <= currentItem.indent + 1 invariant. Otherwise the array model of the
- // list cannot be converted back to a real DOM list.
- for ( var i = lastListIndex + 1; i < listArray.length ; i++ )
- {
- if ( listArray[i].indent > listArray[i-1].indent + 1 )
- {
- var indentOffset = listArray[i-1].indent + 1 - listArray[i].indent ;
- var oldIndent = listArray[i].indent ;
- while ( listArray[i] && listArray[i].indent >= oldIndent)
- {
- listArray[i].indent += indentOffset ;
- i++ ;
- }
- i-- ;
- }
- }
-
- var newList = FCKDomTools.ArrayToList( listArray, markerObj ) ;
- // If groupObj.root is the last element in its parent, or its nextSibling is a <br>, then we should
- // not add a <br> after the final item. So, check for the cases and trim the <br>.
- if ( groupObj.root.nextSibling == null || groupObj.root.nextSibling.nodeName.IEquals( 'br' ) )
- {
- if ( newList.listNode.lastChild.nodeName.IEquals( 'br' ) )
- newList.listNode.removeChild( newList.listNode.lastChild ) ;
- }
- groupObj.root.parentNode.replaceChild( newList.listNode, groupObj.root ) ;
- }
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js
deleted file mode 100644
index b0e3f8e8b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKNamedCommand Class: represents an internal browser command.
- */
-
-var FCKNamedCommand = function( commandName )
-{
- this.Name = commandName ;
-}
-
-FCKNamedCommand.prototype.Execute = function()
-{
- FCK.ExecuteNamedCommand( this.Name ) ;
-}
-
-FCKNamedCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK.GetNamedCommandState( this.Name ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js
deleted file mode 100644
index 09634901e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKPastePlainTextCommand Class: represents the
- * "Paste as Plain Text" command.
- */
-
-var FCKPastePlainTextCommand = function()
-{
- this.Name = 'PasteText' ;
-}
-
-FCKPastePlainTextCommand.prototype.Execute = function()
-{
- FCK.PasteAsPlainText() ;
-}
-
-FCKPastePlainTextCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK.GetNamedCommandState( 'Paste' ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js
deleted file mode 100644
index b800a8f60..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKPasteWordCommand Class: represents the "Paste from Word" command.
- */
-
-var FCKPasteWordCommand = function()
-{
- this.Name = 'PasteWord' ;
-}
-
-FCKPasteWordCommand.prototype.Execute = function()
-{
- FCK.PasteFromWord() ;
-}
-
-FCKPasteWordCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || FCKConfig.ForcePasteAsPlainText )
- return FCK_TRISTATE_DISABLED ;
- else
- return FCK.GetNamedCommandState( 'Paste' ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckremoveformatcommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckremoveformatcommand.js
deleted file mode 100644
index af37fd23e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckremoveformatcommand.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKRemoveFormatCommand Class: controls the execution of a core style. Core
- * styles are usually represented as buttons in the toolbar., like Bold and
- * Italic.
- */
-
- var FCKRemoveFormatCommand = function()
- {
- this.Name = 'RemoveFormat' ;
- }
-
- FCKRemoveFormatCommand.prototype =
- {
- Execute : function()
- {
- FCKStyles.RemoveAll() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetState : function()
- {
- return FCK.EditorWindow ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
- }
- };
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckshowblocks.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckshowblocks.js
deleted file mode 100644
index 9c9919bed..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckshowblocks.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKShowBlockCommand Class: the "Show Blocks" command.
- */
-
-var FCKShowBlockCommand = function( name, defaultState )
-{
- this.Name = name ;
- if ( defaultState != undefined )
- this._SavedState = defaultState ;
- else
- this._SavedState = null ;
-}
-
-FCKShowBlockCommand.prototype.Execute = function()
-{
- var state = this.GetState() ;
-
- if ( state == FCK_TRISTATE_DISABLED )
- return ;
-
- var body = FCK.EditorDocument.body ;
-
- if ( state == FCK_TRISTATE_ON )
- body.className = body.className.replace( /(^| )FCK__ShowBlocks/g, '' ) ;
- else
- body.className += ' FCK__ShowBlocks' ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- try
- {
- FCK.EditorDocument.selection.createRange().select() ;
- }
- catch ( e )
- {}
- }
- else
- {
- var focus = FCK.EditorWindow.getSelection().focusNode ;
- if ( focus )
- {
- if ( focus.nodeType != 1 )
- focus = focus.parentNode ;
- FCKDomTools.ScrollIntoView( focus, false ) ;
- }
- }
-
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-}
-
-FCKShowBlockCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
-
- // On some cases FCK.EditorDocument.body is not yet available
- if ( !FCK.EditorDocument )
- return FCK_TRISTATE_OFF ;
-
- if ( /FCK__ShowBlocks(?:\s|$)/.test( FCK.EditorDocument.body.className ) )
- return FCK_TRISTATE_ON ;
-
- return FCK_TRISTATE_OFF ;
-}
-
-FCKShowBlockCommand.prototype.SaveState = function()
-{
- this._SavedState = this.GetState() ;
-}
-
-FCKShowBlockCommand.prototype.RestoreState = function()
-{
- if ( this._SavedState != null && this.GetState() != this._SavedState )
- this.Execute() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
deleted file mode 100644
index 4b3266b61..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKStyleCommand Class: represents the "Spell Check" command.
- * (Gecko specific implementation)
- */
-
-var FCKSpellCheckCommand = function()
-{
- this.Name = 'SpellCheck' ;
- this.IsEnabled = ( FCKConfig.SpellChecker != 'ieSpell' ) ;
-}
-
-FCKSpellCheckCommand.prototype.Execute = function()
-{
- switch ( FCKConfig.SpellChecker )
- {
- case 'SpellerPages' :
- FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ;
- break;
-
- case 'WSC' :
- FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'wsc/w.html', 530, 480 ) ;
- }
-}
-
-FCKSpellCheckCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js
deleted file mode 100644
index e41bd2e57..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKStyleCommand Class: represents the "Spell Check" command.
- * (IE specific implementation)
- */
-
-var FCKSpellCheckCommand = function()
-{
- this.Name = 'SpellCheck' ;
- this.IsEnabled = true ;
-}
-
-FCKSpellCheckCommand.prototype.Execute = function()
-{
- switch ( FCKConfig.SpellChecker )
- {
- case 'ieSpell' :
- this._RunIeSpell() ;
- break ;
-
- case 'SpellerPages' :
- FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ;
- break ;
-
- case 'WSC' :
- FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'wsc/w.html', 530, 480 ) ;
- }
-}
-
-FCKSpellCheckCommand.prototype._RunIeSpell = function()
-{
- try
- {
- var oIeSpell = new ActiveXObject( "ieSpell.ieSpellExtension" ) ;
- oIeSpell.CheckAllLinkedDocuments( FCK.EditorDocument ) ;
- }
- catch( e )
- {
- if( e.number == -2146827859 )
- {
- if ( confirm( FCKLang.IeSpellDownload ) )
- window.open( FCKConfig.IeSpellDownloadUrl , 'IeSpellDownload' ) ;
- }
- else
- alert( 'Error Loading ieSpell: ' + e.message + ' (' + e.number + ')' ) ;
- }
-}
-
-FCKSpellCheckCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckstylecommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckstylecommand.js
deleted file mode 100644
index dc220f416..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fckstylecommand.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKStyleCommand Class: represents the "Style" command.
- */
-
-var FCKStyleCommand = function()
-{}
-
-FCKStyleCommand.prototype =
-{
- Name : 'Style',
-
- Execute : function( styleName, styleComboItem )
- {
- FCKUndo.SaveUndoStep() ;
-
- if ( styleComboItem.Selected )
- FCK.Styles.RemoveStyle( styleComboItem.Style ) ;
- else
- FCK.Styles.ApplyStyle( styleComboItem.Style ) ;
-
- FCKUndo.SaveUndoStep() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetState : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || !FCK.EditorDocument )
- return FCK_TRISTATE_DISABLED ;
-
- if ( FCKSelection.GetType() == 'Control' )
- {
- var el = FCKSelection.GetSelectedElement() ;
- if ( !el || !FCKStyles.CheckHasObjectStyle( el.nodeName.toLowerCase() ) )
- return FCK_TRISTATE_DISABLED ;
- }
-
- return FCK_TRISTATE_OFF ;
- }
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktablecommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktablecommand.js
deleted file mode 100644
index dda446b05..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktablecommand.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKPastePlainTextCommand Class: represents the
- * "Paste as Plain Text" command.
- */
-
-var FCKTableCommand = function( command )
-{
- this.Name = command ;
-}
-
-FCKTableCommand.prototype.Execute = function()
-{
- FCKUndo.SaveUndoStep() ;
-
- if ( ! FCKBrowserInfo.IsGecko )
- {
- switch ( this.Name )
- {
- case 'TableMergeRight' :
- return FCKTableHandler.MergeRight() ;
- case 'TableMergeDown' :
- return FCKTableHandler.MergeDown() ;
- }
- }
-
- switch ( this.Name )
- {
- case 'TableInsertRowAfter' :
- return FCKTableHandler.InsertRow( false ) ;
- case 'TableInsertRowBefore' :
- return FCKTableHandler.InsertRow( true ) ;
- case 'TableDeleteRows' :
- return FCKTableHandler.DeleteRows() ;
- case 'TableInsertColumnAfter' :
- return FCKTableHandler.InsertColumn( false ) ;
- case 'TableInsertColumnBefore' :
- return FCKTableHandler.InsertColumn( true ) ;
- case 'TableDeleteColumns' :
- return FCKTableHandler.DeleteColumns() ;
- case 'TableInsertCellAfter' :
- return FCKTableHandler.InsertCell( null, false ) ;
- case 'TableInsertCellBefore' :
- return FCKTableHandler.InsertCell( null, true ) ;
- case 'TableDeleteCells' :
- return FCKTableHandler.DeleteCells() ;
- case 'TableMergeCells' :
- return FCKTableHandler.MergeCells() ;
- case 'TableHorizontalSplitCell' :
- return FCKTableHandler.HorizontalSplitCell() ;
- case 'TableVerticalSplitCell' :
- return FCKTableHandler.VerticalSplitCell() ;
- case 'TableDelete' :
- return FCKTableHandler.DeleteTable() ;
- default :
- return alert( FCKLang.UnknownCommand.replace( /%1/g, this.Name ) ) ;
- }
-}
-
-FCKTableCommand.prototype.GetState = function()
-{
- if ( FCK.EditorDocument != null && FCKSelection.HasAncestorNode( 'TABLE' ) )
- {
- switch ( this.Name )
- {
- case 'TableHorizontalSplitCell' :
- case 'TableVerticalSplitCell' :
- if ( FCKTableHandler.GetSelectedCells().length == 1 )
- return FCK_TRISTATE_OFF ;
- else
- return FCK_TRISTATE_DISABLED ;
- case 'TableMergeCells' :
- if ( FCKTableHandler.CheckIsSelectionRectangular()
- && FCKTableHandler.GetSelectedCells().length > 1 )
- return FCK_TRISTATE_OFF ;
- else
- return FCK_TRISTATE_DISABLED ;
- case 'TableMergeRight' :
- return FCKTableHandler.GetMergeRightTarget() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
- case 'TableMergeDown' :
- return FCKTableHandler.GetMergeDownTarget() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
- default :
- return FCK_TRISTATE_OFF ;
- }
- }
- else
- return FCK_TRISTATE_DISABLED;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js
deleted file mode 100644
index dccd79462..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * FCKTextColorCommand Class: represents the text color comand. It shows the
- * color selection panel.
- */
-
-// FCKTextColorCommand Constructor
-// type: can be 'ForeColor' or 'BackColor'.
-var FCKTextColorCommand = function( type )
-{
- this.Name = type == 'ForeColor' ? 'TextColor' : 'BGColor' ;
- this.Type = type ;
-
- var oWindow ;
-
- if ( FCKBrowserInfo.IsIE )
- oWindow = window ;
- else if ( FCK.ToolbarSet._IFrame )
- oWindow = FCKTools.GetElementWindow( FCK.ToolbarSet._IFrame ) ;
- else
- oWindow = window.parent ;
-
- this._Panel = new FCKPanel( oWindow ) ;
- this._Panel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ;
- this._Panel.MainNode.className = 'FCK_Panel' ;
- this._CreatePanelBody( this._Panel.Document, this._Panel.MainNode ) ;
- FCK.ToolbarSet.ToolbarItems.GetItem( this.Name ).RegisterPanel( this._Panel ) ;
-
- FCKTools.DisableSelection( this._Panel.Document.body ) ;
-}
-
-FCKTextColorCommand.prototype.Execute = function( panelX, panelY, relElement )
-{
- // Show the Color Panel at the desired position.
- this._Panel.Show( panelX, panelY, relElement ) ;
-}
-
-FCKTextColorCommand.prototype.SetColor = function( color )
-{
- FCKUndo.SaveUndoStep() ;
-
- var style = FCKStyles.GetStyle( '_FCK_' +
- ( this.Type == 'ForeColor' ? 'Color' : 'BackColor' ) ) ;
-
- if ( !color || color.length == 0 )
- FCK.Styles.RemoveStyle( style ) ;
- else
- {
- style.SetVariable( 'Color', color ) ;
- FCKStyles.ApplyStyle( style ) ;
- }
-
- FCKUndo.SaveUndoStep() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-}
-
-FCKTextColorCommand.prototype.GetState = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return FCK_TRISTATE_DISABLED ;
- return FCK_TRISTATE_OFF ;
-}
-
-function FCKTextColorCommand_OnMouseOver()
-{
- this.className = 'ColorSelected' ;
-}
-
-function FCKTextColorCommand_OnMouseOut()
-{
- this.className = 'ColorDeselected' ;
-}
-
-function FCKTextColorCommand_OnClick( ev, command, color )
-{
- this.className = 'ColorDeselected' ;
- command.SetColor( color ) ;
- command._Panel.Hide() ;
-}
-
-function FCKTextColorCommand_AutoOnClick( ev, command )
-{
- this.className = 'ColorDeselected' ;
- command.SetColor( '' ) ;
- command._Panel.Hide() ;
-}
-
-function FCKTextColorCommand_MoreOnClick( ev, command )
-{
- this.className = 'ColorDeselected' ;
- command._Panel.Hide() ;
- FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320,
- FCKTools.Bind( command, command.SetColor ) ) ;
-}
-
-FCKTextColorCommand.prototype._CreatePanelBody = function( targetDocument, targetDiv )
-{
- function CreateSelectionDiv()
- {
- var oDiv = targetDocument.createElement( "DIV" ) ;
- oDiv.className = 'ColorDeselected' ;
- FCKTools.AddEventListenerEx( oDiv, 'mouseover', FCKTextColorCommand_OnMouseOver ) ;
- FCKTools.AddEventListenerEx( oDiv, 'mouseout', FCKTextColorCommand_OnMouseOut ) ;
-
- return oDiv ;
- }
-
- // Create the Table that will hold all colors.
- var oTable = targetDiv.appendChild( targetDocument.createElement( "TABLE" ) ) ;
- oTable.className = 'ForceBaseFont' ; // Firefox 1.5 Bug.
- oTable.style.tableLayout = 'fixed' ;
- oTable.cellPadding = 0 ;
- oTable.cellSpacing = 0 ;
- oTable.border = 0 ;
- oTable.width = 150 ;
-
- var oCell = oTable.insertRow(-1).insertCell(-1) ;
- oCell.colSpan = 8 ;
-
- // Create the Button for the "Automatic" color selection.
- var oDiv = oCell.appendChild( CreateSelectionDiv() ) ;
- oDiv.innerHTML =
- '<table cellspacing="0" cellpadding="0" width="100%" border="0">\
- <tr>\
- <td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\
- <td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\
- </tr>\
- </table>' ;
-
- FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_AutoOnClick, this ) ;
-
- // Dirty hack for Opera, Safari and Firefox 3.
- if ( !FCKBrowserInfo.IsIE )
- oDiv.style.width = '96%' ;
-
- // Create an array of colors based on the configuration file.
- var aColors = FCKConfig.FontColors.toString().split(',') ;
-
- // Create the colors table based on the array.
- var iCounter = 0 ;
- while ( iCounter < aColors.length )
- {
- var oRow = oTable.insertRow(-1) ;
-
- for ( var i = 0 ; i < 8 ; i++, iCounter++ )
- {
- // The div will be created even if no more colors are available.
- // Extra divs will be hidden later in the code. (#1597)
- if ( iCounter < aColors.length )
- {
- var colorParts = aColors[iCounter].split('/') ;
- var colorValue = '#' + colorParts[0] ;
- var colorName = colorParts[1] || colorValue ;
- }
-
- oDiv = oRow.insertCell(-1).appendChild( CreateSelectionDiv() ) ;
- oDiv.innerHTML = '<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: ' + colorValue + '"></div></div>' ;
-
- if ( iCounter >= aColors.length )
- oDiv.style.visibility = 'hidden' ;
- else
- FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_OnClick, [ this, colorName ] ) ;
- }
- }
-
- // Create the Row and the Cell for the "More Colors..." button.
- if ( FCKConfig.EnableMoreFontColors )
- {
- oCell = oTable.insertRow(-1).insertCell(-1) ;
- oCell.colSpan = 8 ;
-
- oDiv = oCell.appendChild( CreateSelectionDiv() ) ;
- oDiv.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">' + FCKLang.ColorMoreColors + '</td></tr></table>' ;
-
- FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_MoreOnClick, this ) ;
- }
-
- // Dirty hack for Opera, Safari and Firefox 3.
- if ( !FCKBrowserInfo.IsIE )
- oDiv.style.width = '96%' ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckconstants.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckconstants.js
deleted file mode 100644
index 2c42295c0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckconstants.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines some constants used by the editor. These constants are also
- * globally available in the page where the editor is placed.
- */
-
-// Editor Instance Status.
-var FCK_STATUS_NOTLOADED = window.parent.FCK_STATUS_NOTLOADED = 0 ;
-var FCK_STATUS_ACTIVE = window.parent.FCK_STATUS_ACTIVE = 1 ;
-var FCK_STATUS_COMPLETE = window.parent.FCK_STATUS_COMPLETE = 2 ;
-
-// Tristate Operations.
-var FCK_TRISTATE_OFF = window.parent.FCK_TRISTATE_OFF = 0 ;
-var FCK_TRISTATE_ON = window.parent.FCK_TRISTATE_ON = 1 ;
-var FCK_TRISTATE_DISABLED = window.parent.FCK_TRISTATE_DISABLED = -1 ;
-
-// For unknown values.
-var FCK_UNKNOWN = window.parent.FCK_UNKNOWN = -9 ;
-
-// Toolbar Items Style.
-var FCK_TOOLBARITEM_ONLYICON = window.parent.FCK_TOOLBARITEM_ONLYICON = 0 ;
-var FCK_TOOLBARITEM_ONLYTEXT = window.parent.FCK_TOOLBARITEM_ONLYTEXT = 1 ;
-var FCK_TOOLBARITEM_ICONTEXT = window.parent.FCK_TOOLBARITEM_ICONTEXT = 2 ;
-
-// Edit Mode
-var FCK_EDITMODE_WYSIWYG = window.parent.FCK_EDITMODE_WYSIWYG = 0 ;
-var FCK_EDITMODE_SOURCE = window.parent.FCK_EDITMODE_SOURCE = 1 ;
-
-var FCK_IMAGES_PATH = 'images/' ; // Check usage.
-var FCK_SPACER_PATH = 'images/spacer.gif' ;
-
-var CTRL = 1000 ;
-var SHIFT = 2000 ;
-var ALT = 4000 ;
-
-var FCK_STYLE_BLOCK = 0 ;
-var FCK_STYLE_INLINE = 1 ;
-var FCK_STYLE_OBJECT = 2 ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckeditorapi.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckeditorapi.js
deleted file mode 100644
index 2d8f0bd98..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckeditorapi.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Create the FCKeditorAPI object that is available as a global object in
- * the page where the editor is placed in.
- */
-
-var FCKeditorAPI ;
-
-function InitializeAPI()
-{
- var oParentWindow = window.parent ;
-
- if ( !( FCKeditorAPI = oParentWindow.FCKeditorAPI ) )
- {
- // Make the FCKeditorAPI object available in the parent window. Use
- // eval so this core runs in the parent's scope and so it will still be
- // available if the editor instance is removed ("Can't execute code
- // from a freed script" error).
-
- // Note: we check the existence of oEditor.GetParentForm because some external
- // code (like JSON) can extend the Object prototype and we get then extra oEditor
- // objects that aren't really FCKeditor instances.
- var sScript =
- 'window.FCKeditorAPI = {' +
- 'Version : "2.6.4",' +
- 'VersionBuild : "21629",' +
- 'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +
-
- 'GetInstance : function( name )' +
- '{' +
- 'return this.Instances[ name ];' +
- '},' +
-
- '_FormSubmit : function()' +
- '{' +
- 'for ( var name in FCKeditorAPI.Instances )' +
- '{' +
- 'var oEditor = FCKeditorAPI.Instances[ name ] ;' +
- 'if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )' +
- 'oEditor.UpdateLinkedField() ;' +
- '}' +
- 'this._FCKOriginalSubmit() ;' +
- '},' +
-
- '_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {' +
- 'Functions : new Array(),' +
- 'IsRunning : false,' +
-
- 'Add : function( f )' +
- '{' +
- 'this.Functions.push( f );' +
- 'if ( !this.IsRunning )' +
- 'this.StartNext();' +
- '},' +
-
- 'StartNext : function()' +
- '{' +
- 'var aQueue = this.Functions ;' +
- 'if ( aQueue.length > 0 )' +
- '{' +
- 'this.IsRunning = true;' +
- 'aQueue[0].call();' +
- '}' +
- 'else ' +
- 'this.IsRunning = false;' +
- '},' +
-
- 'Remove : function( f )' +
- '{' +
- 'var aQueue = this.Functions;' +
- 'var i = 0, fFunc;' +
- 'while( (fFunc = aQueue[ i ]) )' +
- '{' +
- 'if ( fFunc == f )' +
- 'aQueue.splice( i,1 );' +
- 'i++ ;' +
- '}' +
- 'this.StartNext();' +
- '}' +
- '}' +
- '}' ;
-
- // In IE, the "eval" function is not always available (it works with
- // the JavaScript samples, but not with the ASP ones, for example).
- // So, let's use the execScript instead.
- if ( oParentWindow.execScript )
- oParentWindow.execScript( sScript, 'JavaScript' ) ;
- else
- {
- if ( FCKBrowserInfo.IsGecko10 )
- {
- // FF 1.0.4 gives an error with the request bellow. The
- // following seams to work well.
- eval.call( oParentWindow, sScript ) ;
- }
- else if( FCKBrowserInfo.IsAIR )
- {
- FCKAdobeAIR.FCKeditorAPI_Evaluate( oParentWindow, sScript ) ;
- }
- else if ( FCKBrowserInfo.IsSafari )
- {
- // oParentWindow.eval in Safari executes in the calling window
- // environment, instead of the parent one. The following should
- // make it work.
- var oParentDocument = oParentWindow.document ;
- var eScript = oParentDocument.createElement('script') ;
- eScript.appendChild( oParentDocument.createTextNode( sScript ) ) ;
- oParentDocument.documentElement.appendChild( eScript ) ;
- }
- else
- oParentWindow.eval( sScript ) ;
- }
-
- FCKeditorAPI = oParentWindow.FCKeditorAPI ;
-
- // The __Instances properly has been changed to the public Instances,
- // but we should still have the "deprecated" version of it.
- FCKeditorAPI.__Instances = FCKeditorAPI.Instances ;
- }
-
- // Add the current instance to the FCKeditorAPI's instances collection.
- FCKeditorAPI.Instances[ FCK.Name ] = FCK ;
-}
-
-// Attach to the form onsubmit event and to the form.submit().
-function _AttachFormSubmitToAPI()
-{
- // Get the linked field form.
- var oForm = FCK.GetParentForm() ;
-
- if ( oForm )
- {
- // Attach to the onsubmit event.
- FCKTools.AddEventListener( oForm, 'submit', FCK.UpdateLinkedField ) ;
-
- // IE sees oForm.submit function as an 'object'.
- if ( !oForm._FCKOriginalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )
- {
- // Save the original submit.
- oForm._FCKOriginalSubmit = oForm.submit ;
-
- // Create our replacement for the submit.
- oForm.submit = FCKeditorAPI._FormSubmit ;
- }
- }
-}
-
-function FCKeditorAPI_Cleanup()
-{
- if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat
- && !window.FCKUnloadFlag )
- return ;
- delete FCKeditorAPI.Instances[ FCK.Name ] ;
-}
-function FCKeditorAPI_ConfirmCleanup()
-{
- if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat )
- window.FCKUnloadFlag = true ;
-}
-FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;
-FCKTools.AddEventListener( window, 'beforeunload', FCKeditorAPI_ConfirmCleanup) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckjscoreextensions.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckjscoreextensions.js
deleted file mode 100644
index c9d5a1368..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckjscoreextensions.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Extensions to the JavaScript Core.
- *
- * All custom extensions functions are PascalCased to differ from the standard
- * camelCased ones.
- */
-
-String.prototype.Contains = function( textToCheck )
-{
- return ( this.indexOf( textToCheck ) > -1 ) ;
-}
-
-String.prototype.Equals = function()
-{
- var aArgs = arguments ;
-
- // The arguments could also be a single array.
- if ( aArgs.length == 1 && aArgs[0].pop )
- aArgs = aArgs[0] ;
-
- for ( var i = 0 ; i < aArgs.length ; i++ )
- {
- if ( this == aArgs[i] )
- return true ;
- }
- return false ;
-}
-
-String.prototype.IEquals = function()
-{
- var thisUpper = this.toUpperCase() ;
-
- var aArgs = arguments ;
-
- // The arguments could also be a single array.
- if ( aArgs.length == 1 && aArgs[0].pop )
- aArgs = aArgs[0] ;
-
- for ( var i = 0 ; i < aArgs.length ; i++ )
- {
- if ( thisUpper == aArgs[i].toUpperCase() )
- return true ;
- }
- return false ;
-}
-
-String.prototype.ReplaceAll = function( searchArray, replaceArray )
-{
- var replaced = this ;
-
- for ( var i = 0 ; i < searchArray.length ; i++ )
- {
- replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
- }
-
- return replaced ;
-}
-
-String.prototype.StartsWith = function( value )
-{
- return ( this.substr( 0, value.length ) == value ) ;
-}
-
-// Extends the String object, creating a "EndsWith" method on it.
-String.prototype.EndsWith = function( value, ignoreCase )
-{
- var L1 = this.length ;
- var L2 = value.length ;
-
- if ( L2 > L1 )
- return false ;
-
- if ( ignoreCase )
- {
- var oRegex = new RegExp( value + '$' , 'i' ) ;
- return oRegex.test( this ) ;
- }
- else
- return ( L2 == 0 || this.substr( L1 - L2, L2 ) == value ) ;
-}
-
-String.prototype.Remove = function( start, length )
-{
- var s = '' ;
-
- if ( start > 0 )
- s = this.substring( 0, start ) ;
-
- if ( start + length < this.length )
- s += this.substring( start + length , this.length ) ;
-
- return s ;
-}
-
-String.prototype.Trim = function()
-{
- // We are not using \s because we don't want "non-breaking spaces to be caught".
- return this.replace( /(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '' ) ;
-}
-
-String.prototype.LTrim = function()
-{
- // We are not using \s because we don't want "non-breaking spaces to be caught".
- return this.replace( /^[ \t\n\r]*/g, '' ) ;
-}
-
-String.prototype.RTrim = function()
-{
- // We are not using \s because we don't want "non-breaking spaces to be caught".
- return this.replace( /[ \t\n\r]*$/g, '' ) ;
-}
-
-String.prototype.ReplaceNewLineChars = function( replacement )
-{
- return this.replace( /\n/g, replacement ) ;
-}
-
-String.prototype.Replace = function( regExp, replacement, thisObj )
-{
- if ( typeof replacement == 'function' )
- {
- return this.replace( regExp,
- function()
- {
- return replacement.apply( thisObj || this, arguments ) ;
- } ) ;
- }
- else
- return this.replace( regExp, replacement ) ;
-}
-
-Array.prototype.IndexOf = function( value )
-{
- for ( var i = 0 ; i < this.length ; i++ )
- {
- if ( this[i] == value )
- return i ;
- }
- return -1 ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckscriptloader.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckscriptloader.js
deleted file mode 100644
index a5c068706..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/fckscriptloader.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is a utility object which can be used to load specific components of
- * FCKeditor, including all dependencies.
- */
-
-var FCK_GENERIC = 1 ;
-var FCK_GENERIC_SPECIFIC = 2 ;
-var FCK_SPECIFIC = 3 ;
-
-var FCKScriptLoader = new Object() ;
-FCKScriptLoader.FCKeditorPath = '/fckeditor/' ;
-
-FCKScriptLoader._Scripts = new Object() ;
-FCKScriptLoader._LoadedScripts = new Object() ;
-
-FCKScriptLoader._IsIE = (/msie/).test( navigator.userAgent.toLowerCase() ) ;
-
-FCKScriptLoader.Load = function( scriptName )
-{
- // Check if the script has already been loaded.
- if ( scriptName in FCKScriptLoader._LoadedScripts )
- return ;
-
- FCKScriptLoader._LoadedScripts[ scriptName ] = true ;
-
- var oScriptInfo = this._Scripts[ scriptName ] ;
-
- if ( !oScriptInfo )
- {
- alert( 'FCKScriptLoader: The script "' + scriptName + '" could not be loaded' ) ;
- return ;
- }
-
- for ( var i = 0 ; i < oScriptInfo.Dependency.length ; i++ )
- {
- this.Load( oScriptInfo.Dependency[i] ) ;
- }
-
- var sBaseScriptName = oScriptInfo.BasePath + scriptName.toLowerCase() ;
-
- if ( oScriptInfo.Compatibility == FCK_GENERIC || oScriptInfo.Compatibility == FCK_GENERIC_SPECIFIC )
- this._LoadScript( sBaseScriptName + '.js' ) ;
-
- if ( oScriptInfo.Compatibility == FCK_SPECIFIC || oScriptInfo.Compatibility == FCK_GENERIC_SPECIFIC )
- {
- if ( this._IsIE )
- this._LoadScript( sBaseScriptName + '_ie.js' ) ;
- else
- this._LoadScript( sBaseScriptName + '_gecko.js' ) ;
- }
-}
-
-FCKScriptLoader._LoadScript = function( scriptPathFromSource )
-{
- document.write( '<script type="text/javascript" src="' + this.FCKeditorPath + 'editor/_source/' + scriptPathFromSource + '"><\/script>' ) ;
-}
-
-FCKScriptLoader.AddScript = function( scriptName, scriptBasePath, dependency, compatibility )
-{
- this._Scripts[ scriptName ] =
- {
- BasePath : scriptBasePath || '',
- Dependency : dependency || [],
- Compatibility : compatibility || FCK_GENERIC
- } ;
-}
-
-/*
- * ####################################
- * ### Scripts Definition List
- */
-
-FCKScriptLoader.AddScript( 'FCKConstants' ) ;
-FCKScriptLoader.AddScript( 'FCKJSCoreExtensions' ) ;
-
-FCKScriptLoader.AddScript( 'FCK_Xhtml10Transitional', '../dtd/' ) ;
-
-FCKScriptLoader.AddScript( 'FCKDataProcessor' , 'classes/' , ['FCKConfig','FCKBrowserInfo','FCKRegexLib','FCKXHtml'] ) ;
-FCKScriptLoader.AddScript( 'FCKDocumentFragment', 'classes/' , ['FCKDomTools'], FCK_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKDomRange' , 'classes/' , ['FCKBrowserInfo','FCKJSCoreExtensions','FCKW3CRange','FCKElementPath','FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKDomRangeIterator', 'classes/' , ['FCKDomRange','FCKListsLib'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKElementPath' , 'classes/' , ['FCKListsLib'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKEnterKey' , 'classes/' , ['FCKDomRange','FCKDomTools','FCKTools','FCKKeystrokeHandler','FCKListHandler'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKPanel' , 'classes/' , ['FCKBrowserInfo','FCKConfig','FCKTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKImagePreloader' , 'classes/' ) ;
-FCKScriptLoader.AddScript( 'FCKKeystrokeHandler', 'classes/' , ['FCKConstants','FCKBrowserInfo','FCKTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKStyle' , 'classes/' , ['FCKConstants','FCKDomRange','FCKDomRangeIterator','FCKDomTools','FCKListsLib','FCK_Xhtml10Transitional'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKW3CRange' , 'classes/' , ['FCKDomTools','FCKTools','FCKDocumentFragment'], FCK_GENERIC ) ;
-
-FCKScriptLoader.AddScript( 'FCKBrowserInfo' , 'internals/' , ['FCKJSCoreExtensions'] ) ;
-FCKScriptLoader.AddScript( 'FCKCodeFormatter' , 'internals/' ) ;
-FCKScriptLoader.AddScript( 'FCKConfig' , 'internals/' , ['FCKBrowserInfo','FCKConstants'] ) ;
-FCKScriptLoader.AddScript( 'FCKDebug' , 'internals/' , ['FCKConfig'] ) ;
-FCKScriptLoader.AddScript( 'FCKDomTools' , 'internals/' , ['FCKJSCoreExtensions','FCKBrowserInfo','FCKTools','FCKDomRange'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKListsLib' , 'internals/' ) ;
-FCKScriptLoader.AddScript( 'FCKListHandler' , 'internals/' , ['FCKConfig', 'FCKDocumentFragment', 'FCKJSCoreExtensions','FCKDomTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKRegexLib' , 'internals/' ) ;
-FCKScriptLoader.AddScript( 'FCKStyles' , 'internals/' , ['FCKConfig', 'FCKDocumentFragment', 'FCKDomRange','FCKDomTools','FCKElementPath','FCKTools'], FCK_GENERIC ) ;
-FCKScriptLoader.AddScript( 'FCKTools' , 'internals/' , ['FCKJSCoreExtensions','FCKBrowserInfo'], FCK_GENERIC_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKXHtml' , 'internals/' , ['FCKBrowserInfo','FCKCodeFormatter','FCKConfig','FCKDomTools','FCKListsLib','FCKRegexLib','FCKTools','FCKXHtmlEntities'], FCK_GENERIC_SPECIFIC ) ;
-FCKScriptLoader.AddScript( 'FCKXHtmlEntities' , 'internals/' , ['FCKConfig'] ) ;
-
-// ####################################
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck.js
deleted file mode 100644
index e5fd3ab16..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck.js
+++ /dev/null
@@ -1,1256 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Creation and initialization of the "FCK" object. This is the main object
- * that represents an editor instance.
- */
-
-// FCK represents the active editor instance.
-var FCK =
-{
- Name : FCKURLParams[ 'InstanceName' ],
- Status : FCK_STATUS_NOTLOADED,
- EditMode : FCK_EDITMODE_WYSIWYG,
- Toolbar : null,
- HasFocus : false,
- DataProcessor : new FCKDataProcessor(),
-
- GetInstanceObject : (function()
- {
- var w = window ;
- return function( name )
- {
- return w[name] ;
- }
- })(),
-
- AttachToOnSelectionChange : function( functionPointer )
- {
- this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ;
- },
-
- GetLinkedFieldValue : function()
- {
- return this.LinkedField.value ;
- },
-
- GetParentForm : function()
- {
- return this.LinkedField.form ;
- } ,
-
- // # START : IsDirty implementation
-
- StartupValue : '',
-
- IsDirty : function()
- {
- if ( this.EditMode == FCK_EDITMODE_SOURCE )
- return ( this.StartupValue != this.EditingArea.Textarea.value ) ;
- else
- {
- // It can happen switching between design and source mode in Gecko
- if ( ! this.EditorDocument )
- return false ;
-
- return ( this.StartupValue != this.EditorDocument.body.innerHTML ) ;
- }
- },
-
- ResetIsDirty : function()
- {
- if ( this.EditMode == FCK_EDITMODE_SOURCE )
- this.StartupValue = this.EditingArea.Textarea.value ;
- else if ( this.EditorDocument.body )
- this.StartupValue = this.EditorDocument.body.innerHTML ;
- },
-
- // # END : IsDirty implementation
-
- StartEditor : function()
- {
- this.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
-
- // Setup the keystroke handler.
- var oKeystrokeHandler = FCK.KeystrokeHandler = new FCKKeystrokeHandler() ;
- oKeystrokeHandler.OnKeystroke = _FCK_KeystrokeHandler_OnKeystroke ;
-
- // Set the config keystrokes.
- oKeystrokeHandler.SetKeystrokes( FCKConfig.Keystrokes ) ;
-
- // In IE7, if the editor tries to access the clipboard by code, a dialog is
- // shown to the user asking if the application is allowed to access or not.
- // Due to the IE implementation of it, the KeystrokeHandler will not work
- //well in this case, so we must leave the pasting keys to have their default behavior.
- if ( FCKBrowserInfo.IsIE7 )
- {
- if ( ( CTRL + 86 /*V*/ ) in oKeystrokeHandler.Keystrokes )
- oKeystrokeHandler.SetKeystrokes( [ CTRL + 86, true ] ) ;
-
- if ( ( SHIFT + 45 /*INS*/ ) in oKeystrokeHandler.Keystrokes )
- oKeystrokeHandler.SetKeystrokes( [ SHIFT + 45, true ] ) ;
- }
-
- // Retain default behavior for Ctrl-Backspace. (Bug #362)
- oKeystrokeHandler.SetKeystrokes( [ CTRL + 8, true ] ) ;
-
- this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
- this.EditingArea.FFSpellChecker = FCKConfig.FirefoxSpellChecker ;
-
- // Set the editor's startup contents.
- this.SetData( this.GetLinkedFieldValue(), true ) ;
-
- // Tab key handling for source mode.
- FCKTools.AddEventListener( document, "keydown", this._TabKeyHandler ) ;
-
- // Add selection change listeners. They must be attached only once.
- this.AttachToOnSelectionChange( _FCK_PaddingNodeListener ) ;
- if ( FCKBrowserInfo.IsGecko )
- this.AttachToOnSelectionChange( this._ExecCheckEmptyBlock ) ;
-
- },
-
- Focus : function()
- {
- FCK.EditingArea.Focus() ;
- },
-
- SetStatus : function( newStatus )
- {
- this.Status = newStatus ;
-
- if ( newStatus == FCK_STATUS_ACTIVE )
- {
- FCKFocusManager.AddWindow( window, true ) ;
-
- if ( FCKBrowserInfo.IsIE )
- FCKFocusManager.AddWindow( window.frameElement, true ) ;
-
- // Force the focus in the editor.
- if ( FCKConfig.StartupFocus )
- FCK.Focus() ;
- }
-
- this.Events.FireEvent( 'OnStatusChange', newStatus ) ;
-
- },
-
- // Fixes the body by moving all inline and text nodes to appropriate block
- // elements.
- FixBody : function()
- {
- var sBlockTag = FCKConfig.EnterMode ;
-
- // In 'br' mode, no fix must be done.
- if ( sBlockTag != 'p' && sBlockTag != 'div' )
- return ;
-
- var oDocument = this.EditorDocument ;
-
- if ( !oDocument )
- return ;
-
- var oBody = oDocument.body ;
-
- if ( !oBody )
- return ;
-
- FCKDomTools.TrimNode( oBody ) ;
-
- var oNode = oBody.firstChild ;
- var oNewBlock ;
-
- while ( oNode )
- {
- var bMoveNode = false ;
-
- switch ( oNode.nodeType )
- {
- // Element Node.
- case 1 :
- var nodeName = oNode.nodeName.toLowerCase() ;
- if ( !FCKListsLib.BlockElements[ nodeName ] &&
- nodeName != 'li' &&
- !oNode.getAttribute('_fckfakelement') &&
- oNode.getAttribute('_moz_dirty') == null )
- bMoveNode = true ;
- break ;
-
- // Text Node.
- case 3 :
- // Ignore space only or empty text.
- if ( oNewBlock || oNode.nodeValue.Trim().length > 0 )
- bMoveNode = true ;
- break;
-
- // Comment Node
- case 8 :
- if ( oNewBlock )
- bMoveNode = true ;
- break;
- }
-
- if ( bMoveNode )
- {
- var oParent = oNode.parentNode ;
-
- if ( !oNewBlock )
- oNewBlock = oParent.insertBefore( oDocument.createElement( sBlockTag ), oNode ) ;
-
- oNewBlock.appendChild( oParent.removeChild( oNode ) ) ;
-
- oNode = oNewBlock.nextSibling ;
- }
- else
- {
- if ( oNewBlock )
- {
- FCKDomTools.TrimNode( oNewBlock ) ;
- oNewBlock = null ;
- }
- oNode = oNode.nextSibling ;
- }
- }
-
- if ( oNewBlock )
- FCKDomTools.TrimNode( oNewBlock ) ;
- },
-
- GetData : function( format )
- {
- // We assume that if the user is in source editing, the editor value must
- // represent the exact contents of the source, as the user wanted it to be.
- if ( FCK.EditMode == FCK_EDITMODE_SOURCE )
- return FCK.EditingArea.Textarea.value ;
-
- this.FixBody() ;
-
- var oDoc = FCK.EditorDocument ;
- if ( !oDoc )
- return null ;
-
- var isFullPage = FCKConfig.FullPage ;
-
- // Call the Data Processor to generate the output data.
- var data = FCK.DataProcessor.ConvertToDataFormat(
- isFullPage ? oDoc.documentElement : oDoc.body,
- !isFullPage,
- FCKConfig.IgnoreEmptyParagraphValue,
- format ) ;
-
- // Restore protected attributes.
- data = FCK.ProtectEventsRestore( data ) ;
-
- if ( FCKBrowserInfo.IsIE )
- data = data.replace( FCKRegexLib.ToReplace, '$1' ) ;
-
- if ( isFullPage )
- {
- if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
- data = FCK.DocTypeDeclaration + '\n' + data ;
-
- if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 )
- data = FCK.XmlDeclaration + '\n' + data ;
- }
-
- return FCKConfig.ProtectedSource.Revert( data ) ;
- },
-
- UpdateLinkedField : function()
- {
- var value = FCK.GetXHTML( FCKConfig.FormatOutput ) ;
-
- if ( FCKConfig.HtmlEncodeOutput )
- value = FCKTools.HTMLEncode( value ) ;
-
- FCK.LinkedField.value = value ;
- FCK.Events.FireEvent( 'OnAfterLinkedFieldUpdate' ) ;
- },
-
- RegisteredDoubleClickHandlers : new Object(),
-
- OnDoubleClick : function( element )
- {
- var oCalls = FCK.RegisteredDoubleClickHandlers[ element.tagName.toUpperCase() ] ;
-
- if ( oCalls )
- {
- for ( var i = 0 ; i < oCalls.length ; i++ )
- oCalls[ i ]( element ) ;
- }
-
- // Generic handler for any element
- oCalls = FCK.RegisteredDoubleClickHandlers[ '*' ] ;
-
- if ( oCalls )
- {
- for ( var i = 0 ; i < oCalls.length ; i++ )
- oCalls[ i ]( element ) ;
- }
-
- },
-
- // Register objects that can handle double click operations.
- RegisterDoubleClickHandler : function( handlerFunction, tag )
- {
- var nodeName = tag || '*' ;
- nodeName = nodeName.toUpperCase() ;
-
- var aTargets ;
-
- if ( !( aTargets = FCK.RegisteredDoubleClickHandlers[ nodeName ] ) )
- FCK.RegisteredDoubleClickHandlers[ nodeName ] = [ handlerFunction ] ;
- else
- {
- // Check that the event handler isn't already registered with the same listener
- // It doesn't detect function pointers belonging to an object (at least in Gecko)
- if ( aTargets.IndexOf( handlerFunction ) == -1 )
- aTargets.push( handlerFunction ) ;
- }
-
- },
-
- OnAfterSetHTML : function()
- {
- FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
- FCKUndo.SaveUndoStep() ;
-
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
- },
-
- // Saves URLs on links and images on special attributes, so they don't change when
- // moving around.
- ProtectUrls : function( html )
- {
- // <A> href
- html = html.replace( FCKRegexLib.ProtectUrlsA , '$& _fcksavedurl=$1' ) ;
-
- // <IMG> src
- html = html.replace( FCKRegexLib.ProtectUrlsImg , '$& _fcksavedurl=$1' ) ;
-
- // <AREA> href
- html = html.replace( FCKRegexLib.ProtectUrlsArea , '$& _fcksavedurl=$1' ) ;
-
- return html ;
- },
-
- // Saves event attributes (like onclick) so they don't get executed while
- // editing.
- ProtectEvents : function( html )
- {
- return html.replace( FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags ) ;
- },
-
- ProtectEventsRestore : function( html )
- {
- return html.replace( FCKRegexLib.ProtectedEvents, _FCK_ProtectEvents_RestoreEvents ) ;
- },
-
- ProtectTags : function( html )
- {
- var sTags = FCKConfig.ProtectedTags ;
-
- // IE doesn't support <abbr> and it breaks it. Let's protect it.
- if ( FCKBrowserInfo.IsIE )
- sTags += sTags.length > 0 ? '|ABBR|XML|EMBED|OBJECT' : 'ABBR|XML|EMBED|OBJECT' ;
-
- var oRegex ;
- if ( sTags.length > 0 )
- {
- oRegex = new RegExp( '<(' + sTags + ')(?!\w|:)', 'gi' ) ;
- html = html.replace( oRegex, '<FCK:$1' ) ;
-
- oRegex = new RegExp( '<\/(' + sTags + ')>', 'gi' ) ;
- html = html.replace( oRegex, '<\/FCK:$1>' ) ;
- }
-
- // Protect some empty elements. We must do it separately because the
- // original tag may not contain the closing slash, like <hr>:
- // - <meta> tags get executed, so if you have a redirect meta, the
- // content will move to the target page.
- // - <hr> may destroy the document structure if not well
- // positioned. The trick is protect it here and restore them in
- // the FCKDocumentProcessor.
- sTags = 'META' ;
- if ( FCKBrowserInfo.IsIE )
- sTags += '|HR' ;
-
- oRegex = new RegExp( '<((' + sTags + ')(?=\\s|>|/)[\\s\\S]*?)/?>', 'gi' ) ;
- html = html.replace( oRegex, '<FCK:$1 />' ) ;
-
- return html ;
- },
-
- SetData : function( data, resetIsDirty )
- {
- this.EditingArea.Mode = FCK.EditMode ;
-
- // If there was an onSelectionChange listener in IE we must remove it to avoid crashes #1498
- if ( FCKBrowserInfo.IsIE && FCK.EditorDocument )
- {
- FCK.EditorDocument.detachEvent("onselectionchange", Doc_OnSelectionChange ) ;
- }
-
- FCKTempBin.Reset() ;
-
- // Bug #2469: SelectionData.createRange becomes undefined after the editor
- // iframe is changed by FCK.SetData().
- FCK.Selection.Release() ;
-
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- // Save the resetIsDirty for later use (async)
- this._ForceResetIsDirty = ( resetIsDirty === true ) ;
-
- // Protect parts of the code that must remain untouched (and invisible)
- // during editing.
- data = FCKConfig.ProtectedSource.Protect( data ) ;
-
- // Call the Data Processor to transform the data.
- data = FCK.DataProcessor.ConvertToHtml( data ) ;
-
- // Fix for invalid self-closing tags (see #152).
- data = data.replace( FCKRegexLib.InvalidSelfCloseTags, '$1></$2>' ) ;
-
- // Protect event attributes (they could get fired in the editing area).
- data = FCK.ProtectEvents( data ) ;
-
- // Protect some things from the browser itself.
- data = FCK.ProtectUrls( data ) ;
- data = FCK.ProtectTags( data ) ;
-
- // Insert the base tag (FCKConfig.BaseHref), if not exists in the source.
- // The base must be the first tag in the HEAD, to get relative
- // links on styles, for example.
- if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( data ) )
- data = data.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ;
-
- // Build the HTML for the additional things we need on <head>.
- var sHeadExtra = '' ;
-
- if ( !FCKConfig.FullPage )
- sHeadExtra += _FCK_GetEditorAreaStyleTags() ;
-
- if ( FCKBrowserInfo.IsIE )
- sHeadExtra += FCK._GetBehaviorsStyle() ;
- else if ( FCKConfig.ShowBorders )
- sHeadExtra += FCKTools.GetStyleHtml( FCK_ShowTableBordersCSS, true ) ;
-
- sHeadExtra += FCKTools.GetStyleHtml( FCK_InternalCSS, true ) ;
-
- // Attention: do not change it before testing it well (sample07)!
- // This is tricky... if the head ends with <meta ... content type>,
- // Firefox will break. But, it works if we place our extra stuff as
- // the last elements in the HEAD.
- data = data.replace( FCKRegexLib.HeadCloser, sHeadExtra + '$&' ) ;
-
- // Load the HTML in the editing area.
- this.EditingArea.OnLoad = _FCK_EditingArea_OnLoad ;
- this.EditingArea.Start( data ) ;
- }
- else
- {
- // Remove the references to the following elements, as the editing area
- // IFRAME will be removed.
- FCK.EditorWindow = null ;
- FCK.EditorDocument = null ;
- FCKDomTools.PaddingNode = null ;
-
- this.EditingArea.OnLoad = null ;
- this.EditingArea.Start( data ) ;
-
- // Enables the context menu in the textarea.
- this.EditingArea.Textarea._FCKShowContextMenu = true ;
-
- // Removes the enter key handler.
- FCK.EnterKeyHandler = null ;
-
- if ( resetIsDirty )
- this.ResetIsDirty() ;
-
- // Listen for keystroke events.
- FCK.KeystrokeHandler.AttachToElement( this.EditingArea.Textarea ) ;
-
- this.EditingArea.Textarea.focus() ;
-
- FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
- }
-
- if ( FCKBrowserInfo.IsGecko )
- window.onresize() ;
- },
-
- // This collection is used by the browser specific implementations to tell
- // which named commands must be handled separately.
- RedirectNamedCommands : new Object(),
-
- ExecuteNamedCommand : function( commandName, commandParameter, noRedirect, noSaveUndo )
- {
- if ( !noSaveUndo )
- FCKUndo.SaveUndoStep() ;
-
- if ( !noRedirect && FCK.RedirectNamedCommands[ commandName ] != null )
- FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ;
- else
- {
- FCK.Focus() ;
- FCK.EditorDocument.execCommand( commandName, false, commandParameter ) ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- }
-
- if ( !noSaveUndo )
- FCKUndo.SaveUndoStep() ;
- },
-
- GetNamedCommandState : function( commandName )
- {
- try
- {
-
- // Bug #50 : Safari never returns positive state for the Paste command, override that.
- if ( FCKBrowserInfo.IsSafari && FCK.EditorWindow && commandName.IEquals( 'Paste' ) )
- return FCK_TRISTATE_OFF ;
-
- if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) )
- return FCK_TRISTATE_DISABLED ;
- else
- {
- return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ;
- }
- }
- catch ( e )
- {
- return FCK_TRISTATE_OFF ;
- }
- },
-
- GetNamedCommandValue : function( commandName )
- {
- var sValue = '' ;
- var eState = FCK.GetNamedCommandState( commandName ) ;
-
- if ( eState == FCK_TRISTATE_DISABLED )
- return null ;
-
- try
- {
- sValue = this.EditorDocument.queryCommandValue( commandName ) ;
- }
- catch(e) {}
-
- return sValue ? sValue : '' ;
- },
-
- Paste : function( _callListenersOnly )
- {
- // First call 'OnPaste' listeners.
- if ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( 'OnPaste' ) )
- return false ;
-
- // Then call the default implementation.
- return _callListenersOnly || FCK._ExecPaste() ;
- },
-
- PasteFromWord : function()
- {
- FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
- },
-
- Preview : function()
- {
- var sHTML ;
-
- if ( FCKConfig.FullPage )
- {
- if ( FCK.TempBaseTag.length > 0 )
- sHTML = FCK.TempBaseTag + FCK.GetXHTML() ;
- else
- sHTML = FCK.GetXHTML() ;
- }
- else
- {
- sHTML =
- FCKConfig.DocType +
- '<html dir="' + FCKConfig.ContentLangDirection + '">' +
- '<head>' +
- FCK.TempBaseTag +
- '<title>' + FCKLang.Preview + '</title>' +
- _FCK_GetEditorAreaStyleTags() +
- '</head><body' + FCKConfig.GetBodyAttributes() + '>' +
- FCK.GetXHTML() +
- '</body></html>' ;
- }
-
- var iWidth = FCKConfig.ScreenWidth * 0.8 ;
- var iHeight = FCKConfig.ScreenHeight * 0.7 ;
- var iLeft = ( FCKConfig.ScreenWidth - iWidth ) / 2 ;
-
- var sOpenUrl = '' ;
- if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE)
- {
- window._FCKHtmlToLoad = sHTML ;
- sOpenUrl = 'javascript:void( (function(){' +
- 'document.open() ;' +
- 'document.domain="' + document.domain + '" ;' +
- 'document.write( window.opener._FCKHtmlToLoad );' +
- 'document.close() ;' +
- 'window.opener._FCKHtmlToLoad = null ;' +
- '})() )' ;
- }
-
- var oWindow = window.open( sOpenUrl, null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ;
-
- if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE)
- {
- oWindow.document.write( sHTML );
- oWindow.document.close();
- }
-
- },
-
- SwitchEditMode : function( noUndo )
- {
- var bIsWysiwyg = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
-
- // Save the current IsDirty state, so we may restore it after the switch.
- var bIsDirty = FCK.IsDirty() ;
-
- var sHtml ;
-
- // Update the HTML in the view output to show, also update
- // FCKTempBin for IE to avoid #2263.
- if ( bIsWysiwyg )
- {
- FCKCommands.GetCommand( 'ShowBlocks' ).SaveState() ;
- if ( !noUndo && FCKBrowserInfo.IsIE )
- FCKUndo.SaveUndoStep() ;
-
- sHtml = FCK.GetXHTML( FCKConfig.FormatSource ) ;
-
- if ( FCKBrowserInfo.IsIE )
- FCKTempBin.ToHtml() ;
-
- if ( sHtml == null )
- return false ;
- }
- else
- sHtml = this.EditingArea.Textarea.value ;
-
- FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
-
- FCK.SetData( sHtml, !bIsDirty ) ;
-
- // Set the Focus.
- FCK.Focus() ;
-
- // Update the toolbar (Running it directly causes IE to fail).
- FCKTools.RunFunction( FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet ) ;
-
- return true ;
- },
-
- InsertElement : function( element )
- {
- // The parameter may be a string (element name), so transform it in an element.
- if ( typeof element == 'string' )
- element = this.EditorDocument.createElement( element ) ;
-
- var elementName = element.nodeName.toLowerCase() ;
-
- FCKSelection.Restore() ;
-
- // Create a range for the selection. V3 will have a new selection
- // object that may internally supply this feature.
- var range = new FCKDomRange( this.EditorWindow ) ;
-
- // Move to the selection and delete it.
- range.MoveToSelection() ;
- range.DeleteContents() ;
-
- if ( FCKListsLib.BlockElements[ elementName ] != null )
- {
- if ( range.StartBlock )
- {
- if ( range.CheckStartOfBlock() )
- range.MoveToPosition( range.StartBlock, 3 ) ;
- else if ( range.CheckEndOfBlock() )
- range.MoveToPosition( range.StartBlock, 4 ) ;
- else
- range.SplitBlock() ;
- }
-
- range.InsertNode( element ) ;
-
- var next = FCKDomTools.GetNextSourceElement( element, false, null, [ 'hr','br','param','img','area','input' ], true ) ;
-
- // Be sure that we have something after the new element, so we can move the cursor there.
- if ( !next && FCKConfig.EnterMode != 'br')
- {
- next = this.EditorDocument.body.appendChild( this.EditorDocument.createElement( FCKConfig.EnterMode ) ) ;
-
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( next ) ;
- }
-
- if ( FCKListsLib.EmptyElements[ elementName ] == null )
- range.MoveToElementEditStart( element ) ;
- else if ( next )
- range.MoveToElementEditStart( next ) ;
- else
- range.MoveToPosition( element, 4 ) ;
-
- if ( FCKBrowserInfo.IsGeckoLike )
- {
- if ( next )
- FCKDomTools.ScrollIntoView( next, false );
- FCKDomTools.ScrollIntoView( element, false );
- }
- }
- else
- {
- // Insert the node.
- range.InsertNode( element ) ;
-
- // Move the selection right after the new element.
- // DISCUSSION: Should we select the element instead?
- range.SetStart( element, 4 ) ;
- range.SetEnd( element, 4 ) ;
- }
-
- range.Select() ;
- range.Release() ;
-
- // REMOVE IT: The focus should not really be set here. It is up to the
- // calling code to reset the focus if needed.
- this.Focus() ;
-
- return element ;
- },
-
- _InsertBlockElement : function( blockElement )
- {
- },
-
- _IsFunctionKey : function( keyCode )
- {
- // keys that are captured but do not change editor contents
- if ( keyCode >= 16 && keyCode <= 20 )
- // shift, ctrl, alt, pause, capslock
- return true ;
- if ( keyCode == 27 || ( keyCode >= 33 && keyCode <= 40 ) )
- // esc, page up, page down, end, home, left, up, right, down
- return true ;
- if ( keyCode == 45 )
- // insert, no effect on FCKeditor, yet
- return true ;
- return false ;
- },
-
- _KeyDownListener : function( evt )
- {
- if (! evt)
- evt = FCK.EditorWindow.event ;
- if ( FCK.EditorWindow )
- {
- if ( !FCK._IsFunctionKey(evt.keyCode) // do not capture function key presses, like arrow keys or shift/alt/ctrl
- && !(evt.ctrlKey || evt.metaKey) // do not capture Ctrl hotkeys, as they have their snapshot capture logic
- && !(evt.keyCode == 46) ) // do not capture Del, it has its own capture logic in fckenterkey.js
- FCK._KeyDownUndo() ;
- }
- return true ;
- },
-
- _KeyDownUndo : function()
- {
- if ( !FCKUndo.Typing )
- {
- FCKUndo.SaveUndoStep() ;
- FCKUndo.Typing = true ;
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
- }
-
- FCKUndo.TypesCount++ ;
- FCKUndo.Changed = 1 ;
-
- if ( FCKUndo.TypesCount > FCKUndo.MaxTypes )
- {
- FCKUndo.TypesCount = 0 ;
- FCKUndo.SaveUndoStep() ;
- }
- },
-
- _TabKeyHandler : function( evt )
- {
- if ( ! evt )
- evt = window.event ;
-
- var keystrokeValue = evt.keyCode ;
-
- // Pressing <Tab> in source mode should produce a tab space in the text area, not
- // changing the focus to something else.
- if ( keystrokeValue == 9 && FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- {
- if ( FCKBrowserInfo.IsIE )
- {
- var range = document.selection.createRange() ;
- if ( range.parentElement() != FCK.EditingArea.Textarea )
- return true ;
- range.text = '\t' ;
- range.select() ;
- }
- else
- {
- var a = [] ;
- var el = FCK.EditingArea.Textarea ;
- var selStart = el.selectionStart ;
- var selEnd = el.selectionEnd ;
- a.push( el.value.substr(0, selStart ) ) ;
- a.push( '\t' ) ;
- a.push( el.value.substr( selEnd ) ) ;
- el.value = a.join( '' ) ;
- el.setSelectionRange( selStart + 1, selStart + 1 ) ;
- }
-
- if ( evt.preventDefault )
- return evt.preventDefault() ;
-
- return evt.returnValue = false ;
- }
-
- return true ;
- }
-} ;
-
-FCK.Events = new FCKEvents( FCK ) ;
-
-// DEPRECATED in favor or "GetData".
-FCK.GetHTML = FCK.GetXHTML = FCK.GetData ;
-
-// DEPRECATED in favor of "SetData".
-FCK.SetHTML = FCK.SetData ;
-
-// InsertElementAndGetIt and CreateElement are Deprecated : returns the same value as InsertElement.
-FCK.InsertElementAndGetIt = FCK.CreateElement = FCK.InsertElement ;
-
-// Replace all events attributes (like onclick).
-function _FCK_ProtectEvents_ReplaceTags( tagMatch )
-{
- return tagMatch.replace( FCKRegexLib.EventAttributes, _FCK_ProtectEvents_ReplaceEvents ) ;
-}
-
-// Replace an event attribute with its respective __fckprotectedatt attribute.
-// The original event markup will be encoded and saved as the value of the new
-// attribute.
-function _FCK_ProtectEvents_ReplaceEvents( eventMatch, attName )
-{
- return ' ' + attName + '_fckprotectedatt="' + encodeURIComponent( eventMatch ) + '"' ;
-}
-
-function _FCK_ProtectEvents_RestoreEvents( match, encodedOriginal )
-{
- return decodeURIComponent( encodedOriginal ) ;
-}
-
-function _FCK_MouseEventsListener( evt )
-{
- if ( ! evt )
- evt = window.event ;
- if ( evt.type == 'mousedown' )
- FCK.MouseDownFlag = true ;
- else if ( evt.type == 'mouseup' )
- FCK.MouseDownFlag = false ;
- else if ( evt.type == 'mousemove' )
- FCK.Events.FireEvent( 'OnMouseMove', evt ) ;
-}
-
-function _FCK_PaddingNodeListener()
-{
- if ( FCKConfig.EnterMode.IEquals( 'br' ) )
- return ;
- FCKDomTools.EnforcePaddingNode( FCK.EditorDocument, FCKConfig.EnterMode ) ;
-
- if ( ! FCKBrowserInfo.IsIE && FCKDomTools.PaddingNode )
- {
- // Prevent the caret from going between the body and the padding node in Firefox.
- // i.e. <body>|<p></p></body>
- var sel = FCKSelection.GetSelection() ;
- if ( sel && sel.rangeCount == 1 )
- {
- var range = sel.getRangeAt( 0 ) ;
- if ( range.collapsed && range.startContainer == FCK.EditorDocument.body && range.startOffset == 0 )
- {
- range.selectNodeContents( FCKDomTools.PaddingNode ) ;
- range.collapse( true ) ;
- sel.removeAllRanges() ;
- sel.addRange( range ) ;
- }
- }
- }
- else if ( FCKDomTools.PaddingNode )
- {
- // Prevent the caret from going into an empty body but not into the padding node in IE.
- // i.e. <body><p></p>|</body>
- var parentElement = FCKSelection.GetParentElement() ;
- var paddingNode = FCKDomTools.PaddingNode ;
- if ( parentElement && parentElement.nodeName.IEquals( 'body' ) )
- {
- if ( FCK.EditorDocument.body.childNodes.length == 1
- && FCK.EditorDocument.body.firstChild == paddingNode )
- {
- /*
- * Bug #1764: Don't move the selection if the
- * current selection isn't in the editor
- * document.
- */
- if ( FCKSelection._GetSelectionDocument( FCK.EditorDocument.selection ) != FCK.EditorDocument )
- return ;
-
- var range = FCK.EditorDocument.body.createTextRange() ;
- var clearContents = false ;
- if ( !paddingNode.childNodes.firstChild )
- {
- paddingNode.appendChild( FCKTools.GetElementDocument( paddingNode ).createTextNode( '\ufeff' ) ) ;
- clearContents = true ;
- }
- range.moveToElementText( paddingNode ) ;
- range.select() ;
- if ( clearContents )
- range.pasteHTML( '' ) ;
- }
- }
- }
-}
-
-function _FCK_EditingArea_OnLoad()
-{
- // Get the editor's window and document (DOM)
- FCK.EditorWindow = FCK.EditingArea.Window ;
- FCK.EditorDocument = FCK.EditingArea.Document ;
-
- if ( FCKBrowserInfo.IsIE )
- FCKTempBin.ToElements() ;
-
- FCK.InitializeBehaviors() ;
-
- // Listen for mousedown and mouseup events for tracking drag and drops.
- FCK.MouseDownFlag = false ;
- FCKTools.AddEventListener( FCK.EditorDocument, 'mousemove', _FCK_MouseEventsListener ) ;
- FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', _FCK_MouseEventsListener ) ;
- FCKTools.AddEventListener( FCK.EditorDocument, 'mouseup', _FCK_MouseEventsListener ) ;
-
- // Most of the CTRL key combos do not work under Safari for onkeydown and onkeypress (See #1119)
- // But we can use the keyup event to override some of these...
- if ( FCKBrowserInfo.IsSafari )
- {
- var undoFunc = function( evt )
- {
- if ( ! ( evt.ctrlKey || evt.metaKey ) )
- return ;
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return ;
- switch ( evt.keyCode )
- {
- case 89:
- FCKUndo.Redo() ;
- break ;
- case 90:
- FCKUndo.Undo() ;
- break ;
- }
- }
-
- FCKTools.AddEventListener( FCK.EditorDocument, 'keyup', undoFunc ) ;
- }
-
- // Create the enter key handler
- FCK.EnterKeyHandler = new FCKEnterKey( FCK.EditorWindow, FCKConfig.EnterMode, FCKConfig.ShiftEnterMode, FCKConfig.TabSpaces ) ;
-
- // Listen for keystroke events.
- FCK.KeystrokeHandler.AttachToElement( FCK.EditorDocument ) ;
-
- if ( FCK._ForceResetIsDirty )
- FCK.ResetIsDirty() ;
-
- // This is a tricky thing for IE. In some cases, even if the cursor is
- // blinking in the editing, the keystroke handler doesn't catch keyboard
- // events. We must activate the editing area to make it work. (#142).
- if ( FCKBrowserInfo.IsIE && FCK.HasFocus )
- FCK.EditorDocument.body.setActive() ;
-
- FCK.OnAfterSetHTML() ;
-
- // Restore show blocks status.
- FCKCommands.GetCommand( 'ShowBlocks' ).RestoreState() ;
-
- // Check if it is not a startup call, otherwise complete the startup.
- if ( FCK.Status != FCK_STATUS_NOTLOADED )
- return ;
-
- FCK.SetStatus( FCK_STATUS_ACTIVE ) ;
-}
-
-function _FCK_GetEditorAreaStyleTags()
-{
- return FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) +
- FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ;
-}
-
-function _FCK_KeystrokeHandler_OnKeystroke( keystroke, keystrokeValue )
-{
- if ( FCK.Status != FCK_STATUS_COMPLETE )
- return false ;
-
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- switch ( keystrokeValue )
- {
- case 'Paste' :
- return !FCK.Paste() ;
-
- case 'Cut' :
- FCKUndo.SaveUndoStep() ;
- return false ;
- }
- }
- else
- {
- // In source mode, some actions must have their default behavior.
- if ( keystrokeValue.Equals( 'Paste', 'Undo', 'Redo', 'SelectAll', 'Cut' ) )
- return false ;
- }
-
- // The return value indicates if the default behavior of the keystroke must
- // be cancelled. Let's do that only if the Execute() call explicitly returns "false".
- var oCommand = FCK.Commands.GetCommand( keystrokeValue ) ;
-
- // If the command is disabled then ignore the keystroke
- if ( oCommand.GetState() == FCK_TRISTATE_DISABLED )
- return false ;
-
- return ( oCommand.Execute.apply( oCommand, FCKTools.ArgumentsToArray( arguments, 2 ) ) !== false ) ;
-}
-
-// Set the FCK.LinkedField reference to the field that will be used to post the
-// editor data.
-(function()
-{
- // There is a bug on IE... getElementById returns any META tag that has the
- // name set to the ID you are looking for. So the best way in to get the array
- // by names and look for the correct one.
- // As ASP.Net generates a ID that is different from the Name, we must also
- // look for the field based on the ID (the first one is the ID).
-
- var oDocument = window.parent.document ;
-
- // Try to get the field using the ID.
- var eLinkedField = oDocument.getElementById( FCK.Name ) ;
-
- var i = 0;
- while ( eLinkedField || i == 0 )
- {
- if ( eLinkedField && eLinkedField.tagName.toLowerCase().Equals( 'input', 'textarea' ) )
- {
- FCK.LinkedField = eLinkedField ;
- break ;
- }
-
- eLinkedField = oDocument.getElementsByName( FCK.Name )[i++] ;
- }
-})() ;
-
-var FCKTempBin =
-{
- Elements : new Array(),
-
- AddElement : function( element )
- {
- var iIndex = this.Elements.length ;
- this.Elements[ iIndex ] = element ;
- return iIndex ;
- },
-
- RemoveElement : function( index )
- {
- var e = this.Elements[ index ] ;
- this.Elements[ index ] = null ;
- return e ;
- },
-
- Reset : function()
- {
- var i = 0 ;
- while ( i < this.Elements.length )
- this.Elements[ i++ ] = null ;
- this.Elements.length = 0 ;
- },
-
- ToHtml : function()
- {
- for ( var i = 0 ; i < this.Elements.length ; i++ )
- {
- this.Elements[i] = '<div>&nbsp;' + this.Elements[i].outerHTML + '</div>' ;
- this.Elements[i].isHtml = true ;
- }
- },
-
- ToElements : function()
- {
- var node = FCK.EditorDocument.createElement( 'div' ) ;
- for ( var i = 0 ; i < this.Elements.length ; i++ )
- {
- if ( this.Elements[i].isHtml )
- {
- node.innerHTML = this.Elements[i] ;
- this.Elements[i] = node.firstChild.removeChild( node.firstChild.lastChild ) ;
- }
- }
- }
-} ;
-
-
-
-// # Focus Manager: Manages the focus in the editor.
-var FCKFocusManager = FCK.FocusManager =
-{
- IsLocked : false,
-
- AddWindow : function( win, sendToEditingArea )
- {
- var oTarget ;
-
- if ( FCKBrowserInfo.IsIE )
- oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
- else if ( FCKBrowserInfo.IsSafari )
- oTarget = win ;
- else
- oTarget = win.document ;
-
- FCKTools.AddEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
- FCKTools.AddEventListener( oTarget, 'focus', sendToEditingArea ? FCKFocusManager_Win_OnFocus_Area : FCKFocusManager_Win_OnFocus ) ;
- },
-
- RemoveWindow : function( win )
- {
- if ( FCKBrowserInfo.IsIE )
- oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
- else
- oTarget = win.document ;
-
- FCKTools.RemoveEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
- FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus_Area ) ;
- FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus ) ;
- },
-
- Lock : function()
- {
- this.IsLocked = true ;
- },
-
- Unlock : function()
- {
- if ( this._HasPendingBlur )
- FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
-
- this.IsLocked = false ;
- },
-
- _ResetTimer : function()
- {
- this._HasPendingBlur = false ;
-
- if ( this._Timer )
- {
- window.clearTimeout( this._Timer ) ;
- delete this._Timer ;
- }
- }
-} ;
-
-function FCKFocusManager_Win_OnBlur()
-{
- if ( typeof(FCK) != 'undefined' && FCK.HasFocus )
- {
- FCKFocusManager._ResetTimer() ;
- FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
- }
-}
-
-function FCKFocusManager_FireOnBlur()
-{
- if ( FCKFocusManager.IsLocked )
- FCKFocusManager._HasPendingBlur = true ;
- else
- {
- FCK.HasFocus = false ;
- FCK.Events.FireEvent( "OnBlur" ) ;
- }
-}
-
-function FCKFocusManager_Win_OnFocus_Area()
-{
- // Check if we are already focusing the editor (to avoid loops).
- if ( FCKFocusManager._IsFocusing )
- return ;
-
- FCKFocusManager._IsFocusing = true ;
-
- FCK.Focus() ;
- FCKFocusManager_Win_OnFocus() ;
-
- // The above FCK.Focus() call may trigger other focus related functions.
- // So, to avoid a loop, we delay the focusing mark removal, so it get
- // executed after all othre functions have been run.
- FCKTools.RunFunction( function()
- {
- delete FCKFocusManager._IsFocusing ;
- } ) ;
-}
-
-function FCKFocusManager_Win_OnFocus()
-{
- FCKFocusManager._ResetTimer() ;
-
- if ( !FCK.HasFocus && !FCKFocusManager.IsLocked )
- {
- FCK.HasFocus = true ;
- FCK.Events.FireEvent( "OnFocus" ) ;
- }
-}
-
-/*
- * #1633 : Protect the editor iframe from external styles.
- * Notice that we can't use FCKTools.ResetStyles here since FCKTools isn't
- * loaded yet.
- */
-(function()
-{
- var el = window.frameElement ;
- var width = el.width ;
- var height = el.height ;
- if ( /^\d+$/.test( width ) ) width += 'px' ;
- if ( /^\d+$/.test( height ) ) height += 'px' ;
- var style = el.style ;
- style.border = style.padding = style.margin = 0 ;
- style.backgroundColor = 'transparent';
- style.backgroundImage = 'none';
- style.width = width ;
- style.height = height ;
-})() ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_contextmenu.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_contextmenu.js
deleted file mode 100644
index cedcdd8dc..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_contextmenu.js
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCK.ContextMenu object that is responsible for all
- * Context Menu operations in the editing area.
- */
-
-FCK.ContextMenu = new Object() ;
-FCK.ContextMenu.Listeners = new Array() ;
-
-FCK.ContextMenu.RegisterListener = function( listener )
-{
- if ( listener )
- this.Listeners.push( listener ) ;
-}
-
-function FCK_ContextMenu_Init()
-{
- var oInnerContextMenu = FCK.ContextMenu._InnerContextMenu = new FCKContextMenu( FCKBrowserInfo.IsIE ? window : window.parent, FCKLang.Dir ) ;
- oInnerContextMenu.CtrlDisable = FCKConfig.BrowserContextMenuOnCtrl ;
- oInnerContextMenu.OnBeforeOpen = FCK_ContextMenu_OnBeforeOpen ;
- oInnerContextMenu.OnItemClick = FCK_ContextMenu_OnItemClick ;
-
- // Get the registering function.
- var oMenu = FCK.ContextMenu ;
-
- // Register all configured context menu listeners.
- for ( var i = 0 ; i < FCKConfig.ContextMenu.length ; i++ )
- oMenu.RegisterListener( FCK_ContextMenu_GetListener( FCKConfig.ContextMenu[i] ) ) ;
-}
-
-function FCK_ContextMenu_GetListener( listenerName )
-{
- switch ( listenerName )
- {
- case 'Generic' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- menu.AddItem( 'Cut' , FCKLang.Cut , 7, FCKCommands.GetCommand( 'Cut' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- menu.AddItem( 'Copy' , FCKLang.Copy , 8, FCKCommands.GetCommand( 'Copy' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- menu.AddItem( 'Paste' , FCKLang.Paste , 9, FCKCommands.GetCommand( 'Paste' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- }} ;
-
- case 'Table' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- var bIsTable = ( tagName == 'TABLE' ) ;
- var bIsCell = ( !bIsTable && FCKSelection.HasAncestorNode( 'TABLE' ) ) ;
-
- if ( bIsCell )
- {
- menu.AddSeparator() ;
- var oItem = menu.AddItem( 'Cell' , FCKLang.CellCM ) ;
- oItem.AddItem( 'TableInsertCellBefore' , FCKLang.InsertCellBefore, 69 ) ;
- oItem.AddItem( 'TableInsertCellAfter' , FCKLang.InsertCellAfter, 58 ) ;
- oItem.AddItem( 'TableDeleteCells' , FCKLang.DeleteCells, 59 ) ;
- if ( FCKBrowserInfo.IsGecko )
- oItem.AddItem( 'TableMergeCells' , FCKLang.MergeCells, 60,
- FCKCommands.GetCommand( 'TableMergeCells' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- else
- {
- oItem.AddItem( 'TableMergeRight' , FCKLang.MergeRight, 60,
- FCKCommands.GetCommand( 'TableMergeRight' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- oItem.AddItem( 'TableMergeDown' , FCKLang.MergeDown, 60,
- FCKCommands.GetCommand( 'TableMergeDown' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- }
- oItem.AddItem( 'TableHorizontalSplitCell' , FCKLang.HorizontalSplitCell, 61,
- FCKCommands.GetCommand( 'TableHorizontalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- oItem.AddItem( 'TableVerticalSplitCell' , FCKLang.VerticalSplitCell, 61,
- FCKCommands.GetCommand( 'TableVerticalSplitCell' ).GetState() == FCK_TRISTATE_DISABLED ) ;
- oItem.AddSeparator() ;
- oItem.AddItem( 'TableCellProp' , FCKLang.CellProperties, 57,
- FCKCommands.GetCommand( 'TableCellProp' ).GetState() == FCK_TRISTATE_DISABLED ) ;
-
- menu.AddSeparator() ;
- oItem = menu.AddItem( 'Row' , FCKLang.RowCM ) ;
- oItem.AddItem( 'TableInsertRowBefore' , FCKLang.InsertRowBefore, 70 ) ;
- oItem.AddItem( 'TableInsertRowAfter' , FCKLang.InsertRowAfter, 62 ) ;
- oItem.AddItem( 'TableDeleteRows' , FCKLang.DeleteRows, 63 ) ;
-
- menu.AddSeparator() ;
- oItem = menu.AddItem( 'Column' , FCKLang.ColumnCM ) ;
- oItem.AddItem( 'TableInsertColumnBefore', FCKLang.InsertColumnBefore, 71 ) ;
- oItem.AddItem( 'TableInsertColumnAfter' , FCKLang.InsertColumnAfter, 64 ) ;
- oItem.AddItem( 'TableDeleteColumns' , FCKLang.DeleteColumns, 65 ) ;
- }
-
- if ( bIsTable || bIsCell )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'TableDelete' , FCKLang.TableDelete ) ;
- menu.AddItem( 'TableProp' , FCKLang.TableProperties, 39 ) ;
- }
- }} ;
-
- case 'Link' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- var bInsideLink = ( tagName == 'A' || FCKSelection.HasAncestorNode( 'A' ) ) ;
-
- if ( bInsideLink || FCK.GetNamedCommandState( 'Unlink' ) != FCK_TRISTATE_DISABLED )
- {
- // Go up to the anchor to test its properties
- var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ;
- var bIsAnchor = ( oLink && oLink.name.length > 0 && oLink.href.length == 0 ) ;
- // If it isn't a link then don't add the Link context menu
- if ( bIsAnchor )
- return ;
-
- menu.AddSeparator() ;
- menu.AddItem( 'VisitLink', FCKLang.VisitLink ) ;
- menu.AddSeparator() ;
- if ( bInsideLink )
- menu.AddItem( 'Link', FCKLang.EditLink , 34 ) ;
- menu.AddItem( 'Unlink' , FCKLang.RemoveLink , 35 ) ;
- }
- }} ;
-
- case 'Image' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'IMG' && !tag.getAttribute( '_fckfakelement' ) )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Image', FCKLang.ImageProperties, 37 ) ;
- }
- }} ;
-
- case 'Anchor' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- // Go up to the anchor to test its properties
- var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ;
- var bIsAnchor = ( oLink && oLink.name.length > 0 ) ;
-
- if ( bIsAnchor || ( tagName == 'IMG' && tag.getAttribute( '_fckanchor' ) ) )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Anchor', FCKLang.AnchorProp, 36 ) ;
- menu.AddItem( 'AnchorDelete', FCKLang.AnchorDelete ) ;
- }
- }} ;
-
- case 'Flash' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'IMG' && tag.getAttribute( '_fckflash' ) )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Flash', FCKLang.FlashProperties, 38 ) ;
- }
- }} ;
-
- case 'Form' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( FCKSelection.HasAncestorNode('FORM') )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Form', FCKLang.FormProp, 48 ) ;
- }
- }} ;
-
- case 'Checkbox' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'INPUT' && tag.type == 'checkbox' )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Checkbox', FCKLang.CheckboxProp, 49 ) ;
- }
- }} ;
-
- case 'Radio' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'INPUT' && tag.type == 'radio' )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Radio', FCKLang.RadioButtonProp, 50 ) ;
- }
- }} ;
-
- case 'TextField' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'INPUT' && ( tag.type == 'text' || tag.type == 'password' ) )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'TextField', FCKLang.TextFieldProp, 51 ) ;
- }
- }} ;
-
- case 'HiddenField' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'IMG' && tag.getAttribute( '_fckinputhidden' ) )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'HiddenField', FCKLang.HiddenFieldProp, 56 ) ;
- }
- }} ;
-
- case 'ImageButton' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'INPUT' && tag.type == 'image' )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'ImageButton', FCKLang.ImageButtonProp, 55 ) ;
- }
- }} ;
-
- case 'Button' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'INPUT' && ( tag.type == 'button' || tag.type == 'submit' || tag.type == 'reset' ) )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Button', FCKLang.ButtonProp, 54 ) ;
- }
- }} ;
-
- case 'Select' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'SELECT' )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Select', FCKLang.SelectionFieldProp, 53 ) ;
- }
- }} ;
-
- case 'Textarea' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( tagName == 'TEXTAREA' )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'Textarea', FCKLang.TextareaProp, 52 ) ;
- }
- }} ;
-
- case 'BulletedList' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( FCKSelection.HasAncestorNode('UL') )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'BulletedList', FCKLang.BulletedListProp, 27 ) ;
- }
- }} ;
-
- case 'NumberedList' :
- return {
- AddItems : function( menu, tag, tagName )
- {
- if ( FCKSelection.HasAncestorNode('OL') )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'NumberedList', FCKLang.NumberedListProp, 26 ) ;
- }
- }} ;
-
- case 'DivContainer':
- return {
- AddItems : function( menu, tag, tagName )
- {
- var currentBlocks = FCKDomTools.GetSelectedDivContainers() ;
-
- if ( currentBlocks.length > 0 )
- {
- menu.AddSeparator() ;
- menu.AddItem( 'EditDiv', FCKLang.EditDiv, 75 ) ;
- menu.AddItem( 'DeleteDiv', FCKLang.DeleteDiv, 76 ) ;
- }
- }} ;
-
- }
- return null ;
-}
-
-function FCK_ContextMenu_OnBeforeOpen()
-{
- // Update the UI.
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-
- // Get the actual selected tag (if any).
- var oTag, sTagName ;
-
- // The extra () is to avoid a warning with strict error checking. This is ok.
- if ( (oTag = FCKSelection.GetSelectedElement()) )
- sTagName = oTag.tagName ;
-
- // Cleanup the current menu items.
- var oMenu = FCK.ContextMenu._InnerContextMenu ;
- oMenu.RemoveAllItems() ;
-
- // Loop through the listeners.
- var aListeners = FCK.ContextMenu.Listeners ;
- for ( var i = 0 ; i < aListeners.length ; i++ )
- aListeners[i].AddItems( oMenu, oTag, sTagName ) ;
-}
-
-function FCK_ContextMenu_OnItemClick( item )
-{
- // IE might work incorrectly if we refocus the editor #798
- if ( !FCKBrowserInfo.IsIE )
- FCK.Focus() ;
-
- FCKCommands.GetCommand( item.Name ).Execute( item.CustomData ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_gecko.js
deleted file mode 100644
index e36f9ad40..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_gecko.js
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Creation and initialization of the "FCK" object. This is the main
- * object that represents an editor instance.
- * (Gecko specific implementations)
- */
-
-FCK.Description = "FCKeditor for Gecko Browsers" ;
-
-FCK.InitializeBehaviors = function()
-{
- // When calling "SetData", the editing area IFRAME gets a fixed height. So we must recalculate it.
- if ( window.onresize ) // Not for Safari/Opera.
- window.onresize() ;
-
- FCKFocusManager.AddWindow( this.EditorWindow ) ;
-
- this.ExecOnSelectionChange = function()
- {
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
- }
-
- this._ExecDrop = function( evt )
- {
- if ( FCK.MouseDownFlag )
- {
- FCK.MouseDownFlag = false ;
- return ;
- }
-
- if ( FCKConfig.ForcePasteAsPlainText )
- {
- if ( evt.dataTransfer )
- {
- var text = evt.dataTransfer.getData( 'Text' ) ;
- text = FCKTools.HTMLEncode( text ) ;
- text = FCKTools.ProcessLineBreaks( window, FCKConfig, text ) ;
- FCK.InsertHtml( text ) ;
- }
- else if ( FCKConfig.ShowDropDialog )
- FCK.PasteAsPlainText() ;
-
- evt.preventDefault() ;
- evt.stopPropagation() ;
- }
- }
-
- this._ExecCheckCaret = function( evt )
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return ;
-
- if ( evt.type == 'keypress' )
- {
- var keyCode = evt.keyCode ;
- // ignore if positioning key is not pressed.
- // left or up arrow keys need to be processed as well, since <a> links can be expanded in Gecko's editor
- // when the caret moved left or up from another block element below.
- if ( keyCode < 33 || keyCode > 40 )
- return ;
- }
-
- var blockEmptyStop = function( node )
- {
- if ( node.nodeType != 1 )
- return false ;
- var tag = node.tagName.toLowerCase() ;
- return ( FCKListsLib.BlockElements[tag] || FCKListsLib.EmptyElements[tag] ) ;
- }
-
- var moveCursor = function()
- {
- var selection = FCKSelection.GetSelection() ;
- var range = selection.getRangeAt(0) ;
- if ( ! range || ! range.collapsed )
- return ;
-
- var node = range.endContainer ;
-
- // only perform the patched behavior if we're at the end of a text node.
- if ( node.nodeType != 3 )
- return ;
-
- if ( node.nodeValue.length != range.endOffset )
- return ;
-
- // only perform the patched behavior if we're in an <a> tag, or the End key is pressed.
- var parentTag = node.parentNode.tagName.toLowerCase() ;
- if ( ! ( parentTag == 'a' || ( !FCKBrowserInfo.IsOpera && String(node.parentNode.contentEditable) == 'false' ) ||
- ( ! ( FCKListsLib.BlockElements[parentTag] || FCKListsLib.NonEmptyBlockElements[parentTag] )
- && keyCode == 35 ) ) )
- return ;
-
- // our caret has moved to just after the last character of a text node under an unknown tag, how to proceed?
- // first, see if there are other text nodes by DFS walking from this text node.
- // - if the DFS has scanned all nodes under my parent, then go the next step.
- // - if there is a text node after me but still under my parent, then do nothing and return.
- var nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode, blockEmptyStop ) ;
- if ( nextTextNode )
- return ;
-
- // we're pretty sure we need to move the caret forcefully from here.
- range = FCK.EditorDocument.createRange() ;
-
- nextTextNode = FCKTools.GetNextTextNode( node, node.parentNode.parentNode, blockEmptyStop ) ;
- if ( nextTextNode )
- {
- // Opera thinks the dummy empty text node we append beyond the end of <a> nodes occupies a caret
- // position. So if the user presses the left key and we reset the caret position here, the user
- // wouldn't be able to go back.
- if ( FCKBrowserInfo.IsOpera && keyCode == 37 )
- return ;
-
- // now we want to get out of our current parent node, adopt the next parent, and move the caret to
- // the appropriate text node under our new parent.
- // our new parent might be our current parent's siblings if we are lucky.
- range.setStart( nextTextNode, 0 ) ;
- range.setEnd( nextTextNode, 0 ) ;
- }
- else
- {
- // no suitable next siblings under our grandparent! what to do next?
- while ( node.parentNode
- && node.parentNode != FCK.EditorDocument.body
- && node.parentNode != FCK.EditorDocument.documentElement
- && node == node.parentNode.lastChild
- && ( ! FCKListsLib.BlockElements[node.parentNode.tagName.toLowerCase()]
- && ! FCKListsLib.NonEmptyBlockElements[node.parentNode.tagName.toLowerCase()] ) )
- node = node.parentNode ;
-
-
- if ( FCKListsLib.BlockElements[ parentTag ]
- || FCKListsLib.EmptyElements[ parentTag ]
- || node == FCK.EditorDocument.body )
- {
- // if our parent is a block node, move to the end of our parent.
- range.setStart( node, node.childNodes.length ) ;
- range.setEnd( node, node.childNodes.length ) ;
- }
- else
- {
- // things are a little bit more interesting if our parent is not a block node
- // due to the weired ways how Gecko's caret acts...
- var stopNode = node.nextSibling ;
-
- // find out the next block/empty element at our grandparent, we'll
- // move the caret just before it.
- while ( stopNode )
- {
- if ( stopNode.nodeType != 1 )
- {
- stopNode = stopNode.nextSibling ;
- continue ;
- }
-
- var stopTag = stopNode.tagName.toLowerCase() ;
- if ( FCKListsLib.BlockElements[stopTag] || FCKListsLib.EmptyElements[stopTag]
- || FCKListsLib.NonEmptyBlockElements[stopTag] )
- break ;
- stopNode = stopNode.nextSibling ;
- }
-
- // note that the dummy marker below is NEEDED, otherwise the caret's behavior will
- // be broken in Gecko.
- var marker = FCK.EditorDocument.createTextNode( '' ) ;
- if ( stopNode )
- node.parentNode.insertBefore( marker, stopNode ) ;
- else
- node.parentNode.appendChild( marker ) ;
- range.setStart( marker, 0 ) ;
- range.setEnd( marker, 0 ) ;
- }
- }
-
- selection.removeAllRanges() ;
- selection.addRange( range ) ;
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
- }
-
- setTimeout( moveCursor, 1 ) ;
- }
-
- this.ExecOnSelectionChangeTimer = function()
- {
- if ( FCK.LastOnChangeTimer )
- window.clearTimeout( FCK.LastOnChangeTimer ) ;
-
- FCK.LastOnChangeTimer = window.setTimeout( FCK.ExecOnSelectionChange, 100 ) ;
- }
-
- this.EditorDocument.addEventListener( 'mouseup', this.ExecOnSelectionChange, false ) ;
-
- // On Gecko, firing the "OnSelectionChange" event on every key press started to be too much
- // slow. So, a timer has been implemented to solve performance issues when typing to quickly.
- this.EditorDocument.addEventListener( 'keyup', this.ExecOnSelectionChangeTimer, false ) ;
-
- this._DblClickListener = function( e )
- {
- FCK.OnDoubleClick( e.target ) ;
- e.stopPropagation() ;
- }
- this.EditorDocument.addEventListener( 'dblclick', this._DblClickListener, true ) ;
-
- // Record changes for the undo system when there are key down events.
- this.EditorDocument.addEventListener( 'keydown', this._KeyDownListener, false ) ;
-
- // Hooks for data object drops
- if ( FCKBrowserInfo.IsGecko )
- {
- this.EditorWindow.addEventListener( 'dragdrop', this._ExecDrop, true ) ;
- }
- else if ( FCKBrowserInfo.IsSafari )
- {
- this.EditorDocument.addEventListener( 'dragover', function ( evt )
- { if ( !FCK.MouseDownFlag && FCK.Config.ForcePasteAsPlainText ) evt.returnValue = false ; }, true ) ;
- this.EditorDocument.addEventListener( 'drop', this._ExecDrop, true ) ;
- this.EditorDocument.addEventListener( 'mousedown',
- function( ev )
- {
- var element = ev.srcElement ;
-
- if ( element.nodeName.IEquals( 'IMG', 'HR', 'INPUT', 'TEXTAREA', 'SELECT' ) )
- {
- FCKSelection.SelectNode( element ) ;
- }
- }, true ) ;
-
- this.EditorDocument.addEventListener( 'mouseup',
- function( ev )
- {
- if ( ev.srcElement.nodeName.IEquals( 'INPUT', 'TEXTAREA', 'SELECT' ) )
- ev.preventDefault()
- }, true ) ;
-
- this.EditorDocument.addEventListener( 'click',
- function( ev )
- {
- if ( ev.srcElement.nodeName.IEquals( 'INPUT', 'TEXTAREA', 'SELECT' ) )
- ev.preventDefault()
- }, true ) ;
- }
-
- // Kludge for buggy Gecko caret positioning logic (Bug #393 and #1056)
- if ( FCKBrowserInfo.IsGecko || FCKBrowserInfo.IsOpera )
- {
- this.EditorDocument.addEventListener( 'keypress', this._ExecCheckCaret, false ) ;
- this.EditorDocument.addEventListener( 'click', this._ExecCheckCaret, false ) ;
- }
-
- // Reset the context menu.
- FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow( FCK.EditorWindow ) ;
- FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument ) ;
-}
-
-FCK.MakeEditable = function()
-{
- this.EditingArea.MakeEditable() ;
-}
-
-// Disable the context menu in the editor (outside the editing area).
-function Document_OnContextMenu( e )
-{
- if ( !e.target._FCKShowContextMenu )
- e.preventDefault() ;
-}
-document.oncontextmenu = Document_OnContextMenu ;
-
-// GetNamedCommandState overload for Gecko.
-FCK._BaseGetNamedCommandState = FCK.GetNamedCommandState ;
-FCK.GetNamedCommandState = function( commandName )
-{
- switch ( commandName )
- {
- case 'Unlink' :
- return FCKSelection.HasAncestorNode('A') ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
- default :
- return FCK._BaseGetNamedCommandState( commandName ) ;
- }
-}
-
-// Named commands to be handled by this browsers specific implementation.
-FCK.RedirectNamedCommands =
-{
- Print : true,
- Paste : true
-} ;
-
-// ExecuteNamedCommand overload for Gecko.
-FCK.ExecuteRedirectedNamedCommand = function( commandName, commandParameter )
-{
- switch ( commandName )
- {
- case 'Print' :
- FCK.EditorWindow.print() ;
- break ;
- case 'Paste' :
- try
- {
- // Force the paste dialog for Safari (#50).
- if ( FCKBrowserInfo.IsSafari )
- throw '' ;
-
- if ( FCK.Paste() )
- FCK.ExecuteNamedCommand( 'Paste', null, true ) ;
- }
- catch (e) {
- if ( FCKConfig.ForcePasteAsPlainText )
- FCK.PasteAsPlainText() ;
- else
- FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ;
- }
- break ;
- default :
- FCK.ExecuteNamedCommand( commandName, commandParameter ) ;
- }
-}
-
-FCK._ExecPaste = function()
-{
- // Save a snapshot for undo before actually paste the text
- FCKUndo.SaveUndoStep() ;
-
- if ( FCKConfig.ForcePasteAsPlainText )
- {
- FCK.PasteAsPlainText() ;
- return false ;
- }
-
- /* For now, the AutoDetectPasteFromWord feature is IE only. */
- return true ;
-}
-
-//**
-// FCK.InsertHtml: Inserts HTML at the current cursor location. Deletes the
-// selected content if any.
-FCK.InsertHtml = function( html )
-{
- var doc = FCK.EditorDocument,
- range;
-
- html = FCKConfig.ProtectedSource.Protect( html ) ;
- html = FCK.ProtectEvents( html ) ;
- html = FCK.ProtectUrls( html ) ;
- html = FCK.ProtectTags( html ) ;
-
- // Save an undo snapshot first.
- FCKUndo.SaveUndoStep() ;
-
- if ( FCKBrowserInfo.IsGecko )
- {
- html = html.replace( /&nbsp;$/, '$&<span _fcktemp="1"/>' ) ;
-
- var docFrag = new FCKDocumentFragment( this.EditorDocument ) ;
- docFrag.AppendHtml( html ) ;
-
- var lastNode = docFrag.RootNode.lastChild ;
-
- range = new FCKDomRange( this.EditorWindow ) ;
- range.MoveToSelection() ;
- range.DeleteContents() ;
- range.InsertNode( docFrag.RootNode ) ;
-
- range.MoveToPosition( lastNode, 4 ) ;
- }
- else
- doc.execCommand( 'inserthtml', false, html ) ;
-
- this.Focus() ;
-
- // Save the caret position before calling document processor.
- if ( !range )
- {
- range = new FCKDomRange( this.EditorWindow ) ;
- range.MoveToSelection() ;
- }
- var bookmark = range.CreateBookmark() ;
-
- FCKDocumentProcessor.Process( doc ) ;
-
- // Restore caret position, ignore any errors in case the document
- // processor removed the bookmark <span>s for some reason.
- try
- {
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
- }
- catch ( e ) {}
-
- // For some strange reason the SaveUndoStep() call doesn't activate the undo button at the first InsertHtml() call.
- this.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-FCK.PasteAsPlainText = function()
-{
- // TODO: Implement the "Paste as Plain Text" code.
-
- // If the function is called immediately Firefox 2 does automatically paste the contents as soon as the new dialog is created
- // so we run it in a Timeout and the paste event can be cancelled
- FCKTools.RunFunction( FCKDialog.OpenDialog, FCKDialog, ['FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText'] ) ;
-
-/*
- var sText = FCKTools.HTMLEncode( clipboardData.getData("Text") ) ;
- sText = sText.replace( /\n/g, '<BR>' ) ;
- this.InsertHtml( sText ) ;
-*/
-}
-/*
-FCK.PasteFromWord = function()
-{
- // TODO: Implement the "Paste as Plain Text" code.
-
- FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
-
-// FCK.CleanAndPaste( FCK.GetClipboardHTML() ) ;
-}
-*/
-FCK.GetClipboardHTML = function()
-{
- return '' ;
-}
-
-FCK.CreateLink = function( url, noUndo )
-{
- // Creates the array that will be returned. It contains one or more created links (see #220).
- var aCreatedLinks = new Array() ;
-
- // Only for Safari, a collapsed selection may create a link. All other
- // browser will have no links created. So, we check it here and return
- // immediatelly, having the same cross browser behavior.
- if ( FCKSelection.GetSelection().isCollapsed )
- return aCreatedLinks ;
-
- FCK.ExecuteNamedCommand( 'Unlink', null, false, !!noUndo ) ;
-
- if ( url.length > 0 )
- {
- // Generate a temporary name for the link.
- var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
-
- // Use the internal "CreateLink" command to create the link.
- FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl, false, !!noUndo ) ;
-
- // Retrieve the just created links using XPath.
- var oLinksInteractor = this.EditorDocument.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null) ;
-
- // Add all links to the returning array.
- for ( var i = 0 ; i < oLinksInteractor.snapshotLength ; i++ )
- {
- var oLink = oLinksInteractor.snapshotItem( i ) ;
- oLink.href = url ;
-
- aCreatedLinks.push( oLink ) ;
- }
- }
-
- return aCreatedLinks ;
-}
-
-FCK._FillEmptyBlock = function( emptyBlockNode )
-{
- if ( ! emptyBlockNode || emptyBlockNode.nodeType != 1 )
- return ;
- var nodeTag = emptyBlockNode.tagName.toLowerCase() ;
- if ( nodeTag != 'p' && nodeTag != 'div' )
- return ;
- if ( emptyBlockNode.firstChild )
- return ;
- FCKTools.AppendBogusBr( emptyBlockNode ) ;
-}
-
-FCK._ExecCheckEmptyBlock = function()
-{
- FCK._FillEmptyBlock( FCK.EditorDocument.body.firstChild ) ;
- var sel = FCKSelection.GetSelection() ;
- if ( !sel || sel.rangeCount < 1 )
- return ;
- var range = sel.getRangeAt( 0 );
- FCK._FillEmptyBlock( range.startContainer ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_ie.js
deleted file mode 100644
index 0914f83fe..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fck_ie.js
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Creation and initialization of the "FCK" object. This is the main
- * object that represents an editor instance.
- * (IE specific implementations)
- */
-
-FCK.Description = "FCKeditor for Internet Explorer 5.5+" ;
-
-FCK._GetBehaviorsStyle = function()
-{
- if ( !FCK._BehaviorsStyle )
- {
- var sBasePath = FCKConfig.BasePath ;
- var sTableBehavior = '' ;
- var sStyle ;
-
- // The behaviors should be pointed using the BasePath to avoid security
- // errors when using a different BaseHref.
- sStyle = '<style type="text/css" _fcktemp="true">' ;
-
- if ( FCKConfig.ShowBorders )
- sTableBehavior = 'url(' + sBasePath + 'css/behaviors/showtableborders.htc)' ;
-
- // Disable resize handlers.
- sStyle += 'INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden' ;
-
- if ( FCKConfig.DisableObjectResizing )
- {
- sStyle += ',IMG' ;
- sTableBehavior += ' url(' + sBasePath + 'css/behaviors/disablehandles.htc)' ;
- }
-
- sStyle += ' { behavior: url(' + sBasePath + 'css/behaviors/disablehandles.htc) ; }' ;
-
- if ( sTableBehavior.length > 0 )
- sStyle += 'TABLE { behavior: ' + sTableBehavior + ' ; }' ;
-
- sStyle += '</style>' ;
- FCK._BehaviorsStyle = sStyle ;
- }
-
- return FCK._BehaviorsStyle ;
-}
-
-function Doc_OnMouseUp()
-{
- if ( FCK.EditorWindow.event.srcElement.tagName == 'HTML' )
- {
- FCK.Focus() ;
- FCK.EditorWindow.event.cancelBubble = true ;
- FCK.EditorWindow.event.returnValue = false ;
- }
-}
-
-function Doc_OnPaste()
-{
- var body = FCK.EditorDocument.body ;
-
- body.detachEvent( 'onpaste', Doc_OnPaste ) ;
-
- var ret = FCK.Paste( !FCKConfig.ForcePasteAsPlainText && !FCKConfig.AutoDetectPasteFromWord ) ;
-
- body.attachEvent( 'onpaste', Doc_OnPaste ) ;
-
- return ret ;
-}
-
-function Doc_OnDblClick()
-{
- FCK.OnDoubleClick( FCK.EditorWindow.event.srcElement ) ;
- FCK.EditorWindow.event.cancelBubble = true ;
-}
-
-function Doc_OnSelectionChange()
-{
- // Don't fire the event if no document is loaded.
- if ( !FCK.IsSelectionChangeLocked && FCK.EditorDocument )
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-function Doc_OnDrop()
-{
- if ( FCK.MouseDownFlag )
- {
- FCK.MouseDownFlag = false ;
- return ;
- }
-
- if ( FCKConfig.ForcePasteAsPlainText )
- {
- var evt = FCK.EditorWindow.event ;
-
- if ( FCK._CheckIsPastingEnabled() || FCKConfig.ShowDropDialog )
- FCK.PasteAsPlainText( evt.dataTransfer.getData( 'Text' ) ) ;
-
- evt.returnValue = false ;
- evt.cancelBubble = true ;
- }
-}
-
-FCK.InitializeBehaviors = function( dontReturn )
-{
- // Set the focus to the editable area when clicking in the document area.
- // TODO: The cursor must be positioned at the end.
- this.EditorDocument.attachEvent( 'onmouseup', Doc_OnMouseUp ) ;
-
- // Intercept pasting operations
- this.EditorDocument.body.attachEvent( 'onpaste', Doc_OnPaste ) ;
-
- // Intercept drop operations
- this.EditorDocument.body.attachEvent( 'ondrop', Doc_OnDrop ) ;
-
- // Reset the context menu.
- FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument.body ) ;
-
- this.EditorDocument.attachEvent("onkeydown", FCK._KeyDownListener ) ;
-
- this.EditorDocument.attachEvent("ondblclick", Doc_OnDblClick ) ;
-
- this.EditorDocument.attachEvent("onbeforedeactivate", function(){ FCKSelection.Save() ; } ) ;
-
- // Catch cursor selection changes.
- this.EditorDocument.attachEvent("onselectionchange", Doc_OnSelectionChange ) ;
-
- FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', Doc_OnMouseDown ) ;
-}
-
-FCK.InsertHtml = function( html )
-{
- html = FCKConfig.ProtectedSource.Protect( html ) ;
- html = FCK.ProtectEvents( html ) ;
- html = FCK.ProtectUrls( html ) ;
- html = FCK.ProtectTags( html ) ;
-
-// FCK.Focus() ;
- FCKSelection.Restore() ;
- FCK.EditorWindow.focus() ;
-
- FCKUndo.SaveUndoStep() ;
-
- // Gets the actual selection.
- var oSel = FCKSelection.GetSelection() ;
-
- // Deletes the actual selection contents.
- if ( oSel.type.toLowerCase() == 'control' )
- oSel.clear() ;
-
- // Using the following trick, any comment in the beginning of the HTML will
- // be preserved.
- html = '<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>' + html ;
-
- // Insert the HTML.
- oSel.createRange().pasteHTML( html ) ;
-
- // Remove the fake node
- FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode( true ) ;
-
- FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
-
- // For some strange reason the SaveUndoStep() call doesn't activate the undo button at the first InsertHtml() call.
- this.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-FCK.SetInnerHtml = function( html ) // IE Only
-{
- var oDoc = FCK.EditorDocument ;
- // Using the following trick, any comment in the beginning of the HTML will
- // be preserved.
- oDoc.body.innerHTML = '<div id="__fakeFCKRemove__">&nbsp;</div>' + html ;
- oDoc.getElementById('__fakeFCKRemove__').removeNode( true ) ;
-}
-
-function FCK_PreloadImages()
-{
- var oPreloader = new FCKImagePreloader() ;
-
- // Add the configured images.
- oPreloader.AddImages( FCKConfig.PreloadImages ) ;
-
- // Add the skin icons strip.
- oPreloader.AddImages( FCKConfig.SkinPath + 'fck_strip.gif' ) ;
-
- oPreloader.OnComplete = LoadToolbarSetup ;
- oPreloader.Start() ;
-}
-
-// Disable the context menu in the editor (outside the editing area).
-function Document_OnContextMenu()
-{
- return ( event.srcElement._FCKShowContextMenu == true ) ;
-}
-document.oncontextmenu = Document_OnContextMenu ;
-
-function FCK_Cleanup()
-{
- this.LinkedField = null ;
- this.EditorWindow = null ;
- this.EditorDocument = null ;
-}
-
-FCK._ExecPaste = function()
-{
- // As we call ExecuteNamedCommand('Paste'), it would enter in a loop. So, let's use a semaphore.
- if ( FCK._PasteIsRunning )
- return true ;
-
- if ( FCKConfig.ForcePasteAsPlainText )
- {
- FCK.PasteAsPlainText() ;
- return false ;
- }
-
- var sHTML = FCK._CheckIsPastingEnabled( true ) ;
-
- if ( sHTML === false )
- FCKTools.RunFunction( FCKDialog.OpenDialog, FCKDialog, ['FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security'] ) ;
- else
- {
- if ( FCKConfig.AutoDetectPasteFromWord && sHTML.length > 0 )
- {
- var re = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi ;
- if ( re.test( sHTML ) )
- {
- if ( confirm( FCKLang.PasteWordConfirm ) )
- {
- FCK.PasteFromWord() ;
- return false ;
- }
- }
- }
-
- // Instead of inserting the retrieved HTML, let's leave the OS work for us,
- // by calling FCK.ExecuteNamedCommand( 'Paste' ). It could give better results.
-
- // Enable the semaphore to avoid a loop.
- FCK._PasteIsRunning = true ;
-
- FCK.ExecuteNamedCommand( 'Paste' ) ;
-
- // Removes the semaphore.
- delete FCK._PasteIsRunning ;
- }
-
- // Let's always make a custom implementation (return false), otherwise
- // the new Keyboard Handler may conflict with this code, and the CTRL+V code
- // could result in a simple "V" being pasted.
- return false ;
-}
-
-FCK.PasteAsPlainText = function( forceText )
-{
- if ( !FCK._CheckIsPastingEnabled() )
- {
- FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText' ) ;
- return ;
- }
-
- // Get the data available in the clipboard in text format.
- var sText = null ;
- if ( ! forceText )
- sText = clipboardData.getData("Text") ;
- else
- sText = forceText ;
-
- if ( sText && sText.length > 0 )
- {
- // Replace the carriage returns with <BR>
- sText = FCKTools.HTMLEncode( sText ) ;
- sText = FCKTools.ProcessLineBreaks( window, FCKConfig, sText ) ;
-
- var closeTagIndex = sText.search( '</p>' ) ;
- var startTagIndex = sText.search( '<p>' ) ;
-
- if ( ( closeTagIndex != -1 && startTagIndex != -1 && closeTagIndex < startTagIndex )
- || ( closeTagIndex != -1 && startTagIndex == -1 ) )
- {
- var prefix = sText.substr( 0, closeTagIndex ) ;
- sText = sText.substr( closeTagIndex + 4 ) ;
- this.InsertHtml( prefix ) ;
- }
-
- // Insert the resulting data in the editor.
- FCKUndo.SaveLocked = true ;
- this.InsertHtml( sText ) ;
- FCKUndo.SaveLocked = false ;
- }
-}
-
-FCK._CheckIsPastingEnabled = function( returnContents )
-{
- // The following seams to be the only reliable way to check is script
- // pasting operations are enabled in the security settings of IE6 and IE7.
- // It adds a little bit of overhead to the check, but so far that's the
- // only way, mainly because of IE7.
-
- FCK._PasteIsEnabled = false ;
-
- document.body.attachEvent( 'onpaste', FCK_CheckPasting_Listener ) ;
-
- // The execCommand in GetClipboardHTML will fire the "onpaste", only if the
- // security settings are enabled.
- var oReturn = FCK.GetClipboardHTML() ;
-
- document.body.detachEvent( 'onpaste', FCK_CheckPasting_Listener ) ;
-
- if ( FCK._PasteIsEnabled )
- {
- if ( !returnContents )
- oReturn = true ;
- }
- else
- oReturn = false ;
-
- delete FCK._PasteIsEnabled ;
-
- return oReturn ;
-}
-
-function FCK_CheckPasting_Listener()
-{
- FCK._PasteIsEnabled = true ;
-}
-
-FCK.GetClipboardHTML = function()
-{
- var oDiv = document.getElementById( '___FCKHiddenDiv' ) ;
-
- if ( !oDiv )
- {
- oDiv = document.createElement( 'DIV' ) ;
- oDiv.id = '___FCKHiddenDiv' ;
-
- var oDivStyle = oDiv.style ;
- oDivStyle.position = 'absolute' ;
- oDivStyle.visibility = oDivStyle.overflow = 'hidden' ;
- oDivStyle.width = oDivStyle.height = 1 ;
-
- document.body.appendChild( oDiv ) ;
- }
-
- oDiv.innerHTML = '' ;
-
- var oTextRange = document.body.createTextRange() ;
- oTextRange.moveToElementText( oDiv ) ;
- oTextRange.execCommand( 'Paste' ) ;
-
- var sData = oDiv.innerHTML ;
- oDiv.innerHTML = '' ;
-
- return sData ;
-}
-
-FCK.CreateLink = function( url, noUndo )
-{
- // Creates the array that will be returned. It contains one or more created links (see #220).
- var aCreatedLinks = new Array() ;
-
- // Remove any existing link in the selection.
- FCK.ExecuteNamedCommand( 'Unlink', null, false, !!noUndo ) ;
-
- if ( url.length > 0 )
- {
- // If there are several images, and you try to link each one, all the images get inside the link:
- // <img><img> -> <a><img></a><img> -> <a><img><img></a> due to the call to 'CreateLink' (bug in IE)
- if (FCKSelection.GetType() == 'Control')
- {
- // Create a link
- var oLink = this.EditorDocument.createElement( 'A' ) ;
- oLink.href = url ;
-
- // Get the selected object
- var oControl = FCKSelection.GetSelectedElement() ;
- // Put the link just before the object
- oControl.parentNode.insertBefore(oLink, oControl) ;
- // Move the object inside the link
- oControl.parentNode.removeChild( oControl ) ;
- oLink.appendChild( oControl ) ;
-
- return [ oLink ] ;
- }
-
- // Generate a temporary name for the link.
- var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ;
-
- // Use the internal "CreateLink" command to create the link.
- FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl, false, !!noUndo ) ;
-
- // Look for the just create link.
- var oLinks = this.EditorDocument.links ;
-
- for ( i = 0 ; i < oLinks.length ; i++ )
- {
- var oLink = oLinks[i] ;
-
- // Check it this a newly created link.
- // getAttribute must be used. oLink.url may cause problems with IE7 (#555).
- if ( oLink.getAttribute( 'href', 2 ) == sTempUrl )
- {
- var sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
- oLink.href = url ;
- oLink.innerHTML = sInnerHtml ; // Restore the innerHTML.
-
- // If the last child is a <br> move it outside the link or it
- // will be too easy to select this link again #388.
- var oLastChild = oLink.lastChild ;
- if ( oLastChild && oLastChild.nodeName == 'BR' )
- {
- // Move the BR after the link.
- FCKDomTools.InsertAfterNode( oLink, oLink.removeChild( oLastChild ) ) ;
- }
-
- aCreatedLinks.push( oLink ) ;
- }
- }
- }
-
- return aCreatedLinks ;
-}
-
-function _FCK_RemoveDisabledAtt()
-{
- this.removeAttribute( 'disabled' ) ;
-}
-
-function Doc_OnMouseDown( evt )
-{
- var e = evt.srcElement ;
-
- // Radio buttons and checkboxes should not be allowed to be triggered in IE
- // in editable mode. Otherwise the whole browser window may be locked by
- // the buttons. (#1782)
- if ( e.nodeName.IEquals( 'input' ) && e.type.IEquals( ['radio', 'checkbox'] ) && !e.disabled )
- {
- e.disabled = true ;
- FCKTools.SetTimeout( _FCK_RemoveDisabledAtt, 1, e ) ;
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckbrowserinfo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckbrowserinfo.js
deleted file mode 100644
index 5549b5b44..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckbrowserinfo.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Contains browser detection information.
- */
-
-var s = navigator.userAgent.toLowerCase() ;
-
-var FCKBrowserInfo =
-{
- IsIE : /*@cc_on!@*/false,
- IsIE7 : /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1], 10 ) >= 7 ),
- IsIE6 : /*@cc_on!@*/false && ( parseInt( s.match( /msie (\d+)/ )[1], 10 ) >= 6 ),
- IsSafari : s.Contains(' applewebkit/'), // Read "IsWebKit"
- IsOpera : !!window.opera,
- IsAIR : s.Contains(' adobeair/'),
- IsMac : s.Contains('macintosh')
-} ;
-
-// Completes the browser info with further Gecko information.
-(function( browserInfo )
-{
- browserInfo.IsGecko = ( navigator.product == 'Gecko' ) && !browserInfo.IsSafari && !browserInfo.IsOpera ;
- browserInfo.IsGeckoLike = ( browserInfo.IsGecko || browserInfo.IsSafari || browserInfo.IsOpera ) ;
-
- if ( browserInfo.IsGecko )
- {
- var geckoMatch = s.match( /rv:(\d+\.\d+)/ ) ;
- var geckoVersion = geckoMatch && parseFloat( geckoMatch[1] ) ;
-
- // Actually "10" refers to Gecko versions before Firefox 1.5, when
- // Gecko 1.8 (build 20051111) has been released.
-
- // Some browser (like Mozilla 1.7.13) may have a Gecko build greater
- // than 20051111, so we must also check for the revision number not to
- // be 1.7 (we are assuming that rv < 1.7 will not have build > 20051111).
-
- if ( geckoVersion )
- {
- browserInfo.IsGecko10 = ( geckoVersion < 1.8 ) ;
- browserInfo.IsGecko19 = ( geckoVersion > 1.8 ) ;
- }
- }
-})(FCKBrowserInfo) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcodeformatter.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcodeformatter.js
deleted file mode 100644
index 3c8831ac9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcodeformatter.js
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Format the HTML.
- */
-
-var FCKCodeFormatter = new Object() ;
-
-FCKCodeFormatter.Init = function()
-{
- var oRegex = this.Regex = new Object() ;
-
- // Regex for line breaks.
- oRegex.BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
- oRegex.BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
-
- oRegex.NewLineTags = /\<(BR|HR)[^\>]*\>/gi ;
-
- oRegex.MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi ;
-
- oRegex.LineSplitter = /\s*\n+\s*/g ;
-
- // Regex for indentation.
- oRegex.IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i ;
- oRegex.DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i ;
- oRegex.FormatIndentatorRemove = new RegExp( '^' + FCKConfig.FormatIndentator ) ;
-
- oRegex.ProtectedTags = /(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi ;
-}
-
-FCKCodeFormatter._ProtectData = function( outer, opener, data, closer )
-{
- return opener + '___FCKpd___' + ( FCKCodeFormatter.ProtectedData.push( data ) - 1 ) + closer ;
-}
-
-FCKCodeFormatter.Format = function( html )
-{
- if ( !this.Regex )
- this.Init() ;
-
- // Protected content that remain untouched during the
- // process go in the following array.
- FCKCodeFormatter.ProtectedData = new Array() ;
-
- var sFormatted = html.replace( this.Regex.ProtectedTags, FCKCodeFormatter._ProtectData ) ;
-
- // Line breaks.
- sFormatted = sFormatted.replace( this.Regex.BlocksOpener, '\n$&' ) ;
- sFormatted = sFormatted.replace( this.Regex.BlocksCloser, '$&\n' ) ;
- sFormatted = sFormatted.replace( this.Regex.NewLineTags, '$&\n' ) ;
- sFormatted = sFormatted.replace( this.Regex.MainTags, '\n$&\n' ) ;
-
- // Indentation.
- var sIndentation = '' ;
-
- var asLines = sFormatted.split( this.Regex.LineSplitter ) ;
- sFormatted = '' ;
-
- for ( var i = 0 ; i < asLines.length ; i++ )
- {
- var sLine = asLines[i] ;
-
- if ( sLine.length == 0 )
- continue ;
-
- if ( this.Regex.DecreaseIndent.test( sLine ) )
- sIndentation = sIndentation.replace( this.Regex.FormatIndentatorRemove, '' ) ;
-
- sFormatted += sIndentation + sLine + '\n' ;
-
- if ( this.Regex.IncreaseIndent.test( sLine ) )
- sIndentation += FCKConfig.FormatIndentator ;
- }
-
- // Now we put back the protected data.
- for ( var j = 0 ; j < FCKCodeFormatter.ProtectedData.length ; j++ )
- {
- var oRegex = new RegExp( '___FCKpd___' + j ) ;
- sFormatted = sFormatted.replace( oRegex, FCKCodeFormatter.ProtectedData[j].replace( /\$/g, '$$$$' ) ) ;
- }
-
- return sFormatted.Trim() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcommands.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcommands.js
deleted file mode 100644
index a6a68a11a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckcommands.js
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Define all commands available in the editor.
- */
-
-var FCKCommands = FCK.Commands = new Object() ;
-FCKCommands.LoadedCommands = new Object() ;
-
-FCKCommands.RegisterCommand = function( commandName, command )
-{
- this.LoadedCommands[ commandName ] = command ;
-}
-
-FCKCommands.GetCommand = function( commandName )
-{
- var oCommand = FCKCommands.LoadedCommands[ commandName ] ;
-
- if ( oCommand )
- return oCommand ;
-
- switch ( commandName )
- {
- case 'Bold' :
- case 'Italic' :
- case 'Underline' :
- case 'StrikeThrough':
- case 'Subscript' :
- case 'Superscript' : oCommand = new FCKCoreStyleCommand( commandName ) ; break ;
-
- case 'RemoveFormat' : oCommand = new FCKRemoveFormatCommand() ; break ;
-
- case 'DocProps' : oCommand = new FCKDialogCommand( 'DocProps' , FCKLang.DocProps , 'dialog/fck_docprops.html' , 400, 380, FCKCommands.GetFullPageState ) ; break ;
- case 'Templates' : oCommand = new FCKDialogCommand( 'Templates' , FCKLang.DlgTemplatesTitle , 'dialog/fck_template.html' , 380, 450 ) ; break ;
- case 'Link' : oCommand = new FCKDialogCommand( 'Link' , FCKLang.DlgLnkWindowTitle , 'dialog/fck_link.html' , 400, 300 ) ; break ;
- case 'Unlink' : oCommand = new FCKUnlinkCommand() ; break ;
- case 'VisitLink' : oCommand = new FCKVisitLinkCommand() ; break ;
- case 'Anchor' : oCommand = new FCKDialogCommand( 'Anchor' , FCKLang.DlgAnchorTitle , 'dialog/fck_anchor.html' , 370, 160 ) ; break ;
- case 'AnchorDelete' : oCommand = new FCKAnchorDeleteCommand() ; break ;
- case 'BulletedList' : oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp , 'dialog/fck_listprop.html?UL' , 370, 160 ) ; break ;
- case 'NumberedList' : oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp , 'dialog/fck_listprop.html?OL' , 370, 160 ) ; break ;
- case 'About' : oCommand = new FCKDialogCommand( 'About' , FCKLang.About , 'dialog/fck_about.html' , 420, 330, function(){ return FCK_TRISTATE_OFF ; } ) ; break ;
- case 'Find' : oCommand = new FCKDialogCommand( 'Find' , FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html' , 340, 230, null, null, 'Find' ) ; break ;
- case 'Replace' : oCommand = new FCKDialogCommand( 'Replace' , FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html' , 340, 230, null, null, 'Replace' ) ; break ;
-
- case 'Image' : oCommand = new FCKDialogCommand( 'Image' , FCKLang.DlgImgTitle , 'dialog/fck_image.html' , 450, 390 ) ; break ;
- case 'Flash' : oCommand = new FCKDialogCommand( 'Flash' , FCKLang.DlgFlashTitle , 'dialog/fck_flash.html' , 450, 390 ) ; break ;
- case 'SpecialChar' : oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle , 'dialog/fck_specialchar.html' , 400, 290 ) ; break ;
- case 'Smiley' : oCommand = new FCKDialogCommand( 'Smiley' , FCKLang.DlgSmileyTitle , 'dialog/fck_smiley.html' , FCKConfig.SmileyWindowWidth, FCKConfig.SmileyWindowHeight ) ; break ;
- case 'Table' : oCommand = new FCKDialogCommand( 'Table' , FCKLang.DlgTableTitle , 'dialog/fck_table.html' , 480, 250 ) ; break ;
- case 'TableProp' : oCommand = new FCKDialogCommand( 'Table' , FCKLang.DlgTableTitle , 'dialog/fck_table.html?Parent', 480, 250 ) ; break ;
- case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell' , FCKLang.DlgCellTitle , 'dialog/fck_tablecell.html' , 550, 240 ) ; break ;
-
- case 'Style' : oCommand = new FCKStyleCommand() ; break ;
-
- case 'FontName' : oCommand = new FCKFontNameCommand() ; break ;
- case 'FontSize' : oCommand = new FCKFontSizeCommand() ; break ;
- case 'FontFormat' : oCommand = new FCKFormatBlockCommand() ; break ;
-
- case 'Source' : oCommand = new FCKSourceCommand() ; break ;
- case 'Preview' : oCommand = new FCKPreviewCommand() ; break ;
- case 'Save' : oCommand = new FCKSaveCommand() ; break ;
- case 'NewPage' : oCommand = new FCKNewPageCommand() ; break ;
- case 'PageBreak' : oCommand = new FCKPageBreakCommand() ; break ;
- case 'Rule' : oCommand = new FCKRuleCommand() ; break ;
- case 'Nbsp' : oCommand = new FCKNbsp() ; break ;
-
- case 'TextColor' : oCommand = new FCKTextColorCommand('ForeColor') ; break ;
- case 'BGColor' : oCommand = new FCKTextColorCommand('BackColor') ; break ;
-
- case 'Paste' : oCommand = new FCKPasteCommand() ; break ;
- case 'PasteText' : oCommand = new FCKPastePlainTextCommand() ; break ;
- case 'PasteWord' : oCommand = new FCKPasteWordCommand() ; break ;
-
- case 'JustifyLeft' : oCommand = new FCKJustifyCommand( 'left' ) ; break ;
- case 'JustifyCenter' : oCommand = new FCKJustifyCommand( 'center' ) ; break ;
- case 'JustifyRight' : oCommand = new FCKJustifyCommand( 'right' ) ; break ;
- case 'JustifyFull' : oCommand = new FCKJustifyCommand( 'justify' ) ; break ;
- case 'Indent' : oCommand = new FCKIndentCommand( 'indent', FCKConfig.IndentLength ) ; break ;
- case 'Outdent' : oCommand = new FCKIndentCommand( 'outdent', FCKConfig.IndentLength * -1 ) ; break ;
- case 'Blockquote' : oCommand = new FCKBlockQuoteCommand() ; break ;
- case 'CreateDiv' : oCommand = new FCKDialogCommand( 'CreateDiv', FCKLang.CreateDiv, 'dialog/fck_div.html', 380, 210, null, null, true ) ; break ;
- case 'EditDiv' : oCommand = new FCKDialogCommand( 'EditDiv', FCKLang.EditDiv, 'dialog/fck_div.html', 380, 210, null, null, false ) ; break ;
- case 'DeleteDiv' : oCommand = new FCKDeleteDivCommand() ; break ;
-
- case 'TableInsertRowAfter' : oCommand = new FCKTableCommand('TableInsertRowAfter') ; break ;
- case 'TableInsertRowBefore' : oCommand = new FCKTableCommand('TableInsertRowBefore') ; break ;
- case 'TableDeleteRows' : oCommand = new FCKTableCommand('TableDeleteRows') ; break ;
- case 'TableInsertColumnAfter' : oCommand = new FCKTableCommand('TableInsertColumnAfter') ; break ;
- case 'TableInsertColumnBefore' : oCommand = new FCKTableCommand('TableInsertColumnBefore') ; break ;
- case 'TableDeleteColumns' : oCommand = new FCKTableCommand('TableDeleteColumns') ; break ;
- case 'TableInsertCellAfter' : oCommand = new FCKTableCommand('TableInsertCellAfter') ; break ;
- case 'TableInsertCellBefore' : oCommand = new FCKTableCommand('TableInsertCellBefore') ; break ;
- case 'TableDeleteCells' : oCommand = new FCKTableCommand('TableDeleteCells') ; break ;
- case 'TableMergeCells' : oCommand = new FCKTableCommand('TableMergeCells') ; break ;
- case 'TableMergeRight' : oCommand = new FCKTableCommand('TableMergeRight') ; break ;
- case 'TableMergeDown' : oCommand = new FCKTableCommand('TableMergeDown') ; break ;
- case 'TableHorizontalSplitCell' : oCommand = new FCKTableCommand('TableHorizontalSplitCell') ; break ;
- case 'TableVerticalSplitCell' : oCommand = new FCKTableCommand('TableVerticalSplitCell') ; break ;
- case 'TableDelete' : oCommand = new FCKTableCommand('TableDelete') ; break ;
-
- case 'Form' : oCommand = new FCKDialogCommand( 'Form' , FCKLang.Form , 'dialog/fck_form.html' , 380, 210 ) ; break ;
- case 'Checkbox' : oCommand = new FCKDialogCommand( 'Checkbox' , FCKLang.Checkbox , 'dialog/fck_checkbox.html' , 380, 200 ) ; break ;
- case 'Radio' : oCommand = new FCKDialogCommand( 'Radio' , FCKLang.RadioButton , 'dialog/fck_radiobutton.html' , 380, 200 ) ; break ;
- case 'TextField' : oCommand = new FCKDialogCommand( 'TextField' , FCKLang.TextField , 'dialog/fck_textfield.html' , 380, 210 ) ; break ;
- case 'Textarea' : oCommand = new FCKDialogCommand( 'Textarea' , FCKLang.Textarea , 'dialog/fck_textarea.html' , 380, 210 ) ; break ;
- case 'HiddenField' : oCommand = new FCKDialogCommand( 'HiddenField', FCKLang.HiddenField , 'dialog/fck_hiddenfield.html' , 380, 190 ) ; break ;
- case 'Button' : oCommand = new FCKDialogCommand( 'Button' , FCKLang.Button , 'dialog/fck_button.html' , 380, 210 ) ; break ;
- case 'Select' : oCommand = new FCKDialogCommand( 'Select' , FCKLang.SelectionField, 'dialog/fck_select.html' , 400, 340 ) ; break ;
- case 'ImageButton' : oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton , 'dialog/fck_image.html?ImageButton', 450, 390 ) ; break ;
-
- case 'SpellCheck' : oCommand = new FCKSpellCheckCommand() ; break ;
- case 'FitWindow' : oCommand = new FCKFitWindow() ; break ;
-
- case 'Undo' : oCommand = new FCKUndoCommand() ; break ;
- case 'Redo' : oCommand = new FCKRedoCommand() ; break ;
- case 'Copy' : oCommand = new FCKCutCopyCommand( false ) ; break ;
- case 'Cut' : oCommand = new FCKCutCopyCommand( true ) ; break ;
-
- case 'SelectAll' : oCommand = new FCKSelectAllCommand() ; break ;
- case 'InsertOrderedList' : oCommand = new FCKListCommand( 'insertorderedlist', 'ol' ) ; break ;
- case 'InsertUnorderedList' : oCommand = new FCKListCommand( 'insertunorderedlist', 'ul' ) ; break ;
- case 'ShowBlocks' : oCommand = new FCKShowBlockCommand( 'ShowBlocks', FCKConfig.StartupShowBlocks ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ) ; break ;
-
- // Generic Undefined command (usually used when a command is under development).
- case 'Undefined' : oCommand = new FCKUndefinedCommand() ; break ;
-
- // By default we assume that it is a named command.
- default:
- if ( FCKRegexLib.NamedCommands.test( commandName ) )
- oCommand = new FCKNamedCommand( commandName ) ;
- else
- {
- alert( FCKLang.UnknownCommand.replace( /%1/g, commandName ) ) ;
- return null ;
- }
- }
-
- FCKCommands.LoadedCommands[ commandName ] = oCommand ;
-
- return oCommand ;
-}
-
-// Gets the state of the "Document Properties" button. It must be enabled only
-// when "Full Page" editing is available.
-FCKCommands.GetFullPageState = function()
-{
- return FCKConfig.FullPage ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ;
-}
-
-
-FCKCommands.GetBooleanState = function( isDisabled )
-{
- return isDisabled ? FCK_TRISTATE_DISABLED : FCK_TRISTATE_OFF ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckconfig.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckconfig.js
deleted file mode 100644
index bf5f4c24f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckconfig.js
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Creates and initializes the FCKConfig object.
- */
-
-var FCKConfig = FCK.Config = new Object() ;
-
-/*
- For the next major version (probably 3.0) we should move all this stuff to
- another dedicated object and leave FCKConfig as a holder object for settings only).
-*/
-
-// Editor Base Path
-if ( document.location.protocol == 'file:' )
-{
- FCKConfig.BasePath = decodeURIComponent( document.location.pathname.substr(1) ) ;
- FCKConfig.BasePath = FCKConfig.BasePath.replace( /\\/gi, '/' ) ;
-
- // The way to address local files is different according to the OS.
- // In Windows it is file:// but in MacOs it is file:/// so let's get it automatically
- var sFullProtocol = document.location.href.match( /^(file\:\/{2,3})/ )[1] ;
- // #945 Opera does strange things with files loaded from the disk, and it fails in Mac to load xml files
- if ( FCKBrowserInfo.IsOpera )
- sFullProtocol += 'localhost/' ;
-
- FCKConfig.BasePath = sFullProtocol + FCKConfig.BasePath.substring( 0, FCKConfig.BasePath.lastIndexOf( '/' ) + 1) ;
-}
-else
- FCKConfig.BasePath = document.location.protocol + '//' + document.location.host +
- document.location.pathname.substring( 0, document.location.pathname.lastIndexOf( '/' ) + 1) ;
-
-FCKConfig.FullBasePath = FCKConfig.BasePath ;
-
-FCKConfig.EditorPath = FCKConfig.BasePath.replace( /editor\/$/, '' ) ;
-
-// There is a bug in Gecko. If the editor is hidden on startup, an error is
-// thrown when trying to get the screen dimensions.
-try
-{
- FCKConfig.ScreenWidth = screen.width ;
- FCKConfig.ScreenHeight = screen.height ;
-}
-catch (e)
-{
- FCKConfig.ScreenWidth = 800 ;
- FCKConfig.ScreenHeight = 600 ;
-}
-
-// Override the actual configuration values with the values passed throw the
-// hidden field "<InstanceName>___Config".
-FCKConfig.ProcessHiddenField = function()
-{
- this.PageConfig = new Object() ;
-
- // Get the hidden field.
- var oConfigField = window.parent.document.getElementById( FCK.Name + '___Config' ) ;
-
- // Do nothing if the config field was not defined.
- if ( ! oConfigField ) return ;
-
- var aCouples = oConfigField.value.split('&') ;
-
- for ( var i = 0 ; i < aCouples.length ; i++ )
- {
- if ( aCouples[i].length == 0 )
- continue ;
-
- var aConfig = aCouples[i].split( '=' ) ;
- var sKey = decodeURIComponent( aConfig[0] ) ;
- var sVal = decodeURIComponent( aConfig[1] ) ;
-
- if ( sKey == 'CustomConfigurationsPath' ) // The Custom Config File path must be loaded immediately.
- FCKConfig[ sKey ] = sVal ;
-
- else if ( sVal.toLowerCase() == "true" ) // If it is a boolean TRUE.
- this.PageConfig[ sKey ] = true ;
-
- else if ( sVal.toLowerCase() == "false" ) // If it is a boolean FALSE.
- this.PageConfig[ sKey ] = false ;
-
- else if ( sVal.length > 0 && !isNaN( sVal ) ) // If it is a number.
- this.PageConfig[ sKey ] = parseInt( sVal, 10 ) ;
-
- else // In any other case it is a string.
- this.PageConfig[ sKey ] = sVal ;
- }
-}
-
-function FCKConfig_LoadPageConfig()
-{
- var oPageConfig = FCKConfig.PageConfig ;
- for ( var sKey in oPageConfig )
- FCKConfig[ sKey ] = oPageConfig[ sKey ] ;
-}
-
-function FCKConfig_PreProcess()
-{
- var oConfig = FCKConfig ;
-
- // Force debug mode if fckdebug=true in the QueryString (main page).
- if ( oConfig.AllowQueryStringDebug )
- {
- try
- {
- if ( (/fckdebug=true/i).test( window.top.location.search ) )
- oConfig.Debug = true ;
- }
- catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
- }
-
- // Certifies that the "PluginsPath" configuration ends with a slash.
- if ( !oConfig.PluginsPath.EndsWith('/') )
- oConfig.PluginsPath += '/' ;
-
- // If no ToolbarComboPreviewCSS, point it to EditorAreaCSS.
- var sComboPreviewCSS = oConfig.ToolbarComboPreviewCSS ;
- if ( !sComboPreviewCSS || sComboPreviewCSS.length == 0 )
- oConfig.ToolbarComboPreviewCSS = oConfig.EditorAreaCSS ;
-
- // Turn the attributes that will be removed in the RemoveFormat from a string to an array
- oConfig.RemoveAttributesArray = (oConfig.RemoveAttributes || '').split( ',' );
-
- if ( !FCKConfig.SkinEditorCSS || FCKConfig.SkinEditorCSS.length == 0 )
- FCKConfig.SkinEditorCSS = FCKConfig.SkinPath + 'fck_editor.css' ;
-
- if ( !FCKConfig.SkinDialogCSS || FCKConfig.SkinDialogCSS.length == 0 )
- FCKConfig.SkinDialogCSS = FCKConfig.SkinPath + 'fck_dialog.css' ;
-}
-
-// Define toolbar sets collection.
-FCKConfig.ToolbarSets = new Object() ;
-
-// Defines the plugins collection.
-FCKConfig.Plugins = new Object() ;
-FCKConfig.Plugins.Items = new Array() ;
-
-FCKConfig.Plugins.Add = function( name, langs, path )
-{
- FCKConfig.Plugins.Items.push( [name, langs, path] ) ;
-}
-
-// FCKConfig.ProtectedSource: object that holds a collection of Regular
-// Expressions that defined parts of the raw HTML that must remain untouched
-// like custom tags, scripts, server side code, etc...
-FCKConfig.ProtectedSource = new Object() ;
-
-// Generates a string used to identify and locate the Protected Tags comments.
-FCKConfig.ProtectedSource._CodeTag = (new Date()).valueOf() ;
-
-// Initialize the regex array with the default ones.
-FCKConfig.ProtectedSource.RegexEntries = [
- // First of any other protection, we must protect all comments to avoid
- // loosing them (of course, IE related).
- /<!--[\s\S]*?-->/g ,
-
- // Script tags will also be forced to be protected, otherwise IE will execute them.
- /<script[\s\S]*?<\/script>/gi,
-
- // <noscript> tags (get lost in IE and messed up in FF).
- /<noscript[\s\S]*?<\/noscript>/gi
-] ;
-
-FCKConfig.ProtectedSource.Add = function( regexPattern )
-{
- this.RegexEntries.push( regexPattern ) ;
-}
-
-FCKConfig.ProtectedSource.Protect = function( html )
-{
- var codeTag = this._CodeTag ;
- function _Replace( protectedSource )
- {
- var index = FCKTempBin.AddElement( protectedSource ) ;
- return '<!--{' + codeTag + index + '}-->' ;
- }
-
- for ( var i = 0 ; i < this.RegexEntries.length ; i++ )
- {
- html = html.replace( this.RegexEntries[i], _Replace ) ;
- }
-
- return html ;
-}
-
-FCKConfig.ProtectedSource.Revert = function( html, clearBin )
-{
- function _Replace( m, opener, index )
- {
- var protectedValue = clearBin ? FCKTempBin.RemoveElement( index ) : FCKTempBin.Elements[ index ] ;
- // There could be protected source inside another one.
- return FCKConfig.ProtectedSource.Revert( protectedValue, clearBin ) ;
- }
-
- var regex = new RegExp( "(<|&lt;)!--\\{" + this._CodeTag + "(\\d+)\\}--(>|&gt;)", "g" ) ;
- return html.replace( regex, _Replace ) ;
-}
-
-// Returns a string with the attributes that must be appended to the body
-FCKConfig.GetBodyAttributes = function()
-{
- var bodyAttributes = '' ;
- // Add id and class to the body.
- if ( this.BodyId && this.BodyId.length > 0 )
- bodyAttributes += ' id="' + this.BodyId + '"' ;
- if ( this.BodyClass && this.BodyClass.length > 0 )
- bodyAttributes += ' class="' + this.BodyClass + '"' ;
-
- return bodyAttributes ;
-}
-
-// Sets the body attributes directly on the node
-FCKConfig.ApplyBodyAttributes = function( oBody )
-{
- // Add ID and Class to the body
- if ( this.BodyId && this.BodyId.length > 0 )
- oBody.id = FCKConfig.BodyId ;
- if ( this.BodyClass && this.BodyClass.length > 0 )
- oBody.className += ' ' + FCKConfig.BodyClass ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug.js
deleted file mode 100644
index b3f262d91..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Debug window control and operations.
- */
-
-// Public function defined here must be declared in fckdebug_empty.js.
-
-var FCKDebug =
-{
- Output : function( message, color, noParse )
- {
- if ( ! FCKConfig.Debug )
- return ;
-
- try
- {
- this._GetWindow().Output( message, color, noParse ) ;
- }
- catch ( e ) {} // Ignore errors
- },
-
- OutputObject : function( anyObject, color )
- {
- if ( ! FCKConfig.Debug )
- return ;
-
- try
- {
- this._GetWindow().OutputObject( anyObject, color ) ;
- }
- catch ( e ) {} // Ignore errors
- },
-
- _GetWindow : function()
- {
- if ( !this.DebugWindow || this.DebugWindow.closed )
- this.DebugWindow = window.open( FCKConfig.BasePath + 'fckdebug.html', 'FCKeditorDebug', 'menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500', true ) ;
-
- return this.DebugWindow ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug_empty.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug_empty.js
deleted file mode 100644
index 7a27f2593..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdebug_empty.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Debug window control and operations (empty for the compressed files - #2043).
- */
-
-var FCKDebug =
-{
- Output : function()
- {},
-
- OutputObject : function()
- {}
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdialog.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdialog.js
deleted file mode 100644
index febc7353a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdialog.js
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Dialog windows operations.
- */
-
-var FCKDialog = ( function()
-{
- var topDialog ;
- var baseZIndex ;
- var cover ;
-
- // The document that holds the dialog.
- var topWindow = window.parent ;
-
- while ( topWindow.parent && topWindow.parent != topWindow )
- {
- try
- {
- if ( topWindow.parent.document.domain != document.domain )
- break ;
- if ( topWindow.parent.document.getElementsByTagName( 'frameset' ).length > 0 )
- break ;
- }
- catch ( e )
- {
- break ;
- }
- topWindow = topWindow.parent ;
- }
-
- var topDocument = topWindow.document ;
-
- var getZIndex = function()
- {
- if ( !baseZIndex )
- baseZIndex = FCKConfig.FloatingPanelsZIndex + 999 ;
- return ++baseZIndex ;
- }
-
- // TODO : This logic is not actually working when reducing the window, only
- // when enlarging it.
- var resizeHandler = function()
- {
- if ( !cover )
- return ;
-
- var relElement = FCKTools.IsStrictMode( topDocument ) ? topDocument.documentElement : topDocument.body ;
-
- FCKDomTools.SetElementStyles( cover,
- {
- 'width' : Math.max( relElement.scrollWidth,
- relElement.clientWidth,
- topDocument.scrollWidth || 0 ) - 1 + 'px',
- 'height' : Math.max( relElement.scrollHeight,
- relElement.clientHeight,
- topDocument.scrollHeight || 0 ) - 1 + 'px'
- } ) ;
- }
-
- return {
- /**
- * Opens a dialog window using the standard dialog template.
- */
- OpenDialog : function( dialogName, dialogTitle, dialogPage, width, height, customValue, parentWindow, resizable )
- {
- if ( !topDialog )
- this.DisplayMainCover() ;
-
- // Setup the dialog info to be passed to the dialog.
- var dialogInfo =
- {
- Title : dialogTitle,
- Page : dialogPage,
- Editor : window,
- CustomValue : customValue, // Optional
- TopWindow : topWindow
- }
-
- FCK.ToolbarSet.CurrentInstance.Selection.Save( true ) ;
-
- // Calculate the dialog position, centering it on the screen.
- var viewSize = FCKTools.GetViewPaneSize( topWindow ) ;
- var scrollPosition = { 'X' : 0, 'Y' : 0 } ;
- var useAbsolutePosition = FCKBrowserInfo.IsIE && ( !FCKBrowserInfo.IsIE7 || !FCKTools.IsStrictMode( topWindow.document ) ) ;
- if ( useAbsolutePosition )
- scrollPosition = FCKTools.GetScrollPosition( topWindow ) ;
- var iTop = Math.max( scrollPosition.Y + ( viewSize.Height - height - 20 ) / 2, 0 ) ;
- var iLeft = Math.max( scrollPosition.X + ( viewSize.Width - width - 20 ) / 2, 0 ) ;
-
- // Setup the IFRAME that will hold the dialog.
- var dialog = topDocument.createElement( 'iframe' ) ;
- FCKTools.ResetStyles( dialog ) ;
- dialog.src = FCKConfig.BasePath + 'fckdialog.html' ;
-
- // Dummy URL for testing whether the code in fckdialog.js alone leaks memory.
- // dialog.src = 'about:blank';
-
- dialog.frameBorder = 0 ;
- dialog.allowTransparency = true ;
- FCKDomTools.SetElementStyles( dialog,
- {
- 'position' : ( useAbsolutePosition ) ? 'absolute' : 'fixed',
- 'top' : iTop + 'px',
- 'left' : iLeft + 'px',
- 'width' : width + 'px',
- 'height' : height + 'px',
- 'zIndex' : getZIndex()
- } ) ;
-
- // Save the dialog info to be used by the dialog page once loaded.
- dialog._DialogArguments = dialogInfo ;
-
- // Append the IFRAME to the target document.
- topDocument.body.appendChild( dialog ) ;
-
- // Keep record of the dialog's parent/child relationships.
- dialog._ParentDialog = topDialog ;
- topDialog = dialog ;
- },
-
- /**
- * (For internal use)
- * Called when the top dialog is closed.
- */
- OnDialogClose : function( dialogWindow )
- {
- var dialog = dialogWindow.frameElement ;
- FCKDomTools.RemoveNode( dialog ) ;
-
- if ( dialog._ParentDialog ) // Nested Dialog.
- {
- topDialog = dialog._ParentDialog ;
- dialog._ParentDialog.contentWindow.SetEnabled( true ) ;
- }
- else // First Dialog.
- {
- // Set the Focus in the browser, so the "OnBlur" event is not
- // fired. In IE, there is no need to do that because the dialog
- // already moved the selection to the editing area before
- // closing (EnsureSelection). Also, the Focus() call here
- // causes memory leak on IE7 (weird).
- if ( !FCKBrowserInfo.IsIE )
- FCK.Focus() ;
-
- this.HideMainCover() ;
- // Bug #1918: Assigning topDialog = null directly causes IE6 to crash.
- setTimeout( function(){ topDialog = null ; }, 0 ) ;
-
- // Release the previously saved selection.
- FCK.ToolbarSet.CurrentInstance.Selection.Release() ;
- }
- },
-
- DisplayMainCover : function()
- {
- // Setup the DIV that will be used to cover.
- cover = topDocument.createElement( 'div' ) ;
- FCKTools.ResetStyles( cover ) ;
- FCKDomTools.SetElementStyles( cover,
- {
- 'position' : 'absolute',
- 'zIndex' : getZIndex(),
- 'top' : '0px',
- 'left' : '0px',
- 'backgroundColor' : FCKConfig.BackgroundBlockerColor
- } ) ;
- FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
-
- // For IE6-, we need to fill the cover with a transparent IFRAME,
- // to properly block <select> fields.
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var iframe = topDocument.createElement( 'iframe' ) ;
- FCKTools.ResetStyles( iframe ) ;
- iframe.hideFocus = true ;
- iframe.frameBorder = 0 ;
- iframe.src = FCKTools.GetVoidUrl() ;
- FCKDomTools.SetElementStyles( iframe,
- {
- 'width' : '100%',
- 'height' : '100%',
- 'position' : 'absolute',
- 'left' : '0px',
- 'top' : '0px',
- 'filter' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
- } ) ;
- cover.appendChild( iframe ) ;
- }
-
- // We need to manually adjust the cover size on resize.
- FCKTools.AddEventListener( topWindow, 'resize', resizeHandler ) ;
- resizeHandler() ;
-
- topDocument.body.appendChild( cover ) ;
-
- FCKFocusManager.Lock() ;
-
- // Prevent the user from refocusing the disabled
- // editing window by pressing Tab. (Bug #2065)
- var el = FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'frameElement' ) ;
- el._fck_originalTabIndex = el.tabIndex ;
- el.tabIndex = -1 ;
- },
-
- HideMainCover : function()
- {
- FCKDomTools.RemoveNode( cover ) ;
- FCKFocusManager.Unlock() ;
-
- // Revert the tab index hack. (Bug #2065)
- var el = FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'frameElement' ) ;
- el.tabIndex = el._fck_originalTabIndex ;
- FCKDomTools.ClearElementJSProperty( el, '_fck_originalTabIndex' ) ;
- },
-
- GetCover : function()
- {
- return cover ;
- }
- } ;
-} )() ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdocumentprocessor.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdocumentprocessor.js
deleted file mode 100644
index 55fd1170a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdocumentprocessor.js
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Advanced document processors.
- */
-
-var FCKDocumentProcessor = new Object() ;
-FCKDocumentProcessor._Items = new Array() ;
-
-FCKDocumentProcessor.AppendNew = function()
-{
- var oNewItem = new Object() ;
- this._Items.push( oNewItem ) ;
- return oNewItem ;
-}
-
-FCKDocumentProcessor.Process = function( document )
-{
- var bIsDirty = FCK.IsDirty() ;
- var oProcessor, i = 0 ;
- while( ( oProcessor = this._Items[i++] ) )
- oProcessor.ProcessDocument( document ) ;
- if ( !bIsDirty )
- FCK.ResetIsDirty() ;
-}
-
-var FCKDocumentProcessor_CreateFakeImage = function( fakeClass, realElement )
-{
- var oImg = FCKTools.GetElementDocument( realElement ).createElement( 'IMG' ) ;
- oImg.className = fakeClass ;
- oImg.src = FCKConfig.BasePath + 'images/spacer.gif' ;
- oImg.setAttribute( '_fckfakelement', 'true', 0 ) ;
- oImg.setAttribute( '_fckrealelement', FCKTempBin.AddElement( realElement ), 0 ) ;
- return oImg ;
-}
-
-// Link Anchors
-if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
-{
- var FCKAnchorsProcessor = FCKDocumentProcessor.AppendNew() ;
- FCKAnchorsProcessor.ProcessDocument = function( document )
- {
- var aLinks = document.getElementsByTagName( 'A' ) ;
-
- var oLink ;
- var i = aLinks.length - 1 ;
- while ( i >= 0 && ( oLink = aLinks[i--] ) )
- {
- // If it is anchor. Doesn't matter if it's also a link (even better: we show that it's both a link and an anchor)
- if ( oLink.name.length > 0 )
- {
- //if the anchor has some content then we just add a temporary class
- if ( oLink.innerHTML !== '' )
- {
- if ( FCKBrowserInfo.IsIE )
- oLink.className += ' FCK__AnchorC' ;
- }
- else
- {
- var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oLink.cloneNode(true) ) ;
- oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
-
- oLink.parentNode.insertBefore( oImg, oLink ) ;
- oLink.parentNode.removeChild( oLink ) ;
- }
- }
- }
- }
-}
-
-// Page Breaks
-var FCKPageBreaksProcessor = FCKDocumentProcessor.AppendNew() ;
-FCKPageBreaksProcessor.ProcessDocument = function( document )
-{
- var aDIVs = document.getElementsByTagName( 'DIV' ) ;
-
- var eDIV ;
- var i = aDIVs.length - 1 ;
- while ( i >= 0 && ( eDIV = aDIVs[i--] ) )
- {
- if ( eDIV.style.pageBreakAfter == 'always' && eDIV.childNodes.length == 1 && eDIV.childNodes[0].style && eDIV.childNodes[0].style.display == 'none' )
- {
- var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', eDIV.cloneNode(true) ) ;
-
- eDIV.parentNode.insertBefore( oFakeImage, eDIV ) ;
- eDIV.parentNode.removeChild( eDIV ) ;
- }
- }
-/*
- var aCenters = document.getElementsByTagName( 'CENTER' ) ;
-
- var oCenter ;
- var i = aCenters.length - 1 ;
- while ( i >= 0 && ( oCenter = aCenters[i--] ) )
- {
- if ( oCenter.style.pageBreakAfter == 'always' && oCenter.innerHTML.Trim().length == 0 )
- {
- var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', oCenter.cloneNode(true) ) ;
-
- oCenter.parentNode.insertBefore( oFakeImage, oCenter ) ;
- oCenter.parentNode.removeChild( oCenter ) ;
- }
- }
-*/
-}
-
-// EMBED and OBJECT tags.
-var FCKEmbedAndObjectProcessor = (function()
-{
- var customProcessors = [] ;
-
- var processElement = function( el )
- {
- var clone = el.cloneNode( true ) ;
- var replaceElement ;
- var fakeImg = replaceElement = FCKDocumentProcessor_CreateFakeImage( 'FCK__UnknownObject', clone ) ;
- FCKEmbedAndObjectProcessor.RefreshView( fakeImg, el ) ;
-
- for ( var i = 0 ; i < customProcessors.length ; i++ )
- replaceElement = customProcessors[i]( el, replaceElement ) || replaceElement ;
-
- if ( replaceElement != fakeImg )
- FCKTempBin.RemoveElement( fakeImg.getAttribute( '_fckrealelement' ) ) ;
-
- el.parentNode.replaceChild( replaceElement, el ) ;
- }
-
- var processElementsByName = function( elementName, doc )
- {
- var aObjects = doc.getElementsByTagName( elementName );
- for ( var i = aObjects.length - 1 ; i >= 0 ; i-- )
- processElement( aObjects[i] ) ;
- }
-
- var processObjectAndEmbed = function( doc )
- {
- processElementsByName( 'object', doc );
- processElementsByName( 'embed', doc );
- }
-
- return FCKTools.Merge( FCKDocumentProcessor.AppendNew(),
- {
- ProcessDocument : function( doc )
- {
- // Firefox 3 would sometimes throw an unknown exception while accessing EMBEDs and OBJECTs
- // without the setTimeout().
- if ( FCKBrowserInfo.IsGecko )
- FCKTools.RunFunction( processObjectAndEmbed, this, [ doc ] ) ;
- else
- processObjectAndEmbed( doc ) ;
- },
-
- RefreshView : function( placeHolder, original )
- {
- if ( original.getAttribute( 'width' ) > 0 )
- placeHolder.style.width = FCKTools.ConvertHtmlSizeToStyle( original.getAttribute( 'width' ) ) ;
-
- if ( original.getAttribute( 'height' ) > 0 )
- placeHolder.style.height = FCKTools.ConvertHtmlSizeToStyle( original.getAttribute( 'height' ) ) ;
- },
-
- AddCustomHandler : function( func )
- {
- customProcessors.push( func ) ;
- }
- } ) ;
-} )() ;
-
-FCK.GetRealElement = function( fakeElement )
-{
- var e = FCKTempBin.Elements[ fakeElement.getAttribute('_fckrealelement') ] ;
-
- if ( fakeElement.getAttribute('_fckflash') )
- {
- if ( fakeElement.style.width.length > 0 )
- e.width = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.width ) ;
-
- if ( fakeElement.style.height.length > 0 )
- e.height = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.height ) ;
- }
-
- return e ;
-}
-
-// HR Processor.
-// This is a IE only (tricky) thing. We protect all HR tags before loading them
-// (see FCK.ProtectTags). Here we put the HRs back.
-if ( FCKBrowserInfo.IsIE )
-{
- FCKDocumentProcessor.AppendNew().ProcessDocument = function( document )
- {
- var aHRs = document.getElementsByTagName( 'HR' ) ;
-
- var eHR ;
- var i = aHRs.length - 1 ;
- while ( i >= 0 && ( eHR = aHRs[i--] ) )
- {
- // Create the replacement HR.
- var newHR = document.createElement( 'hr' ) ;
- newHR.mergeAttributes( eHR, true ) ;
-
- // We must insert the new one after it. insertBefore will not work in all cases.
- FCKDomTools.InsertAfterNode( eHR, newHR ) ;
-
- eHR.parentNode.removeChild( eHR ) ;
- }
- }
-}
-
-// INPUT:hidden Processor.
-FCKDocumentProcessor.AppendNew().ProcessDocument = function( document )
-{
- var aInputs = document.getElementsByTagName( 'INPUT' ) ;
-
- var oInput ;
- var i = aInputs.length - 1 ;
- while ( i >= 0 && ( oInput = aInputs[i--] ) )
- {
- if ( oInput.type == 'hidden' )
- {
- var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oInput.cloneNode(true) ) ;
- oImg.setAttribute( '_fckinputhidden', 'true', 0 ) ;
-
- oInput.parentNode.insertBefore( oImg, oInput ) ;
- oInput.parentNode.removeChild( oInput ) ;
- }
- }
-}
-
-// Flash handler.
-FCKEmbedAndObjectProcessor.AddCustomHandler( function( el, fakeImg )
- {
- if ( ! ( el.nodeName.IEquals( 'embed' ) && ( el.type == 'application/x-shockwave-flash' || /\.swf($|#|\?)/i.test( el.src ) ) ) )
- return ;
- fakeImg.className = 'FCK__Flash' ;
- fakeImg.setAttribute( '_fckflash', 'true', 0 );
- } ) ;
-
-// Buggy <span class="Apple-style-span"> tags added by Safari.
-if ( FCKBrowserInfo.IsSafari )
-{
- FCKDocumentProcessor.AppendNew().ProcessDocument = function( doc )
- {
- var spans = doc.getElementsByClassName ?
- doc.getElementsByClassName( 'Apple-style-span' ) :
- Array.prototype.filter.call(
- doc.getElementsByTagName( 'span' ),
- function( item ){ return item.className == 'Apple-style-span' ; }
- ) ;
- for ( var i = spans.length - 1 ; i >= 0 ; i-- )
- FCKDomTools.RemoveNode( spans[i], true ) ;
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdomtools.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdomtools.js
deleted file mode 100644
index 7eaf3bde5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckdomtools.js
+++ /dev/null
@@ -1,1057 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Utility functions to work with the DOM.
- */
-
-var FCKDomTools =
-{
- /**
- * Move all child nodes from one node to another.
- */
- MoveChildren : function( source, target, toTargetStart )
- {
- if ( source == target )
- return ;
-
- var eChild ;
-
- if ( toTargetStart )
- {
- while ( (eChild = source.lastChild) )
- target.insertBefore( source.removeChild( eChild ), target.firstChild ) ;
- }
- else
- {
- while ( (eChild = source.firstChild) )
- target.appendChild( source.removeChild( eChild ) ) ;
- }
- },
-
- MoveNode : function( source, target, toTargetStart )
- {
- if ( toTargetStart )
- target.insertBefore( FCKDomTools.RemoveNode( source ), target.firstChild ) ;
- else
- target.appendChild( FCKDomTools.RemoveNode( source ) ) ;
- },
-
- // Remove blank spaces from the beginning and the end of the contents of a node.
- TrimNode : function( node )
- {
- this.LTrimNode( node ) ;
- this.RTrimNode( node ) ;
- },
-
- LTrimNode : function( node )
- {
- var eChildNode ;
-
- while ( (eChildNode = node.firstChild) )
- {
- if ( eChildNode.nodeType == 3 )
- {
- var sTrimmed = eChildNode.nodeValue.LTrim() ;
- var iOriginalLength = eChildNode.nodeValue.length ;
-
- if ( sTrimmed.length == 0 )
- {
- node.removeChild( eChildNode ) ;
- continue ;
- }
- else if ( sTrimmed.length < iOriginalLength )
- {
- eChildNode.splitText( iOriginalLength - sTrimmed.length ) ;
- node.removeChild( node.firstChild ) ;
- }
- }
- break ;
- }
- },
-
- RTrimNode : function( node )
- {
- var eChildNode ;
-
- while ( (eChildNode = node.lastChild) )
- {
- if ( eChildNode.nodeType == 3 )
- {
- var sTrimmed = eChildNode.nodeValue.RTrim() ;
- var iOriginalLength = eChildNode.nodeValue.length ;
-
- if ( sTrimmed.length == 0 )
- {
- // If the trimmed text node is empty, just remove it.
-
- // Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#81).
- eChildNode.parentNode.removeChild( eChildNode ) ;
- continue ;
- }
- else if ( sTrimmed.length < iOriginalLength )
- {
- // If the trimmed text length is less than the original
- // length, strip all spaces from the end by splitting
- // the text and removing the resulting useless node.
-
- eChildNode.splitText( sTrimmed.length ) ;
- // Use "node.lastChild.parentNode" instead of "node" to avoid IE bug (#81).
- node.lastChild.parentNode.removeChild( node.lastChild ) ;
- }
- }
- break ;
- }
-
- if ( !FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsOpera )
- {
- eChildNode = node.lastChild ;
-
- if ( eChildNode && eChildNode.nodeType == 1 && eChildNode.nodeName.toLowerCase() == 'br' )
- {
- // Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324).
- eChildNode.parentNode.removeChild( eChildNode ) ;
- }
- }
- },
-
- RemoveNode : function( node, excludeChildren )
- {
- if ( excludeChildren )
- {
- // Move all children before the node.
- var eChild ;
- while ( (eChild = node.firstChild) )
- node.parentNode.insertBefore( node.removeChild( eChild ), node ) ;
- }
-
- return node.parentNode.removeChild( node ) ;
- },
-
- GetFirstChild : function( node, childNames )
- {
- // If childNames is a string, transform it in a Array.
- if ( typeof ( childNames ) == 'string' )
- childNames = [ childNames ] ;
-
- var eChild = node.firstChild ;
- while( eChild )
- {
- if ( eChild.nodeType == 1 && eChild.tagName.Equals.apply( eChild.tagName, childNames ) )
- return eChild ;
-
- eChild = eChild.nextSibling ;
- }
-
- return null ;
- },
-
- GetLastChild : function( node, childNames )
- {
- // If childNames is a string, transform it in a Array.
- if ( typeof ( childNames ) == 'string' )
- childNames = [ childNames ] ;
-
- var eChild = node.lastChild ;
- while( eChild )
- {
- if ( eChild.nodeType == 1 && ( !childNames || eChild.tagName.Equals( childNames ) ) )
- return eChild ;
-
- eChild = eChild.previousSibling ;
- }
-
- return null ;
- },
-
- /*
- * Gets the previous element (nodeType=1) in the source order. Returns
- * "null" If no element is found.
- * @param {Object} currentNode The node to start searching from.
- * @param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be
- * handled. If set to "true", only white spaces text nodes
- * will be ignored, while non white space text nodes will stop
- * the search, returning null. If "false" or omitted, all
- * text nodes are ignored.
- * @param {string[]} stopSearchElements An array of element names that
- * will cause the search to stop when found, returning null.
- * May be omitted (or null).
- * @param {string[]} ignoreElements An array of element names that
- * must be ignored during the search.
- */
- GetPreviousSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements )
- {
- if ( !currentNode )
- return null ;
-
- if ( stopSearchElements && currentNode.nodeType == 1 && currentNode.nodeName.IEquals( stopSearchElements ) )
- return null ;
-
- if ( currentNode.previousSibling )
- currentNode = currentNode.previousSibling ;
- else
- return this.GetPreviousSourceElement( currentNode.parentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
-
- while ( currentNode )
- {
- if ( currentNode.nodeType == 1 )
- {
- if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) )
- break ;
-
- if ( !ignoreElements || !currentNode.nodeName.IEquals( ignoreElements ) )
- return currentNode ;
- }
- else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 )
- break ;
-
- if ( currentNode.lastChild )
- currentNode = currentNode.lastChild ;
- else
- return this.GetPreviousSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
- }
-
- return null ;
- },
-
- /*
- * Gets the next element (nodeType=1) in the source order. Returns
- * "null" If no element is found.
- * @param {Object} currentNode The node to start searching from.
- * @param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be
- * handled. If set to "true", only white spaces text nodes
- * will be ignored, while non white space text nodes will stop
- * the search, returning null. If "false" or omitted, all
- * text nodes are ignored.
- * @param {string[]} stopSearchElements An array of element names that
- * will cause the search to stop when found, returning null.
- * May be omitted (or null).
- * @param {string[]} ignoreElements An array of element names that
- * must be ignored during the search.
- */
- GetNextSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements, startFromSibling )
- {
- while( ( currentNode = this.GetNextSourceNode( currentNode, startFromSibling ) ) ) // Only one "=".
- {
- if ( currentNode.nodeType == 1 )
- {
- if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) )
- break ;
-
- if ( ignoreElements && currentNode.nodeName.IEquals( ignoreElements ) )
- return this.GetNextSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ;
-
- return currentNode ;
- }
- else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 )
- break ;
- }
-
- return null ;
- },
-
- /*
- * Get the next DOM node available in source order.
- */
- GetNextSourceNode : function( currentNode, startFromSibling, nodeType, stopSearchNode )
- {
- if ( !currentNode )
- return null ;
-
- var node ;
-
- if ( !startFromSibling && currentNode.firstChild )
- node = currentNode.firstChild ;
- else
- {
- if ( stopSearchNode && currentNode == stopSearchNode )
- return null ;
-
- node = currentNode.nextSibling ;
-
- if ( !node && ( !stopSearchNode || stopSearchNode != currentNode.parentNode ) )
- return this.GetNextSourceNode( currentNode.parentNode, true, nodeType, stopSearchNode ) ;
- }
-
- if ( nodeType && node && node.nodeType != nodeType )
- return this.GetNextSourceNode( node, false, nodeType, stopSearchNode ) ;
-
- return node ;
- },
-
- /*
- * Get the next DOM node available in source order.
- */
- GetPreviousSourceNode : function( currentNode, startFromSibling, nodeType, stopSearchNode )
- {
- if ( !currentNode )
- return null ;
-
- var node ;
-
- if ( !startFromSibling && currentNode.lastChild )
- node = currentNode.lastChild ;
- else
- {
- if ( stopSearchNode && currentNode == stopSearchNode )
- return null ;
-
- node = currentNode.previousSibling ;
-
- if ( !node && ( !stopSearchNode || stopSearchNode != currentNode.parentNode ) )
- return this.GetPreviousSourceNode( currentNode.parentNode, true, nodeType, stopSearchNode ) ;
- }
-
- if ( nodeType && node && node.nodeType != nodeType )
- return this.GetPreviousSourceNode( node, false, nodeType, stopSearchNode ) ;
-
- return node ;
- },
-
- // Inserts a element after a existing one.
- InsertAfterNode : function( existingNode, newNode )
- {
- return existingNode.parentNode.insertBefore( newNode, existingNode.nextSibling ) ;
- },
-
- GetParents : function( node )
- {
- var parents = new Array() ;
-
- while ( node )
- {
- parents.unshift( node ) ;
- node = node.parentNode ;
- }
-
- return parents ;
- },
-
- GetCommonParents : function( node1, node2 )
- {
- var p1 = this.GetParents( node1 ) ;
- var p2 = this.GetParents( node2 ) ;
- var retval = [] ;
- for ( var i = 0 ; i < p1.length ; i++ )
- {
- if ( p1[i] == p2[i] )
- retval.push( p1[i] ) ;
- }
- return retval ;
- },
-
- GetCommonParentNode : function( node1, node2, tagList )
- {
- var tagMap = {} ;
- if ( ! tagList.pop )
- tagList = [ tagList ] ;
- while ( tagList.length > 0 )
- tagMap[tagList.pop().toLowerCase()] = 1 ;
-
- var commonParents = this.GetCommonParents( node1, node2 ) ;
- var currentParent = null ;
- while ( ( currentParent = commonParents.pop() ) )
- {
- if ( tagMap[currentParent.nodeName.toLowerCase()] )
- return currentParent ;
- }
- return null ;
- },
-
- GetIndexOf : function( node )
- {
- var currentNode = node.parentNode ? node.parentNode.firstChild : null ;
- var currentIndex = -1 ;
-
- while ( currentNode )
- {
- currentIndex++ ;
-
- if ( currentNode == node )
- return currentIndex ;
-
- currentNode = currentNode.nextSibling ;
- }
-
- return -1 ;
- },
-
- PaddingNode : null,
-
- EnforcePaddingNode : function( doc, tagName )
- {
- // In IE it can happen when the page is reloaded that doc or doc.body is null, so exit here
- try
- {
- if ( !doc || !doc.body )
- return ;
- }
- catch (e)
- {
- return ;
- }
-
- this.CheckAndRemovePaddingNode( doc, tagName, true ) ;
- try
- {
- if ( doc.body.lastChild && ( doc.body.lastChild.nodeType != 1
- || doc.body.lastChild.tagName.toLowerCase() == tagName.toLowerCase() ) )
- return ;
- }
- catch (e)
- {
- return ;
- }
-
- var node = doc.createElement( tagName ) ;
- if ( FCKBrowserInfo.IsGecko && FCKListsLib.NonEmptyBlockElements[ tagName ] )
- FCKTools.AppendBogusBr( node ) ;
- this.PaddingNode = node ;
- if ( doc.body.childNodes.length == 1
- && doc.body.firstChild.nodeType == 1
- && doc.body.firstChild.tagName.toLowerCase() == 'br'
- && ( doc.body.firstChild.getAttribute( '_moz_dirty' ) != null
- || doc.body.firstChild.getAttribute( 'type' ) == '_moz' ) )
- doc.body.replaceChild( node, doc.body.firstChild ) ;
- else
- doc.body.appendChild( node ) ;
- },
-
- CheckAndRemovePaddingNode : function( doc, tagName, dontRemove )
- {
- var paddingNode = this.PaddingNode ;
- if ( ! paddingNode )
- return ;
-
- // If the padding node is changed, remove its status as a padding node.
- try
- {
- if ( paddingNode.parentNode != doc.body
- || paddingNode.tagName.toLowerCase() != tagName
- || ( paddingNode.childNodes.length > 1 )
- || ( paddingNode.firstChild && paddingNode.firstChild.nodeValue != '\xa0'
- && String(paddingNode.firstChild.tagName).toLowerCase() != 'br' ) )
- {
- this.PaddingNode = null ;
- return ;
- }
- }
- catch (e)
- {
- this.PaddingNode = null ;
- return ;
- }
-
- // Now we're sure the padding node exists, and it is unchanged, and it
- // isn't the only node in doc.body, remove it.
- if ( !dontRemove )
- {
- if ( paddingNode.parentNode.childNodes.length > 1 )
- paddingNode.parentNode.removeChild( paddingNode ) ;
- this.PaddingNode = null ;
- }
- },
-
- HasAttribute : function( element, attributeName )
- {
- if ( element.hasAttribute )
- return element.hasAttribute( attributeName ) ;
- else
- {
- var att = element.attributes[ attributeName ] ;
- return ( att != undefined && att.specified ) ;
- }
- },
-
- /**
- * Checks if an element has "specified" attributes.
- */
- HasAttributes : function( element )
- {
- var attributes = element.attributes ;
-
- for ( var i = 0 ; i < attributes.length ; i++ )
- {
- if ( FCKBrowserInfo.IsIE && attributes[i].nodeName == 'class' )
- {
- // IE has a strange bug. If calling removeAttribute('className'),
- // the attributes collection will still contain the "class"
- // attribute, which will be marked as "specified", even if the
- // outerHTML of the element is not displaying the class attribute.
- // Note : I was not able to reproduce it outside the editor,
- // but I've faced it while working on the TC of #1391.
- if ( element.className.length > 0 )
- return true ;
- }
- else if ( attributes[i].specified )
- return true ;
- }
-
- return false ;
- },
-
- /**
- * Remove an attribute from an element.
- */
- RemoveAttribute : function( element, attributeName )
- {
- if ( FCKBrowserInfo.IsIE && attributeName.toLowerCase() == 'class' )
- attributeName = 'className' ;
-
- return element.removeAttribute( attributeName, 0 ) ;
- },
-
- /**
- * Removes an array of attributes from an element
- */
- RemoveAttributes : function (element, aAttributes )
- {
- for ( var i = 0 ; i < aAttributes.length ; i++ )
- this.RemoveAttribute( element, aAttributes[i] );
- },
-
- GetAttributeValue : function( element, att )
- {
- var attName = att ;
-
- if ( typeof att == 'string' )
- att = element.attributes[ att ] ;
- else
- attName = att.nodeName ;
-
- if ( att && att.specified )
- {
- // IE returns "null" for the nodeValue of a "style" attribute.
- if ( attName == 'style' )
- return element.style.cssText ;
- // There are two cases when the nodeValue must be used:
- // - for the "class" attribute (all browsers).
- // - for events attributes (IE only).
- else if ( attName == 'class' || attName.indexOf('on') == 0 )
- return att.nodeValue ;
- else
- {
- // Use getAttribute to get its value exactly as it is
- // defined.
- return element.getAttribute( attName, 2 ) ;
- }
- }
- return null ;
- },
-
- /**
- * Checks whether one element contains the other.
- */
- Contains : function( mainElement, otherElement )
- {
- // IE supports contains, but only for element nodes.
- if ( mainElement.contains && otherElement.nodeType == 1 )
- return mainElement.contains( otherElement ) ;
-
- while ( ( otherElement = otherElement.parentNode ) ) // Only one "="
- {
- if ( otherElement == mainElement )
- return true ;
- }
- return false ;
- },
-
- /**
- * Breaks a parent element in the position of one of its contained elements.
- * For example, in the following case:
- * <b>This <i>is some<span /> sample</i> test text</b>
- * If element = <span />, we have these results:
- * <b>This <i>is some</i><span /><i> sample</i> test text</b> (If parent = <i>)
- * <b>This <i>is some</i></b><span /><b><i> sample</i> test text</b> (If parent = <b>)
- */
- BreakParent : function( element, parent, reusableRange )
- {
- var range = reusableRange || new FCKDomRange( FCKTools.GetElementWindow( element ) ) ;
-
- // We'll be extracting part of this element, so let's use our
- // range to get the correct piece.
- range.SetStart( element, 4 ) ;
- range.SetEnd( parent, 4 ) ;
-
- // Extract it.
- var docFrag = range.ExtractContents() ;
-
- // Move the element outside the broken element.
- range.InsertNode( element.parentNode.removeChild( element ) ) ;
-
- // Re-insert the extracted piece after the element.
- docFrag.InsertAfterNode( element ) ;
-
- range.Release( !!reusableRange ) ;
- },
-
- /**
- * Retrieves a uniquely identifiable tree address of a DOM tree node.
- * The tree address returns is an array of integers, with each integer
- * indicating a child index from a DOM tree node, starting from
- * document.documentElement.
- *
- * For example, assuming <body> is the second child from <html> (<head>
- * being the first), and we'd like to address the third child under the
- * fourth child of body, the tree address returned would be:
- * [1, 3, 2]
- *
- * The tree address cannot be used for finding back the DOM tree node once
- * the DOM tree structure has been modified.
- */
- GetNodeAddress : function( node, normalized )
- {
- var retval = [] ;
- while ( node && node != FCKTools.GetElementDocument( node ).documentElement )
- {
- var parentNode = node.parentNode ;
- var currentIndex = -1 ;
- for( var i = 0 ; i < parentNode.childNodes.length ; i++ )
- {
- var candidate = parentNode.childNodes[i] ;
- if ( normalized === true &&
- candidate.nodeType == 3 &&
- candidate.previousSibling &&
- candidate.previousSibling.nodeType == 3 )
- continue;
- currentIndex++ ;
- if ( parentNode.childNodes[i] == node )
- break ;
- }
- retval.unshift( currentIndex ) ;
- node = node.parentNode ;
- }
- return retval ;
- },
-
- /**
- * The reverse transformation of FCKDomTools.GetNodeAddress(). This
- * function returns the DOM node pointed to by its index address.
- */
- GetNodeFromAddress : function( doc, addr, normalized )
- {
- var cursor = doc.documentElement ;
- for ( var i = 0 ; i < addr.length ; i++ )
- {
- var target = addr[i] ;
- if ( ! normalized )
- {
- cursor = cursor.childNodes[target] ;
- continue ;
- }
-
- var currentIndex = -1 ;
- for (var j = 0 ; j < cursor.childNodes.length ; j++ )
- {
- var candidate = cursor.childNodes[j] ;
- if ( normalized === true &&
- candidate.nodeType == 3 &&
- candidate.previousSibling &&
- candidate.previousSibling.nodeType == 3 )
- continue ;
- currentIndex++ ;
- if ( currentIndex == target )
- {
- cursor = candidate ;
- break ;
- }
- }
- }
- return cursor ;
- },
-
- CloneElement : function( element )
- {
- element = element.cloneNode( false ) ;
-
- // The "id" attribute should never be cloned to avoid duplication.
- element.removeAttribute( 'id', false ) ;
-
- return element ;
- },
-
- ClearElementJSProperty : function( element, attrName )
- {
- if ( FCKBrowserInfo.IsIE )
- element.removeAttribute( attrName ) ;
- else
- delete element[attrName] ;
- },
-
- SetElementMarker : function ( markerObj, element, attrName, value)
- {
- var id = String( parseInt( Math.random() * 0xffffffff, 10 ) ) ;
- element._FCKMarkerId = id ;
- element[attrName] = value ;
- if ( ! markerObj[id] )
- markerObj[id] = { 'element' : element, 'markers' : {} } ;
- markerObj[id]['markers'][attrName] = value ;
- },
-
- ClearElementMarkers : function( markerObj, element, clearMarkerObj )
- {
- var id = element._FCKMarkerId ;
- if ( ! id )
- return ;
- this.ClearElementJSProperty( element, '_FCKMarkerId' ) ;
- for ( var j in markerObj[id]['markers'] )
- this.ClearElementJSProperty( element, j ) ;
- if ( clearMarkerObj )
- delete markerObj[id] ;
- },
-
- ClearAllMarkers : function( markerObj )
- {
- for ( var i in markerObj )
- this.ClearElementMarkers( markerObj, markerObj[i]['element'], true ) ;
- },
-
- /**
- * Convert a DOM list tree into a data structure that is easier to
- * manipulate. This operation should be non-intrusive in the sense that it
- * does not change the DOM tree, with the exception that it may add some
- * markers to the list item nodes when markerObj is specified.
- */
- ListToArray : function( listNode, markerObj, baseArray, baseIndentLevel, grandparentNode )
- {
- if ( ! listNode.nodeName.IEquals( ['ul', 'ol'] ) )
- return [] ;
-
- if ( ! baseIndentLevel )
- baseIndentLevel = 0 ;
- if ( ! baseArray )
- baseArray = [] ;
- // Iterate over all list items to get their contents and look for inner lists.
- for ( var i = 0 ; i < listNode.childNodes.length ; i++ )
- {
- var listItem = listNode.childNodes[i] ;
- if ( ! listItem.nodeName.IEquals( 'li' ) )
- continue ;
- var itemObj = { 'parent' : listNode, 'indent' : baseIndentLevel, 'contents' : [] } ;
- if ( ! grandparentNode )
- {
- itemObj.grandparent = listNode.parentNode ;
- if ( itemObj.grandparent && itemObj.grandparent.nodeName.IEquals( 'li' ) )
- itemObj.grandparent = itemObj.grandparent.parentNode ;
- }
- else
- itemObj.grandparent = grandparentNode ;
- if ( markerObj )
- this.SetElementMarker( markerObj, listItem, '_FCK_ListArray_Index', baseArray.length ) ;
- baseArray.push( itemObj ) ;
- for ( var j = 0 ; j < listItem.childNodes.length ; j++ )
- {
- var child = listItem.childNodes[j] ;
- if ( child.nodeName.IEquals( ['ul', 'ol'] ) )
- // Note the recursion here, it pushes inner list items with
- // +1 indentation in the correct order.
- this.ListToArray( child, markerObj, baseArray, baseIndentLevel + 1, itemObj.grandparent ) ;
- else
- itemObj.contents.push( child ) ;
- }
- }
- return baseArray ;
- },
-
- // Convert our internal representation of a list back to a DOM forest.
- ArrayToList : function( listArray, markerObj, baseIndex )
- {
- if ( baseIndex == undefined )
- baseIndex = 0 ;
- if ( ! listArray || listArray.length < baseIndex + 1 )
- return null ;
- var doc = FCKTools.GetElementDocument( listArray[baseIndex].parent ) ;
- var retval = doc.createDocumentFragment() ;
- var rootNode = null ;
- var currentIndex = baseIndex ;
- var indentLevel = Math.max( listArray[baseIndex].indent, 0 ) ;
- var currentListItem = null ;
- while ( true )
- {
- var item = listArray[currentIndex] ;
- if ( item.indent == indentLevel )
- {
- if ( ! rootNode || listArray[currentIndex].parent.nodeName != rootNode.nodeName )
- {
- rootNode = listArray[currentIndex].parent.cloneNode( false ) ;
- retval.appendChild( rootNode ) ;
- }
- currentListItem = doc.createElement( 'li' ) ;
- rootNode.appendChild( currentListItem ) ;
- for ( var i = 0 ; i < item.contents.length ; i++ )
- currentListItem.appendChild( item.contents[i].cloneNode( true ) ) ;
- currentIndex++ ;
- }
- else if ( item.indent == Math.max( indentLevel, 0 ) + 1 )
- {
- var listData = this.ArrayToList( listArray, null, currentIndex ) ;
- currentListItem.appendChild( listData.listNode ) ;
- currentIndex = listData.nextIndex ;
- }
- else if ( item.indent == -1 && baseIndex == 0 && item.grandparent )
- {
- var currentListItem ;
- if ( item.grandparent.nodeName.IEquals( ['ul', 'ol'] ) )
- currentListItem = doc.createElement( 'li' ) ;
- else
- {
- if ( FCKConfig.EnterMode.IEquals( ['div', 'p'] ) && ! item.grandparent.nodeName.IEquals( 'td' ) )
- currentListItem = doc.createElement( FCKConfig.EnterMode ) ;
- else
- currentListItem = doc.createDocumentFragment() ;
- }
- for ( var i = 0 ; i < item.contents.length ; i++ )
- currentListItem.appendChild( item.contents[i].cloneNode( true ) ) ;
- if ( currentListItem.nodeType == 11 )
- {
- if ( currentListItem.lastChild &&
- currentListItem.lastChild.getAttribute &&
- currentListItem.lastChild.getAttribute( 'type' ) == '_moz' )
- currentListItem.removeChild( currentListItem.lastChild );
- currentListItem.appendChild( doc.createElement( 'br' ) ) ;
- }
- if ( currentListItem.nodeName.IEquals( FCKConfig.EnterMode ) && currentListItem.firstChild )
- {
- this.TrimNode( currentListItem ) ;
- if ( FCKListsLib.BlockBoundaries[currentListItem.firstChild.nodeName.toLowerCase()] )
- {
- var tmp = doc.createDocumentFragment() ;
- while ( currentListItem.firstChild )
- tmp.appendChild( currentListItem.removeChild( currentListItem.firstChild ) ) ;
- currentListItem = tmp ;
- }
- }
- if ( FCKBrowserInfo.IsGeckoLike && currentListItem.nodeName.IEquals( ['div', 'p'] ) )
- FCKTools.AppendBogusBr( currentListItem ) ;
- retval.appendChild( currentListItem ) ;
- rootNode = null ;
- currentIndex++ ;
- }
- else
- return null ;
-
- if ( listArray.length <= currentIndex || Math.max( listArray[currentIndex].indent, 0 ) < indentLevel )
- {
- break ;
- }
- }
-
- // Clear marker attributes for the new list tree made of cloned nodes, if any.
- if ( markerObj )
- {
- var currentNode = retval.firstChild ;
- while ( currentNode )
- {
- if ( currentNode.nodeType == 1 )
- this.ClearElementMarkers( markerObj, currentNode ) ;
- currentNode = this.GetNextSourceNode( currentNode ) ;
- }
- }
-
- return { 'listNode' : retval, 'nextIndex' : currentIndex } ;
- },
-
- /**
- * Get the next sibling node for a node. If "includeEmpties" is false,
- * only element or non empty text nodes are returned.
- */
- GetNextSibling : function( node, includeEmpties )
- {
- node = node.nextSibling ;
-
- while ( node && !includeEmpties && node.nodeType != 1 && ( node.nodeType != 3 || node.nodeValue.length == 0 ) )
- node = node.nextSibling ;
-
- return node ;
- },
-
- /**
- * Get the previous sibling node for a node. If "includeEmpties" is false,
- * only element or non empty text nodes are returned.
- */
- GetPreviousSibling : function( node, includeEmpties )
- {
- node = node.previousSibling ;
-
- while ( node && !includeEmpties && node.nodeType != 1 && ( node.nodeType != 3 || node.nodeValue.length == 0 ) )
- node = node.previousSibling ;
-
- return node ;
- },
-
- /**
- * Checks if an element has no "useful" content inside of it
- * node tree. No "useful" content means empty text node or a signle empty
- * inline node.
- * elementCheckCallback may point to a function that returns a boolean
- * indicating that a child element must be considered in the element check.
- */
- CheckIsEmptyElement : function( element, elementCheckCallback )
- {
- var child = element.firstChild ;
- var elementChild ;
-
- while ( child )
- {
- if ( child.nodeType == 1 )
- {
- if ( elementChild || !FCKListsLib.InlineNonEmptyElements[ child.nodeName.toLowerCase() ] )
- return false ;
-
- if ( !elementCheckCallback || elementCheckCallback( child ) === true )
- elementChild = child ;
- }
- else if ( child.nodeType == 3 && child.nodeValue.length > 0 )
- return false ;
-
- child = child.nextSibling ;
- }
-
- return elementChild ? this.CheckIsEmptyElement( elementChild, elementCheckCallback ) : true ;
- },
-
- SetElementStyles : function( element, styleDict )
- {
- var style = element.style ;
- for ( var styleName in styleDict )
- style[ styleName ] = styleDict[ styleName ] ;
- },
-
- SetOpacity : function( element, opacity )
- {
- if ( FCKBrowserInfo.IsIE )
- {
- opacity = Math.round( opacity * 100 ) ;
- element.style.filter = ( opacity > 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')' ) ;
- }
- else
- element.style.opacity = opacity ;
- },
-
- GetCurrentElementStyle : function( element, propertyName )
- {
- if ( FCKBrowserInfo.IsIE )
- return element.currentStyle[ propertyName ] ;
- else
- return element.ownerDocument.defaultView.getComputedStyle( element, '' ).getPropertyValue( propertyName ) ;
- },
-
- GetPositionedAncestor : function( element )
- {
- var currentElement = element ;
-
- while ( currentElement != FCKTools.GetElementDocument( currentElement ).documentElement )
- {
- if ( this.GetCurrentElementStyle( currentElement, 'position' ) != 'static' )
- return currentElement ;
-
- if ( currentElement == FCKTools.GetElementDocument( currentElement ).documentElement
- && currentWindow != w )
- currentElement = currentWindow.frameElement ;
- else
- currentElement = currentElement.parentNode ;
- }
-
- return null ;
- },
-
- /**
- * Current implementation for ScrollIntoView (due to #1462 and #2279). We
- * don't have a complete implementation here, just the things that fit our
- * needs.
- */
- ScrollIntoView : function( element, alignTop )
- {
- // Get the element window.
- var window = FCKTools.GetElementWindow( element ) ;
- var windowHeight = FCKTools.GetViewPaneSize( window ).Height ;
-
- // Starts the offset that will be scrolled with the negative value of
- // the visible window height.
- var offset = windowHeight * -1 ;
-
- // Appends the height it we are about to align the bottoms.
- if ( alignTop === false )
- {
- offset += element.offsetHeight || 0 ;
-
- // Consider the margin in the scroll, which is ok for our current
- // needs, but needs investigation if we will be using this function
- // in other places.
- offset += parseInt( this.GetCurrentElementStyle( element, 'marginBottom' ) || 0, 10 ) || 0 ;
- }
-
- // Appends the offsets for the entire element hierarchy.
- var elementPosition = FCKTools.GetDocumentPosition( window, element ) ;
- offset += elementPosition.y ;
-
- // Scroll the window to the desired position, if not already visible.
- var currentScroll = FCKTools.GetScrollPosition( window ).Y ;
- if ( offset > 0 && ( offset > currentScroll || offset < currentScroll - windowHeight ) )
- window.scrollTo( 0, offset ) ;
- },
-
- /**
- * Check if the element can be edited inside the browser.
- */
- CheckIsEditable : function( element )
- {
- // Get the element name.
- var nodeName = element.nodeName.toLowerCase() ;
-
- // Get the element DTD (defaults to span for unknown elements).
- var childDTD = FCK.DTD[ nodeName ] || FCK.DTD.span ;
-
- // In the DTD # == text node.
- return ( childDTD['#'] && !FCKListsLib.NonEditableElements[ nodeName ] ) ;
- },
-
- GetSelectedDivContainers : function()
- {
- var currentBlocks = [] ;
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
-
- var startNode = range.GetTouchedStartNode() ;
- var endNode = range.GetTouchedEndNode() ;
- var currentNode = startNode ;
-
- if ( startNode == endNode )
- {
- while ( endNode.nodeType == 1 && endNode.lastChild )
- endNode = endNode.lastChild ;
- endNode = FCKDomTools.GetNextSourceNode( endNode ) ;
- }
-
- while ( currentNode && currentNode != endNode )
- {
- if ( currentNode.nodeType != 3 || !/^[ \t\n]*$/.test( currentNode.nodeValue ) )
- {
- var path = new FCKElementPath( currentNode ) ;
- var blockLimit = path.BlockLimit ;
- if ( blockLimit && blockLimit.nodeName.IEquals( 'div' ) && currentBlocks.IndexOf( blockLimit ) == -1 )
- currentBlocks.push( blockLimit ) ;
- }
-
- currentNode = FCKDomTools.GetNextSourceNode( currentNode ) ;
- }
-
- return currentBlocks ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklanguagemanager.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklanguagemanager.js
deleted file mode 100644
index 6efeb49e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklanguagemanager.js
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKLanguageManager object that is used for language
- * operations.
- */
-
-var FCKLanguageManager = FCK.Language =
-{
- AvailableLanguages :
- {
- af : 'Afrikaans',
- ar : 'Arabic',
- bg : 'Bulgarian',
- bn : 'Bengali/Bangla',
- bs : 'Bosnian',
- ca : 'Catalan',
- cs : 'Czech',
- da : 'Danish',
- de : 'German',
- el : 'Greek',
- en : 'English',
- 'en-au' : 'English (Australia)',
- 'en-ca' : 'English (Canadian)',
- 'en-uk' : 'English (United Kingdom)',
- eo : 'Esperanto',
- es : 'Spanish',
- et : 'Estonian',
- eu : 'Basque',
- fa : 'Persian',
- fi : 'Finnish',
- fo : 'Faroese',
- fr : 'French',
- 'fr-ca' : 'French (Canada)',
- gl : 'Galician',
- gu : 'Gujarati',
- he : 'Hebrew',
- hi : 'Hindi',
- hr : 'Croatian',
- hu : 'Hungarian',
- is : 'Icelandic',
- it : 'Italian',
- ja : 'Japanese',
- km : 'Khmer',
- ko : 'Korean',
- lt : 'Lithuanian',
- lv : 'Latvian',
- mn : 'Mongolian',
- ms : 'Malay',
- nb : 'Norwegian Bokmal',
- nl : 'Dutch',
- no : 'Norwegian',
- pl : 'Polish',
- pt : 'Portuguese (Portugal)',
- 'pt-br' : 'Portuguese (Brazil)',
- ro : 'Romanian',
- ru : 'Russian',
- sk : 'Slovak',
- sl : 'Slovenian',
- sr : 'Serbian (Cyrillic)',
- 'sr-latn' : 'Serbian (Latin)',
- sv : 'Swedish',
- th : 'Thai',
- tr : 'Turkish',
- uk : 'Ukrainian',
- vi : 'Vietnamese',
- zh : 'Chinese Traditional',
- 'zh-cn' : 'Chinese Simplified'
- },
-
- GetActiveLanguage : function()
- {
- if ( FCKConfig.AutoDetectLanguage )
- {
- var sUserLang ;
-
- // IE accepts "navigator.userLanguage" while Gecko "navigator.language".
- if ( navigator.userLanguage )
- sUserLang = navigator.userLanguage.toLowerCase() ;
- else if ( navigator.language )
- sUserLang = navigator.language.toLowerCase() ;
- else
- {
- // Firefox 1.0 PR has a bug: it doens't support the "language" property.
- return FCKConfig.DefaultLanguage ;
- }
-
- // Some language codes are set in 5 characters,
- // like "pt-br" for Brazilian Portuguese.
- if ( sUserLang.length >= 5 )
- {
- sUserLang = sUserLang.substr(0,5) ;
- if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
- }
-
- // If the user's browser is set to, for example, "pt-br" but only the
- // "pt" language file is available then get that file.
- if ( sUserLang.length >= 2 )
- {
- sUserLang = sUserLang.substr(0,2) ;
- if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
- }
- }
-
- return this.DefaultLanguage ;
- },
-
- TranslateElements : function( targetDocument, tag, propertyToSet, encode )
- {
- var e = targetDocument.getElementsByTagName(tag) ;
- var sKey, s ;
- for ( var i = 0 ; i < e.length ; i++ )
- {
- // The extra () is to avoid a warning with strict error checking. This is ok.
- if ( (sKey = e[i].getAttribute( 'fckLang' )) )
- {
- // The extra () is to avoid a warning with strict error checking. This is ok.
- if ( (s = FCKLang[ sKey ]) )
- {
- if ( encode )
- s = FCKTools.HTMLEncode( s ) ;
- e[i][ propertyToSet ] = s ;
- }
- }
- }
- },
-
- TranslatePage : function( targetDocument )
- {
- this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
- this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
- this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
- this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
- this.TranslateElements( targetDocument, 'LEGEND', 'innerHTML' ) ;
- },
-
- Initialize : function()
- {
- if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
- this.DefaultLanguage = FCKConfig.DefaultLanguage ;
- else
- this.DefaultLanguage = 'en' ;
-
- this.ActiveLanguage = new Object() ;
- this.ActiveLanguage.Code = this.GetActiveLanguage() ;
- this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklisthandler.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklisthandler.js
deleted file mode 100644
index 32c237f29..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklisthandler.js
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Tool object to manage HTML lists items (UL, OL and LI).
- */
-
-var FCKListHandler =
-{
- OutdentListItem : function( listItem )
- {
- var eParent = listItem.parentNode ;
-
- // It may happen that a LI is not in a UL or OL (Orphan).
- if ( eParent.tagName.toUpperCase().Equals( 'UL','OL' ) )
- {
- var oDocument = FCKTools.GetElementDocument( listItem ) ;
- var oDogFrag = new FCKDocumentFragment( oDocument ) ;
-
- // All children and successive siblings will be moved to a a DocFrag.
- var eNextSiblings = oDogFrag.RootNode ;
- var eHasLiSibling = false ;
-
- // If we have nested lists inside it, let's move it to the list of siblings.
- var eChildList = FCKDomTools.GetFirstChild( listItem, ['UL','OL'] ) ;
- if ( eChildList )
- {
- eHasLiSibling = true ;
-
- var eChild ;
- // The extra () is to avoid a warning with strict error checking. This is ok.
- while ( (eChild = eChildList.firstChild) )
- eNextSiblings.appendChild( eChildList.removeChild( eChild ) ) ;
-
- FCKDomTools.RemoveNode( eChildList ) ;
- }
-
- // Move all successive siblings.
- var eSibling ;
- var eHasSuccessiveLiSibling = false ;
- // The extra () is to avoid a warning with strict error checking. This is ok.
- while ( (eSibling = listItem.nextSibling) )
- {
- if ( !eHasLiSibling && eSibling.nodeType == 1 && eSibling.nodeName.toUpperCase() == 'LI' )
- eHasSuccessiveLiSibling = eHasLiSibling = true ;
-
- eNextSiblings.appendChild( eSibling.parentNode.removeChild( eSibling ) ) ;
-
- // If a sibling is a incorrectly nested UL or OL, consider only its children.
- if ( !eHasSuccessiveLiSibling && eSibling.nodeType == 1 && eSibling.nodeName.toUpperCase().Equals( 'UL','OL' ) )
- FCKDomTools.RemoveNode( eSibling, true ) ;
- }
-
- // If we are in a list chain.
- var sParentParentTag = eParent.parentNode.tagName.toUpperCase() ;
- var bWellNested = ( sParentParentTag == 'LI' ) ;
- if ( bWellNested || sParentParentTag.Equals( 'UL','OL' ) )
- {
- if ( eHasLiSibling )
- {
- var eChildList = eParent.cloneNode( false ) ;
- oDogFrag.AppendTo( eChildList ) ;
- listItem.appendChild( eChildList ) ;
- }
- else if ( bWellNested )
- oDogFrag.InsertAfterNode( eParent.parentNode ) ;
- else
- oDogFrag.InsertAfterNode( eParent ) ;
-
- // Move the LI after its parent.parentNode (the upper LI in the hierarchy).
- if ( bWellNested )
- FCKDomTools.InsertAfterNode( eParent.parentNode, eParent.removeChild( listItem ) ) ;
- else
- FCKDomTools.InsertAfterNode( eParent, eParent.removeChild( listItem ) ) ;
- }
- else
- {
- if ( eHasLiSibling )
- {
- var eNextList = eParent.cloneNode( false ) ;
- oDogFrag.AppendTo( eNextList ) ;
- FCKDomTools.InsertAfterNode( eParent, eNextList ) ;
- }
-
- var eBlock = oDocument.createElement( FCKConfig.EnterMode == 'p' ? 'p' : 'div' ) ;
- FCKDomTools.MoveChildren( eParent.removeChild( listItem ), eBlock ) ;
- FCKDomTools.InsertAfterNode( eParent, eBlock ) ;
-
- if ( FCKConfig.EnterMode == 'br' )
- {
- // We need the bogus to make it work properly. In Gecko, we
- // need it before the new block, on IE, after it.
- if ( FCKBrowserInfo.IsGecko )
- eBlock.parentNode.insertBefore( FCKTools.CreateBogusBR( oDocument ), eBlock ) ;
- else
- FCKDomTools.InsertAfterNode( eBlock, FCKTools.CreateBogusBR( oDocument ) ) ;
-
- FCKDomTools.RemoveNode( eBlock, true ) ;
- }
- }
-
- if ( this.CheckEmptyList( eParent ) )
- FCKDomTools.RemoveNode( eParent, true ) ;
- }
- },
-
- CheckEmptyList : function( listElement )
- {
- return ( FCKDomTools.GetFirstChild( listElement, 'LI' ) == null ) ;
- },
-
- // Check if the list has contents (excluding nested lists).
- CheckListHasContents : function( listElement )
- {
- var eChildNode = listElement.firstChild ;
-
- while ( eChildNode )
- {
- switch ( eChildNode.nodeType )
- {
- case 1 :
- if ( !eChildNode.nodeName.IEquals( 'UL','LI' ) )
- return true ;
- break ;
-
- case 3 :
- if ( eChildNode.nodeValue.Trim().length > 0 )
- return true ;
- }
-
- eChildNode = eChildNode.nextSibling ;
- }
-
- return false ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklistslib.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklistslib.js
deleted file mode 100644
index ac2e0aa35..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcklistslib.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Library of keys collections.
- *
- * Test have shown that check for the existence of a key in an object is the
- * most efficient list entry check (10x faster that regex). Example:
- * if ( FCKListsLib.<ListName>[key] != null )
- */
-
-var FCKListsLib =
-{
- // We are not handling <ins> and <del> as block elements, for now.
- BlockElements : { address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },
-
- // Block elements that may be filled with &nbsp; if empty.
- NonEmptyBlockElements : { p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },
-
- // Inline elements which MUST have child nodes.
- InlineChildReqElements : { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },
-
- // Inline elements which are not marked as empty "Empty" in the XHTML DTD.
- InlineNonEmptyElements : { a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },
-
- // Elements marked as empty "Empty" in the XHTML DTD.
- EmptyElements : { base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },
-
- // Elements that may be considered the "Block boundary" in an element path.
- PathBlockElements : { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },
-
- // Elements that may be considered the "Block limit" in an element path.
- PathBlockLimitElements : { body:1,div:1,td:1,th:1,caption:1,form:1 },
-
- // Block elements for the Styles System.
- StyleBlockElements : { address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },
-
- // Object elements for the Styles System.
- StyleObjectElements : { img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },
-
- // Elements that accept text nodes, but are not possible to edit in the browser.
- NonEditableElements : { button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },
-
- // Elements used to separate block contents.
- BlockBoundaries : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },
- ListBoundaries : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckplugins.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckplugins.js
deleted file mode 100644
index 6e394edae..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckplugins.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKPlugins object that is responsible for loading the Plugins.
- */
-
-var FCKPlugins = FCK.Plugins = new Object() ;
-FCKPlugins.ItemsCount = 0 ;
-FCKPlugins.Items = new Object() ;
-
-FCKPlugins.Load = function()
-{
- var oItems = FCKPlugins.Items ;
-
- // build the plugins collection.
- for ( var i = 0 ; i < FCKConfig.Plugins.Items.length ; i++ )
- {
- var oItem = FCKConfig.Plugins.Items[i] ;
- var oPlugin = oItems[ oItem[0] ] = new FCKPlugin( oItem[0], oItem[1], oItem[2] ) ;
- FCKPlugins.ItemsCount++ ;
- }
-
- // Load all items in the plugins collection.
- for ( var s in oItems )
- oItems[s].Load() ;
-
- // This is a self destroyable function (must be called once).
- FCKPlugins.Load = null ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckregexlib.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckregexlib.js
deleted file mode 100644
index 7c98f0706..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckregexlib.js
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * These are some Regular Expressions used by the editor.
- */
-
-var FCKRegexLib =
-{
-// This is the Regular expression used by the SetData method for the "&apos;" entity.
-AposEntity : /&apos;/gi ,
-
-// Used by the Styles combo to identify styles that can't be applied to text.
-ObjectElements : /^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i ,
-
-// List all named commands (commands that can be interpreted by the browser "execCommand" method.
-NamedCommands : /^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i ,
-
-BeforeBody : /(^[\s\S]*\<body[^\>]*\>)/i,
-AfterBody : /(\<\/body\>[\s\S]*$)/i,
-
-// Temporary text used to solve some browser specific limitations.
-ToReplace : /___fcktoreplace:([\w]+)/ig ,
-
-// Get the META http-equiv attribute from the tag.
-MetaHttpEquiv : /http-equiv\s*=\s*["']?([^"' ]+)/i ,
-
-HasBaseTag : /<base /i ,
-HasBodyTag : /<body[\s|>]/i ,
-
-HtmlOpener : /<html\s?[^>]*>/i ,
-HeadOpener : /<head\s?[^>]*>/i ,
-HeadCloser : /<\/head\s*>/i ,
-
-// Temporary classes (Tables without border, Anchors with content) used in IE
-FCK_Class : /\s*FCK__[^ ]*(?=\s+|$)/ ,
-
-// Validate element names (it must be in lowercase).
-ElementName : /(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/ ,
-
-// Used in conjunction with the FCKConfig.ForceSimpleAmpersand configuration option.
-ForceSimpleAmpersand : /___FCKAmp___/g ,
-
-// Get the closing parts of the tags with no closing tags, like <br/>... gets the "/>" part.
-SpaceNoClose : /\/>/g ,
-
-// Empty elements may be <p></p> or even a simple opening <p> (see #211).
-EmptyParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/ ,
-
-EmptyOutParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/ ,
-
-TagBody : /></ ,
-
-GeckoEntitiesMarker : /#\?-\:/g ,
-
-// We look for the "src" and href attribute with the " or ' or without one of
-// them. We have to do all in one, otherwise we will have problems with URLs
-// like "thumbnail.php?src=someimage.jpg" (SF-BUG 1554141).
-ProtectUrlsImg : /<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi ,
-ProtectUrlsA : /<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi ,
-ProtectUrlsArea : /<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi ,
-
-Html4DocType : /HTML 4\.0 Transitional/i ,
-DocTypeTag : /<!DOCTYPE[^>]*>/i ,
-HtmlDocType : /DTD HTML/ ,
-
-// These regex are used to save the original event attributes in the HTML.
-TagsWithEvent : /<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g ,
-EventAttributes : /\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,
-ProtectedEvents : /\s\w+_fckprotectedatt="([^"]+)"/g,
-
-StyleProperties : /\S+\s*:/g,
-
-// [a-zA-Z0-9:]+ seams to be more efficient than [\w:]+
-InvalidSelfCloseTags : /(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,
-
-// All variables defined in a style attribute or style definition. The variable
-// name is returned with $2.
-StyleVariableAttName : /#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,
-
-RegExp : /^\/(.*)\/([gim]*)$/,
-
-HtmlTag : /<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection.js
deleted file mode 100644
index 3021fc7d0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Active selection functions.
- */
-
-var FCKSelection = FCK.Selection =
-{
- GetParentBlock : function()
- {
- var retval = this.GetParentElement() ;
- while ( retval )
- {
- if ( FCKListsLib.BlockBoundaries[retval.nodeName.toLowerCase()] )
- break ;
- retval = retval.parentNode ;
- }
- return retval ;
- },
-
- ApplyStyle : function( styleDefinition )
- {
- FCKStyles.ApplyStyle( new FCKStyle( styleDefinition ) ) ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_gecko.js
deleted file mode 100644
index 6a9e5f0d5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_gecko.js
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Active selection functions. (Gecko specific implementation)
- */
-
-// Get the selection type (like document.select.type in IE).
-FCKSelection.GetType = function()
-{
- // By default set the type to "Text".
- var type = 'Text' ;
-
- // Check if the actual selection is a Control (IMG, TABLE, HR, etc...).
-
- var sel ;
- try { sel = this.GetSelection() ; } catch (e) {}
-
- if ( sel && sel.rangeCount == 1 )
- {
- var range = sel.getRangeAt(0) ;
- if ( range.startContainer == range.endContainer
- && ( range.endOffset - range.startOffset ) == 1
- && range.startContainer.nodeType == 1
- && FCKListsLib.StyleObjectElements[ range.startContainer.childNodes[ range.startOffset ].nodeName.toLowerCase() ] )
- {
- type = 'Control' ;
- }
- }
-
- return type ;
-}
-
-// Retrieves the selected element (if any), just in the case that a single
-// element (object like and image or a table) is selected.
-FCKSelection.GetSelectedElement = function()
-{
- var selection = !!FCK.EditorWindow && this.GetSelection() ;
- if ( !selection || selection.rangeCount < 1 )
- return null ;
-
- var range = selection.getRangeAt( 0 ) ;
- if ( range.startContainer != range.endContainer || range.startContainer.nodeType != 1 || range.startOffset != range.endOffset - 1 )
- return null ;
-
- var node = range.startContainer.childNodes[ range.startOffset ] ;
- if ( node.nodeType != 1 )
- return null ;
-
- return node ;
-}
-
-FCKSelection.GetParentElement = function()
-{
- if ( this.GetType() == 'Control' )
- return FCKSelection.GetSelectedElement().parentNode ;
- else
- {
- var oSel = this.GetSelection() ;
- if ( oSel )
- {
- // if anchorNode == focusNode, see if the selection is text only or including nodes.
- // if text only, return the parent node.
- // if the selection includes DOM nodes, then the anchorNode is the nearest container.
- if ( oSel.anchorNode && oSel.anchorNode == oSel.focusNode )
- {
- var oRange = oSel.getRangeAt( 0 ) ;
- if ( oRange.collapsed || oRange.startContainer.nodeType == 3 )
- return oSel.anchorNode.parentNode ;
- else
- return oSel.anchorNode ;
- }
-
- // looks like we're having a large selection here. To make the behavior same as IE's TextRange.parentElement(),
- // we need to find the nearest ancestor node which encapsulates both the beginning and the end of the selection.
- // TODO: A simpler logic can be found.
- var anchorPath = new FCKElementPath( oSel.anchorNode ) ;
- var focusPath = new FCKElementPath( oSel.focusNode ) ;
- var deepPath = null ;
- var shallowPath = null ;
- if ( anchorPath.Elements.length > focusPath.Elements.length )
- {
- deepPath = anchorPath.Elements ;
- shallowPath = focusPath.Elements ;
- }
- else
- {
- deepPath = focusPath.Elements ;
- shallowPath = anchorPath.Elements ;
- }
-
- var deepPathBase = deepPath.length - shallowPath.length ;
- for( var i = 0 ; i < shallowPath.length ; i++)
- {
- if ( deepPath[deepPathBase + i] == shallowPath[i])
- return shallowPath[i];
- }
- return null ;
- }
- }
- return null ;
-}
-
-FCKSelection.GetBoundaryParentElement = function( startBoundary )
-{
- if ( ! FCK.EditorWindow )
- return null ;
- if ( this.GetType() == 'Control' )
- return FCKSelection.GetSelectedElement().parentNode ;
- else
- {
- var oSel = this.GetSelection() ;
- if ( oSel && oSel.rangeCount > 0 )
- {
- var range = oSel.getRangeAt( startBoundary ? 0 : ( oSel.rangeCount - 1 ) ) ;
-
- var element = startBoundary ? range.startContainer : range.endContainer ;
-
- return ( element.nodeType == 1 ? element : element.parentNode ) ;
- }
- }
- return null ;
-}
-
-FCKSelection.SelectNode = function( element )
-{
- var oRange = FCK.EditorDocument.createRange() ;
- oRange.selectNode( element ) ;
-
- var oSel = this.GetSelection() ;
- oSel.removeAllRanges() ;
- oSel.addRange( oRange ) ;
-}
-
-FCKSelection.Collapse = function( toStart )
-{
- var oSel = this.GetSelection() ;
-
- if ( toStart == null || toStart === true )
- oSel.collapseToStart() ;
- else
- oSel.collapseToEnd() ;
-}
-
-// The "nodeTagName" parameter must be Upper Case.
-FCKSelection.HasAncestorNode = function( nodeTagName )
-{
- var oContainer = this.GetSelectedElement() ;
- if ( ! oContainer && FCK.EditorWindow )
- {
- try { oContainer = this.GetSelection().getRangeAt(0).startContainer ; }
- catch(e){}
- }
-
- while ( oContainer )
- {
- if ( oContainer.nodeType == 1 && oContainer.nodeName.IEquals( nodeTagName ) ) return true ;
- oContainer = oContainer.parentNode ;
- }
-
- return false ;
-}
-
-// The "nodeTagName" parameter must be Upper Case.
-FCKSelection.MoveToAncestorNode = function( nodeTagName )
-{
- var oNode ;
-
- var oContainer = this.GetSelectedElement() ;
- if ( ! oContainer )
- oContainer = this.GetSelection().getRangeAt(0).startContainer ;
-
- while ( oContainer )
- {
- if ( oContainer.nodeName.IEquals( nodeTagName ) )
- return oContainer ;
-
- oContainer = oContainer.parentNode ;
- }
- return null ;
-}
-
-FCKSelection.Delete = function()
-{
- // Gets the actual selection.
- var oSel = this.GetSelection() ;
-
- // Deletes the actual selection contents.
- for ( var i = 0 ; i < oSel.rangeCount ; i++ )
- {
- oSel.getRangeAt(i).deleteContents() ;
- }
-
- return oSel ;
-}
-
-/**
- * Returns the native selection object.
- */
-FCKSelection.GetSelection = function()
-{
- return FCK.EditorWindow.getSelection() ;
-}
-
-// The following are IE only features (we don't need then in other browsers
-// currently).
-FCKSelection.Save = function()
-{}
-FCKSelection.Restore = function()
-{}
-FCKSelection.Release = function()
-{}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_ie.js
deleted file mode 100644
index 7dc180fb0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckselection_ie.js
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Active selection functions. (IE specific implementation)
- */
-
-// Get the selection type.
-FCKSelection.GetType = function()
-{
- // It is possible that we can still get a text range object even when type=='None' is returned by IE.
- // So we'd better check the object returned by createRange() rather than by looking at the type.
- try
- {
- var ieType = FCKSelection.GetSelection().type ;
- if ( ieType == 'Control' || ieType == 'Text' )
- return ieType ;
-
- if ( this.GetSelection().createRange().parentElement )
- return 'Text' ;
- }
- catch(e)
- {
- // Nothing to do, it will return None properly.
- }
-
- return 'None' ;
-} ;
-
-// Retrieves the selected element (if any), just in the case that a single
-// element (object like and image or a table) is selected.
-FCKSelection.GetSelectedElement = function()
-{
- if ( this.GetType() == 'Control' )
- {
- var oRange = this.GetSelection().createRange() ;
-
- if ( oRange && oRange.item )
- return this.GetSelection().createRange().item(0) ;
- }
- return null ;
-} ;
-
-FCKSelection.GetParentElement = function()
-{
- switch ( this.GetType() )
- {
- case 'Control' :
- var el = FCKSelection.GetSelectedElement() ;
- return el ? el.parentElement : null ;
-
- case 'None' :
- return null ;
-
- default :
- return this.GetSelection().createRange().parentElement() ;
- }
-} ;
-
-FCKSelection.GetBoundaryParentElement = function( startBoundary )
-{
- switch ( this.GetType() )
- {
- case 'Control' :
- var el = FCKSelection.GetSelectedElement() ;
- return el ? el.parentElement : null ;
-
- case 'None' :
- return null ;
-
- default :
- var doc = FCK.EditorDocument ;
-
- var range = doc.selection.createRange() ;
- range.collapse( startBoundary !== false ) ;
-
- var el = range.parentElement() ;
-
- // It may happen that range is comming from outside "doc", so we
- // must check it (#1204).
- return FCKTools.GetElementDocument( el ) == doc ? el : null ;
- }
-} ;
-
-FCKSelection.SelectNode = function( node )
-{
- FCK.Focus() ;
- this.GetSelection().empty() ;
- var oRange ;
- try
- {
- // Try to select the node as a control.
- oRange = FCK.EditorDocument.body.createControlRange() ;
- oRange.addElement( node ) ;
- }
- catch(e)
- {
- // If failed, select it as a text range.
- oRange = FCK.EditorDocument.body.createTextRange() ;
- oRange.moveToElementText( node ) ;
- }
-
- oRange.select() ;
-} ;
-
-FCKSelection.Collapse = function( toStart )
-{
- FCK.Focus() ;
- if ( this.GetType() == 'Text' )
- {
- var oRange = this.GetSelection().createRange() ;
- oRange.collapse( toStart == null || toStart === true ) ;
- oRange.select() ;
- }
-} ;
-
-// The "nodeTagName" parameter must be Upper Case.
-FCKSelection.HasAncestorNode = function( nodeTagName )
-{
- var oContainer ;
-
- if ( this.GetSelection().type == "Control" )
- {
- oContainer = this.GetSelectedElement() ;
- }
- else
- {
- var oRange = this.GetSelection().createRange() ;
- oContainer = oRange.parentElement() ;
- }
-
- while ( oContainer )
- {
- if ( oContainer.nodeName.IEquals( nodeTagName ) ) return true ;
- oContainer = oContainer.parentNode ;
- }
-
- return false ;
-} ;
-
-// The "nodeTagName" parameter must be UPPER CASE.
-// It can be also an array of names
-FCKSelection.MoveToAncestorNode = function( nodeTagName )
-{
- var oNode, oRange ;
-
- if ( ! FCK.EditorDocument )
- return null ;
-
- if ( this.GetSelection().type == "Control" )
- {
- oRange = this.GetSelection().createRange() ;
- for ( i = 0 ; i < oRange.length ; i++ )
- {
- if (oRange(i).parentNode)
- {
- oNode = oRange(i).parentNode ;
- break ;
- }
- }
- }
- else
- {
- oRange = this.GetSelection().createRange() ;
- oNode = oRange.parentElement() ;
- }
-
- while ( oNode && !oNode.nodeName.Equals( nodeTagName ) )
- oNode = oNode.parentNode ;
-
- return oNode ;
-} ;
-
-FCKSelection.Delete = function()
-{
- // Gets the actual selection.
- var oSel = this.GetSelection() ;
-
- // Deletes the actual selection contents.
- if ( oSel.type.toLowerCase() != "none" )
- {
- oSel.clear() ;
- }
-
- return oSel ;
-} ;
-
-/**
- * Returns the native selection object.
- */
-FCKSelection.GetSelection = function()
-{
- this.Restore() ;
- return FCK.EditorDocument.selection ;
-}
-
-FCKSelection.Save = function( lock )
-{
- var editorDocument = FCK.EditorDocument ;
-
- if ( !editorDocument )
- return ;
-
- // Avoid saving again a selection while a dialog is open #2616
- if ( this.locked )
- return ;
- this.locked = !!lock ;
-
- var selection = editorDocument.selection ;
- var range ;
-
- if ( selection )
- {
- // The call might fail if the document doesn't have the focus (#1801),
- // but we don't want to modify the current selection (#2495) with a call to FCK.Focus() ;
- try {
- range = selection.createRange() ;
- }
- catch(e) {}
-
- // Ensure that the range comes from the editor document.
- if ( range )
- {
- if ( range.parentElement && FCKTools.GetElementDocument( range.parentElement() ) != editorDocument )
- range = null ;
- else if ( range.item && FCKTools.GetElementDocument( range.item(0) )!= editorDocument )
- range = null ;
- }
- }
-
- this.SelectionData = range ;
-}
-
-FCKSelection._GetSelectionDocument = function( selection )
-{
- var range = selection.createRange() ;
- if ( !range )
- return null;
- else if ( range.item )
- return FCKTools.GetElementDocument( range.item( 0 ) ) ;
- else
- return FCKTools.GetElementDocument( range.parentElement() ) ;
-}
-
-FCKSelection.Restore = function()
-{
- if ( this.SelectionData )
- {
- FCK.IsSelectionChangeLocked = true ;
-
- try
- {
- // Don't repeat the restore process if the editor document is already selected.
- if ( String( this._GetSelectionDocument( FCK.EditorDocument.selection ).body.contentEditable ) == 'true' )
- {
- FCK.IsSelectionChangeLocked = false ;
- return ;
- }
- this.SelectionData.select() ;
- }
- catch ( e ) {}
-
- FCK.IsSelectionChangeLocked = false ;
- }
-}
-
-FCKSelection.Release = function()
-{
- this.locked = false ;
- delete this.SelectionData ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckstyles.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckstyles.js
deleted file mode 100644
index fd14fb537..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckstyles.js
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Handles styles in a give document.
- */
-
-var FCKStyles = FCK.Styles =
-{
- _Callbacks : {},
- _ObjectStyles : {},
-
- ApplyStyle : function( style )
- {
- if ( typeof style == 'string' )
- style = this.GetStyles()[ style ] ;
-
- if ( style )
- {
- if ( style.GetType() == FCK_STYLE_OBJECT )
- style.ApplyToObject( FCKSelection.GetSelectedElement() ) ;
- else
- style.ApplyToSelection( FCK.EditorWindow ) ;
-
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- }
- },
-
- RemoveStyle : function( style )
- {
- if ( typeof style == 'string' )
- style = this.GetStyles()[ style ] ;
-
- if ( style )
- {
- style.RemoveFromSelection( FCK.EditorWindow ) ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- }
- },
-
- /**
- * Defines a callback function to be called when the current state of a
- * specific style changes.
- */
- AttachStyleStateChange : function( styleName, callback, callbackOwner )
- {
- var callbacks = this._Callbacks[ styleName ] ;
-
- if ( !callbacks )
- callbacks = this._Callbacks[ styleName ] = [] ;
-
- callbacks.push( [ callback, callbackOwner ] ) ;
- },
-
- CheckSelectionChanges : function()
- {
- var startElement = FCKSelection.GetBoundaryParentElement( true ) ;
-
- if ( !startElement )
- return ;
-
- // Walks the start node parents path, checking all styles that are being listened.
- var path = new FCKElementPath( startElement ) ;
- var styles = this.GetStyles() ;
-
- for ( var styleName in styles )
- {
- var callbacks = this._Callbacks[ styleName ] ;
-
- if ( callbacks )
- {
- var style = styles[ styleName ] ;
- var state = style.CheckActive( path ) ;
-
- if ( state != ( style._LastState || null ) )
- {
- style._LastState = state ;
-
- for ( var i = 0 ; i < callbacks.length ; i++ )
- {
- var callback = callbacks[i][0] ;
- var callbackOwner = callbacks[i][1] ;
-
- callback.call( callbackOwner || window, styleName, state ) ;
- }
- }
- }
- }
- },
-
- CheckStyleInSelection : function( styleName )
- {
- return false ;
- },
-
- _GetRemoveFormatTagsRegex : function ()
- {
- var regex = new RegExp( '^(?:' + FCKConfig.RemoveFormatTags.replace( /,/g,'|' ) + ')$', 'i' ) ;
-
- return (this._GetRemoveFormatTagsRegex = function()
- {
- return regex ;
- })
- && regex ;
- },
-
- /**
- * Remove all styles from the current selection.
- * TODO:
- * - This is almost a duplication of FCKStyle.RemoveFromRange. We should
- * try to merge things.
- */
- RemoveAll : function()
- {
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
-
- if ( range.CheckIsCollapsed() )
- return ;
-
- // Expand the range, if inside inline element boundaries.
- range.Expand( 'inline_elements' ) ;
-
- // Get the bookmark nodes.
- // Bookmark the range so we can re-select it after processing.
- var bookmark = range.CreateBookmark( true ) ;
-
- // The style will be applied within the bookmark boundaries.
- var startNode = range.GetBookmarkNode( bookmark, true ) ;
- var endNode = range.GetBookmarkNode( bookmark, false ) ;
-
- range.Release( true ) ;
-
- var tagsRegex = this._GetRemoveFormatTagsRegex() ;
-
- // We need to check the selection boundaries (bookmark spans) to break
- // the code in a way that we can properly remove partially selected nodes.
- // For example, removing a <b> style from
- // <b>This is [some text</b> to show <b>the] problem</b>
- // ... where [ and ] represent the selection, must result:
- // <b>This is </b>[some text to show the]<b> problem</b>
- // The strategy is simple, we just break the partial nodes before the
- // removal logic, having something that could be represented this way:
- // <b>This is </b>[<b>some text</b> to show <b>the</b>]<b> problem</b>
-
- // Let's start checking the start boundary.
- var path = new FCKElementPath( startNode ) ;
- var pathElements = path.Elements ;
- var pathElement ;
-
- for ( var i = 1 ; i < pathElements.length ; i++ )
- {
- pathElement = pathElements[i] ;
-
- if ( pathElement == path.Block || pathElement == path.BlockLimit )
- break ;
-
- // If this element can be removed (even partially).
- if ( tagsRegex.test( pathElement.nodeName ) )
- FCKDomTools.BreakParent( startNode, pathElement, range ) ;
- }
-
- // Now the end boundary.
- path = new FCKElementPath( endNode ) ;
- pathElements = path.Elements ;
-
- for ( var i = 1 ; i < pathElements.length ; i++ )
- {
- pathElement = pathElements[i] ;
-
- if ( pathElement == path.Block || pathElement == path.BlockLimit )
- break ;
-
- elementName = pathElement.nodeName.toLowerCase() ;
-
- // If this element can be removed (even partially).
- if ( tagsRegex.test( pathElement.nodeName ) )
- FCKDomTools.BreakParent( endNode, pathElement, range ) ;
- }
-
- // Navigate through all nodes between the bookmarks.
- var currentNode = FCKDomTools.GetNextSourceNode( startNode, true, 1 ) ;
-
- while ( currentNode )
- {
- // If we have reached the end of the selection, stop looping.
- if ( currentNode == endNode )
- break ;
-
- // Cache the next node to be processed. Do it now, because
- // currentNode may be removed.
- var nextNode = FCKDomTools.GetNextSourceNode( currentNode, false, 1 ) ;
-
- // Remove elements nodes that match with this style rules.
- if ( tagsRegex.test( currentNode.nodeName ) )
- FCKDomTools.RemoveNode( currentNode, true ) ;
- else
- FCKDomTools.RemoveAttributes( currentNode, FCKConfig.RemoveAttributesArray );
-
- currentNode = nextNode ;
- }
-
- range.SelectBookmark( bookmark ) ;
-
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- },
-
- GetStyle : function( styleName )
- {
- return this.GetStyles()[ styleName ] ;
- },
-
- GetStyles : function()
- {
- var styles = this._GetStyles ;
- if ( !styles )
- {
- styles = this._GetStyles = FCKTools.Merge(
- this._LoadStylesCore(),
- this._LoadStylesCustom(),
- this._LoadStylesXml() ) ;
- }
- return styles ;
- },
-
- CheckHasObjectStyle : function( elementName )
- {
- return !!this._ObjectStyles[ elementName ] ;
- },
-
- _LoadStylesCore : function()
- {
- var styles = {};
- var styleDefs = FCKConfig.CoreStyles ;
-
- for ( var styleName in styleDefs )
- {
- // Core styles are prefixed with _FCK_.
- var style = styles[ '_FCK_' + styleName ] = new FCKStyle( styleDefs[ styleName ] ) ;
- style.IsCore = true ;
- }
- return styles ;
- },
-
- _LoadStylesCustom : function()
- {
- var styles = {};
- var styleDefs = FCKConfig.CustomStyles ;
-
- if ( styleDefs )
- {
- for ( var styleName in styleDefs )
- {
- var style = styles[ styleName ] = new FCKStyle( styleDefs[ styleName ] ) ;
- style.Name = styleName ;
- }
- }
-
- return styles ;
- },
-
- _LoadStylesXml : function()
- {
- var styles = {};
-
- var stylesXmlPath = FCKConfig.StylesXmlPath ;
-
- if ( !stylesXmlPath || stylesXmlPath.length == 0 )
- return styles ;
-
- // Load the XML file into a FCKXml object.
- var xml = new FCKXml() ;
- xml.LoadUrl( stylesXmlPath ) ;
-
- var stylesXmlObj = FCKXml.TransformToObject( xml.SelectSingleNode( 'Styles' ) ) ;
-
- // Get the "Style" nodes defined in the XML file.
- var styleNodes = stylesXmlObj.$Style ;
-
- // Check that it did contain some valid nodes
- if ( !styleNodes )
- return styles ;
-
- // Add each style to our "Styles" collection.
- for ( var i = 0 ; i < styleNodes.length ; i++ )
- {
- var styleNode = styleNodes[i] ;
-
- var element = ( styleNode.element || '' ).toLowerCase() ;
-
- if ( element.length == 0 )
- throw( 'The element name is required. Error loading "' + stylesXmlPath + '"' ) ;
-
- var styleDef = {
- Element : element,
- Attributes : {},
- Styles : {},
- Overrides : []
- } ;
-
- // Get the attributes defined for the style (if any).
- var attNodes = styleNode.$Attribute || [] ;
-
- // Add the attributes to the style definition object.
- for ( var j = 0 ; j < attNodes.length ; j++ )
- {
- styleDef.Attributes[ attNodes[j].name ] = attNodes[j].value ;
- }
-
- // Get the styles defined for the style (if any).
- var cssStyleNodes = styleNode.$Style || [] ;
-
- // Add the attributes to the style definition object.
- for ( j = 0 ; j < cssStyleNodes.length ; j++ )
- {
- styleDef.Styles[ cssStyleNodes[j].name ] = cssStyleNodes[j].value ;
- }
-
- // Load override definitions.
- var cssStyleOverrideNodes = styleNode.$Override ;
- if ( cssStyleOverrideNodes )
- {
- for ( j = 0 ; j < cssStyleOverrideNodes.length ; j++ )
- {
- var overrideNode = cssStyleOverrideNodes[j] ;
- var overrideDef =
- {
- Element : overrideNode.element
- } ;
-
- var overrideAttNode = overrideNode.$Attribute ;
- if ( overrideAttNode )
- {
- overrideDef.Attributes = {} ;
- for ( var k = 0 ; k < overrideAttNode.length ; k++ )
- {
- var overrideAttValue = overrideAttNode[k].value || null ;
- if ( overrideAttValue )
- {
- // Check if the override attribute value is a regular expression.
- var regexMatch = overrideAttValue && FCKRegexLib.RegExp.exec( overrideAttValue ) ;
- if ( regexMatch )
- overrideAttValue = new RegExp( regexMatch[1], regexMatch[2] || '' ) ;
- }
- overrideDef.Attributes[ overrideAttNode[k].name ] = overrideAttValue ;
- }
- }
-
- styleDef.Overrides.push( overrideDef ) ;
- }
- }
-
- var style = new FCKStyle( styleDef ) ;
- style.Name = styleNode.name || element ;
-
- if ( style.GetType() == FCK_STYLE_OBJECT )
- this._ObjectStyles[ element ] = true ;
-
- // Add the style to the "Styles" collection using it's name as the key.
- styles[ style.Name ] = style ;
- }
-
- return styles ;
- }
-} ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler.js
deleted file mode 100644
index 25069f0ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler.js
+++ /dev/null
@@ -1,863 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Manage table operations.
- */
-
-var FCKTableHandler = new Object() ;
-
-FCKTableHandler.InsertRow = function( insertBefore )
-{
- // Get the row where the selection is placed in.
- var oRow = FCKSelection.MoveToAncestorNode( 'TR' ) ;
- if ( !oRow ) return ;
-
- // Create a clone of the row.
- var oNewRow = oRow.cloneNode( true ) ;
-
- // Insert the new row (copy) before of it.
- oRow.parentNode.insertBefore( oNewRow, oRow ) ;
-
- // Clean one of the rows to produce the illusion of inserting an empty row before or after.
- FCKTableHandler.ClearRow( insertBefore ? oNewRow : oRow ) ;
-}
-
-FCKTableHandler.DeleteRows = function( row )
-{
- // If no row has been passed as a parameter,
- // then get the row( s ) containing the cells where the selection is placed in.
- // If user selected multiple rows ( by selecting multiple cells ), walk
- // the selected cell list and delete the rows containing the selected cells
- if ( ! row )
- {
- var aCells = FCKTableHandler.GetSelectedCells() ;
- var aRowsToDelete = new Array() ;
- //queue up the rows -- it's possible ( and likely ) that we may get duplicates
- for ( var i = 0; i < aCells.length; i++ )
- {
- var oRow = aCells[i].parentNode ;
- aRowsToDelete[oRow.rowIndex] = oRow ;
- }
- for ( var i = aRowsToDelete.length; i >= 0; i-- )
- {
- if ( aRowsToDelete[i] )
- FCKTableHandler.DeleteRows( aRowsToDelete[i] );
- }
- return ;
- }
-
- // Get the row's table.
- var oTable = FCKTools.GetElementAscensor( row, 'TABLE' ) ;
-
- // If just one row is available then delete the entire table.
- if ( oTable.rows.length == 1 )
- {
- FCKTableHandler.DeleteTable( oTable ) ;
- return ;
- }
-
- // Delete the row.
- row.parentNode.removeChild( row ) ;
-}
-
-FCKTableHandler.DeleteTable = function( table )
-{
- // If no table has been passed as a parameter,
- // then get the table where the selection is placed in.
- if ( !table )
- {
- table = FCKSelection.GetSelectedElement() ;
- if ( !table || table.tagName != 'TABLE' )
- table = FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
- }
- if ( !table ) return ;
-
- // Delete the table.
- FCKSelection.SelectNode( table ) ;
- FCKSelection.Collapse();
-
- // if the table is wrapped with a singleton <p> ( or something similar ), remove
- // the surrounding tag -- which likely won't show after deletion anyway
- if ( table.parentNode.childNodes.length == 1 )
- table.parentNode.parentNode.removeChild( table.parentNode );
- else
- table.parentNode.removeChild( table ) ;
-}
-
-FCKTableHandler.InsertColumn = function( insertBefore )
-{
- // Get the cell where the selection is placed in.
- var oCell = null ;
- var nodes = this.GetSelectedCells() ;
-
- if ( nodes && nodes.length )
- oCell = nodes[ insertBefore ? 0 : ( nodes.length - 1 ) ] ;
-
- if ( ! oCell )
- return ;
-
- // Get the cell's table.
- var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ;
-
- var iIndex = oCell.cellIndex ;
-
- // Loop through all rows available in the table.
- for ( var i = 0 ; i < oTable.rows.length ; i++ )
- {
- // Get the row.
- var oRow = oTable.rows[i] ;
-
- // If the row doesn't have enough cells, ignore it.
- if ( oRow.cells.length < ( iIndex + 1 ) )
- continue ;
-
- oCell = oRow.cells[iIndex].cloneNode(false) ;
-
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( oCell ) ;
-
- // Get back the currently selected cell.
- var oBaseCell = oRow.cells[iIndex] ;
-
- oRow.insertBefore( oCell, ( insertBefore ? oBaseCell : oBaseCell.nextSibling ) ) ;
- }
-}
-
-FCKTableHandler.DeleteColumns = function( oCell )
-{
- // if user selected multiple cols ( by selecting multiple cells ), walk
- // the selected cell list and delete the rows containing the selected cells
- if ( !oCell )
- {
- var aColsToDelete = FCKTableHandler.GetSelectedCells();
- for ( var i = aColsToDelete.length; i >= 0; i-- )
- {
- if ( aColsToDelete[i] )
- FCKTableHandler.DeleteColumns( aColsToDelete[i] );
- }
- return;
- }
-
- if ( !oCell ) return ;
-
- // Get the cell's table.
- var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ;
-
- // Get the cell index.
- var iIndex = oCell.cellIndex ;
-
- // Loop throw all rows (from down to up, because it's possible that some
- // rows will be deleted).
- for ( var i = oTable.rows.length - 1 ; i >= 0 ; i-- )
- {
- // Get the row.
- var oRow = oTable.rows[i] ;
-
- // If the cell to be removed is the first one and the row has just one cell.
- if ( iIndex == 0 && oRow.cells.length == 1 )
- {
- // Remove the entire row.
- FCKTableHandler.DeleteRows( oRow ) ;
- continue ;
- }
-
- // If the cell to be removed exists the delete it.
- if ( oRow.cells[iIndex] )
- oRow.removeChild( oRow.cells[iIndex] ) ;
- }
-}
-
-FCKTableHandler.InsertCell = function( cell, insertBefore )
-{
- // Get the cell where the selection is placed in.
- var oCell = null ;
- var nodes = this.GetSelectedCells() ;
- if ( nodes && nodes.length )
- oCell = nodes[ insertBefore ? 0 : ( nodes.length - 1 ) ] ;
- if ( ! oCell )
- return null ;
-
- // Create the new cell element to be added.
- var oNewCell = FCK.EditorDocument.createElement( 'TD' ) ;
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( oNewCell ) ;
-
- if ( !insertBefore && oCell.cellIndex == oCell.parentNode.cells.length - 1 )
- oCell.parentNode.appendChild( oNewCell ) ;
- else
- oCell.parentNode.insertBefore( oNewCell, insertBefore ? oCell : oCell.nextSibling ) ;
-
- return oNewCell ;
-}
-
-FCKTableHandler.DeleteCell = function( cell )
-{
- // If this is the last cell in the row.
- if ( cell.parentNode.cells.length == 1 )
- {
- // Delete the entire row.
- FCKTableHandler.DeleteRows( cell.parentNode ) ;
- return ;
- }
-
- // Delete the cell from the row.
- cell.parentNode.removeChild( cell ) ;
-}
-
-FCKTableHandler.DeleteCells = function()
-{
- var aCells = FCKTableHandler.GetSelectedCells() ;
-
- for ( var i = aCells.length - 1 ; i >= 0 ; i-- )
- {
- FCKTableHandler.DeleteCell( aCells[i] ) ;
- }
-}
-
-FCKTableHandler._MarkCells = function( cells, label )
-{
- for ( var i = 0 ; i < cells.length ; i++ )
- cells[i][label] = true ;
-}
-
-FCKTableHandler._UnmarkCells = function( cells, label )
-{
- for ( var i = 0 ; i < cells.length ; i++ )
- {
- FCKDomTools.ClearElementJSProperty(cells[i], label ) ;
- }
-}
-
-FCKTableHandler._ReplaceCellsByMarker = function( tableMap, marker, substitute )
-{
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- for ( var j = 0 ; j < tableMap[i].length ; j++ )
- {
- if ( tableMap[i][j][marker] )
- tableMap[i][j] = substitute ;
- }
- }
-}
-
-FCKTableHandler._GetMarkerGeometry = function( tableMap, rowIdx, colIdx, markerName )
-{
- var selectionWidth = 0 ;
- var selectionHeight = 0 ;
- var cellsLeft = 0 ;
- var cellsUp = 0 ;
- for ( var i = colIdx ; tableMap[rowIdx][i] && tableMap[rowIdx][i][markerName] ; i++ )
- selectionWidth++ ;
- for ( var i = colIdx - 1 ; tableMap[rowIdx][i] && tableMap[rowIdx][i][markerName] ; i-- )
- {
- selectionWidth++ ;
- cellsLeft++ ;
- }
- for ( var i = rowIdx ; tableMap[i] && tableMap[i][colIdx] && tableMap[i][colIdx][markerName] ; i++ )
- selectionHeight++ ;
- for ( var i = rowIdx - 1 ; tableMap[i] && tableMap[i][colIdx] && tableMap[i][colIdx][markerName] ; i-- )
- {
- selectionHeight++ ;
- cellsUp++ ;
- }
- return { 'width' : selectionWidth, 'height' : selectionHeight, 'x' : cellsLeft, 'y' : cellsUp } ;
-}
-
-FCKTableHandler.CheckIsSelectionRectangular = function()
-{
- // If every row and column in an area on a plane are of the same width and height,
- // Then the area is a rectangle.
- var cells = FCKTableHandler.GetSelectedCells() ;
- if ( cells.length < 1 )
- return false ;
-
- // Check if the selected cells are all in the same table section (thead, tfoot or tbody)
- for (var i = 0; i < cells.length; i++)
- {
- if ( cells[i].parentNode.parentNode != cells[0].parentNode.parentNode )
- return false ;
- }
-
- this._MarkCells( cells, '_CellSelected' ) ;
-
- var tableMap = this._CreateTableMap( cells[0] ) ;
- var rowIdx = cells[0].parentNode.rowIndex ;
- var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, cells[0] ) ;
-
- var geometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_CellSelected' ) ;
- var baseColIdx = colIdx - geometry.x ;
- var baseRowIdx = rowIdx - geometry.y ;
-
- if ( geometry.width >= geometry.height )
- {
- for ( colIdx = baseColIdx ; colIdx < baseColIdx + geometry.width ; colIdx++ )
- {
- rowIdx = baseRowIdx + ( colIdx - baseColIdx ) % geometry.height ;
- if ( ! tableMap[rowIdx] || ! tableMap[rowIdx][colIdx] )
- {
- this._UnmarkCells( cells, '_CellSelected' ) ;
- return false ;
- }
- var g = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_CellSelected' ) ;
- if ( g.width != geometry.width || g.height != geometry.height )
- {
- this._UnmarkCells( cells, '_CellSelected' ) ;
- return false ;
- }
- }
- }
- else
- {
- for ( rowIdx = baseRowIdx ; rowIdx < baseRowIdx + geometry.height ; rowIdx++ )
- {
- colIdx = baseColIdx + ( rowIdx - baseRowIdx ) % geometry.width ;
- if ( ! tableMap[rowIdx] || ! tableMap[rowIdx][colIdx] )
- {
- this._UnmarkCells( cells, '_CellSelected' ) ;
- return false ;
- }
- var g = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_CellSelected' ) ;
- if ( g.width != geometry.width || g.height != geometry.height )
- {
- this._UnmarkCells( cells, '_CellSelected' ) ;
- return false ;
- }
- }
- }
-
- this._UnmarkCells( cells, '_CellSelected' ) ;
- return true ;
-}
-
-FCKTableHandler.MergeCells = function()
-{
- // Get all selected cells.
- var cells = this.GetSelectedCells() ;
- if ( cells.length < 2 )
- return ;
-
- // Assume the selected cells are already in a rectangular geometry.
- // Because the checking is already done by FCKTableCommand.
- var refCell = cells[0] ;
- var tableMap = this._CreateTableMap( refCell ) ;
- var rowIdx = refCell.parentNode.rowIndex ;
- var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
-
- this._MarkCells( cells, '_SelectedCells' ) ;
- var selectionGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SelectedCells' ) ;
-
- var baseColIdx = colIdx - selectionGeometry.x ;
- var baseRowIdx = rowIdx - selectionGeometry.y ;
- var cellContents = FCKTools.GetElementDocument( refCell ).createDocumentFragment() ;
- for ( var i = 0 ; i < selectionGeometry.height ; i++ )
- {
- var rowChildNodesCount = 0 ;
- for ( var j = 0 ; j < selectionGeometry.width ; j++ )
- {
- var currentCell = tableMap[baseRowIdx + i][baseColIdx + j] ;
- while ( currentCell.childNodes.length > 0 )
- {
- var node = currentCell.removeChild( currentCell.firstChild ) ;
- if ( node.nodeType != 1
- || ( node.getAttribute( 'type', 2 ) != '_moz' && node.getAttribute( '_moz_dirty' ) != null ) )
- {
- cellContents.appendChild( node ) ;
- rowChildNodesCount++ ;
- }
- }
- }
- if ( rowChildNodesCount > 0 )
- cellContents.appendChild( FCK.EditorDocument.createElement( 'br' ) ) ;
- }
-
- this._ReplaceCellsByMarker( tableMap, '_SelectedCells', refCell ) ;
- this._UnmarkCells( cells, '_SelectedCells' ) ;
- this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
- refCell.appendChild( cellContents ) ;
-
- if ( FCKBrowserInfo.IsGeckoLike && ( ! refCell.firstChild ) )
- FCKTools.AppendBogusBr( refCell ) ;
-
- this._MoveCaretToCell( refCell, false ) ;
-}
-
-FCKTableHandler.MergeRight = function()
-{
- var target = this.GetMergeRightTarget() ;
- if ( target == null )
- return ;
- var refCell = target.refCell ;
- var tableMap = target.tableMap ;
- var nextCell = target.nextCell ;
-
- var cellContents = FCK.EditorDocument.createDocumentFragment() ;
- while ( nextCell && nextCell.childNodes && nextCell.childNodes.length > 0 )
- cellContents.appendChild( nextCell.removeChild( nextCell.firstChild ) ) ;
-
- nextCell.parentNode.removeChild( nextCell ) ;
- refCell.appendChild( cellContents ) ;
- this._MarkCells( [nextCell], '_Replace' ) ;
- this._ReplaceCellsByMarker( tableMap, '_Replace', refCell ) ;
- this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-
- this._MoveCaretToCell( refCell, false ) ;
-}
-
-FCKTableHandler.MergeDown = function()
-{
- var target = this.GetMergeDownTarget() ;
- if ( target == null )
- return ;
- var refCell = target.refCell ;
- var tableMap = target.tableMap ;
- var nextCell = target.nextCell ;
-
- var cellContents = FCKTools.GetElementDocument( refCell ).createDocumentFragment() ;
- while ( nextCell && nextCell.childNodes && nextCell.childNodes.length > 0 )
- cellContents.appendChild( nextCell.removeChild( nextCell.firstChild ) ) ;
- if ( cellContents.firstChild )
- cellContents.insertBefore( FCK.EditorDocument.createElement( 'br' ), cellContents.firstChild ) ;
- refCell.appendChild( cellContents ) ;
- this._MarkCells( [nextCell], '_Replace' ) ;
- this._ReplaceCellsByMarker( tableMap, '_Replace', refCell ) ;
- this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-
- this._MoveCaretToCell( refCell, false ) ;
-}
-
-FCKTableHandler.HorizontalSplitCell = function()
-{
- var cells = FCKTableHandler.GetSelectedCells() ;
- if ( cells.length != 1 )
- return ;
-
- var refCell = cells[0] ;
- var tableMap = this._CreateTableMap( refCell ) ;
- var rowIdx = refCell.parentNode.rowIndex ;
- var colIdx = FCKTableHandler._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
- var cellSpan = isNaN( refCell.colSpan ) ? 1 : refCell.colSpan ;
-
- if ( cellSpan > 1 )
- {
- // Splitting a multi-column cell - original cell gets ceil(colSpan/2) columns,
- // new cell gets floor(colSpan/2).
- var newCellSpan = Math.ceil( cellSpan / 2 ) ;
- var newCell = FCK.EditorDocument.createElement( refCell.nodeName ) ;
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( newCell ) ;
- var startIdx = colIdx + newCellSpan ;
- var endIdx = colIdx + cellSpan ;
- var rowSpan = isNaN( refCell.rowSpan ) ? 1 : refCell.rowSpan ;
- for ( var r = rowIdx ; r < rowIdx + rowSpan ; r++ )
- {
- for ( var i = startIdx ; i < endIdx ; i++ )
- tableMap[r][i] = newCell ;
- }
- }
- else
- {
- // Splitting a single-column cell - add a new cell, and expand
- // cells crossing the same column.
- var newTableMap = [] ;
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- var newRow = tableMap[i].slice( 0, colIdx ) ;
- if ( tableMap[i].length <= colIdx )
- {
- newTableMap.push( newRow ) ;
- continue ;
- }
- if ( tableMap[i][colIdx] == refCell )
- {
- newRow.push( refCell ) ;
- newRow.push( FCK.EditorDocument.createElement( refCell.nodeName ) ) ;
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( newRow[newRow.length - 1] ) ;
- }
- else
- {
- newRow.push( tableMap[i][colIdx] ) ;
- newRow.push( tableMap[i][colIdx] ) ;
- }
- for ( var j = colIdx + 1 ; j < tableMap[i].length ; j++ )
- newRow.push( tableMap[i][j] ) ;
- newTableMap.push( newRow ) ;
- }
- tableMap = newTableMap ;
- }
-
- this._InstallTableMap( tableMap, refCell.parentNode.parentNode.parentNode ) ;
-}
-
-FCKTableHandler.VerticalSplitCell = function()
-{
- var cells = FCKTableHandler.GetSelectedCells() ;
- if ( cells.length != 1 )
- return ;
-
- var currentCell = cells[0] ;
- var tableMap = this._CreateTableMap( currentCell ) ;
- var currentRowIndex = currentCell.parentNode.rowIndex ;
- var cellIndex = FCKTableHandler._GetCellIndexSpan( tableMap, currentRowIndex, currentCell ) ;
- // Save current cell colSpan
- var currentColSpan = isNaN( currentCell.colSpan ) ? 1 : currentCell.colSpan ;
- var currentRowSpan = currentCell.rowSpan ;
- if ( isNaN( currentRowSpan ) )
- currentRowSpan = 1 ;
-
- if ( currentRowSpan > 1 )
- {
- // 1. Set the current cell's rowSpan to 1.
- currentCell.rowSpan = Math.ceil( currentRowSpan / 2 ) ;
-
- // 2. Find the appropriate place to insert a new cell at the next row.
- var newCellRowIndex = currentRowIndex + Math.ceil( currentRowSpan / 2 ) ;
- var oRow = tableMap[newCellRowIndex] ;
- var insertMarker = null ;
- for ( var i = cellIndex+1 ; i < oRow.length ; i++ )
- {
- if ( oRow[i].parentNode.rowIndex == newCellRowIndex )
- {
- insertMarker = oRow[i] ;
- break ;
- }
- }
-
- // 3. Insert the new cell to the indicated place, with the appropriate rowSpan and colSpan, next row.
- var newCell = FCK.EditorDocument.createElement( currentCell.nodeName ) ;
- newCell.rowSpan = Math.floor( currentRowSpan / 2 ) ;
- if ( currentColSpan > 1 )
- newCell.colSpan = currentColSpan ;
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( newCell ) ;
- currentCell.parentNode.parentNode.parentNode.rows[newCellRowIndex].insertBefore( newCell, insertMarker ) ;
- }
- else
- {
- // 1. Insert a new row.
- var newSectionRowIdx = currentCell.parentNode.sectionRowIndex + 1 ;
- var newRow = FCK.EditorDocument.createElement( 'tr' ) ;
- var tSection = currentCell.parentNode.parentNode ;
- if ( tSection.rows.length > newSectionRowIdx )
- tSection.insertBefore( newRow, tSection.rows[newSectionRowIdx] ) ;
- else
- tSection.appendChild( newRow ) ;
-
- // 2. +1 to rowSpan for all cells crossing currentCell's row.
- for ( var i = 0 ; i < tableMap[currentRowIndex].length ; )
- {
- var colSpan = tableMap[currentRowIndex][i].colSpan ;
- if ( isNaN( colSpan ) || colSpan < 1 )
- colSpan = 1 ;
- if ( i == cellIndex )
- {
- i += colSpan ;
- continue ;
- }
- var rowSpan = tableMap[currentRowIndex][i].rowSpan ;
- if ( isNaN( rowSpan ) )
- rowSpan = 1 ;
- tableMap[currentRowIndex][i].rowSpan = rowSpan + 1 ;
- i += colSpan ;
- }
-
- // 3. Insert a new cell to new row. Set colSpan on the new cell.
- var newCell = FCK.EditorDocument.createElement( currentCell.nodeName ) ;
- if ( currentColSpan > 1 )
- newCell.colSpan = currentColSpan ;
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( newCell ) ;
- newRow.appendChild( newCell ) ;
- }
-}
-
-// Get the cell index from a TableMap.
-FCKTableHandler._GetCellIndexSpan = function( tableMap, rowIndex, cell )
-{
- if ( tableMap.length < rowIndex + 1 )
- return null ;
-
- var oRow = tableMap[ rowIndex ] ;
-
- for ( var c = 0 ; c < oRow.length ; c++ )
- {
- if ( oRow[c] == cell )
- return c ;
- }
-
- return null ;
-}
-
-// Get the cell location from a TableMap. Returns an array with an [x,y] location
-FCKTableHandler._GetCellLocation = function( tableMap, cell )
-{
- for ( var i = 0 ; i < tableMap.length; i++ )
- {
- for ( var c = 0 ; c < tableMap[i].length ; c++ )
- {
- if ( tableMap[i][c] == cell ) return [i,c];
- }
- }
- return null ;
-}
-
-// This function is quite hard to explain. It creates a matrix representing all cells in a table.
-// The difference here is that the "spanned" cells (colSpan and rowSpan) are duplicated on the matrix
-// cells that are "spanned". For example, a row with 3 cells where the second cell has colSpan=2 and rowSpan=3
-// will produce a bi-dimensional matrix with the following values (representing the cells):
-// Cell1, Cell2, Cell2, Cell3
-// Cell4, Cell2, Cell2, Cell5
-// Cell6, Cell2, Cell2, Cell7
-FCKTableHandler._CreateTableMap = function( refCell )
-{
- var table = (refCell.nodeName == 'TABLE' ? refCell : refCell.parentNode.parentNode.parentNode ) ;
-
- var aRows = table.rows ;
-
- // Row and Column counters.
- var r = -1 ;
-
- var aMap = new Array() ;
-
- for ( var i = 0 ; i < aRows.length ; i++ )
- {
- r++ ;
- if ( !aMap[r] )
- aMap[r] = new Array() ;
-
- var c = -1 ;
-
- for ( var j = 0 ; j < aRows[i].cells.length ; j++ )
- {
- var oCell = aRows[i].cells[j] ;
-
- c++ ;
- while ( aMap[r][c] )
- c++ ;
-
- var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan ;
- var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan ;
-
- for ( var rs = 0 ; rs < iRowSpan ; rs++ )
- {
- if ( !aMap[r + rs] )
- aMap[r + rs] = new Array() ;
-
- for ( var cs = 0 ; cs < iColSpan ; cs++ )
- {
- aMap[r + rs][c + cs] = aRows[i].cells[j] ;
- }
- }
-
- c += iColSpan - 1 ;
- }
- }
- return aMap ;
-}
-
-// This function is the inverse of _CreateTableMap - it takes in a table map and converts it to an HTML table.
-FCKTableHandler._InstallTableMap = function( tableMap, table )
-{
- // Workaround for #1917 : MSIE will always report a cell's rowSpan as 1 as long
- // as the cell is not attached to a row. So we'll need an alternative attribute
- // for storing the calculated rowSpan in IE.
- var rowSpanAttr = FCKBrowserInfo.IsIE ? "_fckrowspan" : "rowSpan" ;
-
- // Disconnect all the cells in tableMap from their parents, set all colSpan and rowSpan attributes to 1.
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- for ( var j = 0 ; j < tableMap[i].length ; j++ )
- {
- var cell = tableMap[i][j] ;
- if ( cell.parentNode )
- cell.parentNode.removeChild( cell ) ;
- cell.colSpan = cell[rowSpanAttr] = 1 ;
- }
- }
-
- // Scan by rows and set colSpan.
- var maxCol = 0 ;
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- for ( var j = 0 ; j < tableMap[i].length ; j++ )
- {
- var cell = tableMap[i][j] ;
- if ( ! cell)
- continue ;
- if ( j > maxCol )
- maxCol = j ;
- if ( cell._colScanned === true )
- continue ;
- if ( tableMap[i][j-1] == cell )
- cell.colSpan++ ;
- if ( tableMap[i][j+1] != cell )
- cell._colScanned = true ;
- }
- }
-
- // Scan by columns and set rowSpan.
- for ( var i = 0 ; i <= maxCol ; i++ )
- {
- for ( var j = 0 ; j < tableMap.length ; j++ )
- {
- if ( ! tableMap[j] )
- continue ;
- var cell = tableMap[j][i] ;
- if ( ! cell || cell._rowScanned === true )
- continue ;
- if ( tableMap[j-1] && tableMap[j-1][i] == cell )
- cell[rowSpanAttr]++ ;
- if ( ! tableMap[j+1] || tableMap[j+1][i] != cell )
- cell._rowScanned = true ;
- }
- }
-
- // Clear all temporary flags.
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- for ( var j = 0 ; j < tableMap[i].length ; j++)
- {
- var cell = tableMap[i][j] ;
- FCKDomTools.ClearElementJSProperty(cell, '_colScanned' ) ;
- FCKDomTools.ClearElementJSProperty(cell, '_rowScanned' ) ;
- }
- }
-
- // Insert physical rows and columns to the table.
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- var rowObj = FCK.EditorDocument.createElement( 'tr' ) ;
- for ( var j = 0 ; j < tableMap[i].length ; )
- {
- var cell = tableMap[i][j] ;
- if ( tableMap[i-1] && tableMap[i-1][j] == cell )
- {
- j += cell.colSpan ;
- continue ;
- }
- rowObj.appendChild( cell ) ;
- if ( rowSpanAttr != 'rowSpan' )
- {
- cell.rowSpan = cell[rowSpanAttr] ;
- cell.removeAttribute( rowSpanAttr ) ;
- }
- j += cell.colSpan ;
- if ( cell.colSpan == 1 )
- cell.removeAttribute( 'colspan' ) ;
- if ( cell.rowSpan == 1 )
- cell.removeAttribute( 'rowspan' ) ;
- }
- if ( FCKBrowserInfo.IsIE )
- {
- table.rows[i].replaceNode( rowObj ) ;
- }
- else
- {
- table.rows[i].innerHTML = '' ;
- FCKDomTools.MoveChildren( rowObj, table.rows[i] ) ;
- }
- }
-}
-
-FCKTableHandler._MoveCaretToCell = function ( refCell, toStart )
-{
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToNodeContents( refCell ) ;
- range.Collapse( toStart ) ;
- range.Select() ;
-}
-
-FCKTableHandler.ClearRow = function( tr )
-{
- // Get the array of row's cells.
- var aCells = tr.cells ;
-
- // Replace the contents of each cell with "nothing".
- for ( var i = 0 ; i < aCells.length ; i++ )
- {
- aCells[i].innerHTML = '' ;
-
- if ( FCKBrowserInfo.IsGeckoLike )
- FCKTools.AppendBogusBr( aCells[i] ) ;
- }
-}
-
-FCKTableHandler.GetMergeRightTarget = function()
-{
- var cells = this.GetSelectedCells() ;
- if ( cells.length != 1 )
- return null ;
-
- var refCell = cells[0] ;
- var tableMap = this._CreateTableMap( refCell ) ;
- var rowIdx = refCell.parentNode.rowIndex ;
- var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
- var nextColIdx = colIdx + ( isNaN( refCell.colSpan ) ? 1 : refCell.colSpan ) ;
- var nextCell = tableMap[rowIdx][nextColIdx] ;
-
- if ( ! nextCell )
- return null ;
-
- // The two cells must have the same vertical geometry, otherwise merging does not make sense.
- this._MarkCells( [refCell, nextCell], '_SizeTest' ) ;
- var refGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SizeTest' ) ;
- var nextGeometry = this._GetMarkerGeometry( tableMap, rowIdx, nextColIdx, '_SizeTest' ) ;
- this._UnmarkCells( [refCell, nextCell], '_SizeTest' ) ;
-
- if ( refGeometry.height != nextGeometry.height || refGeometry.y != nextGeometry.y )
- return null ;
-
- return { 'refCell' : refCell, 'nextCell' : nextCell, 'tableMap' : tableMap } ;
-}
-
-FCKTableHandler.GetMergeDownTarget = function()
-{
- var cells = this.GetSelectedCells() ;
- if ( cells.length != 1 )
- return null ;
-
- var refCell = cells[0] ;
- var tableMap = this._CreateTableMap( refCell ) ;
- var rowIdx = refCell.parentNode.rowIndex ;
- var colIdx = this._GetCellIndexSpan( tableMap, rowIdx, refCell ) ;
- var newRowIdx = rowIdx + ( isNaN( refCell.rowSpan ) ? 1 : refCell.rowSpan ) ;
- if ( ! tableMap[newRowIdx] )
- return null ;
-
- var nextCell = tableMap[newRowIdx][colIdx] ;
-
- if ( ! nextCell )
- return null ;
-
- // Check if the selected cells are both in the same table section (thead, tfoot or tbody).
- if ( refCell.parentNode.parentNode != nextCell.parentNode.parentNode )
- return null ;
-
- // The two cells must have the same horizontal geometry, otherwise merging does not makes sense.
- this._MarkCells( [refCell, nextCell], '_SizeTest' ) ;
- var refGeometry = this._GetMarkerGeometry( tableMap, rowIdx, colIdx, '_SizeTest' ) ;
- var nextGeometry = this._GetMarkerGeometry( tableMap, newRowIdx, colIdx, '_SizeTest' ) ;
- this._UnmarkCells( [refCell, nextCell], '_SizeTest' ) ;
-
- if ( refGeometry.width != nextGeometry.width || refGeometry.x != nextGeometry.x )
- return null ;
-
- return { 'refCell' : refCell, 'nextCell' : nextCell, 'tableMap' : tableMap } ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js
deleted file mode 100644
index 66fa15574..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Manage table operations (non-IE).
- */
-
-FCKTableHandler.GetSelectedCells = function()
-{
- var aCells = new Array() ;
-
- var oSelection = FCKSelection.GetSelection() ;
-
- // If the selection is a text.
- if ( oSelection.rangeCount == 1 && oSelection.anchorNode.nodeType == 3 )
- {
- var oParent = FCKTools.GetElementAscensor( oSelection.anchorNode, 'TD,TH' ) ;
-
- if ( oParent )
- aCells[0] = oParent ;
-
- return aCells ;
- }
-
- for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
- {
- var oRange = oSelection.getRangeAt(i) ;
- var oCell ;
-
- if ( oRange.startContainer.tagName.Equals( 'TD', 'TH' ) )
- oCell = oRange.startContainer ;
- else
- oCell = oRange.startContainer.childNodes[ oRange.startOffset ] ;
-
- if ( oCell.nodeName.Equals( 'TD', 'TH' ) )
- aCells[aCells.length] = oCell ;
- }
-
- return aCells ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_ie.js
deleted file mode 100644
index 6e7da17bd..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktablehandler_ie.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Manage table operations (IE specific).
- */
-
-FCKTableHandler.GetSelectedCells = function()
-{
- if ( FCKSelection.GetType() == 'Control' )
- {
- var td = FCKSelection.MoveToAncestorNode( ['TD', 'TH'] ) ;
- return td ? [ td ] : [] ;
- }
-
- var aCells = new Array() ;
-
- var oRange = FCKSelection.GetSelection().createRange() ;
-// var oParent = oRange.parentElement() ;
- var oParent = FCKSelection.GetParentElement() ;
-
- if ( oParent && oParent.tagName.Equals( 'TD', 'TH' ) )
- aCells[0] = oParent ;
- else
- {
- oParent = FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
-
- if ( oParent )
- {
- // Loops throw all cells checking if the cell is, or part of it, is inside the selection
- // and then add it to the selected cells collection.
- for ( var i = 0 ; i < oParent.cells.length ; i++ )
- {
- var oCellRange = FCK.EditorDocument.body.createTextRange() ;
- oCellRange.moveToElementText( oParent.cells[i] ) ;
-
- if ( oRange.inRange( oCellRange )
- || ( oRange.compareEndPoints('StartToStart',oCellRange) >= 0 && oRange.compareEndPoints('StartToEnd',oCellRange) <= 0 )
- || ( oRange.compareEndPoints('EndToStart',oCellRange) >= 0 && oRange.compareEndPoints('EndToEnd',oCellRange) <= 0 ) )
- {
- aCells[aCells.length] = oParent.cells[i] ;
- }
- }
- }
- }
-
- return aCells ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbaritems.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbaritems.js
deleted file mode 100644
index 6810eaddb..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbaritems.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Toolbar items definitions.
- */
-
-var FCKToolbarItems = new Object() ;
-FCKToolbarItems.LoadedItems = new Object() ;
-
-FCKToolbarItems.RegisterItem = function( itemName, item )
-{
- this.LoadedItems[ itemName ] = item ;
-}
-
-FCKToolbarItems.GetItem = function( itemName )
-{
- var oItem = FCKToolbarItems.LoadedItems[ itemName ] ;
-
- if ( oItem )
- return oItem ;
-
- switch ( itemName )
- {
- case 'Source' : oItem = new FCKToolbarButton( 'Source' , FCKLang.Source, null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ; break ;
- case 'DocProps' : oItem = new FCKToolbarButton( 'DocProps' , FCKLang.DocProps, null, null, null, null, 2 ) ; break ;
- case 'Save' : oItem = new FCKToolbarButton( 'Save' , FCKLang.Save, null, null, true, null, 3 ) ; break ;
- case 'NewPage' : oItem = new FCKToolbarButton( 'NewPage' , FCKLang.NewPage, null, null, true, null, 4 ) ; break ;
- case 'Preview' : oItem = new FCKToolbarButton( 'Preview' , FCKLang.Preview, null, null, true, null, 5 ) ; break ;
- case 'Templates' : oItem = new FCKToolbarButton( 'Templates' , FCKLang.Templates, null, null, null, null, 6 ) ; break ;
- case 'About' : oItem = new FCKToolbarButton( 'About' , FCKLang.About, null, null, true, null, 47 ) ; break ;
-
- case 'Cut' : oItem = new FCKToolbarButton( 'Cut' , FCKLang.Cut, null, null, false, true, 7 ) ; break ;
- case 'Copy' : oItem = new FCKToolbarButton( 'Copy' , FCKLang.Copy, null, null, false, true, 8 ) ; break ;
- case 'Paste' : oItem = new FCKToolbarButton( 'Paste' , FCKLang.Paste, null, null, false, true, 9 ) ; break ;
- case 'PasteText' : oItem = new FCKToolbarButton( 'PasteText' , FCKLang.PasteText, null, null, false, true, 10 ) ; break ;
- case 'PasteWord' : oItem = new FCKToolbarButton( 'PasteWord' , FCKLang.PasteWord, null, null, false, true, 11 ) ; break ;
- case 'Print' : oItem = new FCKToolbarButton( 'Print' , FCKLang.Print, null, null, false, true, 12 ) ; break ;
- case 'SpellCheck' : oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck, null, null, null, null, 13 ) ; break ;
- case 'Undo' : oItem = new FCKToolbarButton( 'Undo' , FCKLang.Undo, null, null, false, true, 14 ) ; break ;
- case 'Redo' : oItem = new FCKToolbarButton( 'Redo' , FCKLang.Redo, null, null, false, true, 15 ) ; break ;
- case 'SelectAll' : oItem = new FCKToolbarButton( 'SelectAll' , FCKLang.SelectAll, null, null, true, null, 18 ) ; break ;
- case 'RemoveFormat' : oItem = new FCKToolbarButton( 'RemoveFormat', FCKLang.RemoveFormat, null, null, false, true, 19 ) ; break ;
- case 'FitWindow' : oItem = new FCKToolbarButton( 'FitWindow' , FCKLang.FitWindow, null, null, true, true, 66 ) ; break ;
-
- case 'Bold' : oItem = new FCKToolbarButton( 'Bold' , FCKLang.Bold, null, null, false, true, 20 ) ; break ;
- case 'Italic' : oItem = new FCKToolbarButton( 'Italic' , FCKLang.Italic, null, null, false, true, 21 ) ; break ;
- case 'Underline' : oItem = new FCKToolbarButton( 'Underline' , FCKLang.Underline, null, null, false, true, 22 ) ; break ;
- case 'StrikeThrough' : oItem = new FCKToolbarButton( 'StrikeThrough' , FCKLang.StrikeThrough, null, null, false, true, 23 ) ; break ;
- case 'Subscript' : oItem = new FCKToolbarButton( 'Subscript' , FCKLang.Subscript, null, null, false, true, 24 ) ; break ;
- case 'Superscript' : oItem = new FCKToolbarButton( 'Superscript' , FCKLang.Superscript, null, null, false, true, 25 ) ; break ;
-
- case 'OrderedList' : oItem = new FCKToolbarButton( 'InsertOrderedList' , FCKLang.NumberedListLbl, FCKLang.NumberedList, null, false, true, 26 ) ; break ;
- case 'UnorderedList' : oItem = new FCKToolbarButton( 'InsertUnorderedList' , FCKLang.BulletedListLbl, FCKLang.BulletedList, null, false, true, 27 ) ; break ;
- case 'Outdent' : oItem = new FCKToolbarButton( 'Outdent' , FCKLang.DecreaseIndent, null, null, false, true, 28 ) ; break ;
- case 'Indent' : oItem = new FCKToolbarButton( 'Indent' , FCKLang.IncreaseIndent, null, null, false, true, 29 ) ; break ;
- case 'Blockquote' : oItem = new FCKToolbarButton( 'Blockquote' , FCKLang.Blockquote, null, null, false, true, 73 ) ; break ;
- case 'CreateDiv' : oItem = new FCKToolbarButton( 'CreateDiv' , FCKLang.CreateDiv, null, null, false, true, 74 ) ; break ;
-
- case 'Link' : oItem = new FCKToolbarButton( 'Link' , FCKLang.InsertLinkLbl, FCKLang.InsertLink, null, false, true, 34 ) ; break ;
- case 'Unlink' : oItem = new FCKToolbarButton( 'Unlink' , FCKLang.RemoveLink, null, null, false, true, 35 ) ; break ;
- case 'Anchor' : oItem = new FCKToolbarButton( 'Anchor' , FCKLang.Anchor, null, null, null, null, 36 ) ; break ;
-
- case 'Image' : oItem = new FCKToolbarButton( 'Image' , FCKLang.InsertImageLbl, FCKLang.InsertImage, null, false, true, 37 ) ; break ;
- case 'Flash' : oItem = new FCKToolbarButton( 'Flash' , FCKLang.InsertFlashLbl, FCKLang.InsertFlash, null, false, true, 38 ) ; break ;
- case 'Table' : oItem = new FCKToolbarButton( 'Table' , FCKLang.InsertTableLbl, FCKLang.InsertTable, null, false, true, 39 ) ; break ;
- case 'SpecialChar' : oItem = new FCKToolbarButton( 'SpecialChar' , FCKLang.InsertSpecialCharLbl, FCKLang.InsertSpecialChar, null, false, true, 42 ) ; break ;
- case 'Smiley' : oItem = new FCKToolbarButton( 'Smiley' , FCKLang.InsertSmileyLbl, FCKLang.InsertSmiley, null, false, true, 41 ) ; break ;
- case 'PageBreak' : oItem = new FCKToolbarButton( 'PageBreak' , FCKLang.PageBreakLbl, FCKLang.PageBreak, null, false, true, 43 ) ; break ;
-
- case 'Rule' : oItem = new FCKToolbarButton( 'Rule' , FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true, 40 ) ; break ;
-
- case 'JustifyLeft' : oItem = new FCKToolbarButton( 'JustifyLeft' , FCKLang.LeftJustify, null, null, false, true, 30 ) ; break ;
- case 'JustifyCenter' : oItem = new FCKToolbarButton( 'JustifyCenter' , FCKLang.CenterJustify, null, null, false, true, 31 ) ; break ;
- case 'JustifyRight' : oItem = new FCKToolbarButton( 'JustifyRight' , FCKLang.RightJustify, null, null, false, true, 32 ) ; break ;
- case 'JustifyFull' : oItem = new FCKToolbarButton( 'JustifyFull' , FCKLang.BlockJustify, null, null, false, true, 33 ) ; break ;
-
- case 'Style' : oItem = new FCKToolbarStyleCombo() ; break ;
- case 'FontName' : oItem = new FCKToolbarFontsCombo() ; break ;
- case 'FontSize' : oItem = new FCKToolbarFontSizeCombo() ; break ;
- case 'FontFormat' : oItem = new FCKToolbarFontFormatCombo() ; break ;
-
- case 'TextColor' : oItem = new FCKToolbarPanelButton( 'TextColor', FCKLang.TextColor, null, null, 45 ) ; break ;
- case 'BGColor' : oItem = new FCKToolbarPanelButton( 'BGColor' , FCKLang.BGColor, null, null, 46 ) ; break ;
-
- case 'Find' : oItem = new FCKToolbarButton( 'Find' , FCKLang.Find, null, null, null, null, 16 ) ; break ;
- case 'Replace' : oItem = new FCKToolbarButton( 'Replace' , FCKLang.Replace, null, null, null, null, 17 ) ; break ;
-
- case 'Form' : oItem = new FCKToolbarButton( 'Form' , FCKLang.Form, null, null, null, null, 48 ) ; break ;
- case 'Checkbox' : oItem = new FCKToolbarButton( 'Checkbox' , FCKLang.Checkbox, null, null, null, null, 49 ) ; break ;
- case 'Radio' : oItem = new FCKToolbarButton( 'Radio' , FCKLang.RadioButton, null, null, null, null, 50 ) ; break ;
- case 'TextField' : oItem = new FCKToolbarButton( 'TextField' , FCKLang.TextField, null, null, null, null, 51 ) ; break ;
- case 'Textarea' : oItem = new FCKToolbarButton( 'Textarea' , FCKLang.Textarea, null, null, null, null, 52 ) ; break ;
- case 'HiddenField' : oItem = new FCKToolbarButton( 'HiddenField' , FCKLang.HiddenField, null, null, null, null, 56 ) ; break ;
- case 'Button' : oItem = new FCKToolbarButton( 'Button' , FCKLang.Button, null, null, null, null, 54 ) ; break ;
- case 'Select' : oItem = new FCKToolbarButton( 'Select' , FCKLang.SelectionField, null, null, null, null, 53 ) ; break ;
- case 'ImageButton' : oItem = new FCKToolbarButton( 'ImageButton' , FCKLang.ImageButton, null, null, null, null, 55 ) ; break ;
- case 'ShowBlocks' : oItem = new FCKToolbarButton( 'ShowBlocks' , FCKLang.ShowBlocks, null, null, null, true, 72 ) ; break ;
-
- default:
- alert( FCKLang.UnknownToolbarItem.replace( /%1/g, itemName ) ) ;
- return null ;
- }
-
- FCKToolbarItems.LoadedItems[ itemName ] = oItem ;
-
- return oItem ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbarset.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbarset.js
deleted file mode 100644
index e849f6678..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktoolbarset.js
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKToolbarSet object that is used to load and draw the
- * toolbar.
- */
-
-function FCKToolbarSet_Create( overhideLocation )
-{
- var oToolbarSet ;
-
- var sLocation = overhideLocation || FCKConfig.ToolbarLocation ;
- switch ( sLocation )
- {
- case 'In' :
- document.getElementById( 'xToolbarRow' ).style.display = '' ;
- oToolbarSet = new FCKToolbarSet( document ) ;
- break ;
- case 'None' :
- oToolbarSet = new FCKToolbarSet( document ) ;
- break ;
-
-// case 'OutTop' :
- // Not supported.
-
- default :
- FCK.Events.AttachEvent( 'OnBlur', FCK_OnBlur ) ;
- FCK.Events.AttachEvent( 'OnFocus', FCK_OnFocus ) ;
-
- var eToolbarTarget ;
-
- // Out:[TargetWindow]([TargetId])
- var oOutMatch = sLocation.match( /^Out:(.+)\((\w+)\)$/ ) ;
- if ( oOutMatch )
- {
- if ( FCKBrowserInfo.IsAIR )
- FCKAdobeAIR.ToolbarSet_GetOutElement( window, oOutMatch ) ;
- else
- eToolbarTarget = eval( 'parent.' + oOutMatch[1] ).document.getElementById( oOutMatch[2] ) ;
- }
- else
- {
- // Out:[TargetId]
- oOutMatch = sLocation.match( /^Out:(\w+)$/ ) ;
- if ( oOutMatch )
- eToolbarTarget = parent.document.getElementById( oOutMatch[1] ) ;
- }
-
- if ( !eToolbarTarget )
- {
- alert( 'Invalid value for "ToolbarLocation"' ) ;
- return arguments.callee( 'In' );
- }
-
- // If it is a shared toolbar, it may be already available in the target element.
- oToolbarSet = eToolbarTarget.__FCKToolbarSet ;
- if ( oToolbarSet )
- break ;
-
- // Create the IFRAME that will hold the toolbar inside the target element.
- var eToolbarIFrame = FCKTools.GetElementDocument( eToolbarTarget ).createElement( 'iframe' ) ;
- eToolbarIFrame.src = 'javascript:void(0)' ;
- eToolbarIFrame.frameBorder = 0 ;
- eToolbarIFrame.width = '100%' ;
- eToolbarIFrame.height = '10' ;
- eToolbarTarget.appendChild( eToolbarIFrame ) ;
- eToolbarIFrame.unselectable = 'on' ;
-
- // Write the basic HTML for the toolbar (copy from the editor main page).
- var eTargetDocument = eToolbarIFrame.contentWindow.document ;
-
- // Workaround for Safari 12256. Ticket #63
- var sBase = '' ;
- if ( FCKBrowserInfo.IsSafari )
- sBase = '<base href="' + window.document.location + '">' ;
-
- // Initialize the IFRAME document body.
- eTargetDocument.open() ;
- eTargetDocument.write( '<html><head>' + sBase + '<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; '
- + 'window.onresize = window.onload = '
- + 'function(){' // poll scrollHeight until it no longer changes for 1 sec.
- + 'var timer = null;'
- + 'var lastHeight = -1;'
- + 'var lastChange = 0;'
- + 'var poller = function(){'
- + 'var currentHeight = document.body.scrollHeight || 0;'
- + 'var currentTime = (new Date()).getTime();'
- + 'if (currentHeight != lastHeight){'
- + 'lastChange = currentTime;'
- + 'adjust();'
- + 'lastHeight = document.body.scrollHeight;'
- + '}'
- + 'if (lastChange < currentTime - 1000) clearInterval(timer);'
- + '};'
- + 'timer = setInterval(poller, 100);'
- + '}'
- + '</script></head><body style="overflow: hidden">' + document.getElementById( 'xToolbarSpace' ).innerHTML + '</body></html>' ) ;
- eTargetDocument.close() ;
-
- if( FCKBrowserInfo.IsAIR )
- FCKAdobeAIR.ToolbarSet_InitOutFrame( eTargetDocument ) ;
-
- FCKTools.AddEventListener( eTargetDocument, 'contextmenu', FCKTools.CancelEvent ) ;
-
- // Load external resources (must be done here, otherwise Firefox will not
- // have the document DOM ready to be used right away.
- FCKTools.AppendStyleSheet( eTargetDocument, FCKConfig.SkinEditorCSS ) ;
-
- oToolbarSet = eToolbarTarget.__FCKToolbarSet = new FCKToolbarSet( eTargetDocument ) ;
- oToolbarSet._IFrame = eToolbarIFrame ;
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( eToolbarTarget, FCKToolbarSet_Target_Cleanup ) ;
- }
-
- oToolbarSet.CurrentInstance = FCK ;
- if ( !oToolbarSet.ToolbarItems )
- oToolbarSet.ToolbarItems = FCKToolbarItems ;
-
- FCK.AttachToOnSelectionChange( oToolbarSet.RefreshItemsState ) ;
-
- return oToolbarSet ;
-}
-
-function FCK_OnBlur( editorInstance )
-{
- var eToolbarSet = editorInstance.ToolbarSet ;
-
- if ( eToolbarSet.CurrentInstance == editorInstance )
- eToolbarSet.Disable() ;
-}
-
-function FCK_OnFocus( editorInstance )
-{
- var oToolbarset = editorInstance.ToolbarSet ;
- var oInstance = editorInstance || FCK ;
-
- // Unregister the toolbar window from the current instance.
- oToolbarset.CurrentInstance.FocusManager.RemoveWindow( oToolbarset._IFrame.contentWindow ) ;
-
- // Set the new current instance.
- oToolbarset.CurrentInstance = oInstance ;
-
- // Register the toolbar window in the current instance.
- oInstance.FocusManager.AddWindow( oToolbarset._IFrame.contentWindow, true ) ;
-
- oToolbarset.Enable() ;
-}
-
-function FCKToolbarSet_Cleanup()
-{
- this._TargetElement = null ;
- this._IFrame = null ;
-}
-
-function FCKToolbarSet_Target_Cleanup()
-{
- this.__FCKToolbarSet = null ;
-}
-
-var FCKToolbarSet = function( targetDocument )
-{
- this._Document = targetDocument ;
-
- // Get the element that will hold the elements structure.
- this._TargetElement = targetDocument.getElementById( 'xToolbar' ) ;
-
- // Setup the expand and collapse handlers.
- var eExpandHandle = targetDocument.getElementById( 'xExpandHandle' ) ;
- var eCollapseHandle = targetDocument.getElementById( 'xCollapseHandle' ) ;
-
- eExpandHandle.title = FCKLang.ToolbarExpand ;
- FCKTools.AddEventListener( eExpandHandle, 'click', FCKToolbarSet_Expand_OnClick ) ;
-
- eCollapseHandle.title = FCKLang.ToolbarCollapse ;
- FCKTools.AddEventListener( eCollapseHandle, 'click', FCKToolbarSet_Collapse_OnClick ) ;
-
- // Set the toolbar state at startup.
- if ( !FCKConfig.ToolbarCanCollapse || FCKConfig.ToolbarStartExpanded )
- this.Expand() ;
- else
- this.Collapse() ;
-
- // Enable/disable the collapse handler
- eCollapseHandle.style.display = FCKConfig.ToolbarCanCollapse ? '' : 'none' ;
-
- if ( FCKConfig.ToolbarCanCollapse )
- eCollapseHandle.style.display = '' ;
- else
- targetDocument.getElementById( 'xTBLeftBorder' ).style.display = '' ;
-
- // Set the default properties.
- this.Toolbars = new Array() ;
- this.IsLoaded = false ;
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( this, FCKToolbarSet_Cleanup ) ;
-}
-
-function FCKToolbarSet_Expand_OnClick()
-{
- FCK.ToolbarSet.Expand() ;
-}
-
-function FCKToolbarSet_Collapse_OnClick()
-{
- FCK.ToolbarSet.Collapse() ;
-}
-
-FCKToolbarSet.prototype.Expand = function()
-{
- this._ChangeVisibility( false ) ;
-}
-
-FCKToolbarSet.prototype.Collapse = function()
-{
- this._ChangeVisibility( true ) ;
-}
-
-FCKToolbarSet.prototype._ChangeVisibility = function( collapse )
-{
- this._Document.getElementById( 'xCollapsed' ).style.display = collapse ? '' : 'none' ;
- this._Document.getElementById( 'xExpanded' ).style.display = collapse ? 'none' : '' ;
-
- if ( FCKBrowserInfo.IsGecko )
- {
- // I had to use "setTimeout" because Gecko was not responding in a right
- // way when calling window.onresize() directly.
- FCKTools.RunFunction( window.onresize ) ;
- }
-}
-
-FCKToolbarSet.prototype.Load = function( toolbarSetName )
-{
- this.Name = toolbarSetName ;
-
- this.Items = new Array() ;
-
- // Reset the array of toolbar items that are active only on WYSIWYG mode.
- this.ItemsWysiwygOnly = new Array() ;
-
- // Reset the array of toolbar items that are sensitive to the cursor position.
- this.ItemsContextSensitive = new Array() ;
-
- // Cleanup the target element.
- this._TargetElement.innerHTML = '' ;
-
- var ToolbarSet = FCKConfig.ToolbarSets[toolbarSetName] ;
-
- if ( !ToolbarSet )
- {
- alert( FCKLang.UnknownToolbarSet.replace( /%1/g, toolbarSetName ) ) ;
- return ;
- }
-
- this.Toolbars = new Array() ;
-
- for ( var x = 0 ; x < ToolbarSet.length ; x++ )
- {
- var oToolbarItems = ToolbarSet[x] ;
-
- // If the configuration for the toolbar is missing some element or has any extra comma
- // this item won't be valid, so skip it and keep on processing.
- if ( !oToolbarItems )
- continue ;
-
- var oToolbar ;
-
- if ( typeof( oToolbarItems ) == 'string' )
- {
- if ( oToolbarItems == '/' )
- oToolbar = new FCKToolbarBreak() ;
- }
- else
- {
- oToolbar = new FCKToolbar() ;
-
- for ( var j = 0 ; j < oToolbarItems.length ; j++ )
- {
- var sItem = oToolbarItems[j] ;
-
- if ( sItem == '-')
- oToolbar.AddSeparator() ;
- else
- {
- var oItem = FCKToolbarItems.GetItem( sItem ) ;
- if ( oItem )
- {
- oToolbar.AddItem( oItem ) ;
-
- this.Items.push( oItem ) ;
-
- if ( !oItem.SourceView )
- this.ItemsWysiwygOnly.push( oItem ) ;
-
- if ( oItem.ContextSensitive )
- this.ItemsContextSensitive.push( oItem ) ;
- }
- }
- }
-
- // oToolbar.AddTerminator() ;
- }
-
- oToolbar.Create( this._TargetElement ) ;
-
- this.Toolbars[ this.Toolbars.length ] = oToolbar ;
- }
-
- FCKTools.DisableSelection( this._Document.getElementById( 'xCollapseHandle' ).parentNode ) ;
-
- if ( FCK.Status != FCK_STATUS_COMPLETE )
- FCK.Events.AttachEvent( 'OnStatusChange', this.RefreshModeState ) ;
- else
- this.RefreshModeState() ;
-
- this.IsLoaded = true ;
- this.IsEnabled = true ;
-
- FCKTools.RunFunction( this.OnLoad ) ;
-}
-
-FCKToolbarSet.prototype.Enable = function()
-{
- if ( this.IsEnabled )
- return ;
-
- this.IsEnabled = true ;
-
- var aItems = this.Items ;
- for ( var i = 0 ; i < aItems.length ; i++ )
- aItems[i].RefreshState() ;
-}
-
-FCKToolbarSet.prototype.Disable = function()
-{
- if ( !this.IsEnabled )
- return ;
-
- this.IsEnabled = false ;
-
- var aItems = this.Items ;
- for ( var i = 0 ; i < aItems.length ; i++ )
- aItems[i].Disable() ;
-}
-
-FCKToolbarSet.prototype.RefreshModeState = function( editorInstance )
-{
- if ( FCK.Status != FCK_STATUS_COMPLETE )
- return ;
-
- var oToolbarSet = editorInstance ? editorInstance.ToolbarSet : this ;
- var aItems = oToolbarSet.ItemsWysiwygOnly ;
-
- if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
- {
- // Enable all buttons that are available on WYSIWYG mode only.
- for ( var i = 0 ; i < aItems.length ; i++ )
- aItems[i].Enable() ;
-
- // Refresh the buttons state.
- oToolbarSet.RefreshItemsState( editorInstance ) ;
- }
- else
- {
- // Refresh the buttons state.
- oToolbarSet.RefreshItemsState( editorInstance ) ;
-
- // Disable all buttons that are available on WYSIWYG mode only.
- for ( var j = 0 ; j < aItems.length ; j++ )
- aItems[j].Disable() ;
- }
-}
-
-FCKToolbarSet.prototype.RefreshItemsState = function( editorInstance )
-{
-
- var aItems = ( editorInstance ? editorInstance.ToolbarSet : this ).ItemsContextSensitive ;
-
- for ( var i = 0 ; i < aItems.length ; i++ )
- aItems[i].RefreshState() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools.js
deleted file mode 100644
index db64bdd9e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools.js
+++ /dev/null
@@ -1,749 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Utility functions.
- */
-
-var FCKTools = new Object() ;
-
-FCKTools.CreateBogusBR = function( targetDocument )
-{
- var eBR = targetDocument.createElement( 'br' ) ;
-// eBR.setAttribute( '_moz_editor_bogus_node', 'TRUE' ) ;
- eBR.setAttribute( 'type', '_moz' ) ;
- return eBR ;
-}
-
-/**
- * Fixes relative URL entries defined inside CSS styles by appending a prefix
- * to them.
- * @param (String) cssStyles The CSS styles definition possibly containing url()
- * paths.
- * @param (String) urlFixPrefix The prefix to append to relative URLs.
- */
-FCKTools.FixCssUrls = function( urlFixPrefix, cssStyles )
-{
- if ( !urlFixPrefix || urlFixPrefix.length == 0 )
- return cssStyles ;
-
- return cssStyles.replace( /url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g, function( match, opener, path, closer )
- {
- if ( /^\/|^\w?:/.test( path ) )
- return match ;
- else
- return 'url(' + opener + urlFixPrefix + path + closer + ')' ;
- } ) ;
-}
-
-FCKTools._GetUrlFixedCss = function( cssStyles, urlFixPrefix )
-{
- var match = cssStyles.match( /^([^|]+)\|([\s\S]*)/ ) ;
-
- if ( match )
- return FCKTools.FixCssUrls( match[1], match[2] ) ;
- else
- return cssStyles ;
-}
-
-/**
- * Appends a <link css> or <style> element to the document.
- * @param (Object) documentElement The DOM document object to which append the
- * stylesheet.
- * @param (Variant) cssFileOrDef A String pointing to the CSS file URL or an
- * Array with many CSS file URLs or the CSS definitions for the <style>
- * element.
- * @return {Array} An array containing all elements created in the target
- * document. It may include <link> or <style> elements, depending on the
- * value passed with cssFileOrDef.
- */
-FCKTools.AppendStyleSheet = function( domDocument, cssFileOrArrayOrDef )
-{
- if ( !cssFileOrArrayOrDef )
- return [] ;
-
- if ( typeof( cssFileOrArrayOrDef ) == 'string' )
- {
- // Test if the passed argument is an URL.
- if ( /[\\\/\.][^{}]*$/.test( cssFileOrArrayOrDef ) )
- {
- // The string may have several URLs separated by comma.
- return this.AppendStyleSheet( domDocument, cssFileOrArrayOrDef.split(',') ) ;
- }
- else
- return [ this.AppendStyleString( domDocument, FCKTools._GetUrlFixedCss( cssFileOrArrayOrDef ) ) ] ;
- }
- else
- {
- var styles = [] ;
- for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
- styles.push( this._AppendStyleSheet( domDocument, cssFileOrArrayOrDef[i] ) ) ;
- return styles ;
- }
-}
-
-FCKTools.GetStyleHtml = (function()
-{
- var getStyle = function( styleDef, markTemp )
- {
- if ( styleDef.length == 0 )
- return '' ;
-
- var temp = markTemp ? ' _fcktemp="true"' : '' ;
- return '<' + 'style type="text/css"' + temp + '>' + styleDef + '<' + '/style>' ;
- }
-
- var getLink = function( cssFileUrl, markTemp )
- {
- if ( cssFileUrl.length == 0 )
- return '' ;
-
- var temp = markTemp ? ' _fcktemp="true"' : '' ;
- return '<' + 'link href="' + cssFileUrl + '" type="text/css" rel="stylesheet" ' + temp + '/>' ;
- }
-
- return function( cssFileOrArrayOrDef, markTemp )
- {
- if ( !cssFileOrArrayOrDef )
- return '' ;
-
- if ( typeof( cssFileOrArrayOrDef ) == 'string' )
- {
- // Test if the passed argument is an URL.
- if ( /[\\\/\.][^{}]*$/.test( cssFileOrArrayOrDef ) )
- {
- // The string may have several URLs separated by comma.
- return this.GetStyleHtml( cssFileOrArrayOrDef.split(','), markTemp ) ;
- }
- else
- return getStyle( this._GetUrlFixedCss( cssFileOrArrayOrDef ), markTemp ) ;
- }
- else
- {
- var html = '' ;
-
- for ( var i = 0 ; i < cssFileOrArrayOrDef.length ; i++ )
- html += getLink( cssFileOrArrayOrDef[i], markTemp ) ;
-
- return html ;
- }
- }
-})() ;
-
-FCKTools.GetElementDocument = function ( element )
-{
- return element.ownerDocument || element.document ;
-}
-
-// Get the window object where the element is placed in.
-FCKTools.GetElementWindow = function( element )
-{
- return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;
-}
-
-FCKTools.GetDocumentWindow = function( document )
-{
- // With Safari, there is not way to retrieve the window from the document, so we must fix it.
- if ( FCKBrowserInfo.IsSafari && !document.parentWindow )
- this.FixDocumentParentWindow( window.top ) ;
-
- return document.parentWindow || document.defaultView ;
-}
-
-/*
- This is a Safari specific function that fix the reference to the parent
- window from the document object.
-*/
-FCKTools.FixDocumentParentWindow = function( targetWindow )
-{
- if ( targetWindow.document )
- targetWindow.document.parentWindow = targetWindow ;
-
- for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
- FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;
-}
-
-FCKTools.HTMLEncode = function( text )
-{
- if ( !text )
- return '' ;
-
- text = text.replace( /&/g, '&amp;' ) ;
- text = text.replace( /</g, '&lt;' ) ;
- text = text.replace( />/g, '&gt;' ) ;
-
- return text ;
-}
-
-FCKTools.HTMLDecode = function( text )
-{
- if ( !text )
- return '' ;
-
- text = text.replace( /&gt;/g, '>' ) ;
- text = text.replace( /&lt;/g, '<' ) ;
- text = text.replace( /&amp;/g, '&' ) ;
-
- return text ;
-}
-
-FCKTools._ProcessLineBreaksForPMode = function( oEditor, text, liState, node, strArray )
-{
- var closeState = 0 ;
- var blockStartTag = "<p>" ;
- var blockEndTag = "</p>" ;
- var lineBreakTag = "<br />" ;
- if ( liState )
- {
- blockStartTag = "<li>" ;
- blockEndTag = "</li>" ;
- closeState = 1 ;
- }
-
- // Are we currently inside a <p> tag now?
- // If yes, close it at the next double line break.
- while ( node && node != oEditor.FCK.EditorDocument.body )
- {
- if ( node.tagName.toLowerCase() == 'p' )
- {
- closeState = 1 ;
- break;
- }
- node = node.parentNode ;
- }
-
- for ( var i = 0 ; i < text.length ; i++ )
- {
- var c = text.charAt( i ) ;
- if ( c == '\r' )
- continue ;
-
- if ( c != '\n' )
- {
- strArray.push( c ) ;
- continue ;
- }
-
- // Now we have encountered a line break.
- // Check if the next character is also a line break.
- var n = text.charAt( i + 1 ) ;
- if ( n == '\r' )
- {
- i++ ;
- n = text.charAt( i + 1 ) ;
- }
- if ( n == '\n' )
- {
- i++ ; // ignore next character - we have already processed it.
- if ( closeState )
- strArray.push( blockEndTag ) ;
- strArray.push( blockStartTag ) ;
- closeState = 1 ;
- }
- else
- strArray.push( lineBreakTag ) ;
- }
-}
-
-FCKTools._ProcessLineBreaksForDivMode = function( oEditor, text, liState, node, strArray )
-{
- var closeState = 0 ;
- var blockStartTag = "<div>" ;
- var blockEndTag = "</div>" ;
- if ( liState )
- {
- blockStartTag = "<li>" ;
- blockEndTag = "</li>" ;
- closeState = 1 ;
- }
-
- // Are we currently inside a <div> tag now?
- // If yes, close it at the next double line break.
- while ( node && node != oEditor.FCK.EditorDocument.body )
- {
- if ( node.tagName.toLowerCase() == 'div' )
- {
- closeState = 1 ;
- break ;
- }
- node = node.parentNode ;
- }
-
- for ( var i = 0 ; i < text.length ; i++ )
- {
- var c = text.charAt( i ) ;
- if ( c == '\r' )
- continue ;
-
- if ( c != '\n' )
- {
- strArray.push( c ) ;
- continue ;
- }
-
- if ( closeState )
- {
- if ( strArray[ strArray.length - 1 ] == blockStartTag )
- {
- // A div tag must have some contents inside for it to be visible.
- strArray.push( "&nbsp;" ) ;
- }
- strArray.push( blockEndTag ) ;
- }
- strArray.push( blockStartTag ) ;
- closeState = 1 ;
- }
- if ( closeState )
- strArray.push( blockEndTag ) ;
-}
-
-FCKTools._ProcessLineBreaksForBrMode = function( oEditor, text, liState, node, strArray )
-{
- var closeState = 0 ;
- var blockStartTag = "<br />" ;
- var blockEndTag = "" ;
- if ( liState )
- {
- blockStartTag = "<li>" ;
- blockEndTag = "</li>" ;
- closeState = 1 ;
- }
-
- for ( var i = 0 ; i < text.length ; i++ )
- {
- var c = text.charAt( i ) ;
- if ( c == '\r' )
- continue ;
-
- if ( c != '\n' )
- {
- strArray.push( c ) ;
- continue ;
- }
-
- if ( closeState && blockEndTag.length )
- strArray.push ( blockEndTag ) ;
- strArray.push( blockStartTag ) ;
- closeState = 1 ;
- }
-}
-
-FCKTools.ProcessLineBreaks = function( oEditor, oConfig, text )
-{
- var enterMode = oConfig.EnterMode.toLowerCase() ;
- var strArray = [] ;
-
- // Is the caret or selection inside an <li> tag now?
- var liState = 0 ;
- var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
- range.MoveToSelection() ;
- var node = range._Range.startContainer ;
- while ( node && node.nodeType != 1 )
- node = node.parentNode ;
- if ( node && node.tagName.toLowerCase() == 'li' )
- liState = 1 ;
-
- if ( enterMode == 'p' )
- this._ProcessLineBreaksForPMode( oEditor, text, liState, node, strArray ) ;
- else if ( enterMode == 'div' )
- this._ProcessLineBreaksForDivMode( oEditor, text, liState, node, strArray ) ;
- else if ( enterMode == 'br' )
- this._ProcessLineBreaksForBrMode( oEditor, text, liState, node, strArray ) ;
- return strArray.join( "" ) ;
-}
-
-/**
- * Adds an option to a SELECT element.
- */
-FCKTools.AddSelectOption = function( selectElement, optionText, optionValue )
-{
- var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ;
-
- oOption.text = optionText ;
- oOption.value = optionValue ;
-
- selectElement.options.add(oOption) ;
-
- return oOption ;
-}
-
-FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow )
-{
- if ( func )
- this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ;
-}
-
-FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow )
-{
- return ( timerWindow || window ).setTimeout(
- function()
- {
- if ( paramsArray )
- func.apply( thisObject, [].concat( paramsArray ) ) ;
- else
- func.apply( thisObject ) ;
- },
- milliseconds ) ;
-}
-
-FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow )
-{
- return ( timerWindow || window ).setInterval(
- function()
- {
- func.apply( thisObject, paramsArray || [] ) ;
- },
- milliseconds ) ;
-}
-
-FCKTools.ConvertStyleSizeToHtml = function( size )
-{
- return size.EndsWith( '%' ) ? size : parseInt( size, 10 ) ;
-}
-
-FCKTools.ConvertHtmlSizeToStyle = function( size )
-{
- return size.EndsWith( '%' ) ? size : ( size + 'px' ) ;
-}
-
-// START iCM MODIFICATIONS
-// Amended to accept a list of one or more ascensor tag names
-// Amended to check the element itself before working back up through the parent hierarchy
-FCKTools.GetElementAscensor = function( element, ascensorTagNames )
-{
-// var e = element.parentNode ;
- var e = element ;
- var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;
-
- while ( e )
- {
- if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )
- return e ;
-
- e = e.parentNode ;
- }
- return null ;
-}
-// END iCM MODIFICATIONS
-
-FCKTools.CreateEventListener = function( func, params )
-{
- var f = function()
- {
- var aAllParams = [] ;
-
- for ( var i = 0 ; i < arguments.length ; i++ )
- aAllParams.push( arguments[i] ) ;
-
- func.apply( this, aAllParams.concat( params ) ) ;
- }
-
- return f ;
-}
-
-FCKTools.IsStrictMode = function( document )
-{
- // There is no compatMode in Safari, but it seams that it always behave as
- // CSS1Compat, so let's assume it as the default for that browser.
- return ( 'CSS1Compat' == ( document.compatMode || ( FCKBrowserInfo.IsSafari ? 'CSS1Compat' : null ) ) ) ;
-}
-
-// Transforms a "arguments" object to an array.
-FCKTools.ArgumentsToArray = function( args, startIndex, maxLength )
-{
- startIndex = startIndex || 0 ;
- maxLength = maxLength || args.length ;
-
- var argsArray = new Array() ;
-
- for ( var i = startIndex ; i < startIndex + maxLength && i < args.length ; i++ )
- argsArray.push( args[i] ) ;
-
- return argsArray ;
-}
-
-FCKTools.CloneObject = function( sourceObject )
-{
- var fCloneCreator = function() {} ;
- fCloneCreator.prototype = sourceObject ;
- return new fCloneCreator ;
-}
-
-// Appends a bogus <br> at the end of the element, if not yet available.
-FCKTools.AppendBogusBr = function( element )
-{
- if ( !element )
- return ;
-
- var eLastChild = this.GetLastItem( element.getElementsByTagName('br') ) ;
-
- if ( !eLastChild || ( eLastChild.getAttribute( 'type', 2 ) != '_moz' && eLastChild.getAttribute( '_moz_dirty' ) == null ) )
- {
- var doc = this.GetElementDocument( element ) ;
-
- if ( FCKBrowserInfo.IsOpera )
- element.appendChild( doc.createTextNode('') ) ;
- else
- element.appendChild( this.CreateBogusBR( doc ) ) ;
- }
-}
-
-FCKTools.GetLastItem = function( list )
-{
- if ( list.length > 0 )
- return list[ list.length - 1 ] ;
-
- return null ;
-}
-
-FCKTools.GetDocumentPosition = function( w, node )
-{
- var x = 0 ;
- var y = 0 ;
- var curNode = node ;
- var prevNode = null ;
- var curWindow = FCKTools.GetElementWindow( curNode ) ;
- while ( curNode && !( curWindow == w && ( curNode == w.document.body || curNode == w.document.documentElement ) ) )
- {
- x += curNode.offsetLeft - curNode.scrollLeft ;
- y += curNode.offsetTop - curNode.scrollTop ;
-
- if ( ! FCKBrowserInfo.IsOpera )
- {
- var scrollNode = prevNode ;
- while ( scrollNode && scrollNode != curNode )
- {
- x -= scrollNode.scrollLeft ;
- y -= scrollNode.scrollTop ;
- scrollNode = scrollNode.parentNode ;
- }
- }
-
- prevNode = curNode ;
- if ( curNode.offsetParent )
- curNode = curNode.offsetParent ;
- else
- {
- if ( curWindow != w )
- {
- curNode = curWindow.frameElement ;
- prevNode = null ;
- if ( curNode )
- curWindow = curNode.contentWindow.parent ;
- }
- else
- curNode = null ;
- }
- }
-
- // document.body is a special case when it comes to offsetTop and offsetLeft values.
- // 1. It matters if document.body itself is a positioned element;
- // 2. It matters is when we're in IE and the element has no positioned ancestor.
- // Otherwise the values should be ignored.
- if ( FCKDomTools.GetCurrentElementStyle( w.document.body, 'position') != 'static'
- || ( FCKBrowserInfo.IsIE && FCKDomTools.GetPositionedAncestor( node ) == null ) )
- {
- x += w.document.body.offsetLeft ;
- y += w.document.body.offsetTop ;
- }
-
- return { "x" : x, "y" : y } ;
-}
-
-FCKTools.GetWindowPosition = function( w, node )
-{
- var pos = this.GetDocumentPosition( w, node ) ;
- var scroll = FCKTools.GetScrollPosition( w ) ;
- pos.x -= scroll.X ;
- pos.y -= scroll.Y ;
- return pos ;
-}
-
-FCKTools.ProtectFormStyles = function( formNode )
-{
- if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' )
- return [] ;
- var hijackRecord = [] ;
- var hijackNames = [ 'style', 'className' ] ;
- for ( var i = 0 ; i < hijackNames.length ; i++ )
- {
- var name = hijackNames[i] ;
- if ( formNode.elements.namedItem( name ) )
- {
- var hijackNode = formNode.elements.namedItem( name ) ;
- hijackRecord.push( [ hijackNode, hijackNode.nextSibling ] ) ;
- formNode.removeChild( hijackNode ) ;
- }
- }
- return hijackRecord ;
-}
-
-FCKTools.RestoreFormStyles = function( formNode, hijackRecord )
-{
- if ( !formNode || formNode.nodeType != 1 || formNode.tagName.toLowerCase() != 'form' )
- return ;
- if ( hijackRecord.length > 0 )
- {
- for ( var i = hijackRecord.length - 1 ; i >= 0 ; i-- )
- {
- var node = hijackRecord[i][0] ;
- var sibling = hijackRecord[i][1] ;
- if ( sibling )
- formNode.insertBefore( node, sibling ) ;
- else
- formNode.appendChild( node ) ;
- }
- }
-}
-
-// Perform a one-step DFS walk.
-FCKTools.GetNextNode = function( node, limitNode )
-{
- if ( node.firstChild )
- return node.firstChild ;
- else if ( node.nextSibling )
- return node.nextSibling ;
- else
- {
- var ancestor = node.parentNode ;
- while ( ancestor )
- {
- if ( ancestor == limitNode )
- return null ;
- if ( ancestor.nextSibling )
- return ancestor.nextSibling ;
- else
- ancestor = ancestor.parentNode ;
- }
- }
- return null ;
-}
-
-FCKTools.GetNextTextNode = function( textnode, limitNode, checkStop )
-{
- node = this.GetNextNode( textnode, limitNode ) ;
- if ( checkStop && node && checkStop( node ) )
- return null ;
- while ( node && node.nodeType != 3 )
- {
- node = this.GetNextNode( node, limitNode ) ;
- if ( checkStop && node && checkStop( node ) )
- return null ;
- }
- return node ;
-}
-
-/**
- * Merge all objects passed by argument into a single object.
- */
-FCKTools.Merge = function()
-{
- var args = arguments ;
- var o = args[0] ;
-
- for ( var i = 1 ; i < args.length ; i++ )
- {
- var arg = args[i] ;
- for ( var p in arg )
- o[p] = arg[p] ;
- }
-
- return o ;
-}
-
-/**
- * Check if the passed argument is a real Array. It may not working when
- * calling it cross windows.
- */
-FCKTools.IsArray = function( it )
-{
- return ( it instanceof Array ) ;
-}
-
-/**
- * Appends a "length" property to an object, containing the number of
- * properties available on it, excluded the append property itself.
- */
-FCKTools.AppendLengthProperty = function( targetObject, propertyName )
-{
- var counter = 0 ;
-
- for ( var n in targetObject )
- counter++ ;
-
- return targetObject[ propertyName || 'length' ] = counter ;
-}
-
-/**
- * Gets the browser parsed version of a css text (style attribute value). On
- * some cases, the browser makes changes to the css text, returning a different
- * value. For example, hexadecimal colors get transformed to rgb().
- */
-FCKTools.NormalizeCssText = function( unparsedCssText )
-{
- // Injects the style in a temporary span object, so the browser parses it,
- // retrieving its final format.
- var tempSpan = document.createElement( 'span' ) ;
- tempSpan.style.cssText = unparsedCssText ;
- return tempSpan.style.cssText ;
-}
-
-/**
- * Binding the "this" reference to an object for a function.
- */
-FCKTools.Bind = function( subject, func )
-{
- return function(){ return func.apply( subject, arguments ) ; } ;
-}
-
-/**
- * Retrieve the correct "empty iframe" URL for the current browser, which
- * causes the minimum fuzz (e.g. security warnings in HTTPS, DNS error in
- * IE5.5, etc.) for that browser, making the iframe ready to DOM use whithout
- * having to loading an external file.
- */
-FCKTools.GetVoidUrl = function()
-{
- if ( FCK_IS_CUSTOM_DOMAIN )
- return "javascript: void( function(){" +
- "document.open();" +
- "document.write('<html><head><title></title></head><body></body></html>');" +
- "document.domain = '" + FCK_RUNTIME_DOMAIN + "';" +
- "document.close();" +
- "}() ) ;";
-
- if ( FCKBrowserInfo.IsIE )
- {
- if ( FCKBrowserInfo.IsIE7 || !FCKBrowserInfo.IsIE6 )
- return "" ; // IE7+ / IE5.5
- else
- return "javascript: '';" ; // IE6+
- }
-
- return "javascript: void(0);" ; // All other browsers.
-}
-
-FCKTools.ResetStyles = function( element )
-{
- element.style.cssText = 'margin:0;' +
- 'padding:0;' +
- 'border:0;' +
- 'background-color:transparent;' +
- 'background-image:none;' ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_gecko.js
deleted file mode 100644
index 6bbca4799..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_gecko.js
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Utility functions. (Gecko version).
- */
-
-FCKTools.CancelEvent = function( e )
-{
- if ( e )
- e.preventDefault() ;
-}
-
-FCKTools.DisableSelection = function( element )
-{
- if ( FCKBrowserInfo.IsGecko )
- element.style.MozUserSelect = 'none' ; // Gecko only.
- else if ( FCKBrowserInfo.IsSafari )
- element.style.KhtmlUserSelect = 'none' ; // WebKit only.
- else
- element.style.userSelect = 'none' ; // CSS3 (not supported yet).
-}
-
-// Appends a CSS file to a document.
-FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
-{
- var e = documentElement.createElement( 'LINK' ) ;
- e.rel = 'stylesheet' ;
- e.type = 'text/css' ;
- e.href = cssFileUrl ;
- documentElement.getElementsByTagName("HEAD")[0].appendChild( e ) ;
- return e ;
-}
-
-// Appends a CSS style string to a document.
-FCKTools.AppendStyleString = function( documentElement, cssStyles )
-{
- if ( !cssStyles )
- return null ;
-
- var e = documentElement.createElement( "STYLE" ) ;
- e.appendChild( documentElement.createTextNode( cssStyles ) ) ;
- documentElement.getElementsByTagName( "HEAD" )[0].appendChild( e ) ;
- return e ;
-}
-
-// Removes all attributes and values from the element.
-FCKTools.ClearElementAttributes = function( element )
-{
- // Loop throw all attributes in the element
- for ( var i = 0 ; i < element.attributes.length ; i++ )
- {
- // Remove the element by name.
- element.removeAttribute( element.attributes[i].name, 0 ) ; // 0 : Case Insensitive
- }
-}
-
-// Returns an Array of strings with all defined in the elements inside another element.
-FCKTools.GetAllChildrenIds = function( parentElement )
-{
- // Create the array that will hold all Ids.
- var aIds = new Array() ;
-
- // Define a recursive function that search for the Ids.
- var fGetIds = function( parent )
- {
- for ( var i = 0 ; i < parent.childNodes.length ; i++ )
- {
- var sId = parent.childNodes[i].id ;
-
- // Check if the Id is defined for the element.
- if ( sId && sId.length > 0 ) aIds[ aIds.length ] = sId ;
-
- // Recursive call.
- fGetIds( parent.childNodes[i] ) ;
- }
- }
-
- // Start the recursive calls.
- fGetIds( parentElement ) ;
-
- return aIds ;
-}
-
-// Replaces a tag with its contents. For example "<span>My <b>tag</b></span>"
-// will be replaced with "My <b>tag</b>".
-FCKTools.RemoveOuterTags = function( e )
-{
- var oFragment = e.ownerDocument.createDocumentFragment() ;
-
- for ( var i = 0 ; i < e.childNodes.length ; i++ )
- oFragment.appendChild( e.childNodes[i].cloneNode(true) ) ;
-
- e.parentNode.replaceChild( oFragment, e ) ;
-}
-
-FCKTools.CreateXmlObject = function( object )
-{
- switch ( object )
- {
- case 'XmlHttp' :
- return new XMLHttpRequest() ;
-
- case 'DOMDocument' :
- // Originaly, we were had the following here:
- // return document.implementation.createDocument( '', '', null ) ;
- // But that doesn't work if we're running under domain relaxation mode, so we need a workaround.
- // See http://ajaxian.com/archives/xml-messages-with-cross-domain-json about the trick we're using.
- var doc = ( new DOMParser() ).parseFromString( '<tmp></tmp>', 'text/xml' ) ;
- FCKDomTools.RemoveNode( doc.firstChild ) ;
- return doc ;
- }
- return null ;
-}
-
-FCKTools.GetScrollPosition = function( relativeWindow )
-{
- return { X : relativeWindow.pageXOffset, Y : relativeWindow.pageYOffset } ;
-}
-
-FCKTools.AddEventListener = function( sourceObject, eventName, listener )
-{
- sourceObject.addEventListener( eventName, listener, false ) ;
-}
-
-FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
-{
- sourceObject.removeEventListener( eventName, listener, false ) ;
-}
-
-// Listeners attached with this function cannot be detached.
-FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
-{
- sourceObject.addEventListener(
- eventName,
- function( e )
- {
- listener.apply( sourceObject, [ e ].concat( paramsArray || [] ) ) ;
- },
- false
- ) ;
-}
-
-// Returns and object with the "Width" and "Height" properties.
-FCKTools.GetViewPaneSize = function( win )
-{
- return { Width : win.innerWidth, Height : win.innerHeight } ;
-}
-
-FCKTools.SaveStyles = function( element )
-{
- var data = FCKTools.ProtectFormStyles( element ) ;
-
- var oSavedStyles = new Object() ;
-
- if ( element.className.length > 0 )
- {
- oSavedStyles.Class = element.className ;
- element.className = '' ;
- }
-
- var sInlineStyle = element.getAttribute( 'style' ) ;
-
- if ( sInlineStyle && sInlineStyle.length > 0 )
- {
- oSavedStyles.Inline = sInlineStyle ;
- element.setAttribute( 'style', '', 0 ) ; // 0 : Case Insensitive
- }
-
- FCKTools.RestoreFormStyles( element, data ) ;
- return oSavedStyles ;
-}
-
-FCKTools.RestoreStyles = function( element, savedStyles )
-{
- var data = FCKTools.ProtectFormStyles( element ) ;
- element.className = savedStyles.Class || '' ;
-
- if ( savedStyles.Inline )
- element.setAttribute( 'style', savedStyles.Inline, 0 ) ; // 0 : Case Insensitive
- else
- element.removeAttribute( 'style', 0 ) ;
- FCKTools.RestoreFormStyles( element, data ) ;
-}
-
-FCKTools.RegisterDollarFunction = function( targetWindow )
-{
- targetWindow.$ = function( id )
- {
- return targetWindow.document.getElementById( id ) ;
- } ;
-}
-
-FCKTools.AppendElement = function( target, elementName )
-{
- return target.appendChild( target.ownerDocument.createElement( elementName ) ) ;
-}
-
-// Get the coordinates of an element.
-// @el : The element to get the position.
-// @relativeWindow: The window to which we want the coordinates relative to.
-FCKTools.GetElementPosition = function( el, relativeWindow )
-{
- // Initializes the Coordinates object that will be returned by the function.
- var c = { X:0, Y:0 } ;
-
- var oWindow = relativeWindow || window ;
-
- var oOwnerWindow = FCKTools.GetElementWindow( el ) ;
-
- var previousElement = null ;
- // Loop throw the offset chain.
- while ( el )
- {
- var sPosition = oOwnerWindow.getComputedStyle(el, '').position ;
-
- // Check for non "static" elements.
- // 'FCKConfig.FloatingPanelsZIndex' -- Submenus are under a positioned IFRAME.
- if ( sPosition && sPosition != 'static' && el.style.zIndex != FCKConfig.FloatingPanelsZIndex )
- break ;
-
- /*
- FCKDebug.Output( el.tagName + ":" + "offset=" + el.offsetLeft + "," + el.offsetTop + " "
- + "scroll=" + el.scrollLeft + "," + el.scrollTop ) ;
- */
-
- c.X += el.offsetLeft - el.scrollLeft ;
- c.Y += el.offsetTop - el.scrollTop ;
-
- // Backtrack due to offsetParent's calculation by the browser ignores scrollLeft and scrollTop.
- // Backtracking is not needed for Opera
- if ( ! FCKBrowserInfo.IsOpera )
- {
- var scrollElement = previousElement ;
- while ( scrollElement && scrollElement != el )
- {
- c.X -= scrollElement.scrollLeft ;
- c.Y -= scrollElement.scrollTop ;
- scrollElement = scrollElement.parentNode ;
- }
- }
-
- previousElement = el ;
- if ( el.offsetParent )
- el = el.offsetParent ;
- else
- {
- if ( oOwnerWindow != oWindow )
- {
- el = oOwnerWindow.frameElement ;
- previousElement = null ;
- if ( el )
- oOwnerWindow = FCKTools.GetElementWindow( el ) ;
- }
- else
- {
- c.X += el.scrollLeft ;
- c.Y += el.scrollTop ;
- break ;
- }
- }
- }
-
- // Return the Coordinates object
- return c ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_ie.js
deleted file mode 100644
index a849ee3c8..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fcktools_ie.js
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Utility functions. (IE version).
- */
-
-FCKTools.CancelEvent = function( e )
-{
- return false ;
-}
-
-// Appends one or more CSS files to a document.
-FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl )
-{
- return documentElement.createStyleSheet( cssFileUrl ).owningElement ;
-}
-
-// Appends a CSS style string to a document.
-FCKTools.AppendStyleString = function( documentElement, cssStyles )
-{
- if ( !cssStyles )
- return null ;
-
- var s = documentElement.createStyleSheet( "" ) ;
- s.cssText = cssStyles ;
- return s ;
-}
-
-// Removes all attributes and values from the element.
-FCKTools.ClearElementAttributes = function( element )
-{
- element.clearAttributes() ;
-}
-
-FCKTools.GetAllChildrenIds = function( parentElement )
-{
- var aIds = new Array() ;
- for ( var i = 0 ; i < parentElement.all.length ; i++ )
- {
- var sId = parentElement.all[i].id ;
- if ( sId && sId.length > 0 )
- aIds[ aIds.length ] = sId ;
- }
- return aIds ;
-}
-
-FCKTools.RemoveOuterTags = function( e )
-{
- e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ;
- e.parentNode.removeChild( e ) ;
-}
-
-FCKTools.CreateXmlObject = function( object )
-{
- var aObjs ;
-
- switch ( object )
- {
- case 'XmlHttp' :
- // Try the native XMLHttpRequest introduced with IE7.
- if ( document.location.protocol != 'file:' )
- try { return new XMLHttpRequest() ; } catch (e) {}
-
- aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ;
- break ;
-
- case 'DOMDocument' :
- aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ;
- break ;
- }
-
- for ( var i = 0 ; i < 2 ; i++ )
- {
- try { return new ActiveXObject( aObjs[i] ) ; }
- catch (e)
- {}
- }
-
- if ( FCKLang.NoActiveX )
- {
- alert( FCKLang.NoActiveX ) ;
- FCKLang.NoActiveX = null ;
- }
- return null ;
-}
-
-FCKTools.DisableSelection = function( element )
-{
- element.unselectable = 'on' ;
-
- var e, i = 0 ;
- // The extra () is to avoid a warning with strict error checking. This is ok.
- while ( (e = element.all[ i++ ]) )
- {
- switch ( e.tagName )
- {
- case 'IFRAME' :
- case 'TEXTAREA' :
- case 'INPUT' :
- case 'SELECT' :
- /* Ignore the above tags */
- break ;
- default :
- e.unselectable = 'on' ;
- }
- }
-}
-
-FCKTools.GetScrollPosition = function( relativeWindow )
-{
- var oDoc = relativeWindow.document ;
-
- // Try with the doc element.
- var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;
-
- if ( oPos.X > 0 || oPos.Y > 0 )
- return oPos ;
-
- // If no scroll, try with the body.
- return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;
-}
-
-FCKTools.AddEventListener = function( sourceObject, eventName, listener )
-{
- sourceObject.attachEvent( 'on' + eventName, listener ) ;
-}
-
-FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
-{
- sourceObject.detachEvent( 'on' + eventName, listener ) ;
-}
-
-// Listeners attached with this function cannot be detached.
-FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
-{
- // Ok... this is a closures party, but is the only way to make it clean of memory leaks.
- var o = new Object() ;
- o.Source = sourceObject ;
- o.Params = paramsArray || [] ; // Memory leak if we have DOM objects here.
- o.Listener = function( ev )
- {
- return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;
- }
-
- if ( FCK.IECleanup )
- FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;
-
- sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;
-
- sourceObject = null ; // Memory leak cleaner (because of the above closure).
- paramsArray = null ; // Memory leak cleaner (because of the above closure).
-}
-
-// Returns and object with the "Width" and "Height" properties.
-FCKTools.GetViewPaneSize = function( win )
-{
- var oSizeSource ;
-
- var oDoc = win.document.documentElement ;
- if ( oDoc && oDoc.clientWidth ) // IE6 Strict Mode
- oSizeSource = oDoc ;
- else
- oSizeSource = win.document.body ; // Other IEs
-
- if ( oSizeSource )
- return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;
- else
- return { Width : 0, Height : 0 } ;
-}
-
-FCKTools.SaveStyles = function( element )
-{
- var data = FCKTools.ProtectFormStyles( element ) ;
-
- var oSavedStyles = new Object() ;
-
- if ( element.className.length > 0 )
- {
- oSavedStyles.Class = element.className ;
- element.className = '' ;
- }
-
- var sInlineStyle = element.style.cssText ;
-
- if ( sInlineStyle.length > 0 )
- {
- oSavedStyles.Inline = sInlineStyle ;
- element.style.cssText = '' ;
- }
-
- FCKTools.RestoreFormStyles( element, data ) ;
- return oSavedStyles ;
-}
-
-FCKTools.RestoreStyles = function( element, savedStyles )
-{
- var data = FCKTools.ProtectFormStyles( element ) ;
- element.className = savedStyles.Class || '' ;
- element.style.cssText = savedStyles.Inline || '' ;
- FCKTools.RestoreFormStyles( element, data ) ;
-}
-
-FCKTools.RegisterDollarFunction = function( targetWindow )
-{
- targetWindow.$ = targetWindow.document.getElementById ;
-}
-
-FCKTools.AppendElement = function( target, elementName )
-{
- return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;
-}
-
-// This function may be used by Regex replacements.
-FCKTools.ToLowerCase = function( strValue )
-{
- return strValue.toLowerCase() ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckundo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckundo.js
deleted file mode 100644
index 404a5d910..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckundo.js
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- */
-
-var FCKUndo = new Object() ;
-
-FCKUndo.SavedData = new Array() ;
-FCKUndo.CurrentIndex = -1 ;
-FCKUndo.TypesCount = 0 ;
-FCKUndo.Changed = false ; // Is the document changed in respect to its initial image?
-FCKUndo.MaxTypes = 25 ;
-FCKUndo.Typing = false ;
-FCKUndo.SaveLocked = false ;
-
-FCKUndo._GetBookmark = function()
-{
- FCKSelection.Restore() ;
-
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- try
- {
- // There are some tricky cases where this might fail (e.g. having a lone empty table in IE)
- range.MoveToSelection() ;
- }
- catch ( e )
- {
- return null ;
- }
- if ( FCKBrowserInfo.IsIE )
- {
- var bookmark = range.CreateBookmark() ;
- var dirtyHtml = FCK.EditorDocument.body.innerHTML ;
- range.MoveToBookmark( bookmark ) ;
- return [ bookmark, dirtyHtml ] ;
- }
- return range.CreateBookmark2() ;
-}
-
-FCKUndo._SelectBookmark = function( bookmark )
-{
- if ( ! bookmark )
- return ;
-
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- if ( bookmark instanceof Object )
- {
- if ( FCKBrowserInfo.IsIE )
- range.MoveToBookmark( bookmark[0] ) ;
- else
- range.MoveToBookmark2( bookmark ) ;
- try
- {
- // this does not always succeed, there are still some tricky cases where it fails
- // e.g. add a special character at end of document, undo, redo -> error
- range.Select() ;
- }
- catch ( e )
- {
- // if select restore fails, put the caret at the end of the document
- range.MoveToPosition( FCK.EditorDocument.body, 4 ) ;
- range.Select() ;
- }
- }
-}
-
-FCKUndo._CompareCursors = function( cursor1, cursor2 )
-{
- for ( var i = 0 ; i < Math.min( cursor1.length, cursor2.length ) ; i++ )
- {
- if ( cursor1[i] < cursor2[i] )
- return -1;
- else if (cursor1[i] > cursor2[i] )
- return 1;
- }
- if ( cursor1.length < cursor2.length )
- return -1;
- else if (cursor1.length > cursor2.length )
- return 1;
- return 0;
-}
-
-FCKUndo._CheckIsBookmarksEqual = function( bookmark1, bookmark2 )
-{
- if ( ! ( bookmark1 && bookmark2 ) )
- return false ;
- if ( FCKBrowserInfo.IsIE )
- {
- var startOffset1 = bookmark1[1].search( bookmark1[0].StartId ) ;
- var startOffset2 = bookmark2[1].search( bookmark2[0].StartId ) ;
- var endOffset1 = bookmark1[1].search( bookmark1[0].EndId ) ;
- var endOffset2 = bookmark2[1].search( bookmark2[0].EndId ) ;
- return startOffset1 == startOffset2 && endOffset1 == endOffset2 ;
- }
- else
- {
- return this._CompareCursors( bookmark1.Start, bookmark2.Start ) == 0
- && this._CompareCursors( bookmark1.End, bookmark2.End ) == 0 ;
- }
-}
-
-FCKUndo.SaveUndoStep = function()
-{
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG || this.SaveLocked )
- return ;
-
- // Assume the editor content is changed when SaveUndoStep() is called after the first time.
- // This also enables the undo button in toolbar.
- if ( this.SavedData.length )
- this.Changed = true ;
-
- // Get the HTML content.
- var sHtml = FCK.EditorDocument.body.innerHTML ;
- var bookmark = this._GetBookmark() ;
-
- // Shrink the array to the current level.
- this.SavedData = this.SavedData.slice( 0, this.CurrentIndex + 1 ) ;
-
- // Cancel operation if the new step is identical to the previous one.
- if ( this.CurrentIndex > 0
- && sHtml == this.SavedData[ this.CurrentIndex ][0]
- && this._CheckIsBookmarksEqual( bookmark, this.SavedData[ this.CurrentIndex ][1] ) )
- return ;
- // Save the selection and caret position in the first undo level for the first change.
- else if ( this.CurrentIndex == 0 && this.SavedData.length && sHtml == this.SavedData[0][0] )
- {
- this.SavedData[0][1] = bookmark ;
- return ;
- }
-
- // If we reach the Maximum number of undo levels, we must remove the first
- // entry of the list shifting all elements.
- if ( this.CurrentIndex + 1 >= FCKConfig.MaxUndoLevels )
- this.SavedData.shift() ;
- else
- this.CurrentIndex++ ;
-
- // Save the new level in front of the actual position.
- this.SavedData[ this.CurrentIndex ] = [ sHtml, bookmark ] ;
-
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
-}
-
-FCKUndo.CheckUndoState = function()
-{
- return ( this.Changed || this.CurrentIndex > 0 ) ;
-}
-
-FCKUndo.CheckRedoState = function()
-{
- return ( this.CurrentIndex < ( this.SavedData.length - 1 ) ) ;
-}
-
-FCKUndo.Undo = function()
-{
- if ( this.CheckUndoState() )
- {
- // If it is the first step.
- if ( this.CurrentIndex == ( this.SavedData.length - 1 ) )
- {
- // Save the actual state for a possible "Redo" call.
- this.SaveUndoStep() ;
- }
-
- // Go a step back.
- this._ApplyUndoLevel( --this.CurrentIndex ) ;
-
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
- }
-}
-
-FCKUndo.Redo = function()
-{
- if ( this.CheckRedoState() )
- {
- // Go a step forward.
- this._ApplyUndoLevel( ++this.CurrentIndex ) ;
-
- FCK.Events.FireEvent( "OnSelectionChange" ) ;
- }
-}
-
-FCKUndo._ApplyUndoLevel = function( level )
-{
- var oData = this.SavedData[ level ] ;
-
- if ( !oData )
- return ;
-
- // Update the editor contents with that step data.
- if ( FCKBrowserInfo.IsIE )
- {
- if ( oData[1] && oData[1][1] )
- FCK.SetInnerHtml( oData[1][1] ) ;
- else
- FCK.SetInnerHtml( oData[0] ) ;
- }
- else
- FCK.EditorDocument.body.innerHTML = oData[0] ;
-
- // Restore the selection
- this._SelectBookmark( oData[1] ) ;
-
- this.TypesCount = 0 ;
- this.Changed = false ;
- this.Typing = false ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckurlparams.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckurlparams.js
deleted file mode 100644
index 49815c429..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckurlparams.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKURLParams object that is used to get all parameters
- * passed by the URL QueryString (after the "?").
- */
-
-// #### URLParams: holds all URL passed parameters (like ?Param1=Value1&Param2=Value2)
-var FCKURLParams = new Object() ;
-
-(function()
-{
- var aParams = document.location.search.substr(1).split('&') ;
- for ( var i = 0 ; i < aParams.length ; i++ )
- {
- var aParam = aParams[i].split('=') ;
- var sParamName = decodeURIComponent( aParam[0] ) ;
- var sParamValue = decodeURIComponent( aParam[1] ) ;
-
- FCKURLParams[ sParamName ] = sParamValue ;
- }
-})();
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml.js
deleted file mode 100644
index 130a3a9b9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKXHtml object, responsible for the XHTML operations.
- */
-
-var FCKXHtml = new Object() ;
-
-FCKXHtml.CurrentJobNum = 0 ;
-
-FCKXHtml.GetXHTML = function( node, includeNode, format )
-{
- FCKDomTools.CheckAndRemovePaddingNode( FCKTools.GetElementDocument( node ), FCKConfig.EnterMode ) ;
- FCKXHtmlEntities.Initialize() ;
-
- // Set the correct entity to use for empty blocks.
- this._NbspEntity = ( FCKConfig.ProcessHTMLEntities? 'nbsp' : '#160' ) ;
-
- // Save the current IsDirty state. The XHTML processor may change the
- // original HTML, dirtying it.
- var bIsDirty = FCK.IsDirty() ;
-
- // Special blocks are blocks of content that remain untouched during the
- // process. It is used for SCRIPTs and STYLEs.
- FCKXHtml.SpecialBlocks = new Array() ;
-
- // Create the XML DOMDocument object.
- this.XML = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
-
- // Add a root element that holds all child nodes.
- this.MainNode = this.XML.appendChild( this.XML.createElement( 'xhtml' ) ) ;
-
- FCKXHtml.CurrentJobNum++ ;
-
-// var dTimer = new Date() ;
-
- if ( includeNode )
- this._AppendNode( this.MainNode, node ) ;
- else
- this._AppendChildNodes( this.MainNode, node, false ) ;
-
- // Get the resulting XHTML as a string.
- var sXHTML = this._GetMainXmlString() ;
-
-// alert( 'Time: ' + ( ( ( new Date() ) - dTimer ) ) + ' ms' ) ;
-
- this.XML = null ;
-
- // Safari adds xmlns="http://www.w3.org/1999/xhtml" to the root node (#963)
- if ( FCKBrowserInfo.IsSafari )
- sXHTML = sXHTML.replace( /^<xhtml.*?>/, '<xhtml>' ) ;
-
- // Strip the "XHTML" root node.
- sXHTML = sXHTML.substr( 7, sXHTML.length - 15 ).Trim() ;
-
- // According to the doctype set the proper end for self-closing tags
- // HTML: <br>
- // XHTML: Add a space, like <br/> -> <br />
- if (FCKConfig.DocType.length > 0 && FCKRegexLib.HtmlDocType.test( FCKConfig.DocType ) )
- sXHTML = sXHTML.replace( FCKRegexLib.SpaceNoClose, '>');
- else
- sXHTML = sXHTML.replace( FCKRegexLib.SpaceNoClose, ' />');
-
- if ( FCKConfig.ForceSimpleAmpersand )
- sXHTML = sXHTML.replace( FCKRegexLib.ForceSimpleAmpersand, '&' ) ;
-
- if ( format )
- sXHTML = FCKCodeFormatter.Format( sXHTML ) ;
-
- // Now we put back the SpecialBlocks contents.
- for ( var i = 0 ; i < FCKXHtml.SpecialBlocks.length ; i++ )
- {
- var oRegex = new RegExp( '___FCKsi___' + i ) ;
- sXHTML = sXHTML.replace( oRegex, FCKXHtml.SpecialBlocks[i] ) ;
- }
-
- // Replace entities marker with the ampersand.
- sXHTML = sXHTML.replace( FCKRegexLib.GeckoEntitiesMarker, '&' ) ;
-
- // Restore the IsDirty state if it was not dirty.
- if ( !bIsDirty )
- FCK.ResetIsDirty() ;
-
- FCKDomTools.EnforcePaddingNode( FCKTools.GetElementDocument( node ), FCKConfig.EnterMode ) ;
- return sXHTML ;
-}
-
-FCKXHtml._AppendAttribute = function( xmlNode, attributeName, attributeValue )
-{
- try
- {
- if ( attributeValue == undefined || attributeValue == null )
- attributeValue = '' ;
- else if ( attributeValue.replace )
- {
- if ( FCKConfig.ForceSimpleAmpersand )
- attributeValue = attributeValue.replace( /&/g, '___FCKAmp___' ) ;
-
- // Entities must be replaced in the attribute values.
- attributeValue = attributeValue.replace( FCKXHtmlEntities.EntitiesRegex, FCKXHtml_GetEntity ) ;
- }
-
- // Create the attribute.
- var oXmlAtt = this.XML.createAttribute( attributeName ) ;
- oXmlAtt.value = attributeValue ;
-
- // Set the attribute in the node.
- xmlNode.attributes.setNamedItem( oXmlAtt ) ;
- }
- catch (e)
- {}
-}
-
-FCKXHtml._AppendChildNodes = function( xmlNode, htmlNode, isBlockElement )
-{
- var oNode = htmlNode.firstChild ;
-
- while ( oNode )
- {
- this._AppendNode( xmlNode, oNode ) ;
- oNode = oNode.nextSibling ;
- }
-
- // Trim block elements. This is also needed to avoid Firefox leaving extra
- // BRs at the end of them.
- if ( isBlockElement && htmlNode.tagName && htmlNode.tagName.toLowerCase() != 'pre' )
- {
- FCKDomTools.TrimNode( xmlNode ) ;
-
- if ( FCKConfig.FillEmptyBlocks )
- {
- var lastChild = xmlNode.lastChild ;
- if ( lastChild && lastChild.nodeType == 1 && lastChild.nodeName == 'br' )
- this._AppendEntity( xmlNode, this._NbspEntity ) ;
- }
- }
-
- // If the resulting node is empty.
- if ( xmlNode.childNodes.length == 0 )
- {
- if ( isBlockElement && FCKConfig.FillEmptyBlocks )
- {
- this._AppendEntity( xmlNode, this._NbspEntity ) ;
- return xmlNode ;
- }
-
- var sNodeName = xmlNode.nodeName ;
-
- // Some inline elements are required to have something inside (span, strong, etc...).
- if ( FCKListsLib.InlineChildReqElements[ sNodeName ] )
- return null ;
-
- // We can't use short representation of empty elements that are not marked
- // as empty in th XHTML DTD.
- if ( !FCKListsLib.EmptyElements[ sNodeName ] )
- xmlNode.appendChild( this.XML.createTextNode('') ) ;
- }
-
- return xmlNode ;
-}
-
-FCKXHtml._AppendNode = function( xmlNode, htmlNode )
-{
- if ( !htmlNode )
- return false ;
-
- switch ( htmlNode.nodeType )
- {
- // Element Node.
- case 1 :
- // If we detect a <br> inside a <pre> in Gecko, turn it into a line break instead.
- // This is a workaround for the Gecko bug here: https://bugzilla.mozilla.org/show_bug.cgi?id=92921
- if ( FCKBrowserInfo.IsGecko
- && htmlNode.tagName.toLowerCase() == 'br'
- && htmlNode.parentNode.tagName.toLowerCase() == 'pre' )
- {
- var val = '\r' ;
- if ( htmlNode == htmlNode.parentNode.firstChild )
- val += '\r' ;
- return FCKXHtml._AppendNode( xmlNode, this.XML.createTextNode( val ) ) ;
- }
-
- // Here we found an element that is not the real element, but a
- // fake one (like the Flash placeholder image), so we must get the real one.
- if ( htmlNode.getAttribute('_fckfakelement') )
- return FCKXHtml._AppendNode( xmlNode, FCK.GetRealElement( htmlNode ) ) ;
-
- // Ignore bogus BR nodes in the DOM.
- if ( FCKBrowserInfo.IsGecko &&
- ( htmlNode.hasAttribute('_moz_editor_bogus_node') || htmlNode.getAttribute( 'type' ) == '_moz' ) )
- {
- if ( htmlNode.nextSibling )
- return false ;
- else
- {
- htmlNode.removeAttribute( '_moz_editor_bogus_node' ) ;
- htmlNode.removeAttribute( 'type' ) ;
- }
- }
-
- // This is for elements that are instrumental to FCKeditor and
- // must be removed from the final HTML.
- if ( htmlNode.getAttribute('_fcktemp') )
- return false ;
-
- // Get the element name.
- var sNodeName = htmlNode.tagName.toLowerCase() ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- // IE doens't include the scope name in the nodeName. So, add the namespace.
- if ( htmlNode.scopeName && htmlNode.scopeName != 'HTML' && htmlNode.scopeName != 'FCK' )
- sNodeName = htmlNode.scopeName.toLowerCase() + ':' + sNodeName ;
- }
- else
- {
- if ( sNodeName.StartsWith( 'fck:' ) )
- sNodeName = sNodeName.Remove( 0,4 ) ;
- }
-
- // Check if the node name is valid, otherwise ignore this tag.
- // If the nodeName starts with a slash, it is a orphan closing tag.
- // On some strange cases, the nodeName is empty, even if the node exists.
- if ( !FCKRegexLib.ElementName.test( sNodeName ) )
- return false ;
-
- // The already processed nodes must be marked to avoid then to be duplicated (bad formatted HTML).
- // So here, the "mark" is checked... if the element is Ok, then mark it.
- if ( htmlNode._fckxhtmljob && htmlNode._fckxhtmljob == FCKXHtml.CurrentJobNum )
- return false ;
-
- var oNode = this.XML.createElement( sNodeName ) ;
-
- // Add all attributes.
- FCKXHtml._AppendAttributes( xmlNode, htmlNode, oNode, sNodeName ) ;
-
- htmlNode._fckxhtmljob = FCKXHtml.CurrentJobNum ;
-
- // Tag specific processing.
- var oTagProcessor = FCKXHtml.TagProcessors[ sNodeName ] ;
-
- if ( oTagProcessor )
- oNode = oTagProcessor( oNode, htmlNode, xmlNode ) ;
- else
- oNode = this._AppendChildNodes( oNode, htmlNode, Boolean( FCKListsLib.NonEmptyBlockElements[ sNodeName ] ) ) ;
-
- if ( !oNode )
- return false ;
-
- xmlNode.appendChild( oNode ) ;
-
- break ;
-
- // Text Node.
- case 3 :
- if ( htmlNode.parentNode && htmlNode.parentNode.nodeName.IEquals( 'pre' ) )
- return this._AppendTextNode( xmlNode, htmlNode.nodeValue ) ;
- return this._AppendTextNode( xmlNode, htmlNode.nodeValue.ReplaceNewLineChars(' ') ) ;
-
- // Comment
- case 8 :
- // IE catches the <!DOTYPE ... > as a comment, but it has no
- // innerHTML, so we can catch it, and ignore it.
- if ( FCKBrowserInfo.IsIE && !htmlNode.innerHTML )
- break ;
-
- try { xmlNode.appendChild( this.XML.createComment( htmlNode.nodeValue ) ) ; }
- catch (e) { /* Do nothing... probably this is a wrong format comment. */ }
- break ;
-
- // Unknown Node type.
- default :
- xmlNode.appendChild( this.XML.createComment( "Element not supported - Type: " + htmlNode.nodeType + " Name: " + htmlNode.nodeName ) ) ;
- break ;
- }
- return true ;
-}
-
-// Append an item to the SpecialBlocks array and returns the tag to be used.
-FCKXHtml._AppendSpecialItem = function( item )
-{
- return '___FCKsi___' + ( FCKXHtml.SpecialBlocks.push( item ) - 1 ) ;
-}
-
-FCKXHtml._AppendEntity = function( xmlNode, entity )
-{
- xmlNode.appendChild( this.XML.createTextNode( '#?-:' + entity + ';' ) ) ;
-}
-
-FCKXHtml._AppendTextNode = function( targetNode, textValue )
-{
- var bHadText = textValue.length > 0 ;
- if ( bHadText )
- targetNode.appendChild( this.XML.createTextNode( textValue.replace( FCKXHtmlEntities.EntitiesRegex, FCKXHtml_GetEntity ) ) ) ;
- return bHadText ;
-}
-
-// Retrieves a entity (internal format) for a given character.
-function FCKXHtml_GetEntity( character )
-{
- // We cannot simply place the entities in the text, because the XML parser
- // will translate & to &amp;. So we use a temporary marker which is replaced
- // in the end of the processing.
- var sEntity = FCKXHtmlEntities.Entities[ character ] || ( '#' + character.charCodeAt(0) ) ;
- return '#?-:' + sEntity + ';' ;
-}
-
-// An object that hold tag specific operations.
-FCKXHtml.TagProcessors =
-{
- a : function( node, htmlNode )
- {
- // Firefox may create empty tags when deleting the selection in some special cases (SF-BUG 1556878).
- if ( htmlNode.innerHTML.Trim().length == 0 && !htmlNode.name )
- return false ;
-
- var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
- if ( sSavedUrl != null )
- FCKXHtml._AppendAttribute( node, 'href', sSavedUrl ) ;
-
-
- // Anchors with content has been marked with an additional class, now we must remove it.
- if ( FCKBrowserInfo.IsIE )
- {
- // Buggy IE, doesn't copy the name of changed anchors.
- if ( htmlNode.name )
- FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
- }
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
-
- return node ;
- },
-
- area : function( node, htmlNode )
- {
- var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
- if ( sSavedUrl != null )
- FCKXHtml._AppendAttribute( node, 'href', sSavedUrl ) ;
-
- // IE ignores the "COORDS" and "SHAPE" attribute so we must add it manually.
- if ( FCKBrowserInfo.IsIE )
- {
- if ( ! node.attributes.getNamedItem( 'coords' ) )
- {
- var sCoords = htmlNode.getAttribute( 'coords', 2 ) ;
- if ( sCoords && sCoords != '0,0,0' )
- FCKXHtml._AppendAttribute( node, 'coords', sCoords ) ;
- }
-
- if ( ! node.attributes.getNamedItem( 'shape' ) )
- {
- var sShape = htmlNode.getAttribute( 'shape', 2 ) ;
- if ( sShape && sShape.length > 0 )
- FCKXHtml._AppendAttribute( node, 'shape', sShape.toLowerCase() ) ;
- }
- }
-
- return node ;
- },
-
- body : function( node, htmlNode )
- {
- node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
- // Remove spellchecker attributes added for Firefox when converting to HTML code (Bug #1351).
- node.removeAttribute( 'spellcheck' ) ;
- return node ;
- },
-
- // IE loses contents of iframes, and Gecko does give it back HtmlEncoded
- // Note: Opera does lose the content and doesn't provide it in the innerHTML string
- iframe : function( node, htmlNode )
- {
- var sHtml = htmlNode.innerHTML ;
-
- // Gecko does give back the encoded html
- if ( FCKBrowserInfo.IsGecko )
- sHtml = FCKTools.HTMLDecode( sHtml );
-
- // Remove the saved urls here as the data won't be processed as nodes
- sHtml = sHtml.replace( /\s_fcksavedurl="[^"]*"/g, '' ) ;
-
- node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( sHtml ) ) ) ;
-
- return node ;
- },
-
- img : function( node, htmlNode )
- {
- // The "ALT" attribute is required in XHTML.
- if ( ! node.attributes.getNamedItem( 'alt' ) )
- FCKXHtml._AppendAttribute( node, 'alt', '' ) ;
-
- var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
- if ( sSavedUrl != null )
- FCKXHtml._AppendAttribute( node, 'src', sSavedUrl ) ;
-
- // Bug #768 : If the width and height are defined inline CSS,
- // don't define it again in the HTML attributes.
- if ( htmlNode.style.width )
- node.removeAttribute( 'width' ) ;
- if ( htmlNode.style.height )
- node.removeAttribute( 'height' ) ;
-
- return node ;
- },
-
- // Fix orphaned <li> nodes (Bug #503).
- li : function( node, htmlNode, targetNode )
- {
- // If the XML parent node is already a <ul> or <ol>, then add the <li> as usual.
- if ( targetNode.nodeName.IEquals( ['ul', 'ol'] ) )
- return FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
-
- var newTarget = FCKXHtml.XML.createElement( 'ul' ) ;
-
- // Reset the _fckxhtmljob so the HTML node is processed again.
- htmlNode._fckxhtmljob = null ;
-
- // Loop through all sibling LIs, adding them to the <ul>.
- do
- {
- FCKXHtml._AppendNode( newTarget, htmlNode ) ;
-
- // Look for the next element following this <li>.
- do
- {
- htmlNode = FCKDomTools.GetNextSibling( htmlNode ) ;
-
- } while ( htmlNode && htmlNode.nodeType == 3 && htmlNode.nodeValue.Trim().length == 0 )
-
- } while ( htmlNode && htmlNode.nodeName.toLowerCase() == 'li' )
-
- return newTarget ;
- },
-
- // Fix nested <ul> and <ol>.
- ol : function( node, htmlNode, targetNode )
- {
- if ( htmlNode.innerHTML.Trim().length == 0 )
- return false ;
-
- var ePSibling = targetNode.lastChild ;
-
- if ( ePSibling && ePSibling.nodeType == 3 )
- ePSibling = ePSibling.previousSibling ;
-
- if ( ePSibling && ePSibling.nodeName.toUpperCase() == 'LI' )
- {
- htmlNode._fckxhtmljob = null ;
- FCKXHtml._AppendNode( ePSibling, htmlNode ) ;
- return false ;
- }
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
-
- return node ;
- },
-
- pre : function ( node, htmlNode )
- {
- var firstChild = htmlNode.firstChild ;
-
- if ( firstChild && firstChild.nodeType == 3 )
- node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( '\r\n' ) ) ) ;
-
- FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
-
- return node ;
- },
-
- script : function( node, htmlNode )
- {
- // The "TYPE" attribute is required in XHTML.
- if ( ! node.attributes.getNamedItem( 'type' ) )
- FCKXHtml._AppendAttribute( node, 'type', 'text/javascript' ) ;
-
- node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( htmlNode.text ) ) ) ;
-
- return node ;
- },
-
- span : function( node, htmlNode )
- {
- // Firefox may create empty tags when deleting the selection in some special cases (SF-BUG 1084404).
- if ( htmlNode.innerHTML.length == 0 )
- return false ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
-
- return node ;
- },
-
- style : function( node, htmlNode )
- {
- // The "TYPE" attribute is required in XHTML.
- if ( ! node.attributes.getNamedItem( 'type' ) )
- FCKXHtml._AppendAttribute( node, 'type', 'text/css' ) ;
-
- var cssText = htmlNode.innerHTML ;
- if ( FCKBrowserInfo.IsIE ) // Bug #403 : IE always appends a \r\n to the beginning of StyleNode.innerHTML
- cssText = cssText.replace( /^(\r\n|\n|\r)/, '' ) ;
-
- node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( cssText ) ) ) ;
-
- return node ;
- },
-
- title : function( node, htmlNode )
- {
- node.appendChild( FCKXHtml.XML.createTextNode( FCK.EditorDocument.title ) ) ;
-
- return node ;
- }
-} ;
-
-FCKXHtml.TagProcessors.ul = FCKXHtml.TagProcessors.ol ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_gecko.js
deleted file mode 100644
index 76c993873..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_gecko.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKXHtml object, responsible for the XHTML operations.
- * Gecko specific.
- */
-
-FCKXHtml._GetMainXmlString = function()
-{
- return ( new XMLSerializer() ).serializeToString( this.MainNode ) ;
-}
-
-FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node )
-{
- var aAttributes = htmlNode.attributes ;
-
- for ( var n = 0 ; n < aAttributes.length ; n++ )
- {
- var oAttribute = aAttributes[n] ;
-
- if ( oAttribute.specified )
- {
- var sAttName = oAttribute.nodeName.toLowerCase() ;
- var sAttValue ;
-
- // Ignore any attribute starting with "_fck".
- if ( sAttName.StartsWith( '_fck' ) )
- continue ;
- // There is a bug in Mozilla that returns '_moz_xxx' attributes as specified.
- else if ( sAttName.indexOf( '_moz' ) == 0 )
- continue ;
- // There are one cases (on Gecko) when the oAttribute.nodeValue must be used:
- // - for the "class" attribute
- else if ( sAttName == 'class' )
- {
- sAttValue = oAttribute.nodeValue.replace( FCKRegexLib.FCK_Class, '' ) ;
- if ( sAttValue.length == 0 )
- continue ;
- }
- // XHTML doens't support attribute minimization like "CHECKED". It must be transformed to checked="checked".
- else if ( oAttribute.nodeValue === true )
- sAttValue = sAttName ;
- else
- sAttValue = htmlNode.getAttribute( sAttName, 2 ) ; // We must use getAttribute to get it exactly as it is defined.
-
- this._AppendAttribute( node, sAttName, sAttValue ) ;
- }
- }
-}
-
-if ( FCKBrowserInfo.IsOpera )
-{
- // Opera moves the <FCK:meta> element outside head (#1166).
-
- // Save a reference to the XML <head> node, so we can use it for
- // orphan <meta>s.
- FCKXHtml.TagProcessors['head'] = function( node, htmlNode )
- {
- FCKXHtml.XML._HeadElement = node ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
-
- return node ;
- }
-
- // Check whether a <meta> element is outside <head>, and move it to the
- // proper place.
- FCKXHtml.TagProcessors['meta'] = function( node, htmlNode, xmlNode )
- {
- if ( htmlNode.parentNode.nodeName.toLowerCase() != 'head' )
- {
- var headElement = FCKXHtml.XML._HeadElement ;
-
- if ( headElement && xmlNode != headElement )
- {
- delete htmlNode._fckxhtmljob ;
- FCKXHtml._AppendNode( headElement, htmlNode ) ;
- return null ;
- }
- }
-
- return node ;
- }
-}
-
-if ( FCKBrowserInfo.IsGecko )
-{
- // #2162, some Firefox extensions might add references to internal links
- FCKXHtml.TagProcessors['link'] = function( node, htmlNode )
- {
- if ( htmlNode.href.substr(0, 9).toLowerCase() == 'chrome://' )
- return false ;
-
- return node ;
- }
-
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_ie.js
deleted file mode 100644
index 94f2ef975..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtml_ie.js
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Defines the FCKXHtml object, responsible for the XHTML operations.
- * IE specific.
- */
-
-FCKXHtml._GetMainXmlString = function()
-{
- return this.MainNode.xml ;
-}
-
-FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node, nodeName )
-{
- var aAttributes = htmlNode.attributes,
- bHasStyle ;
-
- for ( var n = 0 ; n < aAttributes.length ; n++ )
- {
- var oAttribute = aAttributes[n] ;
-
- if ( oAttribute.specified )
- {
- var sAttName = oAttribute.nodeName.toLowerCase() ;
- var sAttValue ;
-
- // Ignore any attribute starting with "_fck".
- if ( sAttName.StartsWith( '_fck' ) )
- continue ;
- // The following must be done because of a bug on IE regarding the style
- // attribute. It returns "null" for the nodeValue.
- else if ( sAttName == 'style' )
- {
- // Just mark it to do it later in this function.
- bHasStyle = true ;
- continue ;
- }
- // There are two cases when the oAttribute.nodeValue must be used:
- // - for the "class" attribute
- // - for events attributes (on IE only).
- else if ( sAttName == 'class' )
- {
- sAttValue = oAttribute.nodeValue.replace( FCKRegexLib.FCK_Class, '' ) ;
- if ( sAttValue.length == 0 )
- continue ;
- }
- else if ( sAttName.indexOf('on') == 0 )
- sAttValue = oAttribute.nodeValue ;
- else if ( nodeName == 'body' && sAttName == 'contenteditable' )
- continue ;
- // XHTML doens't support attribute minimization like "CHECKED". It must be transformed to checked="checked".
- else if ( oAttribute.nodeValue === true )
- sAttValue = sAttName ;
- else
- {
- // We must use getAttribute to get it exactly as it is defined.
- // There are some rare cases that IE throws an error here, so we must try/catch.
- try
- {
- sAttValue = htmlNode.getAttribute( sAttName, 2 ) ;
- }
- catch (e) {}
- }
- this._AppendAttribute( node, sAttName, sAttValue || oAttribute.nodeValue ) ;
- }
- }
-
- // IE loses the style attribute in JavaScript-created elements tags. (#2390)
- if ( bHasStyle || htmlNode.style.cssText.length > 0 )
- {
- var data = FCKTools.ProtectFormStyles( htmlNode ) ;
- var sStyleValue = htmlNode.style.cssText.replace( FCKRegexLib.StyleProperties, FCKTools.ToLowerCase ) ;
- FCKTools.RestoreFormStyles( htmlNode, data ) ;
- this._AppendAttribute( node, 'style', sStyleValue ) ;
- }
-}
-
-// On very rare cases, IE is loosing the "align" attribute for DIV. (right align and apply bulleted list)
-FCKXHtml.TagProcessors['div'] = function( node, htmlNode )
-{
- if ( htmlNode.align.length > 0 )
- FCKXHtml._AppendAttribute( node, 'align', htmlNode.align ) ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
-
- return node ;
-}
-
-// IE automatically changes <FONT> tags to <FONT size=+0>.
-FCKXHtml.TagProcessors['font'] = function( node, htmlNode )
-{
- if ( node.attributes.length == 0 )
- node = FCKXHtml.XML.createDocumentFragment() ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
-
- return node ;
-}
-
-FCKXHtml.TagProcessors['form'] = function( node, htmlNode )
-{
- if ( htmlNode.acceptCharset && htmlNode.acceptCharset.length > 0 && htmlNode.acceptCharset != 'UNKNOWN' )
- FCKXHtml._AppendAttribute( node, 'accept-charset', htmlNode.acceptCharset ) ;
-
- // IE has a bug and htmlNode.attributes['name'].specified=false if there is
- // no element with id="name" inside the form (#360 and SF-BUG-1155726).
- var nameAtt = htmlNode.attributes['name'] ;
-
- if ( nameAtt && nameAtt.value.length > 0 )
- FCKXHtml._AppendAttribute( node, 'name', nameAtt.value ) ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
-
- return node ;
-}
-
-// IE doens't see the value attribute as an attribute for the <INPUT> tag.
-FCKXHtml.TagProcessors['input'] = function( node, htmlNode )
-{
- if ( htmlNode.name )
- FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
-
- if ( htmlNode.value && !node.attributes.getNamedItem( 'value' ) )
- FCKXHtml._AppendAttribute( node, 'value', htmlNode.value ) ;
-
- if ( !node.attributes.getNamedItem( 'type' ) )
- FCKXHtml._AppendAttribute( node, 'type', 'text' ) ;
-
- return node ;
-}
-
-FCKXHtml.TagProcessors['label'] = function( node, htmlNode )
-{
- if ( htmlNode.htmlFor.length > 0 )
- FCKXHtml._AppendAttribute( node, 'for', htmlNode.htmlFor ) ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
-
- return node ;
-}
-
-// Fix behavior for IE, it doesn't read back the .name on newly created maps
-FCKXHtml.TagProcessors['map'] = function( node, htmlNode )
-{
- if ( ! node.attributes.getNamedItem( 'name' ) )
- {
- var name = htmlNode.name ;
- if ( name )
- FCKXHtml._AppendAttribute( node, 'name', name ) ;
- }
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode, true ) ;
-
- return node ;
-}
-
-FCKXHtml.TagProcessors['meta'] = function( node, htmlNode )
-{
- var oHttpEquiv = node.attributes.getNamedItem( 'http-equiv' ) ;
-
- if ( oHttpEquiv == null || oHttpEquiv.value.length == 0 )
- {
- // Get the http-equiv value from the outerHTML.
- var sHttpEquiv = htmlNode.outerHTML.match( FCKRegexLib.MetaHttpEquiv ) ;
-
- if ( sHttpEquiv )
- {
- sHttpEquiv = sHttpEquiv[1] ;
- FCKXHtml._AppendAttribute( node, 'http-equiv', sHttpEquiv ) ;
- }
- }
-
- return node ;
-}
-
-// IE ignores the "SELECTED" attribute so we must add it manually.
-FCKXHtml.TagProcessors['option'] = function( node, htmlNode )
-{
- if ( htmlNode.selected && !node.attributes.getNamedItem( 'selected' ) )
- FCKXHtml._AppendAttribute( node, 'selected', 'selected' ) ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
-
- return node ;
-}
-
-// IE doens't hold the name attribute as an attribute for the <TEXTAREA> and <SELECT> tags.
-FCKXHtml.TagProcessors['textarea'] = FCKXHtml.TagProcessors['select'] = function( node, htmlNode )
-{
- if ( htmlNode.name )
- FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
-
- node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
-
- return node ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtmlentities.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtmlentities.js
deleted file mode 100644
index 2ab70788b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/_source/internals/fckxhtmlentities.js
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file define the HTML entities handled by the editor.
- */
-
-var FCKXHtmlEntities = new Object() ;
-
-FCKXHtmlEntities.Initialize = function()
-{
- if ( FCKXHtmlEntities.Entities )
- return ;
-
- var sChars = '' ;
- var oEntities, e ;
-
- if ( FCKConfig.ProcessHTMLEntities )
- {
- FCKXHtmlEntities.Entities = {
- // Latin-1 Entities
- ' ':'nbsp',
- '¡':'iexcl',
- '¢':'cent',
- '£':'pound',
- '¤':'curren',
- 'Â¥':'yen',
- '¦':'brvbar',
- '§':'sect',
- '¨':'uml',
- '©':'copy',
- 'ª':'ordf',
- '«':'laquo',
- '¬':'not',
- '­':'shy',
- '®':'reg',
- '¯':'macr',
- '°':'deg',
- '±':'plusmn',
- '²':'sup2',
- '³':'sup3',
- '´':'acute',
- 'µ':'micro',
- '¶':'para',
- '·':'middot',
- '¸':'cedil',
- '¹':'sup1',
- 'º':'ordm',
- '»':'raquo',
- '¼':'frac14',
- '½':'frac12',
- '¾':'frac34',
- '¿':'iquest',
- '×':'times',
- '÷':'divide',
-
- // Symbols
-
- 'Æ’':'fnof',
- '•':'bull',
- '…':'hellip',
- '′':'prime',
- '″':'Prime',
- '‾':'oline',
- 'â„':'frasl',
- '℘':'weierp',
- 'â„‘':'image',
- 'ℜ':'real',
- 'â„¢':'trade',
- 'ℵ':'alefsym',
- 'â†':'larr',
- '↑':'uarr',
- '→':'rarr',
- '↓':'darr',
- '↔':'harr',
- '↵':'crarr',
- 'â‡':'lArr',
- '⇑':'uArr',
- '⇒':'rArr',
- '⇓':'dArr',
- '⇔':'hArr',
- '∀':'forall',
- '∂':'part',
- '∃':'exist',
- '∅':'empty',
- '∇':'nabla',
- '∈':'isin',
- '∉':'notin',
- '∋':'ni',
- 'âˆ':'prod',
- '∑':'sum',
- '−':'minus',
- '∗':'lowast',
- '√':'radic',
- 'âˆ':'prop',
- '∞':'infin',
- '∠':'ang',
- '∧':'and',
- '∨':'or',
- '∩':'cap',
- '∪':'cup',
- '∫':'int',
- '∴':'there4',
- '∼':'sim',
- '≅':'cong',
- '≈':'asymp',
- '≠':'ne',
- '≡':'equiv',
- '≤':'le',
- '≥':'ge',
- '⊂':'sub',
- '⊃':'sup',
- '⊄':'nsub',
- '⊆':'sube',
- '⊇':'supe',
- '⊕':'oplus',
- '⊗':'otimes',
- '⊥':'perp',
- 'â‹…':'sdot',
- '\u2308':'lceil',
- '\u2309':'rceil',
- '\u230a':'lfloor',
- '\u230b':'rfloor',
- '\u2329':'lang',
- '\u232a':'rang',
- 'â—Š':'loz',
- 'â™ ':'spades',
- '♣':'clubs',
- '♥':'hearts',
- '♦':'diams',
-
- // Other Special Characters
-
- '"':'quot',
- // '&':'amp', // This entity is automatically handled by the XHTML parser.
- // '<':'lt', // This entity is automatically handled by the XHTML parser.
- '>':'gt', // Opera and Safari don't encode it in their implementation
- 'ˆ':'circ',
- '˜':'tilde',
- ' ':'ensp',
- ' ':'emsp',
- ' ':'thinsp',
- '‌':'zwnj',
- 'â€':'zwj',
- '‎':'lrm',
- 'â€':'rlm',
- '–':'ndash',
- '—':'mdash',
- '‘':'lsquo',
- '’':'rsquo',
- '‚':'sbquo',
- '“':'ldquo',
- 'â€':'rdquo',
- '„':'bdquo',
- '†':'dagger',
- '‡':'Dagger',
- '‰':'permil',
- '‹':'lsaquo',
- '›':'rsaquo',
- '€':'euro'
- } ;
-
- // Process Base Entities.
- for ( e in FCKXHtmlEntities.Entities )
- sChars += e ;
-
- // Include Latin Letters Entities.
- if ( FCKConfig.IncludeLatinEntities )
- {
- oEntities = {
- 'À':'Agrave',
- 'Ã':'Aacute',
- 'Â':'Acirc',
- 'Ã':'Atilde',
- 'Ä':'Auml',
- 'Ã…':'Aring',
- 'Æ':'AElig',
- 'Ç':'Ccedil',
- 'È':'Egrave',
- 'É':'Eacute',
- 'Ê':'Ecirc',
- 'Ë':'Euml',
- 'Ì':'Igrave',
- 'Ã':'Iacute',
- 'ÃŽ':'Icirc',
- 'Ã':'Iuml',
- 'Ã':'ETH',
- 'Ñ':'Ntilde',
- 'Ã’':'Ograve',
- 'Ó':'Oacute',
- 'Ô':'Ocirc',
- 'Õ':'Otilde',
- 'Ö':'Ouml',
- 'Ø':'Oslash',
- 'Ù':'Ugrave',
- 'Ú':'Uacute',
- 'Û':'Ucirc',
- 'Ü':'Uuml',
- 'Ã':'Yacute',
- 'Þ':'THORN',
- 'ß':'szlig',
- 'à':'agrave',
- 'á':'aacute',
- 'â':'acirc',
- 'ã':'atilde',
- 'ä':'auml',
- 'Ã¥':'aring',
- 'æ':'aelig',
- 'ç':'ccedil',
- 'è':'egrave',
- 'é':'eacute',
- 'ê':'ecirc',
- 'ë':'euml',
- 'ì':'igrave',
- 'í':'iacute',
- 'î':'icirc',
- 'ï':'iuml',
- 'ð':'eth',
- 'ñ':'ntilde',
- 'ò':'ograve',
- 'ó':'oacute',
- 'ô':'ocirc',
- 'õ':'otilde',
- 'ö':'ouml',
- 'ø':'oslash',
- 'ù':'ugrave',
- 'ú':'uacute',
- 'û':'ucirc',
- 'ü':'uuml',
- 'ý':'yacute',
- 'þ':'thorn',
- 'ÿ':'yuml',
- 'Å’':'OElig',
- 'Å“':'oelig',
- 'Å ':'Scaron',
- 'Å¡':'scaron',
- 'Ÿ':'Yuml'
- } ;
-
- for ( e in oEntities )
- {
- FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
- sChars += e ;
- }
-
- oEntities = null ;
- }
-
- // Include Greek Letters Entities.
- if ( FCKConfig.IncludeGreekEntities )
- {
- oEntities = {
- 'Α':'Alpha',
- 'Î’':'Beta',
- 'Γ':'Gamma',
- 'Δ':'Delta',
- 'Ε':'Epsilon',
- 'Ζ':'Zeta',
- 'Η':'Eta',
- 'Θ':'Theta',
- 'Ι':'Iota',
- 'Κ':'Kappa',
- 'Λ':'Lambda',
- 'Μ':'Mu',
- 'Î':'Nu',
- 'Ξ':'Xi',
- 'Ο':'Omicron',
- 'Π':'Pi',
- 'Ρ':'Rho',
- 'Σ':'Sigma',
- 'Τ':'Tau',
- 'Î¥':'Upsilon',
- 'Φ':'Phi',
- 'Χ':'Chi',
- 'Ψ':'Psi',
- 'Ω':'Omega',
- 'α':'alpha',
- 'β':'beta',
- 'γ':'gamma',
- 'δ':'delta',
- 'ε':'epsilon',
- 'ζ':'zeta',
- 'η':'eta',
- 'θ':'theta',
- 'ι':'iota',
- 'κ':'kappa',
- 'λ':'lambda',
- 'μ':'mu',
- 'ν':'nu',
- 'ξ':'xi',
- 'ο':'omicron',
- 'Ï€':'pi',
- 'Ï':'rho',
- 'Ï‚':'sigmaf',
- 'σ':'sigma',
- 'Ï„':'tau',
- 'Ï…':'upsilon',
- 'φ':'phi',
- 'χ':'chi',
- 'ψ':'psi',
- 'ω':'omega',
- '\u03d1':'thetasym',
- '\u03d2':'upsih',
- '\u03d6':'piv'
- } ;
-
- for ( e in oEntities )
- {
- FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
- sChars += e ;
- }
-
- oEntities = null ;
- }
- }
- else
- {
- FCKXHtmlEntities.Entities = {
- '>':'gt' // Opera and Safari don't encode it in their implementation
- } ;
- sChars = '>';
-
- // Even if we are not processing the entities, we must render the &nbsp;
- // correctly. As we don't want HTML entities, let's use its numeric
- // representation (&#160).
- sChars += ' ' ;
- }
-
- // Create the Regex used to find entities in the text.
- var sRegexPattern = '[' + sChars + ']' ;
-
- if ( FCKConfig.ProcessNumericEntities )
- sRegexPattern = '[^ -~]|' + sRegexPattern ;
-
- var sAdditional = FCKConfig.AdditionalNumericEntities ;
-
- if ( sAdditional && sAdditional.length > 0 )
- sRegexPattern += '|' + FCKConfig.AdditionalNumericEntities ;
-
- FCKXHtmlEntities.EntitiesRegex = new RegExp( sRegexPattern, 'g' ) ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/disablehandles.htc b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/disablehandles.htc
deleted file mode 100644
index 8dfb661de..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/disablehandles.htc
+++ /dev/null
@@ -1,15 +0,0 @@
-<public:component lightweight="true">
-
-<script language="javascript">
-
-function CancelEvent()
-{
- return false ;
-}
-
-this.onresizestart = CancelEvent ;
-this.onbeforeeditfocus = CancelEvent ;
-
-</script>
-
-</public:component>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/showtableborders.htc b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/showtableborders.htc
deleted file mode 100644
index 77418b9ec..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/behaviors/showtableborders.htc
+++ /dev/null
@@ -1,36 +0,0 @@
-<public:component lightweight="true">
-
-<public:attach event="oncontentready" onevent="ShowBorders()" />
-<public:attach event="onpropertychange" onevent="OnPropertyChange()" />
-
-<script language="javascript">
-
-var oClassRegex = /\s*FCK__ShowTableBorders/ ;
-
-function ShowBorders()
-{
- if ( this.border == 0 )
- {
- if ( !oClassRegex.test( this.className ) )
- this.className += ' FCK__ShowTableBorders' ;
- }
- else
- {
- if ( oClassRegex.test( this.className ) )
- {
- this.className = this.className.replace( oClassRegex, '' ) ;
- if ( this.className.length == 0 )
- this.removeAttribute( 'className', 0 ) ;
- }
- }
-}
-
-function OnPropertyChange()
-{
- if ( event.propertyName == 'border' || event.propertyName == 'className' )
- ShowBorders.call(this) ;
-}
-
-</script>
-
-</public:component>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_editorarea.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_editorarea.css
deleted file mode 100644
index 8a328bb7f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_editorarea.css
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the default CSS file used by the editor area. It defines the
- * initial font of the editor and background color.
- *
- * A user can configure the editor to use another CSS file. Just change
- * the value of the FCKConfig.EditorAreaCSS key in the configuration
- * file.
- */
-
-/**
- * The "body" styles should match your editor web site, mainly regarding
- * background color and font family and size.
- */
-
-body
-{
- background-color: #ffffff;
- padding: 5px 5px 5px 5px;
- margin: 0px;
-}
-
-body, td
-{
- font-family: Arial, Verdana, sans-serif;
- font-size: 12px;
-}
-
-a[href]
-{
- color: -moz-hyperlinktext !important; /* For Firefox... mark as important, otherwise it becomes black */
- text-decoration: -moz-anchor-decoration; /* For Firefox 3, otherwise no underline will be used */
-}
-
-/**
- * Just uncomment the following block if you want to avoid spaces between
- * paragraphs. Remember to apply the same style in your output front end page.
- */
-
-/*
-p, ul, li
-{
- margin-top: 0px;
- margin-bottom: 0px;
-}
-*/
-
-/**
- * Uncomment the following block, or only selected lines if appropriate,
- * if you have some style items that would break the styles combo box.
- * You can also write other CSS overrides inside the style block below
- * as needed and they will be applied to inside the style combo only.
- */
-
-/*
-.SC_Item *, .SC_ItemSelected *
-{
- margin: 0px !important;
- padding: 0px !important;
- text-indent: 0px !important;
- clip: auto !important;
- position: static !important;
-}
-*/
-
-/**
- * The following are some sample styles used in the "Styles" toolbar command.
- * You should instead remove them, and include the styles used by the site
- * you are using the editor in.
- */
-
-.Bold
-{
- font-weight: bold;
-}
-
-.Title
-{
- font-weight: bold;
- font-size: 18px;
- color: #cc3300;
-}
-
-.Code
-{
- border: #8b4513 1px solid;
- padding-right: 5px;
- padding-left: 5px;
- color: #000066;
- font-family: 'Courier New' , Monospace;
- background-color: #ff9933;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_internal.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_internal.css
deleted file mode 100644
index 725272f77..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_internal.css
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This CSS Style Sheet defines rules used by the editor for its internal use.
- */
-
-/* #########
- * WARNING
- * #########
- * When changing this file, the minified version of it must be updated in the
- * fckeditor.html file (see FCK_InternalCSS).
- */
-
-/* Fix to allow putting the caret at the end of the content in Firefox if
- clicking below the content. */
-html
-{
- min-height: 100%;
-}
-
-table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
-{
- border: #d3d3d3 1px solid;
-}
-
-form
-{
- border: 1px dotted #FF0000;
- padding: 2px;
-}
-
-.FCK__Flash
-{
- border: #a9a9a9 1px solid;
- background-position: center center;
- background-image: url(images/fck_flashlogo.gif);
- background-repeat: no-repeat;
- width: 80px;
- height: 80px;
-}
-
-.FCK__UnknownObject
-{
- border: #a9a9a9 1px solid;
- background-position: center center;
- background-image: url(images/fck_plugin.gif);
- background-repeat: no-repeat;
- width: 80px;
- height: 80px;
-}
-
-/* Empty anchors images */
-.FCK__Anchor
-{
- border: 1px dotted #00F;
- background-position: center center;
- background-image: url(images/fck_anchor.gif);
- background-repeat: no-repeat;
- width: 16px;
- height: 15px;
- vertical-align: middle;
-}
-
-/* Anchors with content */
-.FCK__AnchorC
-{
- border: 1px dotted #00F;
- background-position: 1px center;
- background-image: url(images/fck_anchor.gif);
- background-repeat: no-repeat;
- padding-left: 18px;
-}
-
-/* Any anchor for non-IE, if we combine it with the previous rule IE ignores all. */
-a[name]
-{
- border: 1px dotted #00F;
- background-position: 0 center;
- background-image: url(images/fck_anchor.gif);
- background-repeat: no-repeat;
- padding-left: 18px;
-}
-
-.FCK__PageBreak
-{
- background-position: center center;
- background-image: url(images/fck_pagebreak.gif);
- background-repeat: no-repeat;
- clear: both;
- display: block;
- float: none;
- width: 100%;
- border-top: #999999 1px dotted;
- border-bottom: #999999 1px dotted;
- border-right: 0px;
- border-left: 0px;
- height: 5px;
-}
-
-/* Hidden fields */
-.FCK__InputHidden
-{
- width: 19px;
- height: 18px;
- background-image: url(images/fck_hiddenfield.gif);
- background-repeat: no-repeat;
- vertical-align: text-bottom;
- background-position: center center;
-}
-
-.FCK__ShowBlocks p,
-.FCK__ShowBlocks div,
-.FCK__ShowBlocks pre,
-.FCK__ShowBlocks address,
-.FCK__ShowBlocks blockquote,
-.FCK__ShowBlocks h1,
-.FCK__ShowBlocks h2,
-.FCK__ShowBlocks h3,
-.FCK__ShowBlocks h4,
-.FCK__ShowBlocks h5,
-.FCK__ShowBlocks h6
-{
- background-repeat: no-repeat;
- border: 1px dotted gray;
- padding-top: 8px;
- padding-left: 8px;
-}
-
-.FCK__ShowBlocks p
-{
- background-image: url(images/block_p.png);
-}
-
-.FCK__ShowBlocks div
-{
- background-image: url(images/block_div.png);
-}
-
-.FCK__ShowBlocks pre
-{
- background-image: url(images/block_pre.png);
-}
-
-.FCK__ShowBlocks address
-{
- background-image: url(images/block_address.png);
-}
-
-.FCK__ShowBlocks blockquote
-{
- background-image: url(images/block_blockquote.png);
-}
-
-.FCK__ShowBlocks h1
-{
- background-image: url(images/block_h1.png);
-}
-
-.FCK__ShowBlocks h2
-{
- background-image: url(images/block_h2.png);
-}
-
-.FCK__ShowBlocks h3
-{
- background-image: url(images/block_h3.png);
-}
-
-.FCK__ShowBlocks h4
-{
- background-image: url(images/block_h4.png);
-}
-
-.FCK__ShowBlocks h5
-{
- background-image: url(images/block_h5.png);
-}
-
-.FCK__ShowBlocks h6
-{
- background-image: url(images/block_h6.png);
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_showtableborders_gecko.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_showtableborders_gecko.css
deleted file mode 100644
index 87ab979fa..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/fck_showtableborders_gecko.css
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This CSS Style Sheet defines the rules to show table borders on Gecko.
- */
-
-/* #########
- * WARNING
- * #########
- * When changing this file, the minified version of it must be updated in the
- * fckeditor.html file (see FCK_ShowTableBordersCSS).
- */
-
-/* For tables with the "border" attribute set to "0" */
-table[border="0"],
-table[border="0"] > tr > td, table[border="0"] > tr > th,
-table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th,
-table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th,
-table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
-{
- border: #d3d3d3 1px dotted ;
-}
-
-/* For tables with no "border" attribute set */
-table:not([border]),
-table:not([border]) > tr > td, table:not([border]) > tr > th,
-table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
-table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
-table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
-{
- border: #d3d3d3 1px dotted ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_address.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_address.png
deleted file mode 100644
index 8bbae6e5a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_address.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_blockquote.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_blockquote.png
deleted file mode 100644
index cf065ba6b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_blockquote.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_div.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_div.png
deleted file mode 100644
index a2806b140..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_div.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h1.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h1.png
deleted file mode 100644
index d43fbdbc0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h1.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h2.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h2.png
deleted file mode 100644
index 27b547554..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h2.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h3.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h3.png
deleted file mode 100644
index 3c3034faf..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h3.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h4.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h4.png
deleted file mode 100644
index ab3f64de6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h4.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h5.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h5.png
deleted file mode 100644
index 93477d083..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h5.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h6.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h6.png
deleted file mode 100644
index 11ea1c2ba..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_h6.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_p.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_p.png
deleted file mode 100644
index d055c514a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_p.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_pre.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_pre.png
deleted file mode 100644
index be8ad26a7..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/block_pre.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_anchor.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_anchor.gif
deleted file mode 100644
index 5aa797b22..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_anchor.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_flashlogo.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_flashlogo.gif
deleted file mode 100644
index 141aac4ed..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_flashlogo.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_hiddenfield.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_hiddenfield.gif
deleted file mode 100644
index 953f643b6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_hiddenfield.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_pagebreak.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_pagebreak.gif
deleted file mode 100644
index 8d1cffd64..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_pagebreak.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_plugin.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_plugin.gif
deleted file mode 100644
index 7d5846345..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/css/images/fck_plugin.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.css
deleted file mode 100644
index 4e06834ef..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.css
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the CSS file used for interface details in some dialog
- * windows.
- */
-
-/* #########
- * WARNING
- * #########
- * When changing this file, the minified version of it must be updated in the
- * fck_dialog_common.js file (see GetCommonDialogCss).
- */
-
-.ImagePreviewArea
-{
- border: #000000 1px solid;
- overflow: auto;
- width: 100%;
- height: 170px;
- background-color: #ffffff;
-}
-
-.FlashPreviewArea
-{
- border: #000000 1px solid;
- padding: 5px;
- overflow: auto;
- width: 100%;
- height: 170px;
- background-color: #ffffff;
-}
-
-.BtnReset
-{
- float: left;
- background-position: center center;
- background-image: url(images/reset.gif);
- width: 16px;
- height: 16px;
- background-repeat: no-repeat;
- border: 1px none;
- font-size: 1px ;
-}
-
-.BtnLocked, .BtnUnlocked
-{
- float: left;
- background-position: center center;
- background-image: url(images/locked.gif);
- width: 16px;
- height: 16px;
- background-repeat: no-repeat;
- border: none 1px;
- font-size: 1px ;
-}
-
-.BtnUnlocked
-{
- background-image: url(images/unlocked.gif);
-}
-
-.BtnOver
-{
- border: outset 1px;
- cursor: pointer;
- cursor: hand;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.js
deleted file mode 100644
index 5536a833e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/fck_dialog_common.js
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Useful functions used by almost all dialog window pages.
- * Dialogs should link to this file as the very first script on the page.
- */
-
-// Automatically detect the correct document.domain (#123).
-(function()
-{
- var d = document.domain ;
-
- while ( true )
- {
- // Test if we can access a parent property.
- try
- {
- var test = window.parent.document.domain ;
- break ;
- }
- catch( e ) {}
-
- // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
- d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
- if ( d.length == 0 )
- break ; // It was not able to detect the domain.
-
- try
- {
- document.domain = d ;
- }
- catch (e)
- {
- break ;
- }
- }
-})() ;
-
-// Attention: FCKConfig must be available in the page.
-function GetCommonDialogCss( prefix )
-{
- // CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
- return FCKConfig.BasePath + 'dialog/common/' + '|.ImagePreviewArea{border:#000 1px solid;overflow:auto;width:100%;height:170px;background-color:#fff}.FlashPreviewArea{border:#000 1px solid;padding:5px;overflow:auto;width:100%;height:170px;background-color:#fff}.BtnReset{float:left;background-position:center center;background-image:url(images/reset.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.BtnLocked,.BtnUnlocked{float:left;background-position:center center;background-image:url(images/locked.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.BtnUnlocked{background-image:url(images/unlocked.gif)}.BtnOver{border:outset 1px;cursor:pointer;cursor:hand}' ;
-}
-
-// Gets a element by its Id. Used for shorter coding.
-function GetE( elementId )
-{
- return document.getElementById( elementId ) ;
-}
-
-function ShowE( element, isVisible )
-{
- if ( typeof( element ) == 'string' )
- element = GetE( element ) ;
- element.style.display = isVisible ? '' : 'none' ;
-}
-
-function SetAttribute( element, attName, attValue )
-{
- if ( attValue == null || attValue.length == 0 )
- element.removeAttribute( attName, 0 ) ; // 0 : Case Insensitive
- else
- element.setAttribute( attName, attValue, 0 ) ; // 0 : Case Insensitive
-}
-
-function GetAttribute( element, attName, valueIfNull )
-{
- var oAtt = element.attributes[attName] ;
-
- if ( oAtt == null || !oAtt.specified )
- return valueIfNull ? valueIfNull : '' ;
-
- var oValue = element.getAttribute( attName, 2 ) ;
-
- if ( oValue == null )
- oValue = oAtt.nodeValue ;
-
- return ( oValue == null ? valueIfNull : oValue ) ;
-}
-
-function SelectField( elementId )
-{
- var element = GetE( elementId ) ;
- element.focus() ;
-
- // element.select may not be available for some fields (like <select>).
- if ( element.select )
- element.select() ;
-}
-
-// Functions used by text fields to accept numbers only.
-var IsDigit = ( function()
- {
- var KeyIdentifierMap =
- {
- End : 35,
- Home : 36,
- Left : 37,
- Right : 39,
- 'U+00007F' : 46 // Delete
- } ;
-
- return function ( e )
- {
- if ( !e )
- e = event ;
-
- var iCode = ( e.keyCode || e.charCode ) ;
-
- if ( !iCode && e.keyIdentifier && ( e.keyIdentifier in KeyIdentifierMap ) )
- iCode = KeyIdentifierMap[ e.keyIdentifier ] ;
-
- return (
- ( iCode >= 48 && iCode <= 57 ) // Numbers
- || (iCode >= 35 && iCode <= 40) // Arrows, Home, End
- || iCode == 8 // Backspace
- || iCode == 46 // Delete
- || iCode == 9 // Tab
- ) ;
- }
- } )() ;
-
-String.prototype.Trim = function()
-{
- return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
-}
-
-String.prototype.StartsWith = function( value )
-{
- return ( this.substr( 0, value.length ) == value ) ;
-}
-
-String.prototype.Remove = function( start, length )
-{
- var s = '' ;
-
- if ( start > 0 )
- s = this.substring( 0, start ) ;
-
- if ( start + length < this.length )
- s += this.substring( start + length , this.length ) ;
-
- return s ;
-}
-
-String.prototype.ReplaceAll = function( searchArray, replaceArray )
-{
- var replaced = this ;
-
- for ( var i = 0 ; i < searchArray.length ; i++ )
- {
- replaced = replaced.replace( searchArray[i], replaceArray[i] ) ;
- }
-
- return replaced ;
-}
-
-function OpenFileBrowser( url, width, height )
-{
- // oEditor must be defined.
-
- var iLeft = ( oEditor.FCKConfig.ScreenWidth - width ) / 2 ;
- var iTop = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
-
- var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ;
- sOptions += ",width=" + width ;
- sOptions += ",height=" + height ;
- sOptions += ",left=" + iLeft ;
- sOptions += ",top=" + iTop ;
-
- window.open( url, 'FCKBrowseWindow', sOptions ) ;
-}
-
-/**
- Utility function to create/update an element with a name attribute in IE, so it behaves properly when moved around
- It also allows to change the name or other special attributes in an existing node
- oEditor : instance of FCKeditor where the element will be created
- oOriginal : current element being edited or null if it has to be created
- nodeName : string with the name of the element to create
- oAttributes : Hash object with the attributes that must be set at creation time in IE
- Those attributes will be set also after the element has been
- created for any other browser to avoid redudant code
-*/
-function CreateNamedElement( oEditor, oOriginal, nodeName, oAttributes )
-{
- var oNewNode ;
-
- // IE doesn't allow easily to change properties of an existing object,
- // so remove the old and force the creation of a new one.
- var oldNode = null ;
- if ( oOriginal && oEditor.FCKBrowserInfo.IsIE )
- {
- // Force the creation only if some of the special attributes have changed:
- var bChanged = false;
- for( var attName in oAttributes )
- bChanged |= ( oOriginal.getAttribute( attName, 2) != oAttributes[attName] ) ;
-
- if ( bChanged )
- {
- oldNode = oOriginal ;
- oOriginal = null ;
- }
- }
-
- // If the node existed (and it's not IE), then we just have to update its attributes
- if ( oOriginal )
- {
- oNewNode = oOriginal ;
- }
- else
- {
- // #676, IE doesn't play nice with the name or type attribute
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- var sbHTML = [] ;
- sbHTML.push( '<' + nodeName ) ;
- for( var prop in oAttributes )
- {
- sbHTML.push( ' ' + prop + '="' + oAttributes[prop] + '"' ) ;
- }
- sbHTML.push( '>' ) ;
- if ( !oEditor.FCKListsLib.EmptyElements[nodeName.toLowerCase()] )
- sbHTML.push( '</' + nodeName + '>' ) ;
-
- oNewNode = oEditor.FCK.EditorDocument.createElement( sbHTML.join('') ) ;
- // Check if we are just changing the properties of an existing node: copy its properties
- if ( oldNode )
- {
- CopyAttributes( oldNode, oNewNode, oAttributes ) ;
- oEditor.FCKDomTools.MoveChildren( oldNode, oNewNode ) ;
- oldNode.parentNode.removeChild( oldNode ) ;
- oldNode = null ;
-
- if ( oEditor.FCK.Selection.SelectionData )
- {
- // Trick to refresh the selection object and avoid error in
- // fckdialog.html Selection.EnsureSelection
- var oSel = oEditor.FCK.EditorDocument.selection ;
- oEditor.FCK.Selection.SelectionData = oSel.createRange() ; // Now oSel.type will be 'None' reflecting the real situation
- }
- }
- oNewNode = oEditor.FCK.InsertElement( oNewNode ) ;
-
- // FCK.Selection.SelectionData is broken by now since we've
- // deleted the previously selected element. So we need to reassign it.
- if ( oEditor.FCK.Selection.SelectionData )
- {
- var range = oEditor.FCK.EditorDocument.body.createControlRange() ;
- range.add( oNewNode ) ;
- oEditor.FCK.Selection.SelectionData = range ;
- }
- }
- else
- {
- oNewNode = oEditor.FCK.InsertElement( nodeName ) ;
- }
- }
-
- // Set the basic attributes
- for( var attName in oAttributes )
- oNewNode.setAttribute( attName, oAttributes[attName], 0 ) ; // 0 : Case Insensitive
-
- return oNewNode ;
-}
-
-// Copy all the attributes from one node to the other, kinda like a clone
-// But oSkipAttributes is an object with the attributes that must NOT be copied
-function CopyAttributes( oSource, oDest, oSkipAttributes )
-{
- var aAttributes = oSource.attributes ;
-
- for ( var n = 0 ; n < aAttributes.length ; n++ )
- {
- var oAttribute = aAttributes[n] ;
-
- if ( oAttribute.specified )
- {
- var sAttName = oAttribute.nodeName ;
- // We can set the type only once, so do it with the proper value, not copying it.
- if ( sAttName in oSkipAttributes )
- continue ;
-
- var sAttValue = oSource.getAttribute( sAttName, 2 ) ;
- if ( sAttValue == null )
- sAttValue = oAttribute.nodeValue ;
-
- oDest.setAttribute( sAttName, sAttValue, 0 ) ; // 0 : Case Insensitive
- }
- }
- // The style:
- if ( oSource.style.cssText !== '' )
- oDest.style.cssText = oSource.style.cssText ;
-}
-
-/**
-* Replaces a tag with another one, keeping its contents:
-* for example TD --> TH, and TH --> TD.
-* input: the original node, and the new tag name
-* http://www.w3.org/TR/DOM-Level-3-Core/core.html#Document3-renameNode
-*/
-function RenameNode( oNode , newTag )
-{
- // TODO: if the browser natively supports document.renameNode call it.
- // does any browser currently support it in order to test?
-
- // Only rename element nodes.
- if ( oNode.nodeType != 1 )
- return null ;
-
- // If it's already correct exit here.
- if ( oNode.nodeName == newTag )
- return oNode ;
-
- var oDoc = oNode.ownerDocument ;
- // Create the new node
- var newNode = oDoc.createElement( newTag ) ;
-
- // Copy all attributes
- CopyAttributes( oNode, newNode, {} ) ;
-
- // Move children to the new node
- FCKDomTools.MoveChildren( oNode, newNode ) ;
-
- // Finally replace the node and return the new one
- oNode.parentNode.replaceChild( newNode, oNode ) ;
-
- return newNode ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/locked.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/locked.gif
deleted file mode 100644
index ea0787002..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/locked.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/reset.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/reset.gif
deleted file mode 100644
index 5e9a2fcb3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/reset.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/unlocked.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/unlocked.gif
deleted file mode 100644
index 801e423c7..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/common/images/unlocked.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about.html
deleted file mode 100644
index 2d0a50c61..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * "About" dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCKLang = oEditor.FCKLang ;
-
-window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
-window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
-window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
- ShowE('divAbout', ( tabCode == 'About' ) ) ;
- ShowE('divLicense', ( tabCode == 'License' ) ) ;
- ShowE('divInfo' , ( tabCode == 'BrowserInfo' ) ) ;
-}
-
-function SendEMail()
-{
- var eMail = 'mailto:' ;
- eMail += 'fredck' ;
- eMail += '@' ;
- eMail += 'fckeditor' ;
- eMail += '.' ;
- eMail += 'net' ;
-
- window.location = eMail ;
-}
-
-window.onload = function()
-{
- // Translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- window.parent.SetAutoSize( true ) ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <div id="divAbout">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" style="height: 100%">
- <tr>
- <td colspan="2">
- <img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left" />
- <table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
- <tr>
- <td align="center" nowrap="nowrap" style="border-right: #000000 1px solid; border-top: #000000 1px solid;
- border-left: #000000 1px solid; border-bottom: #000000 1px solid">
- <span fcklang="DlgAboutVersion">version</span>
- <br />
- <b>2.6.4</b><br />
- Build 21629</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr style="height: 100%">
- <td align="center" valign="middle">
- <span style="font-size: 14px" dir="ltr">
- <b><a href="http://www.fckeditor.net/?about" target="_blank" title="Visit the FCKeditor web site">
- Support <b>Open Source</b> Software</a></b> </span>
- <div style="padding-top:15px">
- <img alt="" src="fck_about/logo_fredck.gif" width="87" height="36" />
- </div>
- </td>
- <td align="center" nowrap="nowrap" valign="middle">
- <div>
- <div style="margin-bottom:5px" dir="ltr">Selected Sponsor</div>
- <a href="http://www.spellchecker.net/fckeditor/" target="_blank"><img alt="Selected Sponsor" border="0" src="fck_about/sponsors/spellchecker_net.gif" width="75" height="75" /></a>
- </div>
- </td>
- </tr>
- <tr>
- <td width="100%" nowrap="nowrap">
- <span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About"
- target="_blank">http://www.fckeditor.net/</a>.
- <br />
- Copyright &copy; 2003-2009 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
- </td>
- <td align="center">
- <a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a>
- </td>
- </tr>
- </table>
- </div>
- <div id="divLicense" style="display: none">
- <p>
- Licensed under the terms of any of the following licenses at your
- choice:
- </p>
- <ul>
- <li style="margin-bottom:15px">
- <b>GNU General Public License</b> Version 2 or later (the "GPL")<br />
- <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a>
- </li>
- <li style="margin-bottom:15px">
- <b>GNU Lesser General Public License</b> Version 2.1 or later (the "LGPL")<br />
- <a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">http://www.gnu.org/licenses/lgpl.html</a>
- </li>
- <li>
- <b>Mozilla Public License</b> Version 1.1 or later (the "MPL")<br />
- <a href="http://www.mozilla.org/MPL/MPL-1.1.html" target="_blank">http://www.mozilla.org/MPL/MPL-1.1.html</a>
- </li>
- </ul>
- </div>
- <div id="divInfo" style="display: none" dir="ltr">
- <table align="center" width="80%" border="0">
- <tr>
- <td>
- <script type="text/javascript">
-<!--
-document.write( '<b>User Agent<\/b><br />' + window.navigator.userAgent + '<br /><br />' ) ;
-document.write( '<b>Browser<\/b><br />' + window.navigator.appName + ' ' + window.navigator.appVersion + '<br /><br />' ) ;
-document.write( '<b>Platform<\/b><br />' + window.navigator.platform + '<br /><br />' ) ;
-
-var sUserLang = '?' ;
-
-if ( window.navigator.language )
- sUserLang = window.navigator.language.toLowerCase() ;
-else if ( window.navigator.userLanguage )
- sUserLang = window.navigator.userLanguage.toLowerCase() ;
-
-document.write( '<b>User Language<\/b><br />' + sUserLang ) ;
-//-->
- </script>
- </td>
- </tr>
- </table>
- </div>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fckeditor.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fckeditor.gif
deleted file mode 100644
index b7d6bc6fe..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fckeditor.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fredck.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fredck.gif
deleted file mode 100644
index 3108dd9ec..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/logo_fredck.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif
deleted file mode 100644
index f8586f906..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_anchor.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_anchor.html
deleted file mode 100644
index 235535b4a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_anchor.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Anchor dialog window.
--->
-<html>
- <head>
- <title>Anchor Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCK = oEditor.FCK ;
-var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
-var FCKTools = oEditor.FCKTools ;
-var FCKRegexLib = oEditor.FCKRegexLib ;
-
-var oDOM = FCK.EditorDocument ;
-
-var oFakeImage = dialog.Selection.GetSelectedElement() ;
-
-var oAnchor ;
-
-if ( oFakeImage )
-{
- if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
- oAnchor = FCK.GetRealElement( oFakeImage ) ;
- else
- oFakeImage = null ;
-}
-
-//Search for a real anchor
-if ( !oFakeImage )
-{
- oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
- if ( oAnchor )
- FCK.Selection.SelectNode( oAnchor ) ;
-}
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oAnchor )
- GetE('txtName').value = oAnchor.name ;
- else
- oAnchor = null ;
-
- window.parent.SetOkButton( true ) ;
- window.parent.SetAutoSize( true ) ;
-
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- var sNewName = GetE('txtName').value ;
-
- // Remove any illegal character in a name attribute:
- // A name should start with a letter, but the validator passes anyway.
- sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ;
-
- if ( sNewName.length == 0 )
- {
- // Remove the anchor if the user leaves the name blank
- if ( oAnchor )
- {
- // Removes the current anchor from the document using the new command
- FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ;
- return true ;
- }
-
- alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
- return false ;
- }
-
- oEditor.FCKUndo.SaveUndoStep() ;
-
- if ( oAnchor ) // Modifying an existent anchor.
- {
- ReadjustLinksToAnchor( oAnchor.name, sNewName );
-
- // Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
- // Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name
- // and assign .name, although it won't appear until it's specially processed in fckxhtml.js
-
- // We remove the previous name
- oAnchor.removeAttribute( 'name' ) ;
- // Now we set it, but later we must process it specially
- oAnchor.name = sNewName ;
-
- return true ;
- }
-
- // Create a new anchor preserving the current selection
- var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
-
- if ( aNewAnchors.length == 0 )
- aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
- else
- {
- // Remove the fake href
- for ( var i = 0 ; i < aNewAnchors.length ; i++ )
- aNewAnchors[i].removeAttribute( 'href' ) ;
- }
-
- // More than one anchors may have been created, so interact through all of them (see #220).
- for ( var i = 0 ; i < aNewAnchors.length ; i++ )
- {
- oAnchor = aNewAnchors[i] ;
-
- // Set the name
- if ( FCKBrowserInfo.IsIE )
- {
- // Setting anchor names directly in IE will trash the HTML code stored
- // in FCKTempBin after undos. See #2263.
- var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' +
- FCKTools.HTMLEncode( sNewName ).replace( '"', '&quot;' ) + '">' ) ;
- oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ;
- oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ;
- oAnchor = replaceAnchor ;
- }
- else
- oAnchor.name = sNewName ;
-
- // IE does require special processing to show the Anchor's image
- // Opera doesn't allow to select empty anchors
- if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
- {
- if ( oAnchor.innerHTML != '' )
- {
- if ( FCKBrowserInfo.IsIE )
- oAnchor.className += ' FCK__AnchorC' ;
- }
- else
- {
- // Create a fake image for both IE and Opera
- var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
- oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
-
- oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
- oAnchor.parentNode.removeChild( oAnchor ) ;
- }
-
- }
- }
-
- return true ;
-}
-
-// Checks all the links in the current page pointing to the current name and changes them to the new name
-function ReadjustLinksToAnchor( sCurrent, sNew )
-{
- var oDoc = FCK.EditorDocument ;
-
- var aLinks = oDoc.getElementsByTagName( 'A' ) ;
-
- var sReference = '#' + sCurrent ;
- // The url of the document, so we check absolute and partial references.
- var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ;
- sFullReference += sReference ;
-
- var oLink ;
- var i = aLinks.length - 1 ;
- while ( i >= 0 && ( oLink = aLinks[i--] ) )
- {
- var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
- if ( sHRef == null )
- sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
-
- if ( sHRef == sReference || sHRef == sFullReference )
- {
- oLink.href = '#' + sNew ;
- SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ;
- }
- }
-}
-
- </script>
- </head>
- <body style="overflow: hidden">
- <table height="100%" width="100%">
- <tr>
- <td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="80%">
- <tr>
- <td>
- <span fckLang="DlgAnchorName">Anchor Name</span><BR>
- <input id="txtName" style="WIDTH: 100%" type="text">
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_button.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_button.html
deleted file mode 100644
index 6dc21b448..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_button.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Button dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>Button Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl && oActiveEl.tagName.toUpperCase() == "INPUT" && ( oActiveEl.type == "button" || oActiveEl.type == "submit" || oActiveEl.type == "reset" ) )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtValue').value = oActiveEl.value ;
- GetE('txtType').value = oActiveEl.type ;
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
-
- SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table width="100%" style="height: 100%">
- <tr>
- <td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="80%">
- <tr>
- <td colspan="">
- <span fcklang="DlgCheckboxName">Name</span><br />
- <input type="text" size="20" id="txtName" style="width: 100%" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgButtonText">Text (Value)</span><br />
- <input type="text" id="txtValue" style="width: 100%" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgButtonType">Type</span><br />
- <select id="txtType">
- <option fcklang="DlgButtonTypeBtn" value="button" selected="selected">Button</option>
- <option fcklang="DlgButtonTypeSbm" value="submit">Submit</option>
- <option fcklang="DlgButtonTypeRst" value="reset">Reset</option>
- </select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_checkbox.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_checkbox.html
deleted file mode 100644
index 9a5d43c73..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_checkbox.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Checkbox dialog window.
--->
-<html>
- <head>
- <title>Checkbox Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
- GetE('txtSelected').checked = oActiveEl.checked ;
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'checkbox' } ) ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- oActiveEl.value = GetE('txtValue').value ;
- else
- SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
- var bIsChecked = GetE('txtSelected').checked ;
- SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
- oActiveEl.checked = bIsChecked ;
-
- return true ;
-}
-
- </script>
- </head>
- <body style="OVERFLOW: hidden" scroll="no">
- <table height="100%" width="100%">
- <tr>
- <td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="80%">
- <tr>
- <td>
- <span fckLang="DlgCheckboxName">Name</span><br>
- <input type="text" size="20" id="txtName" style="WIDTH: 100%">
- </td>
- </tr>
- <tr>
- <td>
- <span fckLang="DlgCheckboxValue">Value</span><br>
- <input type="text" size="20" id="txtValue" style="WIDTH: 100%">
- </td>
- </tr>
- <tr>
- <td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_colorselector.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_colorselector.html
deleted file mode 100644
index a6eac5ca9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_colorselector.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Color Selection dialog window.
--->
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <style TYPE="text/css">
- #ColorTable { cursor: pointer ; cursor: hand ; }
- #hicolor { height: 74px ; width: 74px ; border-width: 1px ; border-style: solid ; }
- #hicolortext { width: 75px ; text-align: right ; margin-bottom: 7px ; }
- #selhicolor { height: 20px ; width: 74px ; border-width: 1px ; border-style: solid ; }
- #selcolor { width: 75px ; height: 20px ; margin-top: 0px ; margin-bottom: 7px ; }
- #btnClear { width: 75px ; height: 22px ; margin-bottom: 6px ; }
- .ColorCell { height: 15px ; width: 15px ; }
- </style>
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-function OnLoad()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- CreateColorTable() ;
-
- window.parent.SetOkButton( true ) ;
- window.parent.SetAutoSize( true ) ;
-}
-
-function CreateColorTable()
-{
- // Get the target table.
- var oTable = document.getElementById('ColorTable') ;
-
- // Create the base colors array.
- var aColors = ['00','33','66','99','cc','ff'] ;
-
- // This function combines two ranges of three values from the color array into a row.
- function AppendColorRow( rangeA, rangeB )
- {
- for ( var i = rangeA ; i < rangeA + 3 ; i++ )
- {
- var oRow = oTable.insertRow(-1) ;
-
- for ( var j = rangeB ; j < rangeB + 3 ; j++ )
- {
- for ( var n = 0 ; n < 6 ; n++ )
- {
- AppendColorCell( oRow, '#' + aColors[j] + aColors[n] + aColors[i] ) ;
- }
- }
- }
- }
-
- // This function create a single color cell in the color table.
- function AppendColorCell( targetRow, color )
- {
- var oCell = targetRow.insertCell(-1) ;
- oCell.className = 'ColorCell' ;
- oCell.bgColor = color ;
-
- oCell.onmouseover = function()
- {
- document.getElementById('hicolor').style.backgroundColor = this.bgColor ;
- document.getElementById('hicolortext').innerHTML = this.bgColor ;
- }
-
- oCell.onclick = function()
- {
- document.getElementById('selhicolor').style.backgroundColor = this.bgColor ;
- document.getElementById('selcolor').value = this.bgColor ;
- }
- }
-
- AppendColorRow( 0, 0 ) ;
- AppendColorRow( 3, 0 ) ;
- AppendColorRow( 0, 3 ) ;
- AppendColorRow( 3, 3 ) ;
-
- // Create the last row.
- var oRow = oTable.insertRow(-1) ;
-
- // Create the gray scale colors cells.
- for ( var n = 0 ; n < 6 ; n++ )
- {
- AppendColorCell( oRow, '#' + aColors[n] + aColors[n] + aColors[n] ) ;
- }
-
- // Fill the row with black cells.
- for ( var i = 0 ; i < 12 ; i++ )
- {
- AppendColorCell( oRow, '#000000' ) ;
- }
-}
-
-function Clear()
-{
- document.getElementById('selhicolor').style.backgroundColor = '' ;
- document.getElementById('selcolor').value = '' ;
-}
-
-function ClearActual()
-{
- document.getElementById('hicolor').style.backgroundColor = '' ;
- document.getElementById('hicolortext').innerHTML = '&nbsp;' ;
-}
-
-function UpdateColor()
-{
- try { document.getElementById('selhicolor').style.backgroundColor = document.getElementById('selcolor').value ; }
- catch (e) { Clear() ; }
-}
-
-function Ok()
-{
- if ( typeof(window.parent.Args().CustomValue) == 'function' )
- window.parent.Args().CustomValue( document.getElementById('selcolor').value ) ;
-
- return true ;
-}
- </script>
- </head>
- <body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
- <tr>
- <td align="center" valign="middle">
- <table border="0" cellspacing="5" cellpadding="0" width="100%">
- <tr>
- <td valign="top" align="center" nowrap width="100%">
- <table id="ColorTable" border="0" cellspacing="0" cellpadding="0" width="270" onmouseout="ClearActual();">
- </table>
- </td>
- <td valign="top" align="left" nowrap>
- <span fckLang="DlgColorHighlight">Highlight</span>
- <div id="hicolor"></div>
- <div id="hicolortext">&nbsp;</div>
- <span fckLang="DlgColorSelected">Selected</span>
- <div id="selhicolor"></div>
- <input id="selcolor" type="text" maxlength="20" onchange="UpdateColor();">
- <br>
- <input id="btnClear" type="button" fckLang="DlgColorBtnClear" value="Clear" onclick="Clear();" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_div.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_div.html
deleted file mode 100644
index c5496e1fd..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_div.html
+++ /dev/null
@@ -1,396 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Form dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
-var FCKStyles = oEditor.FCKStyles ;
-var FCKElementPath = oEditor.FCKElementPath ;
-var FCKDomRange = oEditor.FCKDomRange ;
-var FCKDomTools = oEditor.FCKDomTools ;
-var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ;
-var FCKListsLib = oEditor.FCKListsLib ;
-var AlwaysCreate = dialog.Args().CustomValue ;
-
-String.prototype.IEquals = function()
-{
- var thisUpper = this.toUpperCase() ;
-
- var aArgs = arguments ;
-
- // The arguments could also be a single array.
- if ( aArgs.length == 1 && aArgs[0].pop )
- aArgs = aArgs[0] ;
-
- for ( var i = 0 ; i < aArgs.length ; i++ )
- {
- if ( thisUpper == aArgs[i].toUpperCase() )
- return true ;
- }
- return false ;
-}
-
-var CurrentContainers = [] ;
-if ( !AlwaysCreate )
-{
- dialog.Selection.EnsureSelection() ;
- CurrentContainers = FCKDomTools.GetSelectedDivContainers() ;
-}
-
-// Add some tabs
-dialog.AddTab( 'General', FCKLang.DlgDivGeneralTab );
-dialog.AddTab( 'Advanced', FCKLang.DlgDivAdvancedTab ) ;
-
-function AddStyleOption( styleName )
-{
- var el = GetE( 'selStyle' ) ;
- var opt = document.createElement( 'option' ) ;
- opt.text = opt.value = styleName ;
-
- if ( FCKBrowserInfo.IsIE )
- el.add( opt ) ;
- else
- el.add( opt, null ) ;
-}
-
-function OnDialogTabChange( tabCode )
-{
- ShowE( 'divGeneral', tabCode == 'General' ) ;
- ShowE( 'divAdvanced', tabCode == 'Advanced' ) ;
- dialog.SetAutoSize( true ) ;
-}
-
-function GetNearestAncestorDirection( node )
-{
- var dir = 'ltr' ; // HTML default.
- while ( ( node = node.parentNode ) )
- {
- if ( node.dir )
- dir = node.dir ;
- }
- return dir ;
-}
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
-
- // Popuplate the style menu
- var styles = FCKStyles.GetStyles() ;
- var selectableStyles = {} ;
- for ( var i in styles )
- {
- if ( ! /^_FCK_/.test( i ) && styles[i].Element == 'div' )
- selectableStyles[i] = styles[i] ;
- }
- if ( CurrentContainers.length <= 1 )
- {
- var target = CurrentContainers[0] ;
- var match = null ;
- for ( var i in selectableStyles )
- {
- if ( target && styles[i].CheckElementRemovable( target, true ) )
- match = i ;
- }
- if ( !match )
- AddStyleOption( "" ) ;
- for ( var i in selectableStyles )
- AddStyleOption( i ) ;
- if ( match )
- GetE( 'selStyle' ).value = match ;
-
- // Set the value for other inputs
- if ( target )
- {
- GetE( 'txtClass' ).value = target.className ;
- GetE( 'txtId' ).value = target.id ;
- GetE( 'txtLang' ).value = target.lang ;
- GetE( 'txtInlineStyle').value = target.style.cssText ;
- GetE( 'txtTitle' ).value = target.title ;
- GetE( 'selLangDir').value = target.dir || GetNearestAncestorDirection( target ) ;
- }
- }
- else
- {
- GetE( 'txtId' ).disabled = true ;
- AddStyleOption( "" ) ;
- for ( var i in selectableStyles )
- AddStyleOption( i ) ;
- }
-}
-
-function CreateDiv()
-{
- var newBlocks = [] ;
- var range = new FCKDomRange( FCK.EditorWindow ) ;
- range.MoveToSelection() ;
-
- var bookmark = range.CreateBookmark() ;
-
- // Kludge for #1592: if the bookmark nodes are in the beginning of
- // $tagName, then move them to the nearest block element in the
- // $tagName.
- if ( FCKBrowserInfo.IsIE )
- {
- var bStart = range.GetBookmarkNode( bookmark, true ) ;
- var bEnd = range.GetBookmarkNode( bookmark, false ) ;
-
- var cursor ;
-
- if ( bStart
- && bStart.parentNode.nodeName.IEquals( 'div' )
- && !bStart.previousSibling )
- {
- cursor = bStart ;
- while ( ( cursor = cursor.nextSibling ) )
- {
- if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
- FCKDomTools.MoveNode( bStart, cursor, true ) ;
- }
- }
-
- if ( bEnd
- && bEnd.parentNode.nodeName.IEquals( 'div' )
- && !bEnd.previousSibling )
- {
- cursor = bEnd ;
- while ( ( cursor = cursor.nextSibling ) )
- {
- if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
- {
- if ( cursor.firstChild == bStart )
- FCKDomTools.InsertAfterNode( bStart, bEnd ) ;
- else
- FCKDomTools.MoveNode( bEnd, cursor, true ) ;
- }
- }
- }
- }
-
- var iterator = new FCKDomRangeIterator( range ) ;
- var block ;
-
- var paragraphs = [] ;
- while ( ( block = iterator.GetNextParagraph() ) )
- paragraphs.push( block ) ;
-
- // Make sure all paragraphs have the same parent.
- var commonParent = paragraphs[0].parentNode ;
- var tmp = [] ;
- for ( var i = 0 ; i < paragraphs.length ; i++ )
- {
- block = paragraphs[i] ;
- commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ;
- }
-
- // The common parent must not be the following tags: table, tbody, tr, ol, ul.
- while ( commonParent.nodeName.IEquals( 'table', 'tbody', 'tr', 'ol', 'ul' ) )
- commonParent = commonParent.parentNode ;
-
- // Reconstruct the block list to be processed such that all resulting blocks
- // satisfy parentNode == commonParent.
- var lastBlock = null ;
- while ( paragraphs.length > 0 )
- {
- block = paragraphs.shift() ;
- while ( block.parentNode != commonParent )
- block = block.parentNode ;
- if ( block != lastBlock )
- tmp.push( block ) ;
- lastBlock = block ;
- }
- paragraphs = tmp ;
-
- // Split the paragraphs into groups depending on their BlockLimit element.
- var groups = [] ;
- var lastBlockLimit = null ;
- for ( var i = 0 ; i < paragraphs.length ; i++ )
- {
- block = paragraphs[i] ;
- var elementPath = new FCKElementPath( block ) ;
- if ( elementPath.BlockLimit != lastBlockLimit )
- {
- groups.push( [] ) ;
- lastBlockLimit = elementPath.BlockLimit ;
- }
- groups[groups.length - 1].push( block ) ;
- }
-
- // Create a DIV container for each group.
- for ( var i = 0 ; i < groups.length ; i++ )
- {
- var divNode = FCK.EditorDocument.createElement( 'div' ) ;
- groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ;
- for ( var j = 0 ; j < groups[i].length ; j++ )
- FCKDomTools.MoveNode( groups[i][j], divNode ) ;
- newBlocks.push( divNode ) ;
- }
-
- range.MoveToBookmark( bookmark ) ;
- range.Select() ;
-
- FCK.Focus() ;
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
-
- return newBlocks ;
-}
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- if ( CurrentContainers.length < 1 )
- CurrentContainers = CreateDiv();
-
- var setValue = function( attrName, inputName )
- {
- var val = GetE( inputName ).value ;
- for ( var i = 0 ; i < CurrentContainers.length ; i++ )
- {
- if ( val == '' )
- CurrentContainers[i].removeAttribute( attrName ) ;
- else
- CurrentContainers[i].setAttribute( attrName, val ) ;
- }
- }
-
- // Apply modifications to the DIV container according to dialog inputs.
- if ( CurrentContainers.length == 1 )
- {
- setValue( 'class', 'txtClass' ) ;
- setValue( 'id', 'txtId' ) ;
- }
- setValue( 'lang', 'txtLang' ) ;
- if ( FCKBrowserInfo.IsIE )
- {
- for ( var i = 0 ; i < CurrentContainers.length ; i++ )
- CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ;
- }
- else
- setValue( 'style', 'txtInlineStyle' ) ;
- setValue( 'title', 'txtTitle' ) ;
- for ( var i = 0 ; i < CurrentContainers.length ; i++ )
- {
- var dir = GetE( 'selLangDir' ).value ;
- var styleName = GetE( 'selStyle' ).value ;
- if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir )
- CurrentContainers[i].dir = dir ;
- else
- CurrentContainers[i].removeAttribute( 'dir' ) ;
-
- if ( styleName )
- FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ;
- }
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <div id="divGeneral">
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <colgroup span="2">
- <col width="49%" />
- <col width="2%" />
- <col width="49%" />
- </colgroup>
- <tr>
- <td>
- <span fcklang="DlgDivStyle">Style</span><br />
- <select id="selStyle" style="width: 100%;">
- </select>
- </td>
- <td>&nbsp;</td>
- <td>
- <span fcklang="DlgGenClass">Stylesheet Classes</span><br />
- <input id="txtClass" style="width: 100%" type="text" />
- </td>
- </tr>
- </table>
- </div>
- <div id="divAdvanced" style="display: none">
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <colgroup span="2">
- <col width="49%" />
- <col width="2%" />
- <col width="49%" />
- </colgroup>
- <tr>
- <td>
- <span fcklang="DlgGenId">Id</span><br />
- <input style="width: 100%" type="text" id="txtId" />
- </td>
- <td>&nbsp;</td>
- <td>
- <span fcklang="DlgGenLangCode">Language Code</span><br />
- <input style="width: 100%" type="text" id="txtLang" />
- </td>
- </tr>
- <tr>
- <td colspan="3">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="3">
- <span fcklang="DlgDivInlineStyle">Inline Style</span><br />
- <input style="width: 100%" type="text" id="txtInlineStyle" />
- </td>
- </tr>
- <tr>
- <td colspan="3">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="3">
- <span fcklang="DlgGenTitle">Advisory Title</span><br />
- <input style="width: 100%" type="text" id="txtTitle" />
- </td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgGenLangDir">Language Direction</span><br />
- <select id="selLangDir">
- <option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR)
- <option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL)
- </select>
- </td>
- </tr>
- </table>
- </div>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops.html
deleted file mode 100644
index e1875d74c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops.html
+++ /dev/null
@@ -1,600 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Link dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKConfig = oEditor.FCKConfig ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-window.parent.AddTab( 'General' , FCKLang.DlgDocGeneralTab ) ;
-window.parent.AddTab( 'Background' , FCKLang.DlgDocBackTab ) ;
-window.parent.AddTab( 'Colors' , FCKLang.DlgDocColorsTab ) ;
-window.parent.AddTab( 'Meta' , FCKLang.DlgDocMetaTab ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
- ShowE( 'divGeneral' , ( tabCode == 'General' ) ) ;
- ShowE( 'divBackground' , ( tabCode == 'Background' ) ) ;
- ShowE( 'divColors' , ( tabCode == 'Colors' ) ) ;
- ShowE( 'divMeta' , ( tabCode == 'Meta' ) ) ;
-
- ShowE( 'ePreview' , ( tabCode == 'Background' || tabCode == 'Colors' ) ) ;
-}
-
-//#### Get Base elements from the document: BEGIN
-
-// The HTML element of the document.
-var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
-
-// The HEAD element of the document.
-var oHead = oHTML.getElementsByTagName('head')[0] ;
-
-var oBody = FCK.EditorDocument.body ;
-
-// This object contains all META tags defined in the document.
-var oMetaTags = new Object() ;
-
-// Get all META tags defined in the document.
-AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('meta') ) ;
-AppendMetaCollection( oMetaTags, oHead.getElementsByTagName('fck:meta') ) ;
-
-function AppendMetaCollection( targetObject, metaCollection )
-{
- // Loop throw all METAs and put it in the HashTable.
- for ( var i = 0 ; i < metaCollection.length ; i++ )
- {
- // Try to get the "name" attribute.
- var sName = GetAttribute( metaCollection[i], 'name', GetAttribute( metaCollection[i], '___fcktoreplace:name', '' ) ) ;
-
- // If no "name", try with the "http-equiv" attribute.
- if ( sName.length == 0 )
- {
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- // Get the http-equiv value from the outerHTML.
- var oHttpEquivMatch = metaCollection[i].outerHTML.match( oEditor.FCKRegexLib.MetaHttpEquiv ) ;
- if ( oHttpEquivMatch )
- sName = oHttpEquivMatch[1] ;
- }
- else
- sName = GetAttribute( metaCollection[i], 'http-equiv', '' ) ;
- }
-
- if ( sName.length > 0 )
- targetObject[ sName.toLowerCase() ] = metaCollection[i] ;
- }
-}
-
-//#### END
-
-// Set a META tag in the document.
-function SetMetadata( name, content, isHttp )
-{
- if ( content.length == 0 )
- {
- RemoveMetadata( name ) ;
- return ;
- }
-
- var oMeta = oMetaTags[ name.toLowerCase() ] ;
-
- if ( !oMeta )
- {
- oMeta = oHead.appendChild( FCK.EditorDocument.createElement('META') ) ;
-
- if ( isHttp )
- SetAttribute( oMeta, 'http-equiv', name ) ;
- else
- {
- // On IE, it is not possible to set the "name" attribute of the META tag.
- // So a temporary attribute is used and it is replaced when getting the
- // editor's HTML/XHTML value. This is sad, I know :(
- if ( oEditor.FCKBrowserInfo.IsIE )
- SetAttribute( oMeta, '___fcktoreplace:name', name ) ;
- else
- SetAttribute( oMeta, 'name', name ) ;
- }
-
- oMetaTags[ name.toLowerCase() ] = oMeta ;
- }
-
- SetAttribute( oMeta, 'content', content ) ;
-// oMeta.content = content ;
-}
-
-function RemoveMetadata( name )
-{
- var oMeta = oMetaTags[ name.toLowerCase() ] ;
-
- if ( oMeta && oMeta != null )
- {
- oMeta.parentNode.removeChild( oMeta ) ;
- oMetaTags[ name.toLowerCase() ] = null ;
- }
-}
-
-function GetMetadata( name )
-{
- var oMeta = oMetaTags[ name.toLowerCase() ] ;
-
- if ( oMeta && oMeta != null )
- return oMeta.getAttribute( 'content', 2 ) ;
- else
- return '' ;
-}
-
-window.onload = function ()
-{
- // Show/Hide the "Browse Server" button.
- GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
-
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
- FillFields() ;
-
- UpdatePreview() ;
-
- // Show the "Ok" button.
- window.parent.SetOkButton( true ) ;
-
- window.parent.SetAutoSize( true ) ;
-}
-
-function FillFields()
-{
- // ### General Info
- GetE('txtPageTitle').value = FCK.EditorDocument.title ;
-
- GetE('selDirection').value = GetAttribute( oHTML, 'dir', '' ) ;
- GetE('txtLang').value = GetAttribute( oHTML, 'xml:lang', GetAttribute( oHTML, 'lang', '' ) ) ; // "xml:lang" takes precedence to "lang".
-
- // Character Set Encoding.
-// if ( oEditor.FCKBrowserInfo.IsIE )
-// var sCharSet = FCK.EditorDocument.charset ;
-// else
- var sCharSet = GetMetadata( 'Content-Type' ) ;
-
- if ( sCharSet != null && sCharSet.length > 0 )
- {
-// if ( !oEditor.FCKBrowserInfo.IsIE )
- sCharSet = sCharSet.match( /[^=]*$/ ) ;
-
- GetE('selCharSet').value = sCharSet ;
-
- if ( GetE('selCharSet').selectedIndex == -1 )
- {
- GetE('selCharSet').value = '...' ;
- GetE('txtCustomCharSet').value = sCharSet ;
-
- CheckOther( GetE('selCharSet'), 'txtCustomCharSet' ) ;
- }
- }
-
- // Document Type.
- if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 )
- {
- GetE('selDocType').value = FCK.DocTypeDeclaration ;
-
- if ( GetE('selDocType').selectedIndex == -1 )
- {
- GetE('selDocType').value = '...' ;
- GetE('txtDocType').value = FCK.DocTypeDeclaration ;
-
- CheckOther( GetE('selDocType'), 'txtDocType' ) ;
- }
- }
-
- // Document Type.
- GetE('chkIncXHTMLDecl').checked = ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) ;
-
- // ### Background
- GetE('txtBackColor').value = GetAttribute( oBody, 'bgColor' , '' ) ;
- GetE('txtBackImage').value = GetAttribute( oBody, 'background' , '' ) ;
- GetE('chkBackNoScroll').checked = ( GetAttribute( oBody, 'bgProperties', '' ).toLowerCase() == 'fixed' ) ;
-
- // ### Colors
- GetE('txtColorText').value = GetAttribute( oBody, 'text' , '' ) ;
- GetE('txtColorLink').value = GetAttribute( oBody, 'link' , '' ) ;
- GetE('txtColorVisited').value = GetAttribute( oBody, 'vLink' , '' ) ;
- GetE('txtColorActive').value = GetAttribute( oBody, 'aLink' , '' ) ;
-
- // ### Margins
- GetE('txtMarginTop').value = GetAttribute( oBody, 'topMargin' , '' ) ;
- GetE('txtMarginLeft').value = GetAttribute( oBody, 'leftMargin' , '' ) ;
- GetE('txtMarginRight').value = GetAttribute( oBody, 'rightMargin' , '' ) ;
- GetE('txtMarginBottom').value = GetAttribute( oBody, 'bottomMargin' , '' ) ;
-
- // ### Meta Data
- GetE('txtMetaKeywords').value = GetMetadata( 'keywords' ) ;
- GetE('txtMetaDescription').value = GetMetadata( 'description' ) ;
- GetE('txtMetaAuthor').value = GetMetadata( 'author' ) ;
- GetE('txtMetaCopyright').value = GetMetadata( 'copyright' ) ;
-}
-
-// Called when the "Ok" button is clicked.
-function Ok()
-{
- // ### General Info
- FCK.EditorDocument.title = GetE('txtPageTitle').value ;
-
- var oHTML = FCK.EditorDocument.getElementsByTagName('html')[0] ;
-
- SetAttribute( oHTML, 'dir' , GetE('selDirection').value ) ;
- SetAttribute( oHTML, 'lang' , GetE('txtLang').value ) ;
- SetAttribute( oHTML, 'xml:lang' , GetE('txtLang').value ) ;
-
- // Character Set Enconding.
- var sCharSet = GetE('selCharSet').value ;
- if ( sCharSet == '...' )
- sCharSet = GetE('txtCustomCharSet').value ;
-
- if ( sCharSet.length > 0 )
- sCharSet = 'text/html; charset=' + sCharSet ;
-
-// if ( oEditor.FCKBrowserInfo.IsIE )
-// FCK.EditorDocument.charset = sCharSet ;
-// else
- SetMetadata( 'Content-Type', sCharSet, true ) ;
-
- // Document Type
- var sDocType = GetE('selDocType').value ;
- if ( sDocType == '...' )
- sDocType = GetE('txtDocType').value ;
-
- FCK.DocTypeDeclaration = sDocType ;
-
- // XHTML Declarations.
- if ( GetE('chkIncXHTMLDecl').checked )
- {
- if ( sCharSet.length == 0 )
- sCharSet = 'utf-8' ;
-
- FCK.XmlDeclaration = '<' + '?xml version="1.0" encoding="' + sCharSet + '"?>' ;
-
- SetAttribute( oHTML, 'xmlns', 'http://www.w3.org/1999/xhtml' ) ;
- }
- else
- {
- FCK.XmlDeclaration = null ;
- oHTML.removeAttribute( 'xmlns', 0 ) ;
- }
-
- // ### Background
- SetAttribute( oBody, 'bgcolor' , GetE('txtBackColor').value ) ;
- SetAttribute( oBody, 'background' , GetE('txtBackImage').value ) ;
- SetAttribute( oBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
-
- // ### Colors
- SetAttribute( oBody, 'text' , GetE('txtColorText').value ) ;
- SetAttribute( oBody, 'link' , GetE('txtColorLink').value ) ;
- SetAttribute( oBody, 'vlink', GetE('txtColorVisited').value ) ;
- SetAttribute( oBody, 'alink', GetE('txtColorActive').value ) ;
-
- // ### Margins
- SetAttribute( oBody, 'topmargin' , GetE('txtMarginTop').value ) ;
- SetAttribute( oBody, 'leftmargin' , GetE('txtMarginLeft').value ) ;
- SetAttribute( oBody, 'rightmargin' , GetE('txtMarginRight').value ) ;
- SetAttribute( oBody, 'bottommargin' , GetE('txtMarginBottom').value ) ;
-
- // ### Meta data
- SetMetadata( 'keywords' , GetE('txtMetaKeywords').value ) ;
- SetMetadata( 'description' , GetE('txtMetaDescription').value ) ;
- SetMetadata( 'author' , GetE('txtMetaAuthor').value ) ;
- SetMetadata( 'copyright' , GetE('txtMetaCopyright').value ) ;
-
- return true ;
-}
-
-var bPreviewIsLoaded = false ;
-var oPreviewWindow ;
-var oPreviewBody ;
-
-// Called by the Preview page when loaded.
-function OnPreviewLoad( previewWindow, previewBody )
-{
- oPreviewWindow = previewWindow ;
- oPreviewBody = previewBody ;
-
- bPreviewIsLoaded = true ;
- UpdatePreview() ;
-}
-
-function UpdatePreview()
-{
- if ( !bPreviewIsLoaded )
- return ;
-
- // ### Background
- SetAttribute( oPreviewBody, 'bgcolor' , GetE('txtBackColor').value ) ;
- SetAttribute( oPreviewBody, 'background' , GetE('txtBackImage').value ) ;
- SetAttribute( oPreviewBody, 'bgproperties' , GetE('chkBackNoScroll').checked ? 'fixed' : '' ) ;
-
- // ### Colors
- SetAttribute( oPreviewBody, 'text', GetE('txtColorText').value ) ;
-
- oPreviewWindow.SetLinkColor( GetE('txtColorLink').value ) ;
- oPreviewWindow.SetVisitedColor( GetE('txtColorVisited').value ) ;
- oPreviewWindow.SetActiveColor( GetE('txtColorActive').value ) ;
-}
-
-function CheckOther( combo, txtField )
-{
- var bNotOther = ( combo.value != '...' ) ;
-
- GetE(txtField).style.backgroundColor = ( bNotOther ? '#cccccc' : '' ) ;
- GetE(txtField).disabled = bNotOther ;
-}
-
-function SetColor( inputId, color )
-{
- GetE( inputId ).value = color + '' ;
- UpdatePreview() ;
-}
-
-function SelectBackColor( color ) { SetColor('txtBackColor', color ) ; }
-function SelectColorText( color ) { SetColor('txtColorText', color ) ; }
-function SelectColorLink( color ) { SetColor('txtColorLink', color ) ; }
-function SelectColorVisited( color ) { SetColor('txtColorVisited', color ) ; }
-function SelectColorActive( color ) { SetColor('txtColorActive', color ) ; }
-
-function SelectColor( wich )
-{
- switch ( wich )
- {
- case 'Back' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor, window ) ; return ;
- case 'ColorText' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText, window ) ; return ;
- case 'ColorLink' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink, window ) ; return ;
- case 'ColorVisited' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited, window ) ; return ;
- case 'ColorActive' : oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive, window ) ; return ;
- }
-}
-
-function BrowseServerBack()
-{
- OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
-}
-
-function SetUrl( url )
-{
- GetE('txtBackImage').value = url ;
- UpdatePreview() ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
- <tr>
- <td valign="top" style="height: 100%">
- <div id="divGeneral">
- <span fcklang="DlgDocPageTitle">Page Title</span><br />
- <input id="txtPageTitle" style="width: 100%" type="text" />
- <br />
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td>
- <span fcklang="DlgDocLangDir">Language Direction</span><br />
- <select id="selDirection">
- <option value="" selected="selected"></option>
- <option value="ltr" fcklang="DlgDocLangDirLTR">Left to Right (LTR)</option>
- <option value="rtl" fcklang="DlgDocLangDirRTL">Right to Left (RTL)</option>
- </select>
- </td>
- <td>
- &nbsp;&nbsp;&nbsp;</td>
- <td>
- <span fcklang="DlgDocLangCode">Language Code</span><br />
- <input id="txtLang" type="text" />
- </td>
- </tr>
- </table>
- <br />
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td style="white-space: nowrap">
- <span fcklang="DlgDocCharSet">Character Set Encoding</span><br />
- <select id="selCharSet" onchange="CheckOther( this, 'txtCustomCharSet' );">
- <option value="" selected="selected"></option>
- <option value="us-ascii">ASCII</option>
- <option fcklang="DlgDocCharSetCE" value="iso-8859-2">Central European</option>
- <option fcklang="DlgDocCharSetCT" value="big5">Chinese Traditional (Big5)</option>
- <option fcklang="DlgDocCharSetCR" value="iso-8859-5">Cyrillic</option>
- <option fcklang="DlgDocCharSetGR" value="iso-8859-7">Greek</option>
- <option fcklang="DlgDocCharSetJP" value="iso-2022-jp">Japanese</option>
- <option fcklang="DlgDocCharSetKR" value="iso-2022-kr">Korean</option>
- <option fcklang="DlgDocCharSetTR" value="iso-8859-9">Turkish</option>
- <option fcklang="DlgDocCharSetUN" value="utf-8">Unicode (UTF-8)</option>
- <option fcklang="DlgDocCharSetWE" value="iso-8859-1">Western European</option>
- <option fcklang="DlgOpOther" value="...">&lt;Other&gt;</option>
- </select>
- </td>
- <td>
- &nbsp;&nbsp;&nbsp;</td>
- <td width="100%">
- <span fcklang="DlgDocCharSetOther">Other Character Set Encoding</span><br />
- <input id="txtCustomCharSet" style="width: 100%; background-color: #cccccc" disabled="disabled"
- type="text" />
- </td>
- </tr>
- <tr>
- <td colspan="3">
- &nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgDocDocType">Document Type Heading</span><br />
- <select id="selDocType" onchange="CheckOther( this, 'txtDocType' );">
- <option value="" selected="selected"></option>
- <option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
- 4.01 Transitional</option>
- <option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
- HTML 4.01 Strict</option>
- <option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
- HTML 4.01 Frameset</option>
- <option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
- XHTML 1.0 Transitional</option>
- <option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
- XHTML 1.0 Strict</option>
- <option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
- XHTML 1.0 Frameset</option>
- <option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
- XHTML 1.1</option>
- <option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
- <option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
- <option value="..." fcklang="DlgOpOther">&lt;Other&gt;</option>
- </select>
- </td>
- <td>
- </td>
- <td width="100%">
- <span fcklang="DlgDocDocTypeOther">Other Document Type Heading</span><br />
- <input id="txtDocType" style="width: 100%; background-color: #cccccc" disabled="disabled"
- type="text" />
- </td>
- </tr>
- </table>
- <br />
- <input id="chkIncXHTMLDecl" type="checkbox" />
- <label for="chkIncXHTMLDecl" fcklang="DlgDocIncXHTML">
- Include XHTML Declarations</label>
- </div>
- <div id="divBackground" style="display: none">
- <span fcklang="DlgDocBgColor">Background Color</span><br />
- <input id="txtBackColor" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" />&nbsp;<input
- id="btnSelBackColor" onclick="SelectColor( 'Back' )" type="button" value="Select..."
- fcklang="DlgCellBtnSelect" /><br />
- <br />
- <span fcklang="DlgDocBgImage">Background Image URL</span><br />
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td width="100%">
- <input id="txtBackImage" style="width: 100%" type="text" onchange="UpdatePreview();"
- onkeyup="UpdatePreview();" /></td>
- <td id="tdBrowse" nowrap="nowrap">
- &nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fcklang="DlgBtnBrowseServer"
- value="Browse Server" /></td>
- </tr>
- </table>
- <input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();" />
- <label for="chkBackNoScroll" fcklang="DlgDocBgNoScroll">
- Nonscrolling Background</label>
- </div>
- <div id="divColors" style="display: none">
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td>
- <span fcklang="DlgDocCText">Text</span><br />
- <input id="txtColorText" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
- onclick="SelectColor( 'ColorText' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
- <br />
- <span fcklang="DlgDocCLink">Link</span><br />
- <input id="txtColorLink" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
- onclick="SelectColor( 'ColorLink' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
- <br />
- <span fcklang="DlgDocCVisited">Visited Link</span><br />
- <input id="txtColorVisited" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
- onclick="SelectColor( 'ColorVisited' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
- <br />
- <span fcklang="DlgDocCActive">Active Link</span><br />
- <input id="txtColorActive" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();" /><input
- onclick="SelectColor( 'ColorActive' )" type="button" value="Select..." fcklang="DlgCellBtnSelect" />
- </td>
- <td valign="middle" align="center">
- <table cellspacing="2" cellpadding="0" border="0">
- <tr>
- <td>
- <span fcklang="DlgDocMargins">Page Margins</span></td>
- </tr>
- <tr>
- <td style="border: #000000 1px solid; padding: 5px">
- <table cellpadding="0" cellspacing="0" border="0" dir="ltr">
- <tr>
- <td align="center" colspan="3">
- <span fcklang="DlgDocMaTop">Top</span><br />
- <input id="txtMarginTop" type="text" size="3" />
- </td>
- </tr>
- <tr>
- <td align="left">
- <span fcklang="DlgDocMaLeft">Left</span><br />
- <input id="txtMarginLeft" type="text" size="3" />
- </td>
- <td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td align="right">
- <span fcklang="DlgDocMaRight">Right</span><br />
- <input id="txtMarginRight" type="text" size="3" />
- </td>
- </tr>
- <tr>
- <td align="center" colspan="3">
- <span fcklang="DlgDocMaBottom">Bottom</span><br />
- <input id="txtMarginBottom" type="text" size="3" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- <div id="divMeta" style="display: none">
- <span fcklang="DlgDocMeIndex">Document Indexing Keywords (comma separated)</span><br />
- <textarea id="txtMetaKeywords" style="width: 100%" rows="2" cols="20"></textarea>
- <br />
- <span fcklang="DlgDocMeDescr">Document Description</span><br />
- <textarea id="txtMetaDescription" style="width: 100%" rows="4" cols="20"></textarea>
- <br />
- <span fcklang="DlgDocMeAuthor">Author</span><br />
- <input id="txtMetaAuthor" style="width: 100%" type="text" /><br />
- <br />
- <span fcklang="DlgDocMeCopy">Copyright</span><br />
- <input id="txtMetaCopyright" type="text" style="width: 100%" />
- </div>
- </td>
- </tr>
- <tr id="ePreview" style="display: none">
- <td>
- <span fcklang="DlgDocPreview">Preview</span><br />
- <iframe id="frmPreview" src="fck_docprops/fck_document_preview.html" width="100%"
- height="100"></iframe>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html
deleted file mode 100644
index 368c839d8..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Preview shown in the "Document Properties" dialog window.
--->
-<html>
- <head>
- <title>Document Properties - Preview</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="robots" content="noindex, nofollow">
- <script language="javascript">
-
-var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
-if ( eBase.length > 0 && eBase[0].href.length > 0 )
-{
- document.write( '<base href="' + eBase[0].href + '">' ) ;
-}
-
-window.onload = function()
-{
- if ( typeof( parent.OnPreviewLoad ) == 'function' )
- parent.OnPreviewLoad( window, document.body ) ;
-}
-
-function SetBaseHRef( baseHref )
-{
- var eBase = document.createElement( 'BASE' ) ;
- eBase.href = baseHref ;
-
- var eHead = document.getElementsByTagName( 'HEAD' )[0] ;
- eHead.appendChild( eBase ) ;
-}
-
-function SetLinkColor( color )
-{
- if ( color && color.length > 0 )
- document.getElementById('eLink').style.color = color ;
- else
- document.getElementById('eLink').style.color = window.document.linkColor ;
-}
-
-function SetVisitedColor( color )
-{
- if ( color && color.length > 0 )
- document.getElementById('eVisited').style.color = color ;
- else
- document.getElementById('eVisited').style.color = window.document.vlinkColor ;
-}
-
-function SetActiveColor( color )
-{
- if ( color && color.length > 0 )
- document.getElementById('eActive').style.color = color ;
- else
- document.getElementById('eActive').style.color = window.document.alinkColor ;
-}
- </script>
- </head>
- <body>
- <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td align="center" valign="middle">
- Normal Text
- </td>
- <td id="eLink" align="center" valign="middle">
- <u>Link Text</u>
- </td>
- </tr>
- <tr>
- <td id="eVisited" valign="middle" align="center">
- <u>Visited Link</u>
- </td>
- <td id="eActive" valign="middle" align="center">
- <u>Active Link</u>
- </td>
- </tr>
- </table>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash.html
deleted file mode 100644
index 2db48461d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Flash Properties dialog window.
--->
-<html>
- <head>
- <title>Flash Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script src="fck_flash/fck_flash.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
-
- </script>
- </head>
- <body scroll="no" style="OVERFLOW: hidden">
- <div id="divInfo">
- <table cellSpacing="1" cellPadding="1" width="100%" border="0">
- <tr>
- <td>
- <table cellSpacing="0" cellPadding="0" width="100%" border="0">
- <tr>
- <td width="100%"><span fckLang="DlgImgURL">URL</span>
- </td>
- <td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
- </td>
- </tr>
- <tr>
- <td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <TR>
- <TD>
- <table cellSpacing="0" cellPadding="0" border="0">
- <TR>
- <TD nowrap>
- <span fckLang="DlgImgWidth">Width</span><br>
- <input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
- </TD>
- <TD>&nbsp;</TD>
- <TD>
- <span fckLang="DlgImgHeight">Height</span><br>
- <input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
- </TD>
- </TR>
- </table>
- </TD>
- </TR>
- <tr>
- <td vAlign="top">
- <table cellSpacing="0" cellPadding="0" width="100%" border="0">
- <tr>
- <td valign="top" width="100%">
- <table cellSpacing="0" cellPadding="0" width="100%">
- <tr>
- <td><span fckLang="DlgImgPreview">Preview</span></td>
- </tr>
- <tr>
- <td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- <div id="divUpload" style="DISPLAY: none">
- <form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
- <span fckLang="DlgLnkUpload">Upload</span><br />
- <input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
- <br />
- <input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
- <script type="text/javascript">
- document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
- </script>
- </form>
- </div>
- <div id="divAdvanced" style="DISPLAY: none">
- <TABLE cellSpacing="0" cellPadding="0" border="0">
- <TR>
- <TD nowrap>
- <span fckLang="DlgFlashScale">Scale</span><BR>
- <select id="cmbScale">
- <option value="" selected></option>
- <option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
- <option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
- <option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
- </select></TD>
- <TD>&nbsp;&nbsp;&nbsp; &nbsp;
- </TD>
- <td valign="bottom">
- <table>
- <tr>
- <td><input id="chkAutoPlay" type="checkbox" checked></td>
- <td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
- <td><input id="chkLoop" type="checkbox" checked></td>
- <td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
- <td><input id="chkMenu" type="checkbox" checked></td>
- <td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
- </tr>
- </table>
- </td>
- </TR>
- </TABLE>
- <br>
- &nbsp;
- <table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
- <tr>
- <td vAlign="top" width="50%"><span fckLang="DlgGenId">Id</span><br>
- <input id="txtAttId" style="WIDTH: 100%" type="text">
- </td>
- <td>&nbsp;&nbsp;</td>
- <td vAlign="top" nowrap><span fckLang="DlgGenClass">Stylesheet Classes</span><br>
- <input id="txtAttClasses" style="WIDTH: 100%" type="text">
- </td>
- <td>&nbsp;&nbsp;</td>
- <td vAlign="top" nowrap width="50%">&nbsp;<span fckLang="DlgGenTitle">Advisory Title</span><br>
- <input id="txtAttTitle" style="WIDTH: 100%" type="text">
- </td>
- </tr>
- </table>
- <span fckLang="DlgGenStyle">Style</span><br>
- <input id="txtAttStyle" style="WIDTH: 100%" type="text">
- </div>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash.js
deleted file mode 100644
index ca62ad0ae..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash.js
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Scripts related to the Flash dialog window (see fck_flash.html).
- */
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKConfig = oEditor.FCKConfig ;
-var FCKTools = oEditor.FCKTools ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
-
-if ( FCKConfig.FlashUpload )
- dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
-
-if ( !FCKConfig.FlashDlgHideAdvanced )
- dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
- ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
- ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
- ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
-}
-
-// Get the selected flash embed (if available).
-var oFakeImage = dialog.Selection.GetSelectedElement() ;
-var oEmbed ;
-
-if ( oFakeImage )
-{
- if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
- oEmbed = FCK.GetRealElement( oFakeImage ) ;
- else
- oFakeImage = null ;
-}
-
-window.onload = function()
-{
- // Translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- // Load the selected element information (if any).
- LoadSelection() ;
-
- // Show/Hide the "Browse Server" button.
- GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none' ;
-
- // Set the actual uploader URL.
- if ( FCKConfig.FlashUpload )
- GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
-
- dialog.SetAutoSize( true ) ;
-
- // Activate the "OK" button.
- dialog.SetOkButton( true ) ;
-
- SelectField( 'txtUrl' ) ;
-}
-
-function LoadSelection()
-{
- if ( ! oEmbed ) return ;
-
- GetE('txtUrl').value = GetAttribute( oEmbed, 'src', '' ) ;
- GetE('txtWidth').value = GetAttribute( oEmbed, 'width', '' ) ;
- GetE('txtHeight').value = GetAttribute( oEmbed, 'height', '' ) ;
-
- // Get Advances Attributes
- GetE('txtAttId').value = oEmbed.id ;
- GetE('chkAutoPlay').checked = GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
- GetE('chkLoop').checked = GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
- GetE('chkMenu').checked = GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
- GetE('cmbScale').value = GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
-
- GetE('txtAttTitle').value = oEmbed.title ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
- GetE('txtAttStyle').value = oEmbed.style.cssText ;
- }
- else
- {
- GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
- GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) || '' ;
- }
-
- UpdatePreview() ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
- if ( GetE('txtUrl').value.length == 0 )
- {
- dialog.SetSelectedTab( 'Info' ) ;
- GetE('txtUrl').focus() ;
-
- alert( oEditor.FCKLang.DlgAlertUrl ) ;
-
- return false ;
- }
-
- oEditor.FCKUndo.SaveUndoStep() ;
- if ( !oEmbed )
- {
- oEmbed = FCK.EditorDocument.createElement( 'EMBED' ) ;
- oFakeImage = null ;
- }
- UpdateEmbed( oEmbed ) ;
-
- if ( !oFakeImage )
- {
- oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
- oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
- oFakeImage = FCK.InsertElement( oFakeImage ) ;
- }
-
- oEditor.FCKEmbedAndObjectProcessor.RefreshView( oFakeImage, oEmbed ) ;
-
- return true ;
-}
-
-function UpdateEmbed( e )
-{
- SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;
- SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
-
- SetAttribute( e, 'src', GetE('txtUrl').value ) ;
- SetAttribute( e, "width" , GetE('txtWidth').value ) ;
- SetAttribute( e, "height", GetE('txtHeight').value ) ;
-
- // Advances Attributes
-
- SetAttribute( e, 'id' , GetE('txtAttId').value ) ;
- SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
-
- SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
- SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
- SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
-
- SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
- e.style.cssText = GetE('txtAttStyle').value ;
- }
- else
- {
- SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
- SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
- }
-}
-
-var ePreview ;
-
-function SetPreviewElement( previewEl )
-{
- ePreview = previewEl ;
-
- if ( GetE('txtUrl').value.length > 0 )
- UpdatePreview() ;
-}
-
-function UpdatePreview()
-{
- if ( !ePreview )
- return ;
-
- while ( ePreview.firstChild )
- ePreview.removeChild( ePreview.firstChild ) ;
-
- if ( GetE('txtUrl').value.length == 0 )
- ePreview.innerHTML = '&nbsp;' ;
- else
- {
- var oDoc = ePreview.ownerDocument || ePreview.document ;
- var e = oDoc.createElement( 'EMBED' ) ;
-
- SetAttribute( e, 'src', GetE('txtUrl').value ) ;
- SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
- SetAttribute( e, 'width', '100%' ) ;
- SetAttribute( e, 'height', '100%' ) ;
-
- ePreview.appendChild( e ) ;
- }
-}
-
-// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
-
-function BrowseServer()
-{
- OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
-}
-
-function SetUrl( url, width, height )
-{
- GetE('txtUrl').value = url ;
-
- if ( width )
- GetE('txtWidth').value = width ;
-
- if ( height )
- GetE('txtHeight').value = height ;
-
- UpdatePreview() ;
-
- dialog.SetSelectedTab( 'Info' ) ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
- // Remove animation
- window.parent.Throbber.Hide() ;
- GetE( 'divUpload' ).style.display = '' ;
-
- switch ( errorNumber )
- {
- case 0 : // No errors
- alert( 'Your file has been successfully uploaded' ) ;
- break ;
- case 1 : // Custom error
- alert( customMsg ) ;
- return ;
- case 101 : // Custom warning
- alert( customMsg ) ;
- break ;
- case 201 :
- alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
- break ;
- case 202 :
- alert( 'Invalid file type' ) ;
- return ;
- case 203 :
- alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
- return ;
- case 500 :
- alert( 'The connector is disabled' ) ;
- break ;
- default :
- alert( 'Error on file upload. Error number: ' + errorNumber ) ;
- return ;
- }
-
- SetUrl( fileUrl ) ;
- GetE('frmUpload').reset() ;
-}
-
-var oUploadAllowedExtRegex = new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
-var oUploadDeniedExtRegex = new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
-
-function CheckUpload()
-{
- var sFile = GetE('txtUploadFile').value ;
-
- if ( sFile.length == 0 )
- {
- alert( 'Please select a file to upload' ) ;
- return false ;
- }
-
- if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
- ( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
- {
- OnUploadCompleted( 202 ) ;
- return false ;
- }
-
- // Show animation
- window.parent.Throbber.Show( 100 ) ;
- GetE( 'divUpload' ).style.display = 'none' ;
-
- return true ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html
deleted file mode 100644
index a5905216c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Preview page for the Flash dialog window.
--->
-<html>
- <head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="robots" content="noindex, nofollow">
- <script src="../common/fck_dialog_common.js" type="text/javascript"></script>
- <script language="javascript">
-
-var FCKTools = window.parent.FCKTools ;
-var FCKConfig = window.parent.FCKConfig ;
-
-// Sets the Skin CSS
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( '../' ) ) ) ;
-
-if ( window.parent.FCKConfig.BaseHref.length > 0 )
- document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
-
-window.onload = function()
-{
- window.parent.SetPreviewElement( document.body ) ;
-}
-
- </script>
- </head>
- <body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_form.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_form.html
deleted file mode 100644
index c724282ed..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_form.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Form dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( 'FORM' ) ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtAction').value = oActiveEl.getAttribute( 'action', 2 ) ;
- GetE('txtMethod').value = oActiveEl.method ;
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- if ( !oActiveEl )
- {
- oActiveEl = oEditor.FCK.InsertElement( 'form' ) ;
-
- if ( oEditor.FCKBrowserInfo.IsGeckoLike )
- oEditor.FCKTools.AppendBogusBr( oActiveEl ) ;
- }
-
- oActiveEl.name = GetE('txtName').value ;
- SetAttribute( oActiveEl, 'action', GetE('txtAction').value ) ;
- oActiveEl.method = GetE('txtMethod').value ;
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table width="100%" style="height: 100%">
- <tr>
- <td align="center">
- <table cellspacing="0" cellpadding="0" width="80%" border="0">
- <tr>
- <td>
- <span fcklang="DlgFormName">Name</span><br />
- <input style="width: 100%" type="text" id="txtName" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgFormAction">Action</span><br />
- <input style="width: 100%" type="text" id="txtAction" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgFormMethod">Method</span><br />
- <select id="txtMethod">
- <option value="get" selected="selected">GET</option>
- <option value="post">POST</option>
- </select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_hiddenfield.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_hiddenfield.html
deleted file mode 100644
index 2d0e0b55b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_hiddenfield.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Hidden Field dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>Hidden Field Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCK = oEditor.FCK ;
-
-// Gets the document DOM
-var oDOM = FCK.EditorDocument ;
-
-// Get the selected flash embed (if available).
-var oFakeImage = dialog.Selection.GetSelectedElement() ;
-var oActiveEl ;
-
-if ( oFakeImage )
-{
- if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckinputhidden') )
- oActiveEl = FCK.GetRealElement( oFakeImage ) ;
- else
- oFakeImage = null ;
-}
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtValue').value = oActiveEl.value ;
- }
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'hidden' } ) ;
-
- SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
- if ( !oFakeImage )
- {
- oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__InputHidden', oActiveEl ) ;
- oFakeImage.setAttribute( '_fckinputhidden', 'true', 0 ) ;
-
- oActiveEl.parentNode.insertBefore( oFakeImage, oActiveEl ) ;
- oActiveEl.parentNode.removeChild( oActiveEl ) ;
- }
- else
- oEditor.FCKUndo.SaveUndoStep() ;
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden" scroll="no">
- <table height="100%" width="100%">
- <tr>
- <td align="center">
- <table border="0" class="inhoud" cellpadding="0" cellspacing="0" width="80%">
- <tr>
- <td>
- <span fcklang="DlgHiddenName">Name</span><br />
- <input type="text" size="20" id="txtName" style="width: 100%" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgHiddenValue">Value</span><br />
- <input type="text" size="30" id="txtValue" style="width: 100%" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image.html
deleted file mode 100644
index 75681bf2c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image.html
+++ /dev/null
@@ -1,258 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Image Properties dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>Image Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script src="fck_image/fck_image.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
-
- </script>
-</head>
-<body scroll="no" style="overflow: hidden">
- <div id="divInfo">
- <table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
- <tr>
- <td>
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td width="100%">
- <span fcklang="DlgImgURL">URL</span>
- </td>
- <td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
- &nbsp;
- <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
- fcklang="DlgBtnBrowseServer" />
- </td>
- </tr>
- <tr>
- <td valign="top">
- <input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgImgAlt">Short Description</span><br />
- <input id="txtAlt" style="width: 100%" type="text" /><br />
- </td>
- </tr>
- <tr height="100%">
- <td valign="top">
- <table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
- <tr>
- <td valign="top">
- <br />
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgImgWidth">Width</span>&nbsp;</td>
- <td>
- <input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
- <td rowspan="2">
- <div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
- onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
- onclick="SwitchLock(this);">
- </div>
- </td>
- <td rowspan="2">
- <div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
- onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
- </div>
- </td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgImgHeight">Height</span>&nbsp;</td>
- <td>
- <input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
- </tr>
- </table>
- <br />
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgImgBorder">Border</span>&nbsp;</td>
- <td>
- <input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgImgHSpace">HSpace</span>&nbsp;</td>
- <td>
- <input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgImgVSpace">VSpace</span>&nbsp;</td>
- <td>
- <input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgImgAlign">Align</span>&nbsp;</td>
- <td>
- <select id="cmbAlign" onchange="UpdatePreview();">
- <option value="" selected="selected"></option>
- <option fcklang="DlgImgAlignLeft" value="left">Left</option>
- <option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
- <option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
- <option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
- <option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
- <option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
- <option fcklang="DlgImgAlignRight" value="right">Right</option>
- <option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
- <option fcklang="DlgImgAlignTop" value="top">Top</option>
- </select>
- </td>
- </tr>
- </table>
- </td>
- <td>
- &nbsp;&nbsp;&nbsp;</td>
- <td width="100%" valign="top">
- <table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
- <tr>
- <td>
- <span fcklang="DlgImgPreview">Preview</span></td>
- </tr>
- <tr>
- <td valign="top">
- <iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
- marginheight="0" marginwidth="0"></iframe>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- <div id="divUpload" style="display: none">
- <form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
- action="" onsubmit="return CheckUpload();">
- <span fcklang="DlgLnkUpload">Upload</span><br />
- <input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
- <br />
- <input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
- <script type="text/javascript">
- document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
- </script>
- </form>
- </div>
- <div id="divLink" style="display: none">
- <table cellspacing="1" cellpadding="1" border="0" width="100%">
- <tr>
- <td>
- <div>
- <span fcklang="DlgLnkURL">URL</span><br />
- <input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
- </div>
- <div id="divLnkBrowseServer" align="right">
- <input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
- </div>
- <div>
- <span fcklang="DlgLnkTarget">Target</span><br />
- <select id="cmbLnkTarget">
- <option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
- <option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
- <option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
- <option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
- <option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
- </select>
- </div>
- </td>
- </tr>
- </table>
- </div>
- <div id="divAdvanced" style="display: none">
- <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
- <tr>
- <td valign="top" width="50%">
- <span fcklang="DlgGenId">Id</span><br />
- <input id="txtAttId" style="width: 100%" type="text" />
- </td>
- <td width="1">
- &nbsp;&nbsp;</td>
- <td valign="top">
- <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
- <tr>
- <td width="60%">
- <span fcklang="DlgGenLangDir">Language Direction</span><br />
- <select id="cmbAttLangDir" style="width: 100%">
- <option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
- <option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
- <option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
- </select>
- </td>
- <td width="1%">
- &nbsp;&nbsp;</td>
- <td nowrap="nowrap">
- <span fcklang="DlgGenLangCode">Language Code</span><br />
- <input id="txtAttLangCode" style="width: 100%" type="text" />&nbsp;
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="3">
- &nbsp;</td>
- </tr>
- <tr>
- <td colspan="3">
- <span fcklang="DlgGenLongDescr">Long Description URL</span><br />
- <input id="txtLongDesc" style="width: 100%" type="text" />
- </td>
- </tr>
- <tr>
- <td colspan="3">
- &nbsp;</td>
- </tr>
- <tr>
- <td valign="top">
- <span fcklang="DlgGenClass">Stylesheet Classes</span><br />
- <input id="txtAttClasses" style="width: 100%" type="text" />
- </td>
- <td>
- </td>
- <td valign="top">
- &nbsp;<span fcklang="DlgGenTitle">Advisory Title</span><br />
- <input id="txtAttTitle" style="width: 100%" type="text" />
- </td>
- </tr>
- </table>
- <span fcklang="DlgGenStyle">Style</span><br />
- <input id="txtAttStyle" style="width: 100%" type="text" />
- </div>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image.js
deleted file mode 100644
index a5cf73b6e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image.js
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Scripts related to the Image dialog window (see fck_image.html).
- */
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKConfig = oEditor.FCKConfig ;
-var FCKDebug = oEditor.FCKDebug ;
-var FCKTools = oEditor.FCKTools ;
-
-var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-dialog.AddTab( 'Info', FCKLang.DlgImgInfoTab ) ;
-
-if ( !bImageButton && !FCKConfig.ImageDlgHideLink )
- dialog.AddTab( 'Link', FCKLang.DlgImgLinkTab ) ;
-
-if ( FCKConfig.ImageUpload )
- dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
-
-if ( !FCKConfig.ImageDlgHideAdvanced )
- dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
- ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
- ShowE('divLink' , ( tabCode == 'Link' ) ) ;
- ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
- ShowE('divAdvanced' , ( tabCode == 'Advanced' ) ) ;
-}
-
-// Get the selected image (if available).
-var oImage = dialog.Selection.GetSelectedElement() ;
-
-if ( oImage && oImage.tagName != 'IMG' && !( oImage.tagName == 'INPUT' && oImage.type == 'image' ) )
- oImage = null ;
-
-// Get the active link.
-var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
-
-var oImageOriginal ;
-
-function UpdateOriginal( resetSize )
-{
- if ( !eImgPreview )
- return ;
-
- if ( GetE('txtUrl').value.length == 0 )
- {
- oImageOriginal = null ;
- return ;
- }
-
- oImageOriginal = document.createElement( 'IMG' ) ; // new Image() ;
-
- if ( resetSize )
- {
- oImageOriginal.onload = function()
- {
- this.onload = null ;
- ResetSizes() ;
- }
- }
-
- oImageOriginal.src = eImgPreview.src ;
-}
-
-var bPreviewInitialized ;
-
-window.onload = function()
-{
- // Translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- GetE('btnLockSizes').title = FCKLang.DlgImgLockRatio ;
- GetE('btnResetSize').title = FCKLang.DlgBtnResetSize ;
-
- // Load the selected element information (if any).
- LoadSelection() ;
-
- // Show/Hide the "Browse Server" button.
- GetE('tdBrowse').style.display = FCKConfig.ImageBrowser ? '' : 'none' ;
- GetE('divLnkBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
-
- UpdateOriginal() ;
-
- // Set the actual uploader URL.
- if ( FCKConfig.ImageUpload )
- GetE('frmUpload').action = FCKConfig.ImageUploadURL ;
-
- dialog.SetAutoSize( true ) ;
-
- // Activate the "OK" button.
- dialog.SetOkButton( true ) ;
-
- SelectField( 'txtUrl' ) ;
-}
-
-function LoadSelection()
-{
- if ( ! oImage ) return ;
-
- var sUrl = oImage.getAttribute( '_fcksavedurl' ) ;
- if ( sUrl == null )
- sUrl = GetAttribute( oImage, 'src', '' ) ;
-
- GetE('txtUrl').value = sUrl ;
- GetE('txtAlt').value = GetAttribute( oImage, 'alt', '' ) ;
- GetE('txtVSpace').value = GetAttribute( oImage, 'vspace', '' ) ;
- GetE('txtHSpace').value = GetAttribute( oImage, 'hspace', '' ) ;
- GetE('txtBorder').value = GetAttribute( oImage, 'border', '' ) ;
- GetE('cmbAlign').value = GetAttribute( oImage, 'align', '' ) ;
-
- var iWidth, iHeight ;
-
- var regexSize = /^\s*(\d+)px\s*$/i ;
-
- if ( oImage.style.width )
- {
- var aMatchW = oImage.style.width.match( regexSize ) ;
- if ( aMatchW )
- {
- iWidth = aMatchW[1] ;
- oImage.style.width = '' ;
- SetAttribute( oImage, 'width' , iWidth ) ;
- }
- }
-
- if ( oImage.style.height )
- {
- var aMatchH = oImage.style.height.match( regexSize ) ;
- if ( aMatchH )
- {
- iHeight = aMatchH[1] ;
- oImage.style.height = '' ;
- SetAttribute( oImage, 'height', iHeight ) ;
- }
- }
-
- GetE('txtWidth').value = iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
- GetE('txtHeight').value = iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
-
- // Get Advances Attributes
- GetE('txtAttId').value = oImage.id ;
- GetE('cmbAttLangDir').value = oImage.dir ;
- GetE('txtAttLangCode').value = oImage.lang ;
- GetE('txtAttTitle').value = oImage.title ;
- GetE('txtLongDesc').value = oImage.longDesc ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- GetE('txtAttClasses').value = oImage.className || '' ;
- GetE('txtAttStyle').value = oImage.style.cssText ;
- }
- else
- {
- GetE('txtAttClasses').value = oImage.getAttribute('class',2) || '' ;
- GetE('txtAttStyle').value = oImage.getAttribute('style',2) ;
- }
-
- if ( oLink )
- {
- var sLinkUrl = oLink.getAttribute( '_fcksavedurl' ) ;
- if ( sLinkUrl == null )
- sLinkUrl = oLink.getAttribute('href',2) ;
-
- GetE('txtLnkUrl').value = sLinkUrl ;
- GetE('cmbLnkTarget').value = oLink.target ;
- }
-
- UpdatePreview() ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
- if ( GetE('txtUrl').value.length == 0 )
- {
- dialog.SetSelectedTab( 'Info' ) ;
- GetE('txtUrl').focus() ;
-
- alert( FCKLang.DlgImgAlertUrl ) ;
-
- return false ;
- }
-
- var bHasImage = ( oImage != null ) ;
-
- if ( bHasImage && bImageButton && oImage.tagName == 'IMG' )
- {
- if ( confirm( 'Do you want to transform the selected image on a image button?' ) )
- oImage = null ;
- }
- else if ( bHasImage && !bImageButton && oImage.tagName == 'INPUT' )
- {
- if ( confirm( 'Do you want to transform the selected image button on a simple image?' ) )
- oImage = null ;
- }
-
- oEditor.FCKUndo.SaveUndoStep() ;
- if ( !bHasImage )
- {
- if ( bImageButton )
- {
- oImage = FCK.EditorDocument.createElement( 'input' ) ;
- oImage.type = 'image' ;
- oImage = FCK.InsertElement( oImage ) ;
- }
- else
- oImage = FCK.InsertElement( 'img' ) ;
- }
-
- UpdateImage( oImage ) ;
-
- var sLnkUrl = GetE('txtLnkUrl').value.Trim() ;
-
- if ( sLnkUrl.length == 0 )
- {
- if ( oLink )
- FCK.ExecuteNamedCommand( 'Unlink' ) ;
- }
- else
- {
- if ( oLink ) // Modifying an existent link.
- oLink.href = sLnkUrl ;
- else // Creating a new link.
- {
- if ( !bHasImage )
- oEditor.FCKSelection.SelectNode( oImage ) ;
-
- oLink = oEditor.FCK.CreateLink( sLnkUrl )[0] ;
-
- if ( !bHasImage )
- {
- oEditor.FCKSelection.SelectNode( oLink ) ;
- oEditor.FCKSelection.Collapse( false ) ;
- }
- }
-
- SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
- SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
- }
-
- return true ;
-}
-
-function UpdateImage( e, skipId )
-{
- e.src = GetE('txtUrl').value ;
- SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
- SetAttribute( e, "alt" , GetE('txtAlt').value ) ;
- SetAttribute( e, "width" , GetE('txtWidth').value ) ;
- SetAttribute( e, "height", GetE('txtHeight').value ) ;
- SetAttribute( e, "vspace", GetE('txtVSpace').value ) ;
- SetAttribute( e, "hspace", GetE('txtHSpace').value ) ;
- SetAttribute( e, "border", GetE('txtBorder').value ) ;
- SetAttribute( e, "align" , GetE('cmbAlign').value ) ;
-
- // Advances Attributes
-
- if ( ! skipId )
- SetAttribute( e, 'id', GetE('txtAttId').value ) ;
-
- SetAttribute( e, 'dir' , GetE('cmbAttLangDir').value ) ;
- SetAttribute( e, 'lang' , GetE('txtAttLangCode').value ) ;
- SetAttribute( e, 'title' , GetE('txtAttTitle').value ) ;
- SetAttribute( e, 'longDesc' , GetE('txtLongDesc').value ) ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- e.className = GetE('txtAttClasses').value ;
- e.style.cssText = GetE('txtAttStyle').value ;
- }
- else
- {
- SetAttribute( e, 'class' , GetE('txtAttClasses').value ) ;
- SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
- }
-}
-
-var eImgPreview ;
-var eImgPreviewLink ;
-
-function SetPreviewElements( imageElement, linkElement )
-{
- eImgPreview = imageElement ;
- eImgPreviewLink = linkElement ;
-
- UpdatePreview() ;
- UpdateOriginal() ;
-
- bPreviewInitialized = true ;
-}
-
-function UpdatePreview()
-{
- if ( !eImgPreview || !eImgPreviewLink )
- return ;
-
- if ( GetE('txtUrl').value.length == 0 )
- eImgPreviewLink.style.display = 'none' ;
- else
- {
- UpdateImage( eImgPreview, true ) ;
-
- if ( GetE('txtLnkUrl').value.Trim().length > 0 )
- eImgPreviewLink.href = 'javascript:void(null);' ;
- else
- SetAttribute( eImgPreviewLink, 'href', '' ) ;
-
- eImgPreviewLink.style.display = '' ;
- }
-}
-
-var bLockRatio = true ;
-
-function SwitchLock( lockButton )
-{
- bLockRatio = !bLockRatio ;
- lockButton.className = bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ;
- lockButton.title = bLockRatio ? 'Lock sizes' : 'Unlock sizes' ;
-
- if ( bLockRatio )
- {
- if ( GetE('txtWidth').value.length > 0 )
- OnSizeChanged( 'Width', GetE('txtWidth').value ) ;
- else
- OnSizeChanged( 'Height', GetE('txtHeight').value ) ;
- }
-}
-
-// Fired when the width or height input texts change
-function OnSizeChanged( dimension, value )
-{
- // Verifies if the aspect ration has to be maintained
- if ( oImageOriginal && bLockRatio )
- {
- var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
-
- if ( value.length == 0 || isNaN( value ) )
- {
- e.value = '' ;
- return ;
- }
-
- if ( dimension == 'Width' )
- value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value / oImageOriginal.width ) ) ;
- else
- value = value == 0 ? 0 : Math.round( oImageOriginal.width * ( value / oImageOriginal.height ) ) ;
-
- if ( !isNaN( value ) )
- e.value = value ;
- }
-
- UpdatePreview() ;
-}
-
-// Fired when the Reset Size button is clicked
-function ResetSizes()
-{
- if ( ! oImageOriginal ) return ;
- if ( oEditor.FCKBrowserInfo.IsGecko && !oImageOriginal.complete )
- {
- setTimeout( ResetSizes, 50 ) ;
- return ;
- }
-
- GetE('txtWidth').value = oImageOriginal.width ;
- GetE('txtHeight').value = oImageOriginal.height ;
-
- UpdatePreview() ;
-}
-
-function BrowseServer()
-{
- OpenServerBrowser(
- 'Image',
- FCKConfig.ImageBrowserURL,
- FCKConfig.ImageBrowserWindowWidth,
- FCKConfig.ImageBrowserWindowHeight ) ;
-}
-
-function LnkBrowseServer()
-{
- OpenServerBrowser(
- 'Link',
- FCKConfig.LinkBrowserURL,
- FCKConfig.LinkBrowserWindowWidth,
- FCKConfig.LinkBrowserWindowHeight ) ;
-}
-
-function OpenServerBrowser( type, url, width, height )
-{
- sActualBrowser = type ;
- OpenFileBrowser( url, width, height ) ;
-}
-
-var sActualBrowser ;
-
-function SetUrl( url, width, height, alt )
-{
- if ( sActualBrowser == 'Link' )
- {
- GetE('txtLnkUrl').value = url ;
- UpdatePreview() ;
- }
- else
- {
- GetE('txtUrl').value = url ;
- GetE('txtWidth').value = width ? width : '' ;
- GetE('txtHeight').value = height ? height : '' ;
-
- if ( alt )
- GetE('txtAlt').value = alt;
-
- UpdatePreview() ;
- UpdateOriginal( true ) ;
- }
-
- dialog.SetSelectedTab( 'Info' ) ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
- // Remove animation
- window.parent.Throbber.Hide() ;
- GetE( 'divUpload' ).style.display = '' ;
-
- switch ( errorNumber )
- {
- case 0 : // No errors
- alert( 'Your file has been successfully uploaded' ) ;
- break ;
- case 1 : // Custom error
- alert( customMsg ) ;
- return ;
- case 101 : // Custom warning
- alert( customMsg ) ;
- break ;
- case 201 :
- alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
- break ;
- case 202 :
- alert( 'Invalid file type' ) ;
- return ;
- case 203 :
- alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
- return ;
- case 500 :
- alert( 'The connector is disabled' ) ;
- break ;
- default :
- alert( 'Error on file upload. Error number: ' + errorNumber ) ;
- return ;
- }
-
- sActualBrowser = '' ;
- SetUrl( fileUrl ) ;
- GetE('frmUpload').reset() ;
-}
-
-var oUploadAllowedExtRegex = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;
-var oUploadDeniedExtRegex = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;
-
-function CheckUpload()
-{
- var sFile = GetE('txtUploadFile').value ;
-
- if ( sFile.length == 0 )
- {
- alert( 'Please select a file to upload' ) ;
- return false ;
- }
-
- if ( ( FCKConfig.ImageUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
- ( FCKConfig.ImageUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
- {
- OnUploadCompleted( 202 ) ;
- return false ;
- }
-
- // Show animation
- window.parent.Throbber.Show( 100 ) ;
- GetE( 'divUpload' ).style.display = 'none' ;
-
- return true ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image_preview.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image_preview.html
deleted file mode 100644
index 1c6fe5287..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_image/fck_image_preview.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Preview page for the Image dialog window.
- *
- * Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="../common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var FCKTools = window.parent.FCKTools ;
-var FCKConfig = window.parent.FCKConfig ;
-
-// Set the preview CSS
-document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaCSS ) ) ;
-document.write( FCKTools.GetStyleHtml( FCKConfig.EditorAreaStyles ) ) ;
-
-if ( window.parent.FCKConfig.BaseHref.length > 0 )
- document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
-
-window.onload = function()
-{
- window.parent.SetPreviewElements(
- document.getElementById( 'imgPreview' ),
- document.getElementById( 'lnkPreview' ) ) ;
-}
-
- </script>
-</head>
-<body>
- <div>
- <a id="lnkPreview" onclick="return false;" style="cursor: default">
- <img id="imgPreview" onload="window.parent.UpdateOriginal();"
- style="display: none" alt="" /></a>Lorem ipsum dolor sit amet, consectetuer adipiscing
- elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus
- a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis,
- nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed
- velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper
- nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices
- a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus
- faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget
- tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit,
- tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis
- id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus,
- eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur
- ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.
- </div>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link.html
deleted file mode 100644
index 061c84e14..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link.html
+++ /dev/null
@@ -1,295 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Link dialog window.
--->
-<html>
- <head>
- <title>Link Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script src="fck_link/fck_link.js" type="text/javascript"></script>
- </head>
- <body scroll="no" style="OVERFLOW: hidden">
- <div id="divInfo" style="DISPLAY: none">
- <span fckLang="DlgLnkType">Link Type</span><br />
- <select id="cmbLinkType" onchange="SetLinkType(this.value);">
- <option value="url" fckLang="DlgLnkTypeURL" selected="selected">URL</option>
- <option value="anchor" fckLang="DlgLnkTypeAnchor">Anchor in this page</option>
- <option value="email" fckLang="DlgLnkTypeEMail">E-Mail</option>
- </select>
- <br />
- <br />
- <div id="divLinkTypeUrl">
- <table cellspacing="0" cellpadding="0" width="100%" border="0" dir="ltr">
- <tr>
- <td nowrap="nowrap">
- <span fckLang="DlgLnkProto">Protocol</span><br />
- <select id="cmbLinkProtocol">
- <option value="http://" selected="selected">http://</option>
- <option value="https://">https://</option>
- <option value="ftp://">ftp://</option>
- <option value="news://">news://</option>
- <option value="" fckLang="DlgLnkProtoOther">&lt;other&gt;</option>
- </select>
- </td>
- <td nowrap="nowrap">&nbsp;</td>
- <td nowrap="nowrap" width="100%">
- <span fckLang="DlgLnkURL">URL</span><br />
- <input id="txtUrl" style="WIDTH: 100%" type="text" onkeyup="OnUrlChange();" onchange="OnUrlChange();" />
- </td>
- </tr>
- </table>
- <br />
- <div id="divBrowseServer">
- <input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="BrowseServer();" />
- </div>
- </div>
- <div id="divLinkTypeAnchor" style="DISPLAY: none" align="center">
- <div id="divSelAnchor" style="DISPLAY: none">
- <table cellspacing="0" cellpadding="0" border="0" width="70%">
- <tr>
- <td colspan="3">
- <span fckLang="DlgLnkAnchorSel">Select an Anchor</span>
- </td>
- </tr>
- <tr>
- <td width="50%">
- <span fckLang="DlgLnkAnchorByName">By Anchor Name</span><br />
- <select id="cmbAnchorName" onchange="GetE('cmbAnchorId').value='';" style="WIDTH: 100%">
- <option value="" selected="selected"></option>
- </select>
- </td>
- <td>&nbsp;&nbsp;&nbsp;</td>
- <td width="50%">
- <span fckLang="DlgLnkAnchorById">By Element Id</span><br />
- <select id="cmbAnchorId" onchange="GetE('cmbAnchorName').value='';" style="WIDTH: 100%">
- <option value="" selected="selected"></option>
- </select>
- </td>
- </tr>
- </table>
- </div>
- <div id="divNoAnchor" style="DISPLAY: none">
- <span fckLang="DlgLnkNoAnchors">&lt;No anchors available in the document&gt;</span>
- </div>
- </div>
- <div id="divLinkTypeEMail" style="DISPLAY: none">
- <span fckLang="DlgLnkEMail">E-Mail Address</span><br />
- <input id="txtEMailAddress" style="WIDTH: 100%" type="text" /><br />
- <span fckLang="DlgLnkEMailSubject">Message Subject</span><br />
- <input id="txtEMailSubject" style="WIDTH: 100%" type="text" /><br />
- <span fckLang="DlgLnkEMailBody">Message Body</span><br />
- <textarea id="txtEMailBody" style="WIDTH: 100%" rows="3" cols="20"></textarea>
- </div>
- </div>
- <div id="divUpload" style="DISPLAY: none">
- <form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
- <span fckLang="DlgLnkUpload">Upload</span><br />
- <input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
- <br />
- <input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
- <script type="text/javascript">
- document.write( '<iframe name="UploadWindow" style="display: none" src="' + FCKTools.GetVoidUrl() + '"><\/iframe>' ) ;
- </script>
- </form>
- </div>
- <div id="divTarget" style="DISPLAY: none">
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td nowrap="nowrap">
- <span fckLang="DlgLnkTarget">Target</span><br />
- <select id="cmbTarget" onchange="SetTarget(this.value);">
- <option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
- <option value="frame" fckLang="DlgLnkTargetFrame">&lt;frame&gt;</option>
- <option value="popup" fckLang="DlgLnkTargetPopup">&lt;popup window&gt;</option>
- <option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
- <option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
- <option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
- <option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
- </select>
- </td>
- <td>&nbsp;</td>
- <td id="tdTargetFrame" nowrap="nowrap" width="100%">
- <span fckLang="DlgLnkTargetFrameName">Target Frame Name</span><br />
- <input id="txtTargetFrame" style="WIDTH: 100%" type="text" onkeyup="OnTargetNameChange();"
- onchange="OnTargetNameChange();" />
- </td>
- <td id="tdPopupName" style="DISPLAY: none" nowrap="nowrap" width="100%">
- <span fckLang="DlgLnkPopWinName">Popup Window Name</span><br />
- <input id="txtPopupName" style="WIDTH: 100%" type="text" />
- </td>
- </tr>
- </table>
- <br />
- <table id="tablePopupFeatures" style="DISPLAY: none" cellspacing="0" cellpadding="0" align="center"
- border="0">
- <tr>
- <td>
- <span fckLang="DlgLnkPopWinFeat">Popup Window Features</span><br />
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td valign="top" nowrap="nowrap" width="50%">
- <input id="chkPopupResizable" name="chkFeature" value="resizable" type="checkbox" /><label for="chkPopupResizable" fckLang="DlgLnkPopResize">Resizable</label><br />
- <input id="chkPopupLocationBar" name="chkFeature" value="location" type="checkbox" /><label for="chkPopupLocationBar" fckLang="DlgLnkPopLocation">Location
- Bar</label><br />
- <input id="chkPopupManuBar" name="chkFeature" value="menubar" type="checkbox" /><label for="chkPopupManuBar" fckLang="DlgLnkPopMenu">Menu
- Bar</label><br />
- <input id="chkPopupScrollBars" name="chkFeature" value="scrollbars" type="checkbox" /><label for="chkPopupScrollBars" fckLang="DlgLnkPopScroll">Scroll
- Bars</label>
- </td>
- <td></td>
- <td valign="top" nowrap="nowrap" width="50%">
- <input id="chkPopupStatusBar" name="chkFeature" value="status" type="checkbox" /><label for="chkPopupStatusBar" fckLang="DlgLnkPopStatus">Status
- Bar</label><br />
- <input id="chkPopupToolbar" name="chkFeature" value="toolbar" type="checkbox" /><label for="chkPopupToolbar" fckLang="DlgLnkPopToolbar">Toolbar</label><br />
- <input id="chkPopupFullScreen" name="chkFeature" value="fullscreen" type="checkbox" /><label for="chkPopupFullScreen" fckLang="DlgLnkPopFullScrn">Full
- Screen (IE)</label><br />
- <input id="chkPopupDependent" name="chkFeature" value="dependent" type="checkbox" /><label for="chkPopupDependent" fckLang="DlgLnkPopDependent">Dependent
- (Netscape)</label>
- </td>
- </tr>
- <tr>
- <td valign="top" nowrap="nowrap" width="50%">&nbsp;</td>
- <td></td>
- <td valign="top" nowrap="nowrap" width="50%"></td>
- </tr>
- <tr>
- <td valign="top">
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td nowrap="nowrap"><span fckLang="DlgLnkPopWidth">Width</span></td>
- <td>&nbsp;<input id="txtPopupWidth" type="text" maxlength="4" size="4" /></td>
- </tr>
- <tr>
- <td nowrap="nowrap"><span fckLang="DlgLnkPopHeight">Height</span></td>
- <td>&nbsp;<input id="txtPopupHeight" type="text" maxlength="4" size="4" /></td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;</td>
- <td valign="top">
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td nowrap="nowrap"><span fckLang="DlgLnkPopLeft">Left Position</span></td>
- <td>&nbsp;<input id="txtPopupLeft" type="text" maxlength="4" size="4" /></td>
- </tr>
- <tr>
- <td nowrap="nowrap"><span fckLang="DlgLnkPopTop">Top Position</span></td>
- <td>&nbsp;<input id="txtPopupTop" type="text" maxlength="4" size="4" /></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- <div id="divAttribs" style="DISPLAY: none">
- <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
- <tr>
- <td valign="top" width="50%">
- <span fckLang="DlgGenId">Id</span><br />
- <input id="txtAttId" style="WIDTH: 100%" type="text" />
- </td>
- <td width="1"></td>
- <td valign="top">
- <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
- <tr>
- <td width="60%">
- <span fckLang="DlgGenLangDir">Language Direction</span><br />
- <select id="cmbAttLangDir" style="WIDTH: 100%">
- <option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
- <option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
- <option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
- </select>
- </td>
- <td width="1%">&nbsp;&nbsp;&nbsp;</td>
- <td nowrap="nowrap"><span fckLang="DlgGenAccessKey">Access Key</span><br />
- <input id="txtAttAccessKey" style="WIDTH: 100%" type="text" maxlength="1" size="1" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="top" width="50%">
- <span fckLang="DlgGenName">Name</span><br />
- <input id="txtAttName" style="WIDTH: 100%" type="text" />
- </td>
- <td width="1"></td>
- <td valign="top">
- <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
- <tr>
- <td width="60%">
- <span fckLang="DlgGenLangCode">Language Code</span><br />
- <input id="txtAttLangCode" style="WIDTH: 100%" type="text" />
- </td>
- <td width="1%">&nbsp;&nbsp;&nbsp;</td>
- <td nowrap="nowrap">
- <span fckLang="DlgGenTabIndex">Tab Index</span><br />
- <input id="txtAttTabIndex" style="WIDTH: 100%" type="text" maxlength="5" size="5" />
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="top" width="50%">&nbsp;</td>
- <td width="1"></td>
- <td valign="top"></td>
- </tr>
- <tr>
- <td valign="top" width="50%">
- <span fckLang="DlgGenTitle">Advisory Title</span><br />
- <input id="txtAttTitle" style="WIDTH: 100%" type="text" />
- </td>
- <td width="1">&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">
- <span fckLang="DlgGenContType">Advisory Content Type</span><br />
- <input id="txtAttContentType" style="WIDTH: 100%" type="text" />
- </td>
- </tr>
- <tr>
- <td valign="top">
- <span fckLang="DlgGenClass">Stylesheet Classes</span><br />
- <input id="txtAttClasses" style="WIDTH: 100%" type="text" />
- </td>
- <td></td>
- <td valign="top">
- <span fckLang="DlgGenLinkCharset">Linked Resource Charset</span><br />
- <input id="txtAttCharSet" style="WIDTH: 100%" type="text" />
- </td>
- </tr>
- </table>
- <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
- <tr>
- <td>
- <span fckLang="DlgGenStyle">Style</span><br />
- <input id="txtAttStyle" style="WIDTH: 100%" type="text" />
- </td>
- </tr>
- </table>
- </div>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link/fck_link.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link/fck_link.js
deleted file mode 100644
index 1c661ebd1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_link/fck_link.js
+++ /dev/null
@@ -1,893 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Scripts related to the Link dialog window (see fck_link.html).
- */
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKConfig = oEditor.FCKConfig ;
-var FCKRegexLib = oEditor.FCKRegexLib ;
-var FCKTools = oEditor.FCKTools ;
-
-//#### Dialog Tabs
-
-// Set the dialog tabs.
-dialog.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
-
-if ( !FCKConfig.LinkDlgHideTarget )
- dialog.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
-
-if ( FCKConfig.LinkUpload )
- dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
-
-if ( !FCKConfig.LinkDlgHideAdvanced )
- dialog.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
-
-// Function called when a dialog tag is selected.
-function OnDialogTabChange( tabCode )
-{
- ShowE('divInfo' , ( tabCode == 'Info' ) ) ;
- ShowE('divTarget' , ( tabCode == 'Target' ) ) ;
- ShowE('divUpload' , ( tabCode == 'Upload' ) ) ;
- ShowE('divAttribs' , ( tabCode == 'Advanced' ) ) ;
-
- dialog.SetAutoSize( true ) ;
-}
-
-//#### Regular Expressions library.
-var oRegex = new Object() ;
-
-oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
-
-oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
-
-oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
-
-oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
-
-oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
-
-// Accessible popups
-oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
-
-oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
-
-//#### Parser Functions
-
-var oParser = new Object() ;
-
-// This method simply returns the two inputs in numerical order. You can even
-// provide strings, as the method would parseInt() the values.
-oParser.SortNumerical = function(a, b)
-{
- return parseInt( a, 10 ) - parseInt( b, 10 ) ;
-}
-
-oParser.ParseEMailParams = function(sParams)
-{
- // Initialize the oEMailParams object.
- var oEMailParams = new Object() ;
- oEMailParams.Subject = '' ;
- oEMailParams.Body = '' ;
-
- var aMatch = sParams.match( /(^|^\?|&)subject=([^&]+)/i ) ;
- if ( aMatch ) oEMailParams.Subject = decodeURIComponent( aMatch[2] ) ;
-
- aMatch = sParams.match( /(^|^\?|&)body=([^&]+)/i ) ;
- if ( aMatch ) oEMailParams.Body = decodeURIComponent( aMatch[2] ) ;
-
- return oEMailParams ;
-}
-
-// This method returns either an object containing the email info, or FALSE
-// if the parameter is not an email link.
-oParser.ParseEMailUri = function( sUrl )
-{
- // Initializes the EMailInfo object.
- var oEMailInfo = new Object() ;
- oEMailInfo.Address = '' ;
- oEMailInfo.Subject = '' ;
- oEMailInfo.Body = '' ;
-
- var aLinkInfo = sUrl.match( /^(\w+):(.*)$/ ) ;
- if ( aLinkInfo && aLinkInfo[1] == 'mailto' )
- {
- // This seems to be an unprotected email link.
- var aParts = aLinkInfo[2].match( /^([^\?]+)\??(.+)?/ ) ;
- if ( aParts )
- {
- // Set the e-mail address.
- oEMailInfo.Address = aParts[1] ;
-
- // Look for the optional e-mail parameters.
- if ( aParts[2] )
- {
- var oEMailParams = oParser.ParseEMailParams( aParts[2] ) ;
- oEMailInfo.Subject = oEMailParams.Subject ;
- oEMailInfo.Body = oEMailParams.Body ;
- }
- }
- return oEMailInfo ;
- }
- else if ( aLinkInfo && aLinkInfo[1] == 'javascript' )
- {
- // This may be a protected email.
-
- // Try to match the url against the EMailProtectionFunction.
- var func = FCKConfig.EMailProtectionFunction ;
- if ( func != null )
- {
- try
- {
- // Escape special chars.
- func = func.replace( /([\/^$*+.?()\[\]])/g, '\\$1' ) ;
-
- // Define the possible keys.
- var keys = new Array('NAME', 'DOMAIN', 'SUBJECT', 'BODY') ;
-
- // Get the order of the keys (hold them in the array <pos>) and
- // the function replaced by regular expression patterns.
- var sFunc = func ;
- var pos = new Array() ;
- for ( var i = 0 ; i < keys.length ; i ++ )
- {
- var rexp = new RegExp( keys[i] ) ;
- var p = func.search( rexp ) ;
- if ( p >= 0 )
- {
- sFunc = sFunc.replace( rexp, '\'([^\']*)\'' ) ;
- pos[pos.length] = p + ':' + keys[i] ;
- }
- }
-
- // Sort the available keys.
- pos.sort( oParser.SortNumerical ) ;
-
- // Replace the excaped single quotes in the url, such they do
- // not affect the regexp afterwards.
- aLinkInfo[2] = aLinkInfo[2].replace( /\\'/g, '###SINGLE_QUOTE###' ) ;
-
- // Create the regexp and execute it.
- var rFunc = new RegExp( '^' + sFunc + '$' ) ;
- var aMatch = rFunc.exec( aLinkInfo[2] ) ;
- if ( aMatch )
- {
- var aInfo = new Array();
- for ( var i = 1 ; i < aMatch.length ; i ++ )
- {
- var k = pos[i-1].match(/^\d+:(.+)$/) ;
- aInfo[k[1]] = aMatch[i].replace(/###SINGLE_QUOTE###/g, '\'') ;
- }
-
- // Fill the EMailInfo object that will be returned
- oEMailInfo.Address = aInfo['NAME'] + '@' + aInfo['DOMAIN'] ;
- oEMailInfo.Subject = decodeURIComponent( aInfo['SUBJECT'] ) ;
- oEMailInfo.Body = decodeURIComponent( aInfo['BODY'] ) ;
-
- return oEMailInfo ;
- }
- }
- catch (e)
- {
- }
- }
-
- // Try to match the email against the encode protection.
- var aMatch = aLinkInfo[2].match( /^(?:void\()?location\.href='mailto:'\+(String\.fromCharCode\([\d,]+\))\+'(.*)'\)?$/ ) ;
- if ( aMatch )
- {
- // The link is encoded
- oEMailInfo.Address = eval( aMatch[1] ) ;
- if ( aMatch[2] )
- {
- var oEMailParams = oParser.ParseEMailParams( aMatch[2] ) ;
- oEMailInfo.Subject = oEMailParams.Subject ;
- oEMailInfo.Body = oEMailParams.Body ;
- }
- return oEMailInfo ;
- }
- }
- return false;
-}
-
-oParser.CreateEMailUri = function( address, subject, body )
-{
- // Switch for the EMailProtection setting.
- switch ( FCKConfig.EMailProtection )
- {
- case 'function' :
- var func = FCKConfig.EMailProtectionFunction ;
- if ( func == null )
- {
- if ( FCKConfig.Debug )
- {
- alert('EMailProtection alert!\nNo function defined. Please set "FCKConfig.EMailProtectionFunction"') ;
- }
- return '';
- }
-
- // Split the email address into name and domain parts.
- var aAddressParts = address.split( '@', 2 ) ;
- if ( aAddressParts[1] == undefined )
- {
- aAddressParts[1] = '' ;
- }
-
- // Replace the keys by their values (embedded in single quotes).
- func = func.replace(/NAME/g, "'" + aAddressParts[0].replace(/'/g, '\\\'') + "'") ;
- func = func.replace(/DOMAIN/g, "'" + aAddressParts[1].replace(/'/g, '\\\'') + "'") ;
- func = func.replace(/SUBJECT/g, "'" + encodeURIComponent( subject ).replace(/'/g, '\\\'') + "'") ;
- func = func.replace(/BODY/g, "'" + encodeURIComponent( body ).replace(/'/g, '\\\'') + "'") ;
-
- return 'javascript:' + func ;
-
- case 'encode' :
- var aParams = [] ;
- var aAddressCode = [] ;
-
- if ( subject.length > 0 )
- aParams.push( 'subject='+ encodeURIComponent( subject ) ) ;
- if ( body.length > 0 )
- aParams.push( 'body=' + encodeURIComponent( body ) ) ;
- for ( var i = 0 ; i < address.length ; i++ )
- aAddressCode.push( address.charCodeAt( i ) ) ;
-
- return 'javascript:void(location.href=\'mailto:\'+String.fromCharCode(' + aAddressCode.join( ',' ) + ')+\'?' + aParams.join( '&' ) + '\')' ;
- }
-
- // EMailProtection 'none'
-
- var sBaseUri = 'mailto:' + address ;
-
- var sParams = '' ;
-
- if ( subject.length > 0 )
- sParams = '?subject=' + encodeURIComponent( subject ) ;
-
- if ( body.length > 0 )
- {
- sParams += ( sParams.length == 0 ? '?' : '&' ) ;
- sParams += 'body=' + encodeURIComponent( body ) ;
- }
-
- return sBaseUri + sParams ;
-}
-
-//#### Initialization Code
-
-// oLink: The actual selected link in the editor.
-var oLink = dialog.Selection.GetSelection().MoveToAncestorNode( 'A' ) ;
-if ( oLink )
- FCK.Selection.SelectNode( oLink ) ;
-
-window.onload = function()
-{
- // Translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- // Fill the Anchor Names and Ids combos.
- LoadAnchorNamesAndIds() ;
-
- // Load the selected link information (if any).
- LoadSelection() ;
-
- // Update the dialog box.
- SetLinkType( GetE('cmbLinkType').value ) ;
-
- // Show/Hide the "Browse Server" button.
- GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
-
- // Show the initial dialog content.
- GetE('divInfo').style.display = '' ;
-
- // Set the actual uploader URL.
- if ( FCKConfig.LinkUpload )
- GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
-
- // Set the default target (from configuration).
- SetDefaultTarget() ;
-
- // Activate the "OK" button.
- dialog.SetOkButton( true ) ;
-
- // Select the first field.
- switch( GetE('cmbLinkType').value )
- {
- case 'url' :
- SelectField( 'txtUrl' ) ;
- break ;
- case 'email' :
- SelectField( 'txtEMailAddress' ) ;
- break ;
- case 'anchor' :
- if ( GetE('divSelAnchor').style.display != 'none' )
- SelectField( 'cmbAnchorName' ) ;
- else
- SelectField( 'cmbLinkType' ) ;
- }
-}
-
-var bHasAnchors ;
-
-function LoadAnchorNamesAndIds()
-{
- // Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon
- // to edit them. So, we must look for that images now.
- var aAnchors = new Array() ;
- var i ;
- var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
- for( i = 0 ; i < oImages.length ; i++ )
- {
- if ( oImages[i].getAttribute('_fckanchor') )
- aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
- }
-
- // Add also real anchors
- var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
- for( i = 0 ; i < oLinks.length ; i++ )
- {
- if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
- aAnchors[ aAnchors.length ] = oLinks[i] ;
- }
-
- var aIds = FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
-
- bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
-
- for ( i = 0 ; i < aAnchors.length ; i++ )
- {
- var sName = aAnchors[i].name ;
- if ( sName && sName.length > 0 )
- FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
- }
-
- for ( i = 0 ; i < aIds.length ; i++ )
- {
- FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
- }
-
- ShowE( 'divSelAnchor' , bHasAnchors ) ;
- ShowE( 'divNoAnchor' , !bHasAnchors ) ;
-}
-
-function LoadSelection()
-{
- if ( !oLink ) return ;
-
- var sType = 'url' ;
-
- // Get the actual Link href.
- var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
- if ( sHRef == null )
- sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
-
- // Look for a popup javascript link.
- var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
- if( oPopupMatch )
- {
- GetE('cmbTarget').value = 'popup' ;
- sHRef = oPopupMatch[1] ;
- FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
- SetTarget( 'popup' ) ;
- }
-
- // Accessible popups, the popup data is in the onclick attribute
- if ( !oPopupMatch )
- {
- var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
- if ( onclick )
- {
- // Decode the protected string
- onclick = decodeURIComponent( onclick ) ;
-
- oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
- if( oPopupMatch )
- {
- GetE( 'cmbTarget' ).value = 'popup' ;
- FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
- SetTarget( 'popup' ) ;
- }
- }
- }
-
- // Search for the protocol.
- var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
-
- // Search for a protected email link.
- var oEMailInfo = oParser.ParseEMailUri( sHRef );
-
- if ( oEMailInfo )
- {
- sType = 'email' ;
-
- GetE('txtEMailAddress').value = oEMailInfo.Address ;
- GetE('txtEMailSubject').value = oEMailInfo.Subject ;
- GetE('txtEMailBody').value = oEMailInfo.Body ;
- }
- else if ( sProtocol )
- {
- sProtocol = sProtocol[0].toLowerCase() ;
- GetE('cmbLinkProtocol').value = sProtocol ;
-
- // Remove the protocol and get the remaining URL.
- var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
- sType = 'url' ;
- GetE('txtUrl').value = sUrl ;
- }
- else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 ) // It is an anchor link.
- {
- sType = 'anchor' ;
- GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
- }
- else // It is another type of link.
- {
- sType = 'url' ;
-
- GetE('cmbLinkProtocol').value = '' ;
- GetE('txtUrl').value = sHRef ;
- }
-
- if ( !oPopupMatch )
- {
- // Get the target.
- var sTarget = oLink.target ;
-
- if ( sTarget && sTarget.length > 0 )
- {
- if ( oRegex.ReserveTarget.test( sTarget ) )
- {
- sTarget = sTarget.toLowerCase() ;
- GetE('cmbTarget').value = sTarget ;
- }
- else
- GetE('cmbTarget').value = 'frame' ;
- GetE('txtTargetFrame').value = sTarget ;
- }
- }
-
- // Get Advances Attributes
- GetE('txtAttId').value = oLink.id ;
- GetE('txtAttName').value = oLink.name ;
- GetE('cmbAttLangDir').value = oLink.dir ;
- GetE('txtAttLangCode').value = oLink.lang ;
- GetE('txtAttAccessKey').value = oLink.accessKey ;
- GetE('txtAttTabIndex').value = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
- GetE('txtAttTitle').value = oLink.title ;
- GetE('txtAttContentType').value = oLink.type ;
- GetE('txtAttCharSet').value = oLink.charset ;
-
- var sClass ;
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- sClass = oLink.getAttribute('className',2) || '' ;
- // Clean up temporary classes for internal use:
- sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
-
- GetE('txtAttStyle').value = oLink.style.cssText ;
- }
- else
- {
- sClass = oLink.getAttribute('class',2) || '' ;
- GetE('txtAttStyle').value = oLink.getAttribute('style',2) || '' ;
- }
- GetE('txtAttClasses').value = sClass ;
-
- // Update the Link type combo.
- GetE('cmbLinkType').value = sType ;
-}
-
-//#### Link type selection.
-function SetLinkType( linkType )
-{
- ShowE('divLinkTypeUrl' , (linkType == 'url') ) ;
- ShowE('divLinkTypeAnchor' , (linkType == 'anchor') ) ;
- ShowE('divLinkTypeEMail' , (linkType == 'email') ) ;
-
- if ( !FCKConfig.LinkDlgHideTarget )
- dialog.SetTabVisibility( 'Target' , (linkType == 'url') ) ;
-
- if ( FCKConfig.LinkUpload )
- dialog.SetTabVisibility( 'Upload' , (linkType == 'url') ) ;
-
- if ( !FCKConfig.LinkDlgHideAdvanced )
- dialog.SetTabVisibility( 'Advanced' , (linkType != 'anchor' || bHasAnchors) ) ;
-
- if ( linkType == 'email' )
- dialog.SetAutoSize( true ) ;
-}
-
-//#### Target type selection.
-function SetTarget( targetType )
-{
- GetE('tdTargetFrame').style.display = ( targetType == 'popup' ? 'none' : '' ) ;
- GetE('tdPopupName').style.display =
- GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
-
- switch ( targetType )
- {
- case "_blank" :
- case "_self" :
- case "_parent" :
- case "_top" :
- GetE('txtTargetFrame').value = targetType ;
- break ;
- case "" :
- GetE('txtTargetFrame').value = '' ;
- break ;
- }
-
- if ( targetType == 'popup' )
- dialog.SetAutoSize( true ) ;
-}
-
-//#### Called while the user types the URL.
-function OnUrlChange()
-{
- var sUrl = GetE('txtUrl').value ;
- var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
-
- if ( sProtocol )
- {
- sUrl = sUrl.substr( sProtocol[0].length ) ;
- GetE('txtUrl').value = sUrl ;
- GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
- }
- else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
- {
- GetE('cmbLinkProtocol').value = '' ;
- }
-}
-
-//#### Called while the user types the target name.
-function OnTargetNameChange()
-{
- var sFrame = GetE('txtTargetFrame').value ;
-
- if ( sFrame.length == 0 )
- GetE('cmbTarget').value = '' ;
- else if ( oRegex.ReserveTarget.test( sFrame ) )
- GetE('cmbTarget').value = sFrame.toLowerCase() ;
- else
- GetE('cmbTarget').value = 'frame' ;
-}
-
-// Accessible popups
-function BuildOnClickPopup()
-{
- var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
-
- var sFeatures = '' ;
- var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
- for ( var i = 0 ; i < aChkFeatures.length ; i++ )
- {
- if ( i > 0 ) sFeatures += ',' ;
- sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
- }
-
- if ( GetE('txtPopupWidth').value.length > 0 ) sFeatures += ',width=' + GetE('txtPopupWidth').value ;
- if ( GetE('txtPopupHeight').value.length > 0 ) sFeatures += ',height=' + GetE('txtPopupHeight').value ;
- if ( GetE('txtPopupLeft').value.length > 0 ) sFeatures += ',left=' + GetE('txtPopupLeft').value ;
- if ( GetE('txtPopupTop').value.length > 0 ) sFeatures += ',top=' + GetE('txtPopupTop').value ;
-
- if ( sFeatures != '' )
- sFeatures = sFeatures + ",status" ;
-
- return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
-}
-
-//#### Fills all Popup related fields.
-function FillPopupFields( windowName, features )
-{
- if ( windowName )
- GetE('txtPopupName').value = windowName ;
-
- var oFeatures = new Object() ;
- var oFeaturesMatch ;
- while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
- {
- var sValue = oFeaturesMatch[2] ;
- if ( sValue == ( 'yes' || '1' ) )
- oFeatures[ oFeaturesMatch[1] ] = true ;
- else if ( ! isNaN( sValue ) && sValue != 0 )
- oFeatures[ oFeaturesMatch[1] ] = sValue ;
- }
-
- // Update all features check boxes.
- var aChkFeatures = document.getElementsByName('chkFeature') ;
- for ( var i = 0 ; i < aChkFeatures.length ; i++ )
- {
- if ( oFeatures[ aChkFeatures[i].value ] )
- aChkFeatures[i].checked = true ;
- }
-
- // Update position and size text boxes.
- if ( oFeatures['width'] ) GetE('txtPopupWidth').value = oFeatures['width'] ;
- if ( oFeatures['height'] ) GetE('txtPopupHeight').value = oFeatures['height'] ;
- if ( oFeatures['left'] ) GetE('txtPopupLeft').value = oFeatures['left'] ;
- if ( oFeatures['top'] ) GetE('txtPopupTop').value = oFeatures['top'] ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
- var sUri, sInnerHtml ;
- oEditor.FCKUndo.SaveUndoStep() ;
-
- switch ( GetE('cmbLinkType').value )
- {
- case 'url' :
- sUri = GetE('txtUrl').value ;
-
- if ( sUri.length == 0 )
- {
- alert( FCKLang.DlnLnkMsgNoUrl ) ;
- return false ;
- }
-
- sUri = GetE('cmbLinkProtocol').value + sUri ;
-
- break ;
-
- case 'email' :
- sUri = GetE('txtEMailAddress').value ;
-
- if ( sUri.length == 0 )
- {
- alert( FCKLang.DlnLnkMsgNoEMail ) ;
- return false ;
- }
-
- sUri = oParser.CreateEMailUri(
- sUri,
- GetE('txtEMailSubject').value,
- GetE('txtEMailBody').value ) ;
- break ;
-
- case 'anchor' :
- var sAnchor = GetE('cmbAnchorName').value ;
- if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
-
- if ( sAnchor.length == 0 )
- {
- alert( FCKLang.DlnLnkMsgNoAnchor ) ;
- return false ;
- }
-
- sUri = '#' + sAnchor ;
- break ;
- }
-
- // If no link is selected, create a new one (it may result in more than one link creation - #220).
- var aLinks = oLink ? [ oLink ] : oEditor.FCK.CreateLink( sUri, true ) ;
-
- // If no selection, no links are created, so use the uri as the link text (by dom, 2006-05-26)
- var aHasSelection = ( aLinks.length > 0 ) ;
- if ( !aHasSelection )
- {
- sInnerHtml = sUri;
-
- // Built a better text for empty links.
- switch ( GetE('cmbLinkType').value )
- {
- // anchor: use old behavior --> return true
- case 'anchor':
- sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
- break ;
-
- // url: try to get path
- case 'url':
- var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
- var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
- if (asLinkPath != null)
- sInnerHtml = asLinkPath[1]; // use matched path
- break ;
-
- // mailto: try to get email address
- case 'email':
- sInnerHtml = GetE('txtEMailAddress').value ;
- break ;
- }
-
- // Create a new (empty) anchor.
- aLinks = [ oEditor.FCK.InsertElement( 'a' ) ] ;
- }
-
- for ( var i = 0 ; i < aLinks.length ; i++ )
- {
- oLink = aLinks[i] ;
-
- if ( aHasSelection )
- sInnerHtml = oLink.innerHTML ; // Save the innerHTML (IE changes it if it is like an URL).
-
- oLink.href = sUri ;
- SetAttribute( oLink, '_fcksavedurl', sUri ) ;
-
- var onclick;
- // Accessible popups
- if( GetE('cmbTarget').value == 'popup' )
- {
- onclick = BuildOnClickPopup() ;
- // Encode the attribute
- onclick = encodeURIComponent( " onclick=\"" + onclick + "\"" ) ;
- SetAttribute( oLink, 'onclick_fckprotectedatt', onclick ) ;
- }
- else
- {
- // Check if the previous onclick was for a popup:
- // In that case remove the onclick handler.
- onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
- if ( onclick )
- {
- // Decode the protected string
- onclick = decodeURIComponent( onclick ) ;
-
- if( oRegex.OnClickPopup.test( onclick ) )
- SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
- }
- }
-
- oLink.innerHTML = sInnerHtml ; // Set (or restore) the innerHTML
-
- // Target
- if( GetE('cmbTarget').value != 'popup' )
- SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
- else
- SetAttribute( oLink, 'target', null ) ;
-
- // Let's set the "id" only for the first link to avoid duplication.
- if ( i == 0 )
- SetAttribute( oLink, 'id', GetE('txtAttId').value ) ;
-
- // Advances Attributes
- SetAttribute( oLink, 'name' , GetE('txtAttName').value ) ;
- SetAttribute( oLink, 'dir' , GetE('cmbAttLangDir').value ) ;
- SetAttribute( oLink, 'lang' , GetE('txtAttLangCode').value ) ;
- SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
- SetAttribute( oLink, 'tabindex' , ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
- SetAttribute( oLink, 'title' , GetE('txtAttTitle').value ) ;
- SetAttribute( oLink, 'type' , GetE('txtAttContentType').value ) ;
- SetAttribute( oLink, 'charset' , GetE('txtAttCharSet').value ) ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- {
- var sClass = GetE('txtAttClasses').value ;
- // If it's also an anchor add an internal class
- if ( GetE('txtAttName').value.length != 0 )
- sClass += ' FCK__AnchorC' ;
- SetAttribute( oLink, 'className', sClass ) ;
-
- oLink.style.cssText = GetE('txtAttStyle').value ;
- }
- else
- {
- SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
- SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
- }
- }
-
- // Select the (first) link.
- oEditor.FCKSelection.SelectNode( aLinks[0] );
-
- return true ;
-}
-
-function BrowseServer()
-{
- OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
-}
-
-function SetUrl( url )
-{
- GetE('txtUrl').value = url ;
- OnUrlChange() ;
- dialog.SetSelectedTab( 'Info' ) ;
-}
-
-function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
-{
- // Remove animation
- window.parent.Throbber.Hide() ;
- GetE( 'divUpload' ).style.display = '' ;
-
- switch ( errorNumber )
- {
- case 0 : // No errors
- alert( 'Your file has been successfully uploaded' ) ;
- break ;
- case 1 : // Custom error
- alert( customMsg ) ;
- return ;
- case 101 : // Custom warning
- alert( customMsg ) ;
- break ;
- case 201 :
- alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
- break ;
- case 202 :
- alert( 'Invalid file type' ) ;
- return ;
- case 203 :
- alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
- return ;
- case 500 :
- alert( 'The connector is disabled' ) ;
- break ;
- default :
- alert( 'Error on file upload. Error number: ' + errorNumber ) ;
- return ;
- }
-
- SetUrl( fileUrl ) ;
- GetE('frmUpload').reset() ;
-}
-
-var oUploadAllowedExtRegex = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
-var oUploadDeniedExtRegex = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
-
-function CheckUpload()
-{
- var sFile = GetE('txtUploadFile').value ;
-
- if ( sFile.length == 0 )
- {
- alert( 'Please select a file to upload' ) ;
- return false ;
- }
-
- if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
- ( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
- {
- OnUploadCompleted( 202 ) ;
- return false ;
- }
-
- // Show animation
- window.parent.Throbber.Show( 100 ) ;
- GetE( 'divUpload' ).style.display = 'none' ;
-
- return true ;
-}
-
-function SetDefaultTarget()
-{
- var target = FCKConfig.DefaultLinkTarget || '' ;
-
- if ( oLink || target.length == 0 )
- return ;
-
- switch ( target )
- {
- case '_blank' :
- case '_self' :
- case '_parent' :
- case '_top' :
- GetE('cmbTarget').value = target ;
- break ;
- default :
- GetE('cmbTarget').value = 'frame' ;
- break ;
- }
-
- GetE('txtTargetFrame').value = target ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_listprop.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_listprop.html
deleted file mode 100644
index 55b337ae9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_listprop.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Bulleted List dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-var sListType = ( location.search == '?OL' ? 'OL' : 'UL' ) ;
-
-var oActiveEl = dialog.Selection.GetSelection().MoveToAncestorNode( sListType ) ;
-var oActiveSel ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( sListType == 'UL' )
- oActiveSel = GetE('selBulleted') ;
- else
- {
- if ( oActiveEl )
- {
- oActiveSel = GetE('selNumbered') ;
- GetE('eStart').style.display = '' ;
- GetE('txtStartPosition').value = GetAttribute( oActiveEl, 'start' ) ;
- }
- }
-
- oActiveSel.style.display = '' ;
-
- if ( oActiveEl )
- {
- if ( oActiveEl.getAttribute('type') )
- oActiveSel.value = oActiveEl.getAttribute('type') ;
- }
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
-
- SelectField( sListType == 'OL' ? 'txtStartPosition' : 'selBulleted' ) ;
-}
-
-function Ok()
-{
- if ( oActiveEl ){
- SetAttribute( oActiveEl, 'type' , oActiveSel.value ) ;
- if(oActiveEl.tagName == 'OL')
- SetAttribute( oActiveEl, 'start', GetE('txtStartPosition').value ) ;
- }
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table width="100%" style="height: 100%">
- <tr>
- <td style="text-align:center">
- <table cellspacing="0" cellpadding="0" border="0" style="margin-left: auto; margin-right: auto;">
- <tr>
- <td id="eStart" style="display: none; padding-right: 5px; padding-left: 5px">
- <span fcklang="DlgLstStart">Start</span><br />
- <input type="text" id="txtStartPosition" size="5" />
- </td>
- <td style="padding-right: 5px; padding-left: 5px">
- <span fcklang="DlgLstType">List Type</span><br />
- <select id="selBulleted" style="display: none">
- <option value="" selected="selected"></option>
- <option value="circle" fcklang="DlgLstTypeCircle">Circle</option>
- <option value="disc" fcklang="DlgLstTypeDisc">Disc</option>
- <option value="square" fcklang="DlgLstTypeSquare">Square</option>
- </select>
- <select id="selNumbered" style="display: none">
- <option value="" selected="selected"></option>
- <option value="1" fcklang="DlgLstTypeNumbers">Numbers (1, 2, 3)</option>
- <option value="a" fcklang="DlgLstTypeLCase">Lowercase Letters (a, b, c)</option>
- <option value="A" fcklang="DlgLstTypeUCase">Uppercase Letters (A, B, C)</option>
- <option value="i" fcklang="DlgLstTypeSRoman">Small Roman Numerals (i, ii, iii)</option>
- <option value="I" fcklang="DlgLstTypeLRoman">Large Roman Numerals (I, II, III)</option>
- </select>
- &nbsp;
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_paste.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_paste.html
deleted file mode 100644
index e20a73863..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_paste.html
+++ /dev/null
@@ -1,347 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This dialog is shown when, for some reason (usually security settings),
- * the user is not able to paste data from the clipboard to the editor using
- * the toolbar buttons or the context menu.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var FCK = oEditor.FCK;
-var FCKTools = oEditor.FCKTools ;
-var FCKConfig = oEditor.FCKConfig ;
-var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
-
-window.onload = function ()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- var sPastingType = dialog.Args().CustomValue ;
-
- if ( sPastingType == 'Word' || sPastingType == 'Security' )
- {
- if ( sPastingType == 'Security' )
- document.getElementById( 'xSecurityMsg' ).style.display = '' ;
-
- // For document.domain compatibility (#123) we must do all the magic in
- // the URL for IE.
- var sFrameUrl = !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ?
- 'javascript:void(0)' :
- 'javascript:void( (function(){' +
- 'document.open() ;' +
- 'document.domain=\'' + document.domain + '\' ;' +
- 'document.write(\'<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' +
- 'document.close() ;' +
- 'document.body.contentEditable = true ;' +
- 'window.focus() ;' +
- '})() )' ;
-
- var eFrameSpace = document.getElementById( 'xFrameSpace' ) ;
- eFrameSpace.innerHTML = '<iframe id="frmData" src="' + sFrameUrl + '" ' +
- 'height="98%" width="99%" frameborder="0" style="border: #000000 1px; background-color: #ffffff"><\/iframe>' ;
-
- var oFrame = eFrameSpace.firstChild ;
-
- if ( !oEditor.FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE )
- {
- // Avoid errors if the pasted content has any script that fails: #389
- var oDoc = oFrame.contentWindow.document ;
- oDoc.open() ;
- oDoc.write('<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
- oDoc.close() ;
-
- if ( FCKBrowserInfo.IsIE )
- oDoc.body.contentEditable = true ;
- else
- oDoc.designMode = 'on' ;
-
- oFrame.contentWindow.focus();
- }
- }
- else
- {
- document.getElementById('txtData').style.display = '' ;
- SelectField( 'txtData' ) ;
- }
-
- if ( sPastingType != 'Word' )
- document.getElementById('oWordCommands').style.display = 'none' ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
-}
-
-function Ok()
-{
- // Before doing anything, save undo snapshot.
- oEditor.FCKUndo.SaveUndoStep() ;
-
- var sHtml ;
-
- var sPastingType = dialog.Args().CustomValue ;
-
- if ( sPastingType == 'Word' || sPastingType == 'Security' )
- {
- var oFrame = document.getElementById('frmData') ;
- var oBody ;
-
- if ( oFrame.contentDocument )
- oBody = oFrame.contentDocument.body ;
- else
- oBody = oFrame.contentWindow.document.body ;
-
- if ( sPastingType == 'Word' )
- {
- // If a plugin creates a FCK.CustomCleanWord function it will be called instead of the default one
- if ( typeof( FCK.CustomCleanWord ) == 'function' )
- sHtml = FCK.CustomCleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
- else
- sHtml = CleanWord( oBody, document.getElementById('chkRemoveFont').checked, document.getElementById('chkRemoveStyles').checked ) ;
- }
- else
- sHtml = oBody.innerHTML ;
-
- // Fix relative anchor URLs (IE automatically adds the current page URL).
- var re = new RegExp( window.location + "#", "g" ) ;
- sHtml = sHtml.replace( re, '#') ;
- }
- else
- {
- sHtml = oEditor.FCKTools.HTMLEncode( document.getElementById('txtData').value ) ;
- sHtml = FCKTools.ProcessLineBreaks( oEditor, FCKConfig, sHtml ) ;
-
- // FCK.InsertHtml() does not work for us, since document fragments cannot contain node fragments. :(
- // Use the marker method instead. It's primitive, but it works.
- var range = new oEditor.FCKDomRange( oEditor.FCK.EditorWindow ) ;
- var oDoc = oEditor.FCK.EditorDocument ;
- dialog.Selection.EnsureSelection() ;
- range.MoveToSelection() ;
- range.DeleteContents() ;
- var marker = [] ;
- for ( var i = 0 ; i < 5 ; i++ )
- marker.push( parseInt(Math.random() * 100000, 10 ) ) ;
- marker = marker.join( "" ) ;
- range.InsertNode ( oDoc.createTextNode( marker ) ) ;
- var bookmark = range.CreateBookmark() ;
-
- // Now we've got a marker indicating the paste position in the editor document.
- // Find its position in the HTML code.
- var htmlString = oDoc.body.innerHTML ;
- var index = htmlString.indexOf( marker ) ;
-
- // Split it the HTML code up, add the code we generated, and put them back together.
- var htmlList = [] ;
- htmlList.push( htmlString.substr( 0, index ) ) ;
- htmlList.push( sHtml ) ;
- htmlList.push( htmlString.substr( index + marker.length ) ) ;
- htmlString = htmlList.join( "" ) ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- oEditor.FCK.SetInnerHtml( htmlString ) ;
- else
- oDoc.body.innerHTML = htmlString ;
-
- range.MoveToBookmark( bookmark ) ;
- range.Collapse( false ) ;
- range.Select() ;
- range.Release() ;
- return true ;
- }
-
- oEditor.FCK.InsertHtml( sHtml ) ;
-
- return true ;
-}
-
-// This function will be called from the PasteFromWord dialog (fck_paste.html)
-// Input: oNode a DOM node that contains the raw paste from the clipboard
-// bIgnoreFont, bRemoveStyles booleans according to the values set in the dialog
-// Output: the cleaned string
-function CleanWord( oNode, bIgnoreFont, bRemoveStyles )
-{
- var html = oNode.innerHTML ;
-
- html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
- html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;') ;
-
- // Remove mso-xxx styles.
- html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
-
- // Remove margin styles.
- html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
- html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
-
- html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
- html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
-
- html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
-
- html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
-
- html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
-
- html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
- html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;
-
- // Remove FONT face attributes.
- if ( bIgnoreFont )
- {
- html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
- html = html.replace( /\s*face=[^ >]*/gi, '' ) ;
-
- html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
- }
-
- // Remove Class attributes
- html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-
- // Remove styles.
- if ( bRemoveStyles )
- html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
-
- // Remove style, meta and link tags
- html = html.replace( /<STYLE[^>]*>[\s\S]*?<\/STYLE[^>]*>/gi, '' ) ;
- html = html.replace( /<(?:META|LINK)[^>]*>\s*/gi, '' ) ;
-
- // Remove empty styles.
- html = html.replace( /\s*style="\s*"/gi, '' ) ;
-
- html = html.replace( /<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;' ) ;
-
- html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
-
- // Remove Lang attributes
- html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-
- html = html.replace( /<SPAN\s*>([\s\S]*?)<\/SPAN>/gi, '$1' ) ;
-
- html = html.replace( /<FONT\s*>([\s\S]*?)<\/FONT>/gi, '$1' ) ;
-
- // Remove XML elements and declarations
- html = html.replace(/<\\?\?xml[^>]*>/gi, '' ) ;
-
- // Remove w: tags with contents.
- html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '' ) ;
-
- // Remove Tags with XML namespace declarations: <o:p><\/o:p>
- html = html.replace(/<\/?\w+:[^>]*>/gi, '' ) ;
-
- // Remove comments [SF BUG-1481861].
- html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ;
-
- html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
-
- html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
-
- // Remove "display:none" tags.
- html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ;
-
- // Remove language tags
- html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-
- // Remove onmouseover and onmouseout events (from MS Word comments effect)
- html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
- html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;
-
- if ( FCKConfig.CleanWordKeepsStructure )
- {
- // The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
- html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;
-
- // Word likes to insert extra <font> tags, when using MSIE. (Wierd).
- html = html.replace( /<(H\d)><FONT[^>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
- html = html.replace( /<(H\d)><EM>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
- }
- else
- {
- html = html.replace( /<H1([^>]*)>/gi, '<div$1><b><font size="6">' ) ;
- html = html.replace( /<H2([^>]*)>/gi, '<div$1><b><font size="5">' ) ;
- html = html.replace( /<H3([^>]*)>/gi, '<div$1><b><font size="4">' ) ;
- html = html.replace( /<H4([^>]*)>/gi, '<div$1><b><font size="3">' ) ;
- html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
- html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
-
- html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
-
- // Transform <P> to <DIV>
- var re = new RegExp( '(<P)([^>]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ; // Different because of a IE 5.0 error
- html = html.replace( re, '<div$2<\/div>' ) ;
-
- // Remove empty tags (three times, just to be sure).
- // This also removes any empty anchor
- html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
- html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
- html = html.replace( /<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '' ) ;
- }
-
- return html ;
-}
-
- </script>
-
-</head>
-<body style="overflow: hidden">
- <table cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 98%">
- <tr>
- <td>
- <div id="xSecurityMsg" style="display: none">
- <span fcklang="DlgPasteSec">Because of your browser security settings,
- the editor is not able to access your clipboard data directly. You are required
- to paste it again in this window.</span><br />
- &nbsp;
- </div>
- <div>
- <span fcklang="DlgPasteMsg2">Please paste inside the following box using the keyboard
- (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.</span><br />
- &nbsp;
- </div>
- </td>
- </tr>
- <tr>
- <td id="xFrameSpace" valign="top" height="100%" style="border: #000000 1px solid">
- <textarea id="txtData" cols="80" rows="5" style="border: #000000 1px; display: none;
- width: 99%; height: 98%"></textarea>
- </td>
- </tr>
- <tr id="oWordCommands">
- <td>
-
- <input id="chkRemoveFont" type="checkbox" checked="checked" />
- <label for="chkRemoveFont" fcklang="DlgPasteIgnoreFont">
- Ignore Font Face definitions</label>
- <br />
- <input id="chkRemoveStyles" type="checkbox" />
- <label for="chkRemoveStyles" fcklang="DlgPasteRemoveStyles">
- Remove Styles definitions</label>
-
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_radiobutton.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_radiobutton.html
deleted file mode 100644
index 80516e042..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_radiobutton.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Radio Button dialog window.
--->
-<html>
- <head>
- <title>Radio Button Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtValue').value = oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
- GetE('txtSelected').checked = oActiveEl.checked ;
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: 'radio' } ) ;
-
- if ( oEditor.FCKBrowserInfo.IsIE )
- oActiveEl.value = GetE('txtValue').value ;
- else
- SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
-
- var bIsChecked = GetE('txtSelected').checked ;
- SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ; // For Firefox
- oActiveEl.checked = bIsChecked ;
-
- return true ;
-}
-
- </script>
- </head>
- <body style="OVERFLOW: hidden" scroll="no">
- <table height="100%" width="100%">
- <tr>
- <td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="80%">
- <tr>
- <td>
- <span fckLang="DlgCheckboxName">Name</span><br>
- <input type="text" size="20" id="txtName" style="WIDTH: 100%">
- </td>
- </tr>
- <tr>
- <td>
- <span fckLang="DlgCheckboxValue">Value</span><br>
- <input type="text" size="20" id="txtValue" style="WIDTH: 100%">
- </td>
- </tr>
- <tr>
- <td><input type="checkbox" id="txtSelected"><label for="txtSelected" fckLang="DlgCheckboxSelected">Checked</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_replace.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_replace.html
deleted file mode 100644
index bf983353a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_replace.html
+++ /dev/null
@@ -1,650 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * "Find" and "Replace" dialog box window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var dialogArguments = dialog.Args() ;
-
-var FCKLang = oEditor.FCKLang ;
-var FCKDomTools = oEditor.FCKDomTools ;
-var FCKDomRange = oEditor.FCKDomRange ;
-var FCKListsLib = oEditor.FCKListsLib ;
-var FCKTools = oEditor.FCKTools ;
-var EditorDocument = oEditor.FCK.EditorDocument ;
-var HighlightStyle = oEditor.FCKStyles.GetStyle( '_FCK_SelectionHighlight' ) ;
-
-dialog.AddTab( 'Find', FCKLang.DlgFindTitle ) ;
-dialog.AddTab( 'Replace', FCKLang.DlgReplaceTitle ) ;
-var idMap = {} ;
-
-function OnDialogTabChange( tabCode )
-{
- ShowE( 'divFind', ( tabCode == 'Find' ) ) ;
- ShowE( 'divReplace', ( tabCode == 'Replace' ) ) ;
- idMap['FindText'] = 'txtFind' + tabCode ;
- idMap['CheckCase'] = 'chkCase' + tabCode ;
- idMap['CheckWord'] = 'chkWord' + tabCode ;
-
- if ( tabCode == 'Replace' )
- dialog.SetAutoSize( true ) ;
-}
-
-GetNextNonEmptyTextNode = function( node, stopNode )
-{
- while ( ( node = FCKDomTools.GetNextSourceNode( node, false, 3, stopNode ) ) && node && node.length < 1 )
- 1 ;
- return node ;
-}
-
-CharacterCursor = function( arg )
-{
- if ( arg.nodeType && arg.nodeType == 9 )
- {
- this._textNode = GetNextNonEmptyTextNode( arg.body, arg.documentElement ) ;
- this._offset = 0 ;
- this._doc = arg ;
- }
- else
- {
- this._textNode = arguments[0] ;
- this._offset = arguments[1] ;
- this._doc = FCKTools.GetElementDocument( arguments[0] ) ;
- }
-}
-CharacterCursor.prototype =
-{
- GetCharacter : function()
- {
- return ( this._textNode && this._textNode.nodeValue.charAt( this._offset ) ) || null ;
- },
-
- // Non-normalized.
- GetTextNode : function()
- {
- return this._textNode ;
- },
-
- // Non-normalized.
- GetIndex : function()
- {
- return this._offset ;
- },
-
- // Return value means whehther we've crossed a line break or a paragraph boundary.
- MoveNext : function()
- {
- if ( this._offset < this._textNode.length - 1 )
- {
- this._offset++ ;
- return false ;
- }
-
- var crossed = false ;
- var curNode = this._textNode ;
- while ( ( curNode = FCKDomTools.GetNextSourceNode( curNode ) )
- && curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
- {
- var tag = curNode.nodeName.toLowerCase() ;
- if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
- crossed = true ;
- }
-
- this._textNode = curNode ;
- this._offset = 0 ;
- return crossed ;
- },
-
- // Return value means whehther we've crossed a line break or a paragraph boundary.
- MoveBack : function()
- {
- if ( this._offset > 0 && this._textNode.length > 0 )
- {
- this._offset = Math.min( this._offset - 1, this._textNode.length - 1 ) ;
- return false ;
- }
-
- var crossed = false ;
- var curNode = this._textNode ;
- while ( ( curNode = FCKDomTools.GetPreviousSourceNode( curNode ) )
- && curNode && ( curNode.nodeType != 3 || curNode.length < 1 ) )
- {
- var tag = curNode.nodeName.toLowerCase() ;
- if ( FCKListsLib.BlockElements[tag] || tag == 'br' )
- crossed = true ;
- }
-
- this._textNode = curNode ;
- this._offset = curNode && curNode.length - 1 ;
- return crossed ;
- },
-
- Clone : function()
- {
- return new CharacterCursor( this._textNode, this._offset ) ;
- }
-} ;
-
-CharacterRange = function( initCursor, maxLength )
-{
- this._cursors = initCursor.push ? initCursor : [initCursor] ;
- this._maxLength = maxLength ;
- this._highlightRange = null ;
-}
-CharacterRange.prototype =
-{
- ToDomRange : function()
- {
- var firstCursor = this._cursors[0] ;
- var lastCursor = this._cursors[ this._cursors.length - 1 ] ;
- var domRange = new FCKDomRange( FCKTools.GetElementWindow( firstCursor.GetTextNode() ) ) ;
- var w3cRange = domRange._Range = domRange.CreateRange() ;
- w3cRange.setStart( firstCursor.GetTextNode(), firstCursor.GetIndex() ) ;
- w3cRange.setEnd( lastCursor.GetTextNode(), lastCursor.GetIndex() + 1 ) ;
- domRange._UpdateElementInfo() ;
- return domRange ;
- },
-
- Highlight : function()
- {
- if ( this._cursors.length < 1 )
- return ;
-
- var domRange = this.ToDomRange() ;
- HighlightStyle.ApplyToRange( domRange, false, true ) ;
- this._highlightRange = domRange ;
-
- var charRange = CharacterRange.CreateFromDomRange( domRange ) ;
- var focusNode = domRange.StartNode ;
- if ( focusNode.nodeType != 1 )
- focusNode = focusNode.parentNode ;
- FCKDomTools.ScrollIntoView( focusNode, false ) ;
- this._cursors = charRange._cursors ;
- },
-
- RemoveHighlight : function()
- {
- if ( this._highlightRange )
- {
- HighlightStyle.RemoveFromRange( this._highlightRange, false, true ) ;
- var charRange = CharacterRange.CreateFromDomRange( this._highlightRange ) ;
- this._cursors = charRange._cursors ;
- this._highlightRange = null ;
- }
- },
-
- GetHighlightDomRange : function()
- {
- return this._highlightRange;
- },
-
- MoveNext : function()
- {
- var next = this._cursors[ this._cursors.length - 1 ].Clone() ;
- var retval = next.MoveNext() ;
- if ( retval )
- this._cursors = [] ;
- this._cursors.push( next ) ;
- if ( this._cursors.length > this._maxLength )
- this._cursors.shift() ;
- return retval ;
- },
-
- MoveBack : function()
- {
- var prev = this._cursors[0].Clone() ;
- var retval = prev.MoveBack() ;
- if ( retval )
- this._cursors = [] ;
- this._cursors.unshift( prev ) ;
- if ( this._cursors.length > this._maxLength )
- this._cursors.pop() ;
- return retval ;
- },
-
- GetEndCharacter : function()
- {
- if ( this._cursors.length < 1 )
- return null ;
- var retval = this._cursors[ this._cursors.length - 1 ].GetCharacter() ;
- return retval ;
- },
-
- GetNextRange : function( len )
- {
- if ( this._cursors.length == 0 )
- return null ;
- var cur = this._cursors[ this._cursors.length - 1 ].Clone() ;
- cur.MoveNext() ;
- return new CharacterRange( cur, len ) ;
- },
-
- GetCursors : function()
- {
- return this._cursors ;
- }
-} ;
-
-CharacterRange.CreateFromDomRange = function( domRange )
-{
- var w3cRange = domRange._Range ;
- var startContainer = w3cRange.startContainer ;
- var endContainer = w3cRange.endContainer ;
- var startTextNode, startIndex, endTextNode, endIndex ;
-
- if ( startContainer.nodeType == 3 )
- {
- startTextNode = startContainer ;
- startIndex = w3cRange.startOffset ;
- }
- else if ( domRange.StartNode.nodeType == 3 )
- {
- startTextNode = domRange.StartNode ;
- startIndex = 0 ;
- }
- else
- {
- startTextNode = GetNextNonEmptyTextNode( domRange.StartNode, domRange.StartNode.parentNode ) ;
- if ( !startTextNode )
- return null ;
- startIndex = 0 ;
- }
-
- if ( endContainer.nodeType == 3 && w3cRange.endOffset > 0 )
- {
- endTextNode = endContainer ;
- endIndex = w3cRange.endOffset - 1 ;
- }
- else
- {
- endTextNode = domRange.EndNode ;
- while ( endTextNode.nodeType != 3 )
- endTextNode = endTextNode.lastChild ;
- endIndex = endTextNode.length - 1 ;
- }
-
- var cursors = [] ;
- var current = new CharacterCursor( startTextNode, startIndex ) ;
- cursors.push( current ) ;
- if ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) && !domRange.CheckIsEmpty() )
- {
- do
- {
- current = current.Clone() ;
- current.MoveNext() ;
- cursors.push( current ) ;
- }
- while ( !( current.GetTextNode() == endTextNode && current.GetIndex() == endIndex ) ) ;
- }
-
- return new CharacterRange( cursors, cursors.length ) ;
-}
-
-// Knuth-Morris-Pratt Algorithm for stream input
-KMP_NOMATCH = 0 ;
-KMP_ADVANCED = 1 ;
-KMP_MATCHED = 2 ;
-KmpMatch = function( pattern, ignoreCase )
-{
- var overlap = [ -1 ] ;
- for ( var i = 0 ; i < pattern.length ; i++ )
- {
- overlap.push( overlap[i] + 1 ) ;
- while ( overlap[ i + 1 ] > 0 && pattern.charAt( i ) != pattern.charAt( overlap[ i + 1 ] - 1 ) )
- overlap[ i + 1 ] = overlap[ overlap[ i + 1 ] - 1 ] + 1 ;
- }
- this._Overlap = overlap ;
- this._State = 0 ;
- this._IgnoreCase = ( ignoreCase === true ) ;
- if ( ignoreCase )
- this.Pattern = pattern.toLowerCase();
- else
- this.Pattern = pattern ;
-}
-KmpMatch.prototype = {
- FeedCharacter : function( c )
- {
- if ( this._IgnoreCase )
- c = c.toLowerCase();
-
- while ( true )
- {
- if ( c == this.Pattern.charAt( this._State ) )
- {
- this._State++ ;
- if ( this._State == this.Pattern.length )
- {
- // found a match, start over, don't care about partial matches involving the current match
- this._State = 0;
- return KMP_MATCHED;
- }
- return KMP_ADVANCED ;
- }
- else if ( this._State == 0 )
- return KMP_NOMATCH;
- else
- this._State = this._Overlap[ this._State ];
- }
-
- return null ;
- },
-
- Reset : function()
- {
- this._State = 0 ;
- }
-};
-
-// Place a range at the start of document.
-function OnLoad()
-{
- // First of all, translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
- // Show the appropriate tab at startup.
- if ( dialogArguments.CustomValue == 'Find' )
- {
- dialog.SetSelectedTab( 'Find' ) ;
- dialog.SetAutoSize( true ) ;
- }
- else
- dialog.SetSelectedTab( 'Replace' ) ;
-
- SelectField( 'txtFind' + dialogArguments.CustomValue ) ;
-}
-
-function btnStat()
-{
- GetE('btnReplace').disabled =
- GetE('btnReplaceAll').disabled =
- GetE('btnFind').disabled =
- ( GetE(idMap["FindText"]).value.length == 0 ) ;
-}
-
-function btnStatDelayed()
-{
- setTimeout( btnStat, 1 ) ;
-}
-
-function GetSearchString()
-{
- return GetE(idMap['FindText']).value ;
-}
-
-function GetReplaceString()
-{
- return GetE("txtReplace").value ;
-}
-
-function GetCheckCase()
-{
- return !! ( GetE(idMap['CheckCase']).checked ) ;
-}
-
-function GetMatchWord()
-{
- return !! ( GetE(idMap['CheckWord']).checked ) ;
-}
-
-/* Is this character a unicode whitespace or a punctuation mark?
- * References:
- * http://unicode.org/Public/UNIDATA/PropList.txt (whitespaces)
- * http://php.chinaunix.net/manual/tw/ref.regex.php (punctuation marks)
- */
-function CheckIsWordSeparator( c )
-{
- if ( !c )
- return true;
- var code = c.charCodeAt( 0 );
- if ( code >= 9 && code <= 0xd )
- return true;
- if ( code >= 0x2000 && code <= 0x200a )
- return true;
- switch ( code )
- {
- case 0x20:
- case 0x85:
- case 0xa0:
- case 0x1680:
- case 0x180e:
- case 0x2028:
- case 0x2029:
- case 0x202f:
- case 0x205f:
- case 0x3000:
- return true;
- default:
- }
- return /[.,"'?!;:]/.test( c ) ;
-}
-
-FindRange = null ;
-function _Find()
-{
- var searchString = GetSearchString() ;
- if ( !FindRange )
- FindRange = new CharacterRange( new CharacterCursor( EditorDocument ), searchString.length ) ;
- else
- {
- FindRange.RemoveHighlight() ;
- FindRange = FindRange.GetNextRange( searchString.length ) ;
- }
- var matcher = new KmpMatch( searchString, ! GetCheckCase() ) ;
- var matchState = KMP_NOMATCH ;
- var character = '%' ;
-
- while ( character != null )
- {
- while ( ( character = FindRange.GetEndCharacter() ) )
- {
- matchState = matcher.FeedCharacter( character ) ;
- if ( matchState == KMP_MATCHED )
- break ;
- if ( FindRange.MoveNext() )
- matcher.Reset() ;
- }
-
- if ( matchState == KMP_MATCHED )
- {
- if ( GetMatchWord() )
- {
- var cursors = FindRange.GetCursors() ;
- var head = cursors[ cursors.length - 1 ].Clone() ;
- var tail = cursors[0].Clone() ;
- if ( !head.MoveNext() && !CheckIsWordSeparator( head.GetCharacter() ) )
- continue ;
- if ( !tail.MoveBack() && !CheckIsWordSeparator( tail.GetCharacter() ) )
- continue ;
- }
-
- FindRange.Highlight() ;
- return true ;
- }
- }
-
- FindRange = null ;
- return false ;
-}
-
-function Find()
-{
- if ( ! _Find() )
- alert( FCKLang.DlgFindNotFoundMsg ) ;
-}
-
-function Replace()
-{
- var saveUndoStep = function( selectRange )
- {
- var ieRange ;
- if ( oEditor.FCKBrowserInfo.IsIE )
- ieRange = document.selection.createRange() ;
-
- selectRange.Select() ;
- oEditor.FCKUndo.SaveUndoStep() ;
- var cloneRange = selectRange.Clone() ;
- cloneRange.Collapse( false ) ;
- cloneRange.Select() ;
-
- if ( ieRange )
- setTimeout( function(){ ieRange.select() ; }, 1 ) ;
- }
-
- if ( FindRange && FindRange.GetHighlightDomRange() )
- {
- var range = FindRange.GetHighlightDomRange() ;
- var bookmark = range.CreateBookmark() ;
- FindRange.RemoveHighlight() ;
- range.MoveToBookmark( bookmark ) ;
-
- saveUndoStep( range ) ;
- range.DeleteContents() ;
- range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
- range._UpdateElementInfo() ;
-
- FindRange = CharacterRange.CreateFromDomRange( range ) ;
- }
- else
- {
- if ( ! _Find() )
- {
- FindRange && FindRange.RemoveHighlight() ;
- alert( FCKLang.DlgFindNotFoundMsg ) ;
- }
- }
-}
-
-function ReplaceAll()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
- var replaceCount = 0 ;
-
- while ( _Find() )
- {
- var range = FindRange.GetHighlightDomRange() ;
- var bookmark = range.CreateBookmark() ;
- FindRange.RemoveHighlight() ;
- range.MoveToBookmark( bookmark) ;
-
- range.DeleteContents() ;
- range.InsertNode( EditorDocument.createTextNode( GetReplaceString() ) ) ;
- range._UpdateElementInfo() ;
-
- FindRange = CharacterRange.CreateFromDomRange( range ) ;
- replaceCount++ ;
- }
- if ( replaceCount == 0 )
- {
- FindRange && FindRange.RemoveHighlight() ;
- alert( FCKLang.DlgFindNotFoundMsg ) ;
- }
- dialog.Cancel() ;
-}
-
-window.onunload = function()
-{
- if ( FindRange )
- {
- FindRange.RemoveHighlight() ;
- FindRange.ToDomRange().Select() ;
- }
-}
- </script>
-</head>
-<body onload="OnLoad()" style="overflow: hidden">
- <div id="divFind" style="display: none">
- <table cellspacing="3" cellpadding="2" width="100%" border="0">
- <tr>
- <td nowrap="nowrap">
- <label for="txtFindFind" fcklang="DlgReplaceFindLbl">
- Find what:</label>
- </td>
- <td width="100%">
- <input id="txtFindFind" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
- type="text" />
- </td>
- <td>
- <input id="btnFind" style="width: 80px" disabled="disabled" onclick="Find();"
- type="button" value="Find" fcklang="DlgFindFindBtn" />
- </td>
- </tr>
- <tr>
- <td valign="bottom" colspan="3">
- &nbsp;<input id="chkCaseFind" tabindex="3" type="checkbox" /><label for="chkCaseFind" fcklang="DlgReplaceCaseChk">Match
- case</label>
- <br />
- &nbsp;<input id="chkWordFind" tabindex="4" type="checkbox" /><label for="chkWordFind" fcklang="DlgReplaceWordChk">Match
- whole word</label>
- </td>
- </tr>
- </table>
- </div>
- <div id="divReplace" style="display:none">
- <table cellspacing="3" cellpadding="2" width="100%" border="0">
- <tr>
- <td nowrap="nowrap">
- <label for="txtFindReplace" fcklang="DlgReplaceFindLbl">
- Find what:</label>
- </td>
- <td width="100%">
- <input id="txtFindReplace" onkeyup="btnStat()" oninput="btnStat()" onpaste="btnStatDelayed()" style="width: 100%" tabindex="1"
- type="text" />
- </td>
- <td>
- <input id="btnReplace" style="width: 80px" disabled="disabled" onclick="Replace();"
- type="button" value="Replace" fcklang="DlgReplaceReplaceBtn" />
- </td>
- </tr>
- <tr>
- <td valign="top" nowrap="nowrap">
- <label for="txtReplace" fcklang="DlgReplaceReplaceLbl">
- Replace with:</label>
- </td>
- <td valign="top">
- <input id="txtReplace" style="width: 100%" tabindex="2" type="text" />
- </td>
- <td>
- <input id="btnReplaceAll" style="width: 80px" disabled="disabled" onclick="ReplaceAll()" type="button"
- value="Replace All" fcklang="DlgReplaceReplAllBtn" />
- </td>
- </tr>
- <tr>
- <td valign="bottom" colspan="3">
- &nbsp;<input id="chkCaseReplace" tabindex="3" type="checkbox" /><label for="chkCaseReplace" fcklang="DlgReplaceCaseChk">Match
- case</label>
- <br />
- &nbsp;<input id="chkWordReplace" tabindex="4" type="checkbox" /><label for="chkWordReplace" fcklang="DlgReplaceWordChk">Match
- whole word</label>
- </td>
- </tr>
- </table>
- </div>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select.html
deleted file mode 100644
index 633633ae4..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Select dialog window.
--->
-<html>
- <head>
- <title>Select Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript" src="fck_select/fck_select.js"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-var oListText ;
-var oListValue ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- oListText = document.getElementById( 'cmbText' ) ;
- oListValue = document.getElementById( 'cmbValue' ) ;
-
- // Fix the lists widths. (Bug #970)
- oListText.style.width = oListText.offsetWidth ;
- oListValue.style.width = oListValue.offsetWidth ;
-
- if ( oActiveEl && oActiveEl.tagName == 'SELECT' )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtSelValue').value = oActiveEl.value ;
- GetE('txtLines').value = GetAttribute( oActiveEl, 'size' ) ;
- GetE('chkMultiple').checked = oActiveEl.multiple ;
-
- // Load the actual options
- for ( var i = 0 ; i < oActiveEl.options.length ; i++ )
- {
- var sText = HTMLDecode( oActiveEl.options[i].innerHTML ) ;
- var sValue = oActiveEl.options[i].value ;
-
- AddComboOption( oListText, sText, sText ) ;
- AddComboOption( oListValue, sValue, sValue ) ;
- }
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- var sSize = GetE('txtLines').value ;
- if ( sSize == null || isNaN( sSize ) || sSize <= 1 )
- sSize = '' ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'SELECT', {name: GetE('txtName').value} ) ;
-
- SetAttribute( oActiveEl, 'size' , sSize ) ;
- oActiveEl.multiple = ( sSize.length > 0 && GetE('chkMultiple').checked ) ;
-
- // Remove all options.
- while ( oActiveEl.options.length > 0 )
- oActiveEl.remove(0) ;
-
- // Add all available options.
- for ( var i = 0 ; i < oListText.options.length ; i++ )
- {
- var sText = oListText.options[i].value ;
- var sValue = oListValue.options[i].value ;
- if ( sValue.length == 0 ) sValue = sText ;
-
- var oOption = AddComboOption( oActiveEl, sText, sValue, oDOM ) ;
-
- if ( sValue == GetE('txtSelValue').value )
- {
- SetAttribute( oOption, 'selected', 'selected' ) ;
- oOption.selected = true ;
- }
- }
-
- return true ;
-}
-
- </script>
- </head>
- <body style="overflow: hidden">
- <table width="100%" height="100%">
- <tr>
- <td>
- <table width="100%">
- <tr>
- <td nowrap><span fckLang="DlgSelectName">Name</span>&nbsp;</td>
- <td width="100%" colSpan="2"><input id="txtName" style="WIDTH: 100%" type="text"></td>
- </tr>
- <tr>
- <td nowrap><span fckLang="DlgSelectValue">Value</span>&nbsp;</td>
- <td width="100%" colSpan="2"><input id="txtSelValue" style="WIDTH: 100%; BACKGROUND-COLOR: buttonface" type="text" readonly></td>
- </tr>
- <tr>
- <td nowrap><span fckLang="DlgSelectSize">Size</span>&nbsp;</td>
- <td nowrap><input id="txtLines" type="text" size="2" value="">&nbsp;<span fckLang="DlgSelectLines">lines</span></td>
- <td nowrap align="right"><input id="chkMultiple" type="checkbox"><label for="chkMultiple" fckLang="DlgSelectChkMulti">Allow
- multiple selections</label></td>
- </tr>
- </table>
- <br>
- <hr style="POSITION: absolute">
- <span style="LEFT: 10px; POSITION: relative; TOP: -7px" class="BackColor">&nbsp;<span fckLang="DlgSelectOpAvail">Available
- Options</span>&nbsp;</span>
- <table width="100%">
- <tr>
- <td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
- <input id="txtText" style="WIDTH: 100%" type="text">
- </td>
- <td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
- <input id="txtValue" style="WIDTH: 100%" type="text">
- </td>
- <td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
- <td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
- </tr>
- <tr>
- <td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
- size="5"></select>
- </td>
- <td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
- size="5"></select>
- </td>
- <td vAlign="top" colSpan="2">
- </td>
- </tr>
- <tr>
- <td vAlign="bottom" colSpan="2"><input style="WIDTH: 100%" onclick="Move(-1);" type="button" fckLang="DlgSelectBtnUp" value="Up">
- <br>
- <input style="WIDTH: 100%" onclick="Move(1);" type="button" fckLang="DlgSelectBtnDown"
- value="Down">
- </td>
- </tr>
- <TR>
- <TD vAlign="bottom" colSpan="4"><INPUT onclick="SetSelectedValue();" type="button" fckLang="DlgSelectBtnSetValue" value="Set as selected value">&nbsp;&nbsp;
- <input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
- </TR>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select/fck_select.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select/fck_select.js
deleted file mode 100644
index 3a0347529..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_select/fck_select.js
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Scripts for the fck_select.html page.
- */
-
-function Select( combo )
-{
- var iIndex = combo.selectedIndex ;
-
- oListText.selectedIndex = iIndex ;
- oListValue.selectedIndex = iIndex ;
-
- var oTxtText = document.getElementById( "txtText" ) ;
- var oTxtValue = document.getElementById( "txtValue" ) ;
-
- oTxtText.value = oListText.value ;
- oTxtValue.value = oListValue.value ;
-}
-
-function Add()
-{
- var oTxtText = document.getElementById( "txtText" ) ;
- var oTxtValue = document.getElementById( "txtValue" ) ;
-
- AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
- AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
-
- oListText.selectedIndex = oListText.options.length - 1 ;
- oListValue.selectedIndex = oListValue.options.length - 1 ;
-
- oTxtText.value = '' ;
- oTxtValue.value = '' ;
-
- oTxtText.focus() ;
-}
-
-function Modify()
-{
- var iIndex = oListText.selectedIndex ;
-
- if ( iIndex < 0 ) return ;
-
- var oTxtText = document.getElementById( "txtText" ) ;
- var oTxtValue = document.getElementById( "txtValue" ) ;
-
- oListText.options[ iIndex ].innerHTML = HTMLEncode( oTxtText.value ) ;
- oListText.options[ iIndex ].value = oTxtText.value ;
-
- oListValue.options[ iIndex ].innerHTML = HTMLEncode( oTxtValue.value ) ;
- oListValue.options[ iIndex ].value = oTxtValue.value ;
-
- oTxtText.value = '' ;
- oTxtValue.value = '' ;
-
- oTxtText.focus() ;
-}
-
-function Move( steps )
-{
- ChangeOptionPosition( oListText, steps ) ;
- ChangeOptionPosition( oListValue, steps ) ;
-}
-
-function Delete()
-{
- RemoveSelectedOptions( oListText ) ;
- RemoveSelectedOptions( oListValue ) ;
-}
-
-function SetSelectedValue()
-{
- var iIndex = oListValue.selectedIndex ;
- if ( iIndex < 0 ) return ;
-
- var oTxtValue = document.getElementById( "txtSelValue" ) ;
-
- oTxtValue.value = oListValue.options[ iIndex ].value ;
-}
-
-// Moves the selected option by a number of steps (also negative)
-function ChangeOptionPosition( combo, steps )
-{
- var iActualIndex = combo.selectedIndex ;
-
- if ( iActualIndex < 0 )
- return ;
-
- var iFinalIndex = iActualIndex + steps ;
-
- if ( iFinalIndex < 0 )
- iFinalIndex = 0 ;
-
- if ( iFinalIndex > ( combo.options.length - 1 ) )
- iFinalIndex = combo.options.length - 1 ;
-
- if ( iActualIndex == iFinalIndex )
- return ;
-
- var oOption = combo.options[ iActualIndex ] ;
- var sText = HTMLDecode( oOption.innerHTML ) ;
- var sValue = oOption.value ;
-
- combo.remove( iActualIndex ) ;
-
- oOption = AddComboOption( combo, sText, sValue, null, iFinalIndex ) ;
-
- oOption.selected = true ;
-}
-
-// Remove all selected options from a SELECT object
-function RemoveSelectedOptions(combo)
-{
- // Save the selected index
- var iSelectedIndex = combo.selectedIndex ;
-
- var oOptions = combo.options ;
-
- // Remove all selected options
- for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
- {
- if (oOptions[i].selected) combo.remove(i) ;
- }
-
- // Reset the selection based on the original selected index
- if ( combo.options.length > 0 )
- {
- if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
- combo.selectedIndex = iSelectedIndex ;
- }
-}
-
-// Add a new option to a SELECT object (combo or list)
-function AddComboOption( combo, optionText, optionValue, documentObject, index )
-{
- var oOption ;
-
- if ( documentObject )
- oOption = documentObject.createElement("OPTION") ;
- else
- oOption = document.createElement("OPTION") ;
-
- if ( index != null )
- combo.options.add( oOption, index ) ;
- else
- combo.options.add( oOption ) ;
-
- oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
- oOption.value = optionValue ;
-
- return oOption ;
-}
-
-function HTMLEncode( text )
-{
- if ( !text )
- return '' ;
-
- text = text.replace( /&/g, '&amp;' ) ;
- text = text.replace( /</g, '&lt;' ) ;
- text = text.replace( />/g, '&gt;' ) ;
-
- return text ;
-}
-
-
-function HTMLDecode( text )
-{
- if ( !text )
- return '' ;
-
- text = text.replace( /&gt;/g, '>' ) ;
- text = text.replace( /&lt;/g, '<' ) ;
- text = text.replace( /&amp;/g, '&' ) ;
-
- return text ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_smiley.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_smiley.html
deleted file mode 100644
index bd2eaeab9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_smiley.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Smileys (emoticons) dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <style type="text/css">
- .Hand
- {
- cursor: pointer;
- cursor: hand;
- }
- </style>
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-window.onload = function ()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- dialog.SetAutoSize( true ) ;
-}
-
-function InsertSmiley( url )
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- var oImg = oEditor.FCK.InsertElement( 'img' ) ;
- oImg.src = url ;
- oImg.setAttribute( '_fcksavedurl', url ) ;
-
- // For long smileys list, it seams that IE continues loading the images in
- // the background when you quickly select one image. so, let's clear
- // everything before closing.
- document.body.innerHTML = '' ;
-
- dialog.Cancel() ;
-}
-
-function over(td)
-{
- td.className = 'LightBackground Hand' ;
-}
-
-function out(td)
-{
- td.className = 'DarkBackground Hand' ;
-}
- </script>
-</head>
-<body style="overflow: hidden">
- <table cellpadding="2" cellspacing="2" align="center" border="0" width="100%" height="100%">
- <script type="text/javascript">
-
-var FCKConfig = oEditor.FCKConfig ;
-
-var sBasePath = FCKConfig.SmileyPath ;
-var aImages = FCKConfig.SmileyImages ;
-var iCols = FCKConfig.SmileyColumns ;
-var iColWidth = parseInt( 100 / iCols, 10 ) ;
-
-var i = 0 ;
-while (i < aImages.length)
-{
- document.write( '<tr>' ) ;
- for(var j = 0 ; j < iCols ; j++)
- {
- if (aImages[i])
- {
- var sUrl = sBasePath + aImages[i] ;
- document.write( '<td width="' + iColWidth + '%" align="center" class="DarkBackground Hand" onclick="InsertSmiley(\'' + sUrl.replace(/'/g, "\\'" ) + '\')" onmouseover="over(this)" onmouseout="out(this)">' ) ;
- document.write( '<img src="' + sUrl + '" border="0" />' ) ;
- }
- else
- document.write( '<td width="' + iColWidth + '%" class="DarkBackground">&nbsp;' ) ;
- document.write( '<\/td>' ) ;
- i++ ;
- }
- document.write('<\/tr>') ;
-}
-
- </script>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_source.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_source.html
deleted file mode 100644
index d61e710ca..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_source.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Source editor dialog window.
--->
-<html>
- <head>
- <title>Source</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="robots" content="noindex, nofollow">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script language="javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKConfig = oEditor.FCKConfig ;
-var FCKTools = oEditor.FCKTools ;
-
-document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
-
-window.onload = function()
-{
- // EnableXHTML and EnableSourceXHTML has been deprecated
-// document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
- document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
-
- // Activate the "OK" button.
- window.parent.SetOkButton( true ) ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
- if ( oEditor.FCKBrowserInfo.IsIE )
- oEditor.FCKUndo.SaveUndoStep() ;
-
- FCK.SetData( document.getElementById('txtSource').value, false ) ;
-
- return true ;
-}
- </script>
- </head>
- <body scroll="no" style="OVERFLOW: hidden">
- <table width="100%" height="100%">
- <tr>
- <td height="100%"><textarea id="txtSource" dir="ltr" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; WIDTH: 100%; PADDING-TOP: 5px; FONT-FAMILY: Monospace; HEIGHT: 100%">Loading. Please wait...</textarea></td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_specialchar.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_specialchar.html
deleted file mode 100644
index eb0238c63..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_specialchar.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Special Chars Selector dialog window.
--->
-<html>
- <head>
- <meta name="robots" content="noindex, nofollow">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <style type="text/css">
- .Hand
- {
- cursor: pointer ;
- cursor: hand ;
- }
- .Sample { font-size: 24px; }
- </style>
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-
-var oSample ;
-
-function insertChar(charValue)
-{
- oEditor.FCKUndo.SaveUndoStep() ;
- oEditor.FCK.InsertHtml( charValue || "" ) ;
- window.parent.Cancel() ;
-}
-
-function over(td)
-{
- if ( ! oSample )
- return ;
- oSample.innerHTML = td.innerHTML ;
- td.className = 'LightBackground SpecialCharsOver Hand' ;
-}
-
-function out(td)
-{
- if ( ! oSample )
- return ;
- oSample.innerHTML = "&nbsp;" ;
- td.className = 'DarkBackground SpecialCharsOut Hand' ;
-}
-
-function setDefaults()
-{
- // Gets the sample placeholder.
- oSample = document.getElementById("SampleTD") ;
-
- // First of all, translates the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- window.parent.SetAutoSize( true ) ;
-}
-
- </script>
- </head>
- <body onload="setDefaults()" style="overflow: hidden">
- <table cellpadding="0" cellspacing="0" width="100%" height="100%">
- <tr>
- <td width="100%">
- <table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
- <script type="text/javascript">
-var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;","&OElig;","&oelig;","&#372;","&#374","&#373","&#375;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
-
-var cols = 20 ;
-
-var i = 0 ;
-while (i < aChars.length)
-{
- document.write("<TR>") ;
- for(var j = 0 ; j < cols ; j++)
- {
- if (aChars[i])
- {
- document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
- document.write(aChars[i]) ;
- }
- else
- document.write("<TD class='DarkBackground SpecialCharsOut'>&nbsp;") ;
- document.write("<\/TD>") ;
- i++ ;
- }
- document.write("<\/TR>") ;
-}
- </script>
- </table>
- </td>
- <td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">
- <table width="40" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages.html
deleted file mode 100644
index cd2355dee..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Spell Check dialog window.
--->
-<html>
- <head>
- <title>Spell Check</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script src="fck_spellerpages/spellerpages/spellChecker.js"></script>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCKLang = oEditor.FCKLang ;
-
-window.onload = function()
-{
- document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
-
- var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
- oSpeller.spellCheckScript = oEditor.FCKConfig.SpellerPagesServerScript || 'server-scripts/spellchecker.php' ;
- oSpeller.OnFinished = oSpeller_OnFinished ;
- oSpeller.openChecker() ;
-}
-
-function OnSpellerControlsLoad( controlsWindow )
-{
- // Translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage( controlsWindow.document ) ;
-}
-
-function oSpeller_OnFinished( numberOCorrections )
-{
- if ( numberOCorrections > 0 )
- {
- oEditor.FCKUndo.SaveUndoStep() ;
- oEditor.FCK.EditorDocument.body.innerHTML = document.getElementById('txtHtml').value ;
- if ( oEditor.FCKBrowserInfo.IsIE )
- oEditor.FCKSelection.Collapse( true ) ;
- }
- window.parent.Cancel() ;
-}
-
- </script>
- </head>
- <body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
- <input type="hidden" id="txtHtml" value="">
- <iframe id="frmSpell" src="javascript:void(0)" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html
deleted file mode 100644
index e69de29bb..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html
+++ /dev/null
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
deleted file mode 100644
index 80af84995..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
+++ /dev/null
@@ -1,87 +0,0 @@
-////////////////////////////////////////////////////
-// controlWindow object
-////////////////////////////////////////////////////
-function controlWindow( controlForm ) {
- // private properties
- this._form = controlForm;
-
- // public properties
- this.windowType = "controlWindow";
-// this.noSuggestionSelection = "- No suggestions -"; // by FredCK
- this.noSuggestionSelection = FCKLang.DlgSpellNoSuggestions ;
- // set up the properties for elements of the given control form
- this.suggestionList = this._form.sugg;
- this.evaluatedText = this._form.misword;
- this.replacementText = this._form.txtsugg;
- this.undoButton = this._form.btnUndo;
-
- // public methods
- this.addSuggestion = addSuggestion;
- this.clearSuggestions = clearSuggestions;
- this.selectDefaultSuggestion = selectDefaultSuggestion;
- this.resetForm = resetForm;
- this.setSuggestedText = setSuggestedText;
- this.enableUndo = enableUndo;
- this.disableUndo = disableUndo;
-}
-
-function resetForm() {
- if( this._form ) {
- this._form.reset();
- }
-}
-
-function setSuggestedText() {
- var slct = this.suggestionList;
- var txt = this.replacementText;
- var str = "";
- if( (slct.options[0].text) && slct.options[0].text != this.noSuggestionSelection ) {
- str = slct.options[slct.selectedIndex].text;
- }
- txt.value = str;
-}
-
-function selectDefaultSuggestion() {
- var slct = this.suggestionList;
- var txt = this.replacementText;
- if( slct.options.length == 0 ) {
- this.addSuggestion( this.noSuggestionSelection );
- } else {
- slct.options[0].selected = true;
- }
- this.setSuggestedText();
-}
-
-function addSuggestion( sugg_text ) {
- var slct = this.suggestionList;
- if( sugg_text ) {
- var i = slct.options.length;
- var newOption = new Option( sugg_text, 'sugg_text'+i );
- slct.options[i] = newOption;
- }
-}
-
-function clearSuggestions() {
- var slct = this.suggestionList;
- for( var j = slct.length - 1; j > -1; j-- ) {
- if( slct.options[j] ) {
- slct.options[j] = null;
- }
- }
-}
-
-function enableUndo() {
- if( this.undoButton ) {
- if( this.undoButton.disabled == true ) {
- this.undoButton.disabled = false;
- }
- }
-}
-
-function disableUndo() {
- if( this.undoButton ) {
- if( this.undoButton.disabled == false ) {
- this.undoButton.disabled = true;
- }
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html
deleted file mode 100644
index d91bcce2d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<html>
- <head>
- <link rel="stylesheet" type="text/css" href="spellerStyle.css" />
- <script type="text/javascript" src="controlWindow.js"></script>
- <script type="text/javascript">
-var spellerObject;
-var controlWindowObj;
-
-if( parent.opener ) {
- spellerObject = parent.opener.speller;
-}
-
-function ignore_word() {
- if( spellerObject ) {
- spellerObject.ignoreWord();
- }
-}
-
-function ignore_all() {
- if( spellerObject ) {
- spellerObject.ignoreAll();
- }
-}
-
-function replace_word() {
- if( spellerObject ) {
- spellerObject.replaceWord();
- }
-}
-
-function replace_all() {
- if( spellerObject ) {
- spellerObject.replaceAll();
- }
-}
-
-function end_spell() {
- if( spellerObject ) {
- spellerObject.terminateSpell();
- }
-}
-
-function undo() {
- if( spellerObject ) {
- spellerObject.undo();
- }
-}
-
-function suggText() {
- if( controlWindowObj ) {
- controlWindowObj.setSuggestedText();
- }
-}
-
-var FCKLang = window.parent.parent.FCKLang ; // by FredCK
-
-function init_spell() {
- // By FredCK (fckLang attributes have been added to the HTML source of this page)
- window.parent.parent.OnSpellerControlsLoad( this ) ;
-
- var controlForm = document.spellcheck;
-
- // create a new controlWindow object
- controlWindowObj = new controlWindow( controlForm );
-
- // call the init_spell() function in the parent frameset
- if( parent.frames.length ) {
- parent.init_spell( controlWindowObj );
- } else {
- alert( 'This page was loaded outside of a frameset. It might not display properly' );
- }
-}
-
-</script>
- </head>
- <body class="controlWindowBody" onLoad="init_spell();" style="OVERFLOW: hidden" scroll="no"> <!-- by FredCK -->
- <form name="spellcheck">
- <table border="0" cellpadding="0" cellspacing="0" border="0" align="center">
- <tr>
- <td colspan="3" class="normalLabel"><span fckLang="DlgSpellNotInDic">Not in dictionary:</span></td>
- </tr>
- <tr>
- <td colspan="3"><input class="readonlyInput" type="text" name="misword" readonly /></td>
- </tr>
- <tr>
- <td colspan="3" height="5"></td>
- </tr>
- <tr>
- <td class="normalLabel"><span fckLang="DlgSpellChangeTo">Change to:</span></td>
- </tr>
- <tr valign="top">
- <td>
- <table border="0" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="normalLabel">
- <input class="textDefault" type="text" name="txtsugg" />
- </td>
- </tr>
- <tr>
- <td>
- <select class="suggSlct" name="sugg" size="7" onChange="suggText();" onDblClick="replace_word();">
- <option></option>
- </select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;</td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td>
- <input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnore" value="Ignore" onClick="ignore_word();">
- </td>
- <td>&nbsp;&nbsp;</td>
- <td>
- <input class="buttonDefault" type="button" fckLang="DlgSpellBtnIgnoreAll" value="Ignore All" onClick="ignore_all();">
- </td>
- </tr>
- <tr>
- <td colspan="3" height="5"></td>
- </tr>
- <tr>
- <td>
- <input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplace" value="Replace" onClick="replace_word();">
- </td>
- <td>&nbsp;&nbsp;</td>
- <td>
- <input class="buttonDefault" type="button" fckLang="DlgSpellBtnReplaceAll" value="Replace All" onClick="replace_all();">
- </td>
- </tr>
- <tr>
- <td colspan="3" height="5"></td>
- </tr>
- <tr>
- <td>
- <input class="buttonDefault" type="button" name="btnUndo" fckLang="DlgSpellBtnUndo" value="Undo" onClick="undo();"
- disabled>
- </td>
- <td>&nbsp;&nbsp;</td>
- <td>
- <!-- by FredCK
- <input class="buttonDefault" type="button" value="Close" onClick="end_spell();">
- -->
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </form>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
deleted file mode 100644
index 27e368e8b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm
+++ /dev/null
@@ -1,148 +0,0 @@
-<cfsetting enablecfoutputonly="true">
-<!---
-This code uses a CF User Defined Function and should work in CF version 5.0
-and up without alteration.
-
-Also if you are hosting your site at an ISP, you will have to check with them
-to see if the use of <CFEXECUTE> is allowed. In most cases ISP will not allow
-the use of that tag for security reasons. Clients would be able to access each
-others files in certain cases.
---->
-
-<!--- The following variables values must reflect your installation. --->
-<cfset aspell_dir = "C:\Program Files\Aspell\bin">
-<cfset lang = "en_US">
-<cfset aspell_opts = "-a --lang=#lang# --encoding=utf-8 -H --rem-sgml-check=alt">
-<cfset tempfile_in = GetTempFile(GetTempDirectory(), "spell_")>
-<cfset tempfile_out = GetTempFile(GetTempDirectory(), "spell_")>
-<cfset spellercss = "../spellerStyle.css">
-<cfset word_win_src = "../wordWindow.js">
-
-<cfset form.checktext = form["textinputs[]"]>
-
-<!--- make no difference between URL and FORM scopes --->
-<cfparam name="url.checktext" default="">
-<cfparam name="form.checktext" default="#url.checktext#">
-
-<!--- Takes care of those pesky smart quotes from MS apps, replaces them with regular quotes --->
-<cfset submitted_text = ReplaceList(form.checktext,"%u201C,%u201D","%22,%22")>
-
-<!--- submitted_text now is ready for processing --->
-
-<!--- use carat on each line to escape possible aspell commands --->
-<cfset text = "">
-<cfset CRLF = Chr(13) & Chr(10)>
-
-<cfloop list="#submitted_text#" index="field" delimiters=",">
- <cfset text = text & "%" & CRLF
- & "^A" & CRLF
- & "!" & CRLF>
- <!--- Strip all tags for the text. (by FredCK - #339 / #681) --->
- <cfset field = REReplace(URLDecode(field), "<[^>]+>", " ", "all")>
- <cfloop list="#field#" index="line" delimiters="#CRLF#">
- <cfset text = ListAppend(text, "^" & Trim(JSStringFormat(line)), CRLF)>
- </cfloop>
-</cfloop>
-
-<!--- create temp file from the submitted text, this will be passed to aspell to be check for misspelled words --->
-<cffile action="write" file="#tempfile_in#" output="#text#" charset="utf-8">
-
-<!--- execute aspell in an UTF-8 console and redirect output to a file. UTF-8 encoding is lost if done differently --->
-<cfexecute name="cmd.exe" arguments='/c type "#tempfile_in#" | "#aspell_dir#\aspell.exe" #aspell_opts# > "#tempfile_out#"' timeout="100"/>
-
-<!--- read output file for further processing --->
-<cffile action="read" file="#tempfile_out#" variable="food" charset="utf-8">
-
-<!--- remove temp files --->
-<cffile action="delete" file="#tempfile_in#">
-<cffile action="delete" file="#tempfile_out#">
-
-<cfset texts = StructNew()>
-<cfset texts.textinputs = "">
-<cfset texts.words = "">
-<cfset texts.abort = "">
-
-<!--- Generate Text Inputs --->
-<cfset i = 0>
-<cfloop list="#submitted_text#" index="textinput">
- <cfset texts.textinputs = ListAppend(texts.textinputs, 'textinputs[#i#] = decodeURIComponent("#textinput#");', CRLF)>
- <cfset i = i + 1>
-</cfloop>
-
-<!--- Generate Words Lists --->
-<cfset word_cnt = 0>
-<cfset input_cnt = -1>
-<cfloop list="#food#" index="aspell_line" delimiters="#CRLF#">
- <cfset leftChar = Left(aspell_line, 1)>
- <cfif leftChar eq "*">
- <cfset input_cnt = input_cnt + 1>
- <cfset word_cnt = 0>
- <cfset texts.words = ListAppend(texts.words, "words[#input_cnt#] = [];", CRLF)>
- <cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#] = [];", CRLF)>
- <cfelse>
- <cfif leftChar eq "&" or leftChar eq "##">
- <!--- word that misspelled --->
- <cfset bad_word = Trim(ListGetAt(aspell_line, 2, " "))>
- <cfset bad_word = Replace(bad_word, "'", "\'", "ALL")>
- <!--- sugestions --->
- <cfset sug_list = Trim(ListRest(aspell_line, ":"))>
- <cfset sug_list = ListQualify(Replace(sug_list, "'", "\'", "ALL"), "'")>
- <!--- javascript --->
- <cfset texts.words = ListAppend(texts.words, "words[#input_cnt#][#word_cnt#] = '#bad_word#';", CRLF)>
- <cfset texts.words = ListAppend(texts.words, "suggs[#input_cnt#][#word_cnt#] = [#sug_list#];", CRLF)>
- <cfset word_cnt = word_cnt + 1>
- </cfif>
- </cfif>
-</cfloop>
-
-<cfif texts.words eq "">
- <cfset texts.abort = "alert('Spell check complete.\n\nNo misspellings found.'); top.window.close();">
-</cfif>
-
-<cfcontent type="text/html; charset=utf-8">
-
-<cfoutput><html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="#spellercss#" />
-<script language="javascript" src="#word_win_src#"></script>
-<script language="javascript">
-var suggs = new Array();
-var words = new Array();
-var textinputs = new Array();
-var error;
-
-#texts.textinputs##CRLF#
-#texts.words#
-#texts.abort#
-
-var wordWindowObj = new wordWindow();
-wordWindowObj.originalSpellings = words;
-wordWindowObj.suggestions = suggs;
-wordWindowObj.textInputs = textinputs;
-
-function init_spell() {
- // check if any error occured during server-side processing
- if( error ) {
- alert( error );
- } else {
- // call the init_spell() function in the parent frameset
- if (parent.frames.length) {
- parent.init_spell( wordWindowObj );
- } else {
- alert('This page was loaded outside of a frameset. It might not display properly');
- }
- }
-}
-</script>
-
-</head>
-<body onLoad="init_spell();">
-
-<script type="text/javascript">
-wordWindowObj.writeBody();
-</script>
-
-</body>
-</html></cfoutput>
-<cfsetting enablecfoutputonly="false">
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
deleted file mode 100644
index 9c747c916..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-header('Content-type: text/html; charset=utf-8');
-
-// The following variables values must reflect your installation needs.
-
-$aspell_prog = '"C:\Program Files\Aspell\bin\aspell.exe"'; // by FredCK (for Windows)
-//$aspell_prog = 'aspell'; // by FredCK (for Linux)
-
-$lang = 'en_US';
-$aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; // by FredCK
-
-$tempfiledir = "./";
-
-$spellercss = '../spellerStyle.css'; // by FredCK
-$word_win_src = '../wordWindow.js'; // by FredCK
-
-$textinputs = $_POST['textinputs']; # array
-$input_separator = "A";
-
-# set the JavaScript variable to the submitted text.
-# textinputs is an array, each element corresponding to the (url-encoded)
-# value of the text control submitted for spell-checking
-function print_textinputs_var() {
- global $textinputs;
- foreach( $textinputs as $key=>$val ) {
- # $val = str_replace( "'", "%27", $val );
- echo "textinputs[$key] = decodeURIComponent(\"" . $val . "\");\n";
- }
-}
-
-# make declarations for the text input index
-function print_textindex_decl( $text_input_idx ) {
- echo "words[$text_input_idx] = [];\n";
- echo "suggs[$text_input_idx] = [];\n";
-}
-
-# set an element of the JavaScript 'words' array to a misspelled word
-function print_words_elem( $word, $index, $text_input_idx ) {
- echo "words[$text_input_idx][$index] = '" . escape_quote( $word ) . "';\n";
-}
-
-
-# set an element of the JavaScript 'suggs' array to a list of suggestions
-function print_suggs_elem( $suggs, $index, $text_input_idx ) {
- echo "suggs[$text_input_idx][$index] = [";
- foreach( $suggs as $key=>$val ) {
- if( $val ) {
- echo "'" . escape_quote( $val ) . "'";
- if ( $key+1 < count( $suggs )) {
- echo ", ";
- }
- }
- }
- echo "];\n";
-}
-
-# escape single quote
-function escape_quote( $str ) {
- return preg_replace ( "/'/", "\\'", $str );
-}
-
-
-# handle a server-side error.
-function error_handler( $err ) {
- echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n";
-}
-
-## get the list of misspelled words. Put the results in the javascript words array
-## for each misspelled word, get suggestions and put in the javascript suggs array
-function print_checker_results() {
-
- global $aspell_prog;
- global $aspell_opts;
- global $tempfiledir;
- global $textinputs;
- global $input_separator;
- $aspell_err = "";
- # create temp file
- $tempfile = tempnam( $tempfiledir, 'aspell_data_' );
-
- # open temp file, add the submitted text.
- if( $fh = fopen( $tempfile, 'w' )) {
- for( $i = 0; $i < count( $textinputs ); $i++ ) {
- $text = urldecode( $textinputs[$i] );
-
- // Strip all tags for the text. (by FredCK - #339 / #681)
- $text = preg_replace( "/<[^>]+>/", " ", $text ) ;
-
- $lines = explode( "\n", $text );
- fwrite ( $fh, "%\n" ); # exit terse mode
- fwrite ( $fh, "^$input_separator\n" );
- fwrite ( $fh, "!\n" ); # enter terse mode
- foreach( $lines as $key=>$value ) {
- # use carat on each line to escape possible aspell commands
- fwrite( $fh, "^$value\n" );
- }
- }
- fclose( $fh );
-
- # exec aspell command - redirect STDERR to STDOUT
- $cmd = "$aspell_prog $aspell_opts < $tempfile 2>&1";
- if( $aspellret = shell_exec( $cmd )) {
- $linesout = explode( "\n", $aspellret );
- $index = 0;
- $text_input_index = -1;
- # parse each line of aspell return
- foreach( $linesout as $key=>$val ) {
- $chardesc = substr( $val, 0, 1 );
- # if '&', then not in dictionary but has suggestions
- # if '#', then not in dictionary and no suggestions
- # if '*', then it is a delimiter between text inputs
- # if '@' then version info
- if( $chardesc == '&' || $chardesc == '#' ) {
- $line = explode( " ", $val, 5 );
- print_words_elem( $line[1], $index, $text_input_index );
- if( isset( $line[4] )) {
- $suggs = explode( ", ", $line[4] );
- } else {
- $suggs = array();
- }
- print_suggs_elem( $suggs, $index, $text_input_index );
- $index++;
- } elseif( $chardesc == '*' ) {
- $text_input_index++;
- print_textindex_decl( $text_input_index );
- $index = 0;
- } elseif( $chardesc != '@' && $chardesc != "" ) {
- # assume this is error output
- $aspell_err .= $val;
- }
- }
- if( $aspell_err ) {
- $aspell_err = "Error executing `$cmd`\\n$aspell_err";
- error_handler( $aspell_err );
- }
- } else {
- error_handler( "System error: Aspell program execution failed (`$cmd`)" );
- }
- } else {
- error_handler( "System error: Could not open file '$tempfile' for writing" );
- }
-
- # close temp file, delete file
- unlink( $tempfile );
-}
-
-
-?>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="<?php echo $spellercss ?>" />
-<script language="javascript" src="<?php echo $word_win_src ?>"></script>
-<script language="javascript">
-var suggs = new Array();
-var words = new Array();
-var textinputs = new Array();
-var error;
-<?php
-
-print_textinputs_var();
-
-print_checker_results();
-
-?>
-
-var wordWindowObj = new wordWindow();
-wordWindowObj.originalSpellings = words;
-wordWindowObj.suggestions = suggs;
-wordWindowObj.textInputs = textinputs;
-
-function init_spell() {
- // check if any error occured during server-side processing
- if( error ) {
- alert( error );
- } else {
- // call the init_spell() function in the parent frameset
- if (parent.frames.length) {
- parent.init_spell( wordWindowObj );
- } else {
- alert('This page was loaded outside of a frameset. It might not display properly');
- }
- }
-}
-
-
-
-</script>
-
-</head>
-<!-- <body onLoad="init_spell();"> by FredCK -->
-<body onLoad="init_spell();" bgcolor="#ffffff">
-
-<script type="text/javascript">
-wordWindowObj.writeBody();
-</script>
-
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl
deleted file mode 100644
index fae010d9b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/usr/bin/perl
-
-use CGI qw/ :standard /;
-use File::Temp qw/ tempfile tempdir /;
-
-# my $spellercss = '/speller/spellerStyle.css'; # by FredCK
-my $spellercss = '../spellerStyle.css'; # by FredCK
-# my $wordWindowSrc = '/speller/wordWindow.js'; # by FredCK
-my $wordWindowSrc = '../wordWindow.js'; # by FredCK
-my @textinputs = param( 'textinputs[]' ); # array
-# my $aspell_cmd = 'aspell'; # by FredCK (for Linux)
-my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"'; # by FredCK (for Windows)
-my $lang = 'en_US';
-# my $aspell_opts = "-a --lang=$lang --encoding=utf-8"; # by FredCK
-my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt"; # by FredCK
-my $input_separator = "A";
-
-# set the 'wordtext' JavaScript variable to the submitted text.
-sub printTextVar {
- for( my $i = 0; $i <= $#textinputs; $i++ ) {
- print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
- }
-}
-
-sub printTextIdxDecl {
- my $idx = shift;
- print "words[$idx] = [];\n";
- print "suggs[$idx] = [];\n";
-}
-
-sub printWordsElem {
- my( $textIdx, $wordIdx, $word ) = @_;
- print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
-}
-
-sub printSuggsElem {
- my( $textIdx, $wordIdx, @suggs ) = @_;
- print "suggs[$textIdx][$wordIdx] = [";
- for my $i ( 0..$#suggs ) {
- print "'" . escapeQuote( $suggs[$i] ) . "'";
- if( $i < $#suggs ) {
- print ", ";
- }
- }
- print "];\n";
-}
-
-sub printCheckerResults {
- my $textInputIdx = -1;
- my $wordIdx = 0;
- my $unhandledText;
- # create temp file
- my $dir = tempdir( CLEANUP => 1 );
- my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
-
- # temp file was created properly?
-
- # open temp file, add the submitted text.
- for( my $i = 0; $i <= $#textinputs; $i++ ) {
- $text = url_decode( $textinputs[$i] );
- # Strip all tags for the text. (by FredCK - #339 / #681)
- $text =~ s/<[^>]+>/ /g;
- @lines = split( /\n/, $text );
- print $fh "\%\n"; # exit terse mode
- print $fh "^$input_separator\n";
- print $fh "!\n"; # enter terse mode
- for my $line ( @lines ) {
- # use carat on each line to escape possible aspell commands
- print $fh "^$line\n";
- }
-
- }
- # exec aspell command
- my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
- open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
- # parse each line of aspell return
- for my $ret ( <ASPELL> ) {
- chomp( $ret );
- # if '&', then not in dictionary but has suggestions
- # if '#', then not in dictionary and no suggestions
- # if '*', then it is a delimiter between text inputs
- if( $ret =~ /^\*/ ) {
- $textInputIdx++;
- printTextIdxDecl( $textInputIdx );
- $wordIdx = 0;
-
- } elsif( $ret =~ /^(&|#)/ ) {
- my @tokens = split( " ", $ret, 5 );
- printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
- my @suggs = ();
- if( $tokens[4] ) {
- @suggs = split( ", ", $tokens[4] );
- }
- printSuggsElem( $textInputIdx, $wordIdx, @suggs );
- $wordIdx++;
- } else {
- $unhandledText .= $ret;
- }
- }
- close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
-}
-
-sub escapeQuote {
- my $str = shift;
- $str =~ s/'/\\'/g;
- return $str;
-}
-
-sub handleError {
- my $err = shift;
- print "error = '" . escapeQuote( $err ) . "';\n";
-}
-
-sub url_decode {
- local $_ = @_ ? shift : $_;
- defined or return;
- # change + signs to spaces
- tr/+/ /;
- # change hex escapes to the proper characters
- s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
- return $_;
-}
-
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# Display HTML
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-print <<EOF;
-Content-type: text/html; charset=utf-8
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="$spellercss"/>
-<script src="$wordWindowSrc"></script>
-<script type="text/javascript">
-var suggs = new Array();
-var words = new Array();
-var textinputs = new Array();
-var error;
-EOF
-
-printTextVar();
-
-printCheckerResults();
-
-print <<EOF;
-var wordWindowObj = new wordWindow();
-wordWindowObj.originalSpellings = words;
-wordWindowObj.suggestions = suggs;
-wordWindowObj.textInputs = textinputs;
-
-
-function init_spell() {
- // check if any error occured during server-side processing
- if( error ) {
- alert( error );
- } else {
- // call the init_spell() function in the parent frameset
- if (parent.frames.length) {
- parent.init_spell( wordWindowObj );
- } else {
- error = "This page was loaded outside of a frameset. ";
- error += "It might not display properly";
- alert( error );
- }
- }
-}
-
-</script>
-
-</head>
-<body onLoad="init_spell();">
-
-<script type="text/javascript">
-wordWindowObj.writeBody();
-</script>
-
-</body>
-</html>
-EOF
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
deleted file mode 100644
index c85be9ab6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js
+++ /dev/null
@@ -1,461 +0,0 @@
-////////////////////////////////////////////////////
-// spellChecker.js
-//
-// spellChecker object
-//
-// This file is sourced on web pages that have a textarea object to evaluate
-// for spelling. It includes the implementation for the spellCheckObject.
-//
-////////////////////////////////////////////////////
-
-
-// constructor
-function spellChecker( textObject ) {
-
- // public properties - configurable
-// this.popUpUrl = '/speller/spellchecker.html'; // by FredCK
- this.popUpUrl = 'fck_spellerpages/spellerpages/spellchecker.html'; // by FredCK
- this.popUpName = 'spellchecker';
-// this.popUpProps = "menu=no,width=440,height=350,top=70,left=120,resizable=yes,status=yes"; // by FredCK
- this.popUpProps = null ; // by FredCK
-// this.spellCheckScript = '/speller/server-scripts/spellchecker.php'; // by FredCK
- //this.spellCheckScript = '/cgi-bin/spellchecker.pl';
-
- // values used to keep track of what happened to a word
- this.replWordFlag = "R"; // single replace
- this.ignrWordFlag = "I"; // single ignore
- this.replAllFlag = "RA"; // replace all occurances
- this.ignrAllFlag = "IA"; // ignore all occurances
- this.fromReplAll = "~RA"; // an occurance of a "replace all" word
- this.fromIgnrAll = "~IA"; // an occurance of a "ignore all" word
- // properties set at run time
- this.wordFlags = new Array();
- this.currentTextIndex = 0;
- this.currentWordIndex = 0;
- this.spellCheckerWin = null;
- this.controlWin = null;
- this.wordWin = null;
- this.textArea = textObject; // deprecated
- this.textInputs = arguments;
-
- // private methods
- this._spellcheck = _spellcheck;
- this._getSuggestions = _getSuggestions;
- this._setAsIgnored = _setAsIgnored;
- this._getTotalReplaced = _getTotalReplaced;
- this._setWordText = _setWordText;
- this._getFormInputs = _getFormInputs;
-
- // public methods
- this.openChecker = openChecker;
- this.startCheck = startCheck;
- this.checkTextBoxes = checkTextBoxes;
- this.checkTextAreas = checkTextAreas;
- this.spellCheckAll = spellCheckAll;
- this.ignoreWord = ignoreWord;
- this.ignoreAll = ignoreAll;
- this.replaceWord = replaceWord;
- this.replaceAll = replaceAll;
- this.terminateSpell = terminateSpell;
- this.undo = undo;
-
- // set the current window's "speller" property to the instance of this class.
- // this object can now be referenced by child windows/frames.
- window.speller = this;
-}
-
-// call this method to check all text boxes (and only text boxes) in the HTML document
-function checkTextBoxes() {
- this.textInputs = this._getFormInputs( "^text$" );
- this.openChecker();
-}
-
-// call this method to check all textareas (and only textareas ) in the HTML document
-function checkTextAreas() {
- this.textInputs = this._getFormInputs( "^textarea$" );
- this.openChecker();
-}
-
-// call this method to check all text boxes and textareas in the HTML document
-function spellCheckAll() {
- this.textInputs = this._getFormInputs( "^text(area)?$" );
- this.openChecker();
-}
-
-// call this method to check text boxe(s) and/or textarea(s) that were passed in to the
-// object's constructor or to the textInputs property
-function openChecker() {
- this.spellCheckerWin = window.open( this.popUpUrl, this.popUpName, this.popUpProps );
- if( !this.spellCheckerWin.opener ) {
- this.spellCheckerWin.opener = window;
- }
-}
-
-function startCheck( wordWindowObj, controlWindowObj ) {
-
- // set properties from args
- this.wordWin = wordWindowObj;
- this.controlWin = controlWindowObj;
-
- // reset properties
- this.wordWin.resetForm();
- this.controlWin.resetForm();
- this.currentTextIndex = 0;
- this.currentWordIndex = 0;
- // initialize the flags to an array - one element for each text input
- this.wordFlags = new Array( this.wordWin.textInputs.length );
- // each element will be an array that keeps track of each word in the text
- for( var i=0; i<this.wordFlags.length; i++ ) {
- this.wordFlags[i] = [];
- }
-
- // start
- this._spellcheck();
-
- return true;
-}
-
-function ignoreWord() {
- var wi = this.currentWordIndex;
- var ti = this.currentTextIndex;
- if( !this.wordWin ) {
- alert( 'Error: Word frame not available.' );
- return false;
- }
- if( !this.wordWin.getTextVal( ti, wi )) {
- alert( 'Error: "Not in dictionary" text is missing.' );
- return false;
- }
- // set as ignored
- if( this._setAsIgnored( ti, wi, this.ignrWordFlag )) {
- this.currentWordIndex++;
- this._spellcheck();
- }
- return true;
-}
-
-function ignoreAll() {
- var wi = this.currentWordIndex;
- var ti = this.currentTextIndex;
- if( !this.wordWin ) {
- alert( 'Error: Word frame not available.' );
- return false;
- }
- // get the word that is currently being evaluated.
- var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
- if( !s_word_to_repl ) {
- alert( 'Error: "Not in dictionary" text is missing' );
- return false;
- }
-
- // set this word as an "ignore all" word.
- this._setAsIgnored( ti, wi, this.ignrAllFlag );
-
- // loop through all the words after this word
- for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
- for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
- if(( i == ti && j > wi ) || i > ti ) {
- // future word: set as "from ignore all" if
- // 1) do not already have a flag and
- // 2) have the same value as current word
- if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
- && ( !this.wordFlags[i][j] )) {
- this._setAsIgnored( i, j, this.fromIgnrAll );
- }
- }
- }
- }
-
- // finally, move on
- this.currentWordIndex++;
- this._spellcheck();
- return true;
-}
-
-function replaceWord() {
- var wi = this.currentWordIndex;
- var ti = this.currentTextIndex;
- if( !this.wordWin ) {
- alert( 'Error: Word frame not available.' );
- return false;
- }
- if( !this.wordWin.getTextVal( ti, wi )) {
- alert( 'Error: "Not in dictionary" text is missing' );
- return false;
- }
- if( !this.controlWin.replacementText ) {
- return false ;
- }
- var txt = this.controlWin.replacementText;
- if( txt.value ) {
- var newspell = new String( txt.value );
- if( this._setWordText( ti, wi, newspell, this.replWordFlag )) {
- this.currentWordIndex++;
- this._spellcheck();
- }
- }
- return true;
-}
-
-function replaceAll() {
- var ti = this.currentTextIndex;
- var wi = this.currentWordIndex;
- if( !this.wordWin ) {
- alert( 'Error: Word frame not available.' );
- return false;
- }
- var s_word_to_repl = this.wordWin.getTextVal( ti, wi );
- if( !s_word_to_repl ) {
- alert( 'Error: "Not in dictionary" text is missing' );
- return false;
- }
- var txt = this.controlWin.replacementText;
- if( !txt.value ) return false;
- var newspell = new String( txt.value );
-
- // set this word as a "replace all" word.
- this._setWordText( ti, wi, newspell, this.replAllFlag );
-
- // loop through all the words after this word
- for( var i = ti; i < this.wordWin.textInputs.length; i++ ) {
- for( var j = 0; j < this.wordWin.totalWords( i ); j++ ) {
- if(( i == ti && j > wi ) || i > ti ) {
- // future word: set word text to s_word_to_repl if
- // 1) do not already have a flag and
- // 2) have the same value as s_word_to_repl
- if(( this.wordWin.getTextVal( i, j ) == s_word_to_repl )
- && ( !this.wordFlags[i][j] )) {
- this._setWordText( i, j, newspell, this.fromReplAll );
- }
- }
- }
- }
-
- // finally, move on
- this.currentWordIndex++;
- this._spellcheck();
- return true;
-}
-
-function terminateSpell() {
- // called when we have reached the end of the spell checking.
- var msg = ""; // by FredCK
- var numrepl = this._getTotalReplaced();
- if( numrepl == 0 ) {
- // see if there were no misspellings to begin with
- if( !this.wordWin ) {
- msg = "";
- } else {
- if( this.wordWin.totalMisspellings() ) {
-// msg += "No words changed."; // by FredCK
- msg += FCKLang.DlgSpellNoChanges ; // by FredCK
- } else {
-// msg += "No misspellings found."; // by FredCK
- msg += FCKLang.DlgSpellNoMispell ; // by FredCK
- }
- }
- } else if( numrepl == 1 ) {
-// msg += "One word changed."; // by FredCK
- msg += FCKLang.DlgSpellOneChange ; // by FredCK
- } else {
-// msg += numrepl + " words changed."; // by FredCK
- msg += FCKLang.DlgSpellManyChanges.replace( /%1/g, numrepl ) ;
- }
- if( msg ) {
-// msg += "\n"; // by FredCK
- alert( msg );
- }
-
- if( numrepl > 0 ) {
- // update the text field(s) on the opener window
- for( var i = 0; i < this.textInputs.length; i++ ) {
- // this.textArea.value = this.wordWin.text;
- if( this.wordWin ) {
- if( this.wordWin.textInputs[i] ) {
- this.textInputs[i].value = this.wordWin.textInputs[i];
- }
- }
- }
- }
-
- // return back to the calling window
-// this.spellCheckerWin.close(); // by FredCK
- if ( typeof( this.OnFinished ) == 'function' ) // by FredCK
- this.OnFinished(numrepl) ; // by FredCK
-
- return true;
-}
-
-function undo() {
- // skip if this is the first word!
- var ti = this.currentTextIndex;
- var wi = this.currentWordIndex;
-
- if( this.wordWin.totalPreviousWords( ti, wi ) > 0 ) {
- this.wordWin.removeFocus( ti, wi );
-
- // go back to the last word index that was acted upon
- do {
- // if the current word index is zero then reset the seed
- if( this.currentWordIndex == 0 && this.currentTextIndex > 0 ) {
- this.currentTextIndex--;
- this.currentWordIndex = this.wordWin.totalWords( this.currentTextIndex )-1;
- if( this.currentWordIndex < 0 ) this.currentWordIndex = 0;
- } else {
- if( this.currentWordIndex > 0 ) {
- this.currentWordIndex--;
- }
- }
- } while (
- this.wordWin.totalWords( this.currentTextIndex ) == 0
- || this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromIgnrAll
- || this.wordFlags[this.currentTextIndex][this.currentWordIndex] == this.fromReplAll
- );
-
- var text_idx = this.currentTextIndex;
- var idx = this.currentWordIndex;
- var preReplSpell = this.wordWin.originalSpellings[text_idx][idx];
-
- // if we got back to the first word then set the Undo button back to disabled
- if( this.wordWin.totalPreviousWords( text_idx, idx ) == 0 ) {
- this.controlWin.disableUndo();
- }
-
- var i, j, origSpell ;
- // examine what happened to this current word.
- switch( this.wordFlags[text_idx][idx] ) {
- // replace all: go through this and all the future occurances of the word
- // and revert them all to the original spelling and clear their flags
- case this.replAllFlag :
- for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
- for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
- if(( i == text_idx && j >= idx ) || i > text_idx ) {
- origSpell = this.wordWin.originalSpellings[i][j];
- if( origSpell == preReplSpell ) {
- this._setWordText ( i, j, origSpell, undefined );
- }
- }
- }
- }
- break;
-
- // ignore all: go through all the future occurances of the word
- // and clear their flags
- case this.ignrAllFlag :
- for( i = text_idx; i < this.wordWin.textInputs.length; i++ ) {
- for( j = 0; j < this.wordWin.totalWords( i ); j++ ) {
- if(( i == text_idx && j >= idx ) || i > text_idx ) {
- origSpell = this.wordWin.originalSpellings[i][j];
- if( origSpell == preReplSpell ) {
- this.wordFlags[i][j] = undefined;
- }
- }
- }
- }
- break;
-
- // replace: revert the word to its original spelling
- case this.replWordFlag :
- this._setWordText ( text_idx, idx, preReplSpell, undefined );
- break;
- }
-
- // For all four cases, clear the wordFlag of this word. re-start the process
- this.wordFlags[text_idx][idx] = undefined;
- this._spellcheck();
- }
-}
-
-function _spellcheck() {
- var ww = this.wordWin;
-
- // check if this is the last word in the current text element
- if( this.currentWordIndex == ww.totalWords( this.currentTextIndex) ) {
- this.currentTextIndex++;
- this.currentWordIndex = 0;
- // keep going if we're not yet past the last text element
- if( this.currentTextIndex < this.wordWin.textInputs.length ) {
- this._spellcheck();
- return;
- } else {
- this.terminateSpell();
- return;
- }
- }
-
- // if this is after the first one make sure the Undo button is enabled
- if( this.currentWordIndex > 0 ) {
- this.controlWin.enableUndo();
- }
-
- // skip the current word if it has already been worked on
- if( this.wordFlags[this.currentTextIndex][this.currentWordIndex] ) {
- // increment the global current word index and move on.
- this.currentWordIndex++;
- this._spellcheck();
- } else {
- var evalText = ww.getTextVal( this.currentTextIndex, this.currentWordIndex );
- if( evalText ) {
- this.controlWin.evaluatedText.value = evalText;
- ww.setFocus( this.currentTextIndex, this.currentWordIndex );
- this._getSuggestions( this.currentTextIndex, this.currentWordIndex );
- }
- }
-}
-
-function _getSuggestions( text_num, word_num ) {
- this.controlWin.clearSuggestions();
- // add suggestion in list for each suggested word.
- // get the array of suggested words out of the
- // three-dimensional array containing all suggestions.
- var a_suggests = this.wordWin.suggestions[text_num][word_num];
- if( a_suggests ) {
- // got an array of suggestions.
- for( var ii = 0; ii < a_suggests.length; ii++ ) {
- this.controlWin.addSuggestion( a_suggests[ii] );
- }
- }
- this.controlWin.selectDefaultSuggestion();
-}
-
-function _setAsIgnored( text_num, word_num, flag ) {
- // set the UI
- this.wordWin.removeFocus( text_num, word_num );
- // do the bookkeeping
- this.wordFlags[text_num][word_num] = flag;
- return true;
-}
-
-function _getTotalReplaced() {
- var i_replaced = 0;
- for( var i = 0; i < this.wordFlags.length; i++ ) {
- for( var j = 0; j < this.wordFlags[i].length; j++ ) {
- if(( this.wordFlags[i][j] == this.replWordFlag )
- || ( this.wordFlags[i][j] == this.replAllFlag )
- || ( this.wordFlags[i][j] == this.fromReplAll )) {
- i_replaced++;
- }
- }
- }
- return i_replaced;
-}
-
-function _setWordText( text_num, word_num, newText, flag ) {
- // set the UI and form inputs
- this.wordWin.setText( text_num, word_num, newText );
- // keep track of what happened to this word:
- this.wordFlags[text_num][word_num] = flag;
- return true;
-}
-
-function _getFormInputs( inputPattern ) {
- var inputs = new Array();
- for( var i = 0; i < document.forms.length; i++ ) {
- for( var j = 0; j < document.forms[i].elements.length; j++ ) {
- if( document.forms[i].elements[j].type.match( inputPattern )) {
- inputs[inputs.length] = document.forms[i].elements[j];
- }
- }
- }
- return inputs;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
deleted file mode 100644
index cbcd7db79..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
-<script>
-
-var wordWindow = null;
-var controlWindow = null;
-
-function init_spell( spellerWindow ) {
-
- if( spellerWindow ) {
- if( spellerWindow.windowType == "wordWindow" ) {
- wordWindow = spellerWindow;
- } else if ( spellerWindow.windowType == "controlWindow" ) {
- controlWindow = spellerWindow;
- }
- }
-
- if( controlWindow && wordWindow ) {
- // populate the speller object and start it off!
- var speller = opener.speller;
- wordWindow.speller = speller;
- speller.startCheck( wordWindow, controlWindow );
- }
-}
-
-// encodeForPost
-function encodeForPost( str ) {
- var s = new String( str );
- s = encodeURIComponent( s );
- // additionally encode single quotes to evade any PHP
- // magic_quotes_gpc setting (it inserts escape characters and
- // therefore skews the btye positions of misspelled words)
- return s.replace( /\'/g, '%27' );
-}
-
-// post the text area data to the script that populates the speller
-function postWords() {
- var bodyDoc = window.frames[0].document;
- bodyDoc.open();
- bodyDoc.write('<html>');
- bodyDoc.write('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">');
- bodyDoc.write('<link rel="stylesheet" type="text/css" href="spellerStyle.css"/>');
- if (opener) {
- var speller = opener.speller;
- bodyDoc.write('<body class="normalText" onLoad="document.forms[0].submit();">');
- bodyDoc.write('<p>' + window.parent.FCKLang.DlgSpellProgress + '<\/p>'); // by FredCK
- bodyDoc.write('<form action="'+speller.spellCheckScript+'" method="post">');
- for( var i = 0; i < speller.textInputs.length; i++ ) {
- bodyDoc.write('<input type="hidden" name="textinputs[]" value="'+encodeForPost(speller.textInputs[i].value)+'">');
- }
- bodyDoc.write('<\/form>');
- bodyDoc.write('<\/body>');
- } else {
- bodyDoc.write('<body class="normalText">');
- bodyDoc.write('<p><b>This page cannot be displayed<\/b><\/p><p>The window was not opened from another window.<\/p>');
- bodyDoc.write('<\/body>');
- }
- bodyDoc.write('<\/html>');
- bodyDoc.close();
-}
-</script>
-
-<html>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<head>
-<title>Speller Pages</title>
-</head>
-<frameset rows="*,201" onLoad="postWords();">
-<frame src="blank.html">
-<frame src="controls.html">
-</frameset>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
deleted file mode 100644
index 9928086e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css
+++ /dev/null
@@ -1,49 +0,0 @@
-.blend {
- font-family: courier new;
- font-size: 10pt;
- border: 0;
- margin-bottom:-1;
-}
-.normalLabel {
- font-size:8pt;
-}
-.normalText {
- font-family:arial, helvetica, sans-serif;
- font-size:10pt;
- color:000000;
- background-color:FFFFFF;
-}
-.plainText {
- font-family: courier new, courier, monospace;
- font-size: 10pt;
- color:000000;
- background-color:FFFFFF;
-}
-.controlWindowBody {
- font-family:arial, helvetica, sans-serif;
- font-size:8pt;
- padding: 7px ; /* by FredCK */
- margin: 0px ; /* by FredCK */
- /* color:000000; by FredCK */
- /* background-color:DADADA; by FredCK */
-}
-.readonlyInput {
- background-color:DADADA;
- color:000000;
- font-size:8pt;
- width:392px;
-}
-.textDefault {
- font-size:8pt;
- width: 200px;
-}
-.buttonDefault {
- width:90px;
- height:22px;
- font-size:8pt;
-}
-.suggSlct {
- width:200px;
- margin-top:2;
- font-size:8pt;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
deleted file mode 100644
index 7990296a2..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js
+++ /dev/null
@@ -1,272 +0,0 @@
-////////////////////////////////////////////////////
-// wordWindow object
-////////////////////////////////////////////////////
-function wordWindow() {
- // private properties
- this._forms = [];
-
- // private methods
- this._getWordObject = _getWordObject;
- //this._getSpellerObject = _getSpellerObject;
- this._wordInputStr = _wordInputStr;
- this._adjustIndexes = _adjustIndexes;
- this._isWordChar = _isWordChar;
- this._lastPos = _lastPos;
-
- // public properties
- this.wordChar = /[a-zA-Z]/;
- this.windowType = "wordWindow";
- this.originalSpellings = new Array();
- this.suggestions = new Array();
- this.checkWordBgColor = "pink";
- this.normWordBgColor = "white";
- this.text = "";
- this.textInputs = new Array();
- this.indexes = new Array();
- //this.speller = this._getSpellerObject();
-
- // public methods
- this.resetForm = resetForm;
- this.totalMisspellings = totalMisspellings;
- this.totalWords = totalWords;
- this.totalPreviousWords = totalPreviousWords;
- //this.getTextObjectArray = getTextObjectArray;
- this.getTextVal = getTextVal;
- this.setFocus = setFocus;
- this.removeFocus = removeFocus;
- this.setText = setText;
- //this.getTotalWords = getTotalWords;
- this.writeBody = writeBody;
- this.printForHtml = printForHtml;
-}
-
-function resetForm() {
- if( this._forms ) {
- for( var i = 0; i < this._forms.length; i++ ) {
- this._forms[i].reset();
- }
- }
- return true;
-}
-
-function totalMisspellings() {
- var total_words = 0;
- for( var i = 0; i < this.textInputs.length; i++ ) {
- total_words += this.totalWords( i );
- }
- return total_words;
-}
-
-function totalWords( textIndex ) {
- return this.originalSpellings[textIndex].length;
-}
-
-function totalPreviousWords( textIndex, wordIndex ) {
- var total_words = 0;
- for( var i = 0; i <= textIndex; i++ ) {
- for( var j = 0; j < this.totalWords( i ); j++ ) {
- if( i == textIndex && j == wordIndex ) {
- break;
- } else {
- total_words++;
- }
- }
- }
- return total_words;
-}
-
-//function getTextObjectArray() {
-// return this._form.elements;
-//}
-
-function getTextVal( textIndex, wordIndex ) {
- var word = this._getWordObject( textIndex, wordIndex );
- if( word ) {
- return word.value;
- }
-}
-
-function setFocus( textIndex, wordIndex ) {
- var word = this._getWordObject( textIndex, wordIndex );
- if( word ) {
- if( word.type == "text" ) {
- word.focus();
- word.style.backgroundColor = this.checkWordBgColor;
- }
- }
-}
-
-function removeFocus( textIndex, wordIndex ) {
- var word = this._getWordObject( textIndex, wordIndex );
- if( word ) {
- if( word.type == "text" ) {
- word.blur();
- word.style.backgroundColor = this.normWordBgColor;
- }
- }
-}
-
-function setText( textIndex, wordIndex, newText ) {
- var word = this._getWordObject( textIndex, wordIndex );
- var beginStr;
- var endStr;
- if( word ) {
- var pos = this.indexes[textIndex][wordIndex];
- var oldText = word.value;
- // update the text given the index of the string
- beginStr = this.textInputs[textIndex].substring( 0, pos );
- endStr = this.textInputs[textIndex].substring(
- pos + oldText.length,
- this.textInputs[textIndex].length
- );
- this.textInputs[textIndex] = beginStr + newText + endStr;
-
- // adjust the indexes on the stack given the differences in
- // length between the new word and old word.
- var lengthDiff = newText.length - oldText.length;
- this._adjustIndexes( textIndex, wordIndex, lengthDiff );
-
- word.size = newText.length;
- word.value = newText;
- this.removeFocus( textIndex, wordIndex );
- }
-}
-
-
-function writeBody() {
- var d = window.document;
- var is_html = false;
-
- d.open();
-
- // iterate through each text input.
- for( var txtid = 0; txtid < this.textInputs.length; txtid++ ) {
- var end_idx = 0;
- var begin_idx = 0;
- d.writeln( '<form name="textInput'+txtid+'">' );
- var wordtxt = this.textInputs[txtid];
- this.indexes[txtid] = [];
-
- if( wordtxt ) {
- var orig = this.originalSpellings[txtid];
- if( !orig ) break;
-
- //!!! plain text, or HTML mode?
- d.writeln( '<div class="plainText">' );
- // iterate through each occurrence of a misspelled word.
- for( var i = 0; i < orig.length; i++ ) {
- // find the position of the current misspelled word,
- // starting at the last misspelled word.
- // and keep looking if it's a substring of another word
- do {
- begin_idx = wordtxt.indexOf( orig[i], end_idx );
- end_idx = begin_idx + orig[i].length;
- // word not found? messed up!
- if( begin_idx == -1 ) break;
- // look at the characters immediately before and after
- // the word. If they are word characters we'll keep looking.
- var before_char = wordtxt.charAt( begin_idx - 1 );
- var after_char = wordtxt.charAt( end_idx );
- } while (
- this._isWordChar( before_char )
- || this._isWordChar( after_char )
- );
-
- // keep track of its position in the original text.
- this.indexes[txtid][i] = begin_idx;
-
- // write out the characters before the current misspelled word
- for( var j = this._lastPos( txtid, i ); j < begin_idx; j++ ) {
- // !!! html mode? make it html compatible
- d.write( this.printForHtml( wordtxt.charAt( j )));
- }
-
- // write out the misspelled word.
- d.write( this._wordInputStr( orig[i] ));
-
- // if it's the last word, write out the rest of the text
- if( i == orig.length-1 ){
- d.write( printForHtml( wordtxt.substr( end_idx )));
- }
- }
-
- d.writeln( '</div>' );
-
- }
- d.writeln( '</form>' );
- }
- //for ( var j = 0; j < d.forms.length; j++ ) {
- // alert( d.forms[j].name );
- // for( var k = 0; k < d.forms[j].elements.length; k++ ) {
- // alert( d.forms[j].elements[k].name + ": " + d.forms[j].elements[k].value );
- // }
- //}
-
- // set the _forms property
- this._forms = d.forms;
- d.close();
-}
-
-// return the character index in the full text after the last word we evaluated
-function _lastPos( txtid, idx ) {
- if( idx > 0 )
- return this.indexes[txtid][idx-1] + this.originalSpellings[txtid][idx-1].length;
- else
- return 0;
-}
-
-function printForHtml( n ) {
- return n ; // by FredCK
-/*
- var htmlstr = n;
- if( htmlstr.length == 1 ) {
- // do simple case statement if it's just one character
- switch ( n ) {
- case "\n":
- htmlstr = '<br/>';
- break;
- case "<":
- htmlstr = '&lt;';
- break;
- case ">":
- htmlstr = '&gt;';
- break;
- }
- return htmlstr;
- } else {
- htmlstr = htmlstr.replace( /</g, '&lt' );
- htmlstr = htmlstr.replace( />/g, '&gt' );
- htmlstr = htmlstr.replace( /\n/g, '<br/>' );
- return htmlstr;
- }
-*/
-}
-
-function _isWordChar( letter ) {
- if( letter.search( this.wordChar ) == -1 ) {
- return false;
- } else {
- return true;
- }
-}
-
-function _getWordObject( textIndex, wordIndex ) {
- if( this._forms[textIndex] ) {
- if( this._forms[textIndex].elements[wordIndex] ) {
- return this._forms[textIndex].elements[wordIndex];
- }
- }
- return null;
-}
-
-function _wordInputStr( word ) {
- var str = '<input readonly ';
- str += 'class="blend" type="text" value="' + word + '" size="' + word.length + '">';
- return str;
-}
-
-function _adjustIndexes( textIndex, wordIndex, lengthDiff ) {
- for( var i = wordIndex + 1; i < this.originalSpellings[textIndex].length; i++ ) {
- this.indexes[textIndex][i] = this.indexes[textIndex][i] + lengthDiff;
- }
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_table.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_table.html
deleted file mode 100644
index 06b91a548..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_table.html
+++ /dev/null
@@ -1,439 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Table dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>Table Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCKDomTools = oEditor.FCKDomTools ;
-
-// Gets the table if there is one selected.
-var table ;
-var e = dialog.Selection.GetSelectedElement() ;
-var hasColumnHeaders ;
-
-if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
- e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
-
-if ( e && e.tagName == "TABLE" )
- table = e ;
-
-// Fired when the window loading process is finished. It sets the fields with the
-// actual values if a table is selected in the editor.
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if (table)
- {
- document.getElementById('txtRows').value = table.rows.length ;
- document.getElementById('txtColumns').value = table.rows[0].cells.length ;
-
- // Gets the value from the Width or the Style attribute
- var iWidth = (table.style.width ? table.style.width : table.width ) ;
- var iHeight = (table.style.height ? table.style.height : table.height ) ;
-
- if (iWidth.indexOf('%') >= 0) // Percentual = %
- {
- iWidth = parseInt( iWidth.substr(0,iWidth.length - 1), 10 ) ;
- document.getElementById('selWidthType').value = "percent" ;
- }
- else if (iWidth.indexOf('px') >= 0) // Style Pixel = px
- { //
- iWidth = iWidth.substr(0,iWidth.length - 2);
- document.getElementById('selWidthType').value = "pixels" ;
- }
-
- if (iHeight && iHeight.indexOf('px') >= 0) // Style Pixel = px
- iHeight = iHeight.substr(0,iHeight.length - 2);
-
- document.getElementById('txtWidth').value = iWidth || '' ;
- document.getElementById('txtHeight').value = iHeight || '' ;
- document.getElementById('txtBorder').value = GetAttribute( table, 'border', '' ) ;
- document.getElementById('selAlignment').value = GetAttribute( table, 'align', '' ) ;
- document.getElementById('txtCellPadding').value = GetAttribute( table, 'cellPadding', '' ) ;
- document.getElementById('txtCellSpacing').value = GetAttribute( table, 'cellSpacing', '' ) ;
- document.getElementById('txtSummary').value = GetAttribute( table, 'summary', '' ) ;
-// document.getElementById('cmbFontStyle').value = table.className ;
-
- var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
- if ( eCaption ) document.getElementById('txtCaption').value = eCaption.innerHTML ;
-
- hasColumnHeaders = true ;
- // Check if all the first cells in every row are TH
- for (var row=0; row<table.rows.length; row++)
- {
- // If just one cell isn't a TH then it isn't a header column
- if ( table.rows[row].cells[0].nodeName != 'TH' )
- {
- hasColumnHeaders = false ;
-
- break;
- }
- }
-
- // Check if the table contains <thead>
- if ((table.tHead !== null) )
- {
- if (hasColumnHeaders)
- GetE('selHeaders').value = 'both' ;
- else
- GetE('selHeaders').value = 'row' ;
- }
- else
- {
- if (hasColumnHeaders)
- GetE('selHeaders').value = 'col' ;
- else
- GetE('selHeaders').value = '' ;
- }
-
-
- document.getElementById('txtRows').disabled = true ;
- document.getElementById('txtColumns').disabled = true ;
- SelectField( 'txtWidth' ) ;
- }
- else
- SelectField( 'txtRows' ) ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
-}
-
-// Fired when the user press the OK button
-function Ok()
-{
- var bExists = ( table != null ) ;
-
- var oDoc = oEditor.FCK.EditorDocument ;
- oEditor.FCKUndo.SaveUndoStep() ;
-
- if ( ! bExists )
- table = oDoc.createElement( "TABLE" ) ;
-
- // Removes the Width and Height styles
- if ( bExists && table.style.width ) table.style.width = null ; //.removeAttribute("width") ;
- if ( bExists && table.style.height ) table.style.height = null ; //.removeAttribute("height") ;
-
- var sWidth = GetE('txtWidth').value ;
- if ( sWidth.length > 0 && GetE('selWidthType').value == 'percent' )
- sWidth += '%' ;
-
- SetAttribute( table, 'width' , sWidth ) ;
- SetAttribute( table, 'height' , GetE('txtHeight').value ) ;
- SetAttribute( table, 'border' , GetE('txtBorder').value ) ;
- SetAttribute( table, 'align' , GetE('selAlignment').value ) ;
- SetAttribute( table, 'cellPadding' , GetE('txtCellPadding').value ) ;
- SetAttribute( table, 'cellSpacing' , GetE('txtCellSpacing').value ) ;
- SetAttribute( table, 'summary' , GetE('txtSummary').value ) ;
-
- var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
-
- if ( document.getElementById('txtCaption').value != '')
- {
- if ( !eCaption )
- {
- eCaption = oDoc.createElement( 'CAPTION' ) ;
- table.insertBefore( eCaption, table.firstChild ) ;
- }
-
- eCaption.innerHTML = document.getElementById('txtCaption').value ;
- }
- else if ( bExists && eCaption )
- {
- // TODO: It causes an IE internal error if using removeChild or
- // table.deleteCaption() (see #505).
- if ( oEditor.FCKBrowserInfo.IsIE )
- eCaption.innerHTML = '' ;
- else
- eCaption.parentNode.removeChild( eCaption ) ;
- }
-
- var headers = GetE('selHeaders').value ;
- if ( bExists )
- {
- // Should we make a <thead>?
- if ( table.tHead==null && (headers=='row' || headers=='both') )
- {
- var oThead = table.createTHead() ;
- var tbody = FCKDomTools.GetFirstChild( table, 'TBODY' ) ;
- var theRow= FCKDomTools.GetFirstChild( tbody, 'TR' ) ;
-
- //now change TD to TH:
- for (var i = 0; i<theRow.childNodes.length ; i++)
- {
- var th = RenameNode(theRow.childNodes[i], 'TH') ;
- if (th != null)
- th.scope='col' ;
- }
- oThead.appendChild( theRow ) ;
- }
-
- if ( table.tHead!==null && !(headers=='row' || headers=='both') )
- {
- // Move the row out of the THead and put it in the TBody:
- var tHead = table.tHead ;
- var tbody = FCKDomTools.GetFirstChild( table, 'TBODY' ) ;
-
- var previousFirstRow = tbody.firstChild ;
- while ( tHead.firstChild )
- {
- var theRow = tHead.firstChild ;
- for (var i = 0; i < theRow.childNodes.length ; i++ )
- {
- var newCell = RenameNode( theRow.childNodes[i], 'TD' ) ;
- if ( newCell != null )
- newCell.removeAttribute( 'scope' ) ;
- }
- tbody.insertBefore( theRow, previousFirstRow ) ;
- }
- table.removeChild( tHead ) ;
- }
-
- // Should we make all first cells in a row TH?
- if ( (!hasColumnHeaders) && (headers=='col' || headers=='both') )
- {
- for( var row=0 ; row < table.rows.length ; row++ )
- {
- var newCell = RenameNode(table.rows[row].cells[0], 'TH') ;
- if ( newCell != null )
- newCell.scope = 'row' ;
- }
- }
-
- // Should we make all first TH-cells in a row make TD? If 'yes' we do it the other way round :-)
- if ( (hasColumnHeaders) && !(headers=='col' || headers=='both') )
- {
- for( var row=0 ; row < table.rows.length ; row++ )
- {
- var oRow = table.rows[row] ;
- if ( oRow.parentNode.nodeName == 'TBODY' )
- {
- var newCell = RenameNode(oRow.cells[0], 'TD') ;
- if (newCell != null)
- newCell.removeAttribute( 'scope' ) ;
- }
- }
- }
- }
-
- if (! bExists)
- {
- var iRows = GetE('txtRows').value ;
- var iCols = GetE('txtColumns').value ;
-
- var startRow = 0 ;
- // Should we make a <thead> ?
- if (headers=='row' || headers=='both')
- {
- startRow++ ;
- var oThead = table.createTHead() ;
- var oRow = table.insertRow(-1) ;
- oThead.appendChild(oRow);
-
- for ( var c = 0 ; c < iCols ; c++ )
- {
- var oThcell = oDoc.createElement( 'TH' ) ;
- oThcell.scope = 'col' ;
- oRow.appendChild( oThcell ) ;
- if ( oEditor.FCKBrowserInfo.IsGeckoLike )
- oEditor.FCKTools.AppendBogusBr( oThcell ) ;
- }
- }
-
- // Opera automatically creates a tbody when a thead has been added
- var oTbody = FCKDomTools.GetFirstChild( table, 'TBODY' ) ;
- if ( !oTbody )
- {
- // make TBODY if it doesn't exist
- oTbody = oDoc.createElement( 'TBODY' ) ;
- table.appendChild( oTbody ) ;
- }
- for ( var r = startRow ; r < iRows; r++ )
- {
- var oRow = oDoc.createElement( 'TR' ) ;
- oTbody.appendChild(oRow) ;
-
- var startCol = 0 ;
- // Is the first column a header?
- if (headers=='col' || headers=='both')
- {
- var oThcell = oDoc.createElement( 'TH' ) ;
- oThcell.scope = 'row' ;
- oRow.appendChild( oThcell ) ;
- if ( oEditor.FCKBrowserInfo.IsGeckoLike )
- oEditor.FCKTools.AppendBogusBr( oThcell ) ;
-
- startCol++ ;
- }
- for ( var c = startCol ; c < iCols ; c++ )
- {
- // IE will leave the TH at the end of the row if we use now oRow.insertCell(-1)
- var oCell = oDoc.createElement( 'TD' ) ;
- oRow.appendChild( oCell ) ;
- if ( oEditor.FCKBrowserInfo.IsGeckoLike )
- oEditor.FCKTools.AppendBogusBr( oCell ) ;
- }
- }
-
- oEditor.FCK.InsertElement( table ) ;
- }
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table id="otable" cellspacing="0" cellpadding="0" width="100%" border="0" style="height: 100%">
- <tr>
- <td>
- <table cellspacing="1" cellpadding="1" width="100%" border="0">
- <tr>
- <td valign="top">
- <table cellspacing="1" cellpadding="0" border="0">
- <tr>
- <td>
- <span fcklang="DlgTableRows">Rows</span>:</td>
- <td>
- &nbsp;<input id="txtRows" type="text" maxlength="3" size="2" value="3"
- onkeypress="return IsDigit(event);" /></td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgTableColumns">Columns</span>:</td>
- <td>
- &nbsp;<input id="txtColumns" type="text" maxlength="2" size="2" value="2"
- onkeypress="return IsDigit(event);" /></td>
- </tr>
- <tr>
- <td><span fcklang="DlgTableHeaders">Headers</span>:</td>
- <td>
- &nbsp;<select id="selHeaders">
- <option fcklang="DlgTableHeadersNone" value="">None</option>
- <option fcklang="DlgTableHeadersRow" value="row">First row</option>
- <option fcklang="DlgTableHeadersColumn" value="col">First column</option>
- <option fcklang="DlgTableHeadersBoth" value="both">Both</option>
- </select>
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgTableBorder">Border size</span>:</td>
- <td>
- &nbsp;<input id="txtBorder" type="text" maxlength="2" size="2" value="1"
- onkeypress="return IsDigit(event);" /></td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgTableAlign">Alignment</span>:</td>
- <td>
- &nbsp;<select id="selAlignment">
- <option fcklang="DlgTableAlignNotSet" value="" selected="selected">&lt;Not set&gt;</option>
- <option fcklang="DlgTableAlignLeft" value="left">Left</option>
- <option fcklang="DlgTableAlignCenter" value="center">Center</option>
- <option fcklang="DlgTableAlignRight" value="right">Right</option>
- </select></td>
- </tr>
- </table>
- </td>
- <td>
- &nbsp;&nbsp;&nbsp;</td>
- <td align="right" valign="top">
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td>
- <span fcklang="DlgTableWidth">Width</span>:</td>
- <td>
- &nbsp;<input id="txtWidth" type="text" maxlength="4" size="3" value="200"
- onkeypress="return IsDigit(event);" /></td>
- <td>
- &nbsp;<select id="selWidthType">
- <option fcklang="DlgTableWidthPx" value="pixels" selected="selected">pixels</option>
- <option fcklang="DlgTableWidthPc" value="percent">percent</option>
- </select></td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgTableHeight">Height</span>:</td>
- <td>
- &nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" onkeypress="return IsDigit(event);" /></td>
- <td>
- &nbsp;<span fcklang="DlgTableWidthPx">pixels</span></td>
- </tr>
- <tr>
- <td colspan="3">&nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgTableCellSpace">Cell spacing</span>:</td>
- <td>
- &nbsp;<input id="txtCellSpacing" type="text" maxlength="2" size="2" value="1"
- onkeypress="return IsDigit(event);" /></td>
- <td>
- &nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgTableCellPad">Cell padding</span>:</td>
- <td>
- &nbsp;<input id="txtCellPadding" type="text" maxlength="2" size="2" value="1"
- onkeypress="return IsDigit(event);" /></td>
- <td>
- &nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgTableCaption">Caption</span>:&nbsp;</td>
- <td>
- &nbsp;</td>
- <td width="100%" nowrap="nowrap">
- <input id="txtCaption" type="text" style="width: 100%" /></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgTableSummary">Summary</span>:&nbsp;</td>
- <td>
- &nbsp;</td>
- <td width="100%" nowrap="nowrap">
- <input id="txtSummary" type="text" style="width: 100%" /></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_tablecell.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_tablecell.html
deleted file mode 100644
index ce882d3b9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_tablecell.html
+++ /dev/null
@@ -1,293 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Cell properties dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>Table Cell Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-var FCKDomTools = oEditor.FCKDomTools ;
-
-// Array of selected Cells
-var aCells = oEditor.FCKTableHandler.GetSelectedCells() ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
- SetStartupValue() ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtWidth' ) ;
-}
-
-function SetStartupValue()
-{
- if ( aCells.length > 0 )
- {
- var oCell = aCells[0] ;
- var iWidth = GetAttribute( oCell, 'width' ) ;
-
- if ( iWidth.indexOf && iWidth.indexOf( '%' ) >= 0 )
- {
- iWidth = iWidth.substr( 0, iWidth.length - 1 ) ;
- GetE('selWidthType').value = 'percent' ;
- }
-
- if ( oCell.attributes['noWrap'] != null && oCell.attributes['noWrap'].specified )
- GetE('selWordWrap').value = !oCell.noWrap ;
-
- GetE('txtWidth').value = iWidth ;
- GetE('txtHeight').value = GetAttribute( oCell, 'height' ) ;
- GetE('selHAlign').value = GetAttribute( oCell, 'align' ) ;
- GetE('selVAlign').value = GetAttribute( oCell, 'vAlign' ) ;
- GetE('txtRowSpan').value = GetAttribute( oCell, 'rowSpan' ) ;
- GetE('txtCollSpan').value = GetAttribute( oCell, 'colSpan' ) ;
- GetE('txtBackColor').value = GetAttribute( oCell, 'bgColor' ) ;
- GetE('txtBorderColor').value = GetAttribute( oCell, 'borderColor' ) ;
- GetE('selCellType').value = oCell.nodeName.toLowerCase() ;
- }
-}
-
-// Fired when the user press the OK button
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- for( i = 0 ; i < aCells.length ; i++ )
- {
- if ( GetE('txtWidth').value.length > 0 )
- aCells[i].width = GetE('txtWidth').value + ( GetE('selWidthType').value == 'percent' ? '%' : '') ;
- else
- aCells[i].removeAttribute( 'width', 0 ) ;
-
- if ( GetE('selWordWrap').value == 'false' )
- SetAttribute( aCells[i], 'noWrap', 'nowrap' ) ;
- else
- aCells[i].removeAttribute( 'noWrap' ) ;
-
- SetAttribute( aCells[i], 'height' , GetE('txtHeight').value ) ;
- SetAttribute( aCells[i], 'align' , GetE('selHAlign').value ) ;
- SetAttribute( aCells[i], 'vAlign' , GetE('selVAlign').value ) ;
- SetAttribute( aCells[i], 'rowSpan' , GetE('txtRowSpan').value ) ;
- SetAttribute( aCells[i], 'colSpan' , GetE('txtCollSpan').value ) ;
- SetAttribute( aCells[i], 'bgColor' , GetE('txtBackColor').value ) ;
- SetAttribute( aCells[i], 'borderColor' , GetE('txtBorderColor').value ) ;
-
- var cellType = GetE('selCellType').value ;
- if ( aCells[i].nodeName.toLowerCase() != cellType )
- aCells[i] = RenameNode( aCells[i], cellType ) ;
- }
-
- // The cells need to be reselected, otherwise the caret will appear inside the table borders (Gecko)
- // or sent back to the beginning of the document (Opera and Safari).
- // Strangely, IE works ok so no change is needed for IE.
- if ( !oEditor.FCKBrowserInfo.IsIE )
- {
- var selection = oEditor.FCK.EditorWindow.getSelection() ;
- selection.removeAllRanges() ;
- for ( var i = 0 ; i < aCells.length ; i++ )
- {
- var range = oEditor.FCK.EditorDocument.createRange() ;
- range.selectNode( aCells[i] ) ;
- selection.addRange( range ) ;
- }
- }
-
- return true ;
-}
-
-function SelectBackColor( color )
-{
- if ( color && color.length > 0 )
- GetE('txtBackColor').value = color ;
-}
-
-function SelectBorderColor( color )
-{
- if ( color && color.length > 0 )
- GetE('txtBorderColor').value = color ;
-}
-
-function SelectColor( wich )
-{
- oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
-}
-
- </script>
-</head>
-<body scroll="no" style="overflow: hidden">
- <table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
- <tr>
- <td>
- <table cellspacing="1" cellpadding="1" width="100%" border="0">
- <tr>
- <td>
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellWidth">Width</span>:</td>
- <td>
- &nbsp;<input onkeypress="return IsDigit(event);" id="txtWidth" type="text" maxlength="4"
- size="3" />&nbsp;<select id="selWidthType">
- <option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
- <option fcklang="DlgCellWidthPc" value="percent">percent</option>
- </select></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellHeight">Height</span>:</td>
- <td>
- &nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" onkeypress="return IsDigit(event);" />&nbsp;<span
- fcklang="DlgCellWidthPx">pixels</span></td>
- </tr>
- <tr>
- <td>
- &nbsp;</td>
- <td>
- &nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
- <td>
- &nbsp;<select id="selWordWrap">
- <option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
- <option fcklang="DlgCellWordWrapNo" value="false">No</option>
- </select></td>
- </tr>
- <tr>
- <td>
- &nbsp;</td>
- <td>
- &nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
- <td>
- &nbsp;<select id="selHAlign">
- <option fcklang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
- <option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
- <option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
- <option fcklang="DlgCellHorAlignRight" value="right">Right</option>
- </select></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
- <td>
- &nbsp;<select id="selVAlign">
- <option fcklang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
- <option fcklang="DlgCellVerAlignTop" value="top">Top</option>
- <option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
- <option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
- <option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
- </select></td>
- </tr>
- </table>
- </td>
- <td>
- &nbsp;&nbsp;&nbsp;</td>
- <td align="right">
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellType">Cell Type</span>:</td>
- <td colspan="2">
- &nbsp; <select id="selCellType">
- <option fcklang="DlgCellTypeData" value="td" />Data
- <option fcklang="DlgCellTypeHeader" value="th" />Header
- </select>
- </tr>
- <tr>
- <td>
- &nbsp;</td>
- <td>
- &nbsp;</td>
- <td>
- &nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
- <td>
- &nbsp;
- <input onkeypress="return IsDigit(event);" id="txtRowSpan" type="text" maxlength="3" size="2"
- ></td>
- <td>
- </td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
- <td>
- &nbsp;
- <input onkeypress="return IsDigit(event);" id="txtCollSpan" type="text" maxlength="2"
- size="2"></td>
- <td>
- </td>
- </tr>
- <tr>
- <td>
- &nbsp;</td>
- <td>
- &nbsp;</td>
- <td>
- &nbsp;</td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellBackColor">Background Color</span>:</td>
- <td>
- &nbsp;<input id="txtBackColor" type="text" size="8" /></td>
- <td>
- &nbsp;
- <input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
- </tr>
- <tr>
- <td nowrap="nowrap">
- <span fcklang="DlgCellBorderColor">Border Color</span>:</td>
- <td>
- &nbsp;<input id="txtBorderColor" type="text" size="8" /></td>
- <td>
- &nbsp;
- <input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template.html
deleted file mode 100644
index 084dc6d17..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Template selection dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <style type="text/css">
- .TplList
- {
- border: #dcdcdc 2px solid;
- background-color: #ffffff;
- overflow: auto;
- width: 90%;
- }
-
- .TplItem
- {
- margin: 5px;
- padding: 7px;
- border: #eeeeee 1px solid;
- }
-
- .TplItem TABLE
- {
- display: inline;
- }
-
- .TplTitle
- {
- font-weight: bold;
- }
- </style>
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKConfig = oEditor.FCKConfig ;
-
-window.onload = function()
-{
- // Set the right box height (browser dependent).
- GetE('eList').style.height = document.all ? '100%' : '295px' ;
-
- // Translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- GetE('xChkReplaceAll').checked = ( FCKConfig.TemplateReplaceAll !== false ) ;
-
- if ( FCKConfig.TemplateReplaceCheckbox !== false )
- GetE('xReplaceBlock').style.display = '' ;
-
- window.parent.SetAutoSize( true ) ;
-
- LoadTemplatesXml() ;
-}
-
-function LoadTemplatesXml()
-{
- var oTemplate ;
-
- if ( !FCK._Templates )
- {
- GetE('eLoading').style.display = '' ;
-
- // Create the Templates array.
- FCK._Templates = new Array() ;
-
- // Load the XML file.
- var oXml = new oEditor.FCKXml() ;
- oXml.LoadUrl( FCKConfig.TemplatesXmlPath ) ;
-
- // Get the Images Base Path.
- var oAtt = oXml.SelectSingleNode( 'Templates/@imagesBasePath' ) ;
- var sImagesBasePath = oAtt ? oAtt.value : '' ;
-
- // Get the "Template" nodes defined in the XML file.
- var aTplNodes = oXml.SelectNodes( 'Templates/Template' ) ;
-
- for ( var i = 0 ; i < aTplNodes.length ; i++ )
- {
- var oNode = aTplNodes[i] ;
-
- oTemplate = new Object() ;
-
- var oPart ;
-
- // Get the Template Title.
- if ( (oPart = oNode.attributes.getNamedItem('title')) )
- oTemplate.Title = oPart.value ;
- else
- oTemplate.Title = 'Template ' + ( i + 1 ) ;
-
- // Get the Template Description.
- if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
- oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
-
- // Get the Template Image.
- if ( (oPart = oNode.attributes.getNamedItem('image')) )
- oTemplate.Image = sImagesBasePath + oPart.value ;
-
- // Get the Template HTML.
- if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
- oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
- else
- {
- alert( 'No HTML defined for template index ' + i + '. Please review the "' + FCKConfig.TemplatesXmlPath + '" file.' ) ;
- continue ;
- }
-
- FCK._Templates[ FCK._Templates.length ] = oTemplate ;
- }
-
- GetE('eLoading').style.display = 'none' ;
- }
-
- if ( FCK._Templates.length == 0 )
- GetE('eEmpty').style.display = '' ;
- else
- {
- for ( var j = 0 ; j < FCK._Templates.length ; j++ )
- {
- oTemplate = FCK._Templates[j] ;
-
- var oItemDiv = GetE('eList').appendChild( document.createElement( 'DIV' ) ) ;
- oItemDiv.TplIndex = j ;
- oItemDiv.className = 'TplItem' ;
-
- // Build the inner HTML of our new item DIV.
- var sInner = '<table><tr>' ;
-
- if ( oTemplate.Image )
- sInner += '<td valign="top"><img src="' + oTemplate.Image + '"><\/td>' ;
-
- sInner += '<td valign="top"><div class="TplTitle">' + oTemplate.Title + '<\/div>' ;
-
- if ( oTemplate.Description )
- sInner += '<div>' + oTemplate.Description + '<\/div>' ;
-
- sInner += '<\/td><\/tr><\/table>' ;
-
- oItemDiv.innerHTML = sInner ;
-
- oItemDiv.onmouseover = ItemDiv_OnMouseOver ;
- oItemDiv.onmouseout = ItemDiv_OnMouseOut ;
- oItemDiv.onclick = ItemDiv_OnClick ;
- }
- }
-}
-
-function ItemDiv_OnMouseOver()
-{
- this.className += ' PopupSelectionBox' ;
-}
-
-function ItemDiv_OnMouseOut()
-{
- this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
-}
-
-function ItemDiv_OnClick()
-{
- SelectTemplate( this.TplIndex ) ;
-}
-
-function SelectTemplate( index )
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- if ( GetE('xChkReplaceAll').checked )
- FCK.SetData( FCK._Templates[index].Html ) ;
- else
- FCK.InsertHtml( FCK._Templates[index].Html ) ;
-
- window.parent.Cancel( true ) ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table width="100%" style="height: 100%">
- <tr>
- <td align="center">
- <span fcklang="DlgTemplatesSelMsg">Please select the template to open in the editor<br />
- (the actual contents will be lost):</span>
- </td>
- </tr>
- <tr>
- <td height="100%" align="center">
- <div id="eList" align="left" class="TplList">
- <div id="eLoading" align="center" style="display: none">
- <br />
- <span fcklang="DlgTemplatesLoading">Loading templates list. Please wait...</span>
- </div>
- <div id="eEmpty" align="center" style="display: none">
- <br />
- <span fcklang="DlgTemplatesNoTpl">(No templates defined)</span>
- </div>
- </div>
- </td>
- </tr>
- <tr id="xReplaceBlock" style="display: none">
- <td>
- <table cellpadding="0" cellspacing="0">
- <tr>
- <td>
- <input id="xChkReplaceAll" type="checkbox" /></td>
- <td>
- &nbsp;</td>
- <td>
- <label for="xChkReplaceAll" fcklang="DlgTemplatesReplace">
- Replace actual contents</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template1.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template1.gif
deleted file mode 100644
index efdabbebd..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template1.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template2.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template2.gif
deleted file mode 100644
index d1cebb3ae..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template2.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template3.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template3.gif
deleted file mode 100644
index db41cb4fb..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_template/images/template3.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textarea.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textarea.html
deleted file mode 100644
index e4edae966..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textarea.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Text Area dialog window.
--->
-<html>
- <head>
- <title>Text Area Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl && oActiveEl.tagName == 'TEXTAREA' )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtCols').value = GetAttribute( oActiveEl, 'cols' ) ;
- GetE('txtRows').value = GetAttribute( oActiveEl, 'rows' ) ;
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- oEditor.FCKUndo.SaveUndoStep() ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'TEXTAREA', {name: GetE('txtName').value} ) ;
-
- SetAttribute( oActiveEl, 'cols', GetE('txtCols').value ) ;
- SetAttribute( oActiveEl, 'rows', GetE('txtRows').value ) ;
-
- return true ;
-}
-
- </script>
- </head>
- <body style="overflow: hidden">
- <table height="100%" width="100%">
- <tr>
- <td align="center">
- <table border="0" cellpadding="0" cellspacing="0" width="80%">
- <tr>
- <td>
- <span fckLang="DlgTextareaName">Name</span><br>
- <input type="text" id="txtName" style="WIDTH: 100%">
- <span fckLang="DlgTextareaCols">Collumns</span><br>
- <input id="txtCols" type="text" size="5">
- <br>
- <span fckLang="DlgTextareaRows">Rows</span><br>
- <input id="txtRows" type="text" size="5">
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textfield.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textfield.html
deleted file mode 100644
index efde66dae..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dialog/fck_textfield.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Text field dialog window.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta content="noindex, nofollow" name="robots" />
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>
- <script type="text/javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-
-// Gets the document DOM
-var oDOM = oEditor.FCK.EditorDocument ;
-
-var oActiveEl = dialog.Selection.GetSelectedElement() ;
-
-window.onload = function()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage(document) ;
-
- if ( oActiveEl && oActiveEl.tagName == 'INPUT' && ( oActiveEl.type == 'text' || oActiveEl.type == 'password' ) )
- {
- GetE('txtName').value = oActiveEl.name ;
- GetE('txtValue').value = oActiveEl.value ;
- GetE('txtSize').value = GetAttribute( oActiveEl, 'size' ) ;
- GetE('txtMax').value = GetAttribute( oActiveEl, 'maxLength' ) ;
- GetE('txtType').value = oActiveEl.type ;
- }
- else
- oActiveEl = null ;
-
- dialog.SetOkButton( true ) ;
- dialog.SetAutoSize( true ) ;
- SelectField( 'txtName' ) ;
-}
-
-function Ok()
-{
- if ( isNaN( GetE('txtMax').value ) || GetE('txtMax').value < 0 )
- {
- alert( "Maximum characters must be a positive number." ) ;
- GetE('txtMax').focus() ;
- return false ;
- }
- else if( isNaN( GetE('txtSize').value ) || GetE('txtSize').value < 0 )
- {
- alert( "Width must be a positive number." ) ;
- GetE('txtSize').focus() ;
- return false ;
- }
-
- oEditor.FCKUndo.SaveUndoStep() ;
-
- oActiveEl = CreateNamedElement( oEditor, oActiveEl, 'INPUT', {name: GetE('txtName').value, type: GetE('txtType').value } ) ;
-
- SetAttribute( oActiveEl, 'value' , GetE('txtValue').value ) ;
- SetAttribute( oActiveEl, 'size' , GetE('txtSize').value ) ;
- SetAttribute( oActiveEl, 'maxlength', GetE('txtMax').value ) ;
-
- return true ;
-}
-
- </script>
-</head>
-<body style="overflow: hidden">
- <table width="100%" style="height: 100%">
- <tr>
- <td align="center">
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td>
- <span fcklang="DlgTextName">Name</span><br />
- <input id="txtName" type="text" size="20" />
- </td>
- <td>
- </td>
- <td>
- <span fcklang="DlgTextValue">Value</span><br />
- <input id="txtValue" type="text" size="25" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgTextCharWidth">Character Width</span><br />
- <input id="txtSize" type="text" size="5" />
- </td>
- <td>
- </td>
- <td>
- <span fcklang="DlgTextMaxChars">Maximum Characters</span><br />
- <input id="txtMax" type="text" size="5" />
- </td>
- </tr>
- <tr>
- <td>
- <span fcklang="DlgTextType">Type</span><br />
- <select id="txtType">
- <option value="text" selected="selected" fcklang="DlgTextTypeText">Text</option>
- <option value="password" fcklang="DlgTextTypePass">Password</option>
- </select>
- </td>
- <td>
- &nbsp;</td>
- <td>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_dtd_test.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_dtd_test.html
deleted file mode 100644
index c149d15c1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_dtd_test.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>DTD Test Page</title>
- <script type="text/javascript">
-
- // Define an object for this test page, so the assignment to FCK.DTD works
- var FCK = {} ;
- </script>
- <script type="text/javascript" src="../_source/internals/fcktools.js"></script>
- <script type="text/javascript" src="fck_xhtml10transitional.js"></script>
-</head>
-<body>
- <h1>
- DTD Contents
- </h1>
- <table border="1">
- <script type="text/javascript">
-
-for ( var p in FCK.DTD )
-{
- document.write( '<tr><td><b>' + p + '</b></td><td>' ) ;
-
- var isFirst = true ;
-
- for ( var c in FCK.DTD[p] )
- {
- if ( !isFirst )
- document.write( ', ' ) ;
- isFirst = false ;
-
- document.write( c ) ;
- }
-
-
- document.write( '</td></tr>' ) ;
-}
- </script>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10strict.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10strict.js
deleted file mode 100644
index 81c26702b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10strict.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Contains the DTD mapping for XHTML 1.0 Strict.
- * This file was automatically generated from the file: xhtml10-strict.dtd
- */
-FCK.DTD = (function()
-{
- var X = FCKTools.Merge ;
-
- var H,I,J,K,C,L,M,A,B,D,E,G,N,F ;
- A = {ins:1, del:1, script:1} ;
- B = {hr:1, ul:1, div:1, blockquote:1, noscript:1, table:1, address:1, pre:1, p:1, h5:1, dl:1, h4:1, ol:1, h6:1, h1:1, h3:1, h2:1} ;
- C = X({fieldset:1}, B) ;
- D = X({sub:1, bdo:1, 'var':1, sup:1, br:1, kbd:1, map:1, samp:1, b:1, acronym:1, '#':1, abbr:1, code:1, i:1, cite:1, tt:1, strong:1, q:1, em:1, big:1, small:1, span:1, dfn:1}, A) ;
- E = X({img:1, object:1}, D) ;
- F = {input:1, button:1, textarea:1, select:1, label:1} ;
- G = X({a:1}, F) ;
- H = {img:1, noscript:1, br:1, kbd:1, button:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, select:1, '#':1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, strong:1, textarea:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, map:1, dl:1, del:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, address:1, tt:1, q:1, pre:1, p:1, em:1, dfn:1} ;
-
- I = X({form:1, fieldset:1}, B, E, G) ;
- J = {tr:1} ;
- K = {'#':1} ;
- L = X(E, G) ;
- M = {li:1} ;
- N = X({form:1}, A, C) ;
-
- return {
- col: {},
- tr: {td:1, th:1},
- img: {},
- colgroup: {col:1},
- noscript: N,
- td: I,
- br: {},
- th: I,
- kbd: L,
- button: X(B, E),
- h5: L,
- h4: L,
- samp: L,
- h6: L,
- ol: M,
- h1: L,
- h3: L,
- option: K,
- h2: L,
- form: X(A, C),
- select: {optgroup:1, option:1},
- ins: I,
- abbr: L,
- label: L,
- code: L,
- table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1},
- script: K,
- tfoot: J,
- cite: L,
- li: I,
- input: {},
- strong: L,
- textarea: K,
- big: L,
- small: L,
- span: L,
- dt: L,
- hr: {},
- sub: L,
- optgroup: {option:1},
- bdo: L,
- param: {},
- 'var': L,
- div: I,
- object: X({param:1}, H),
- sup: L,
- dd: I,
- area: {},
- map: X({form:1, area:1}, A, C),
- dl: {dt:1, dd:1},
- del: I,
- fieldset: X({legend:1}, H),
- thead: J,
- ul: M,
- acronym: L,
- b: L,
- a: X({img:1, object:1}, D, F),
- blockquote: N,
- caption: L,
- i: L,
- tbody: J,
- address: L,
- tt: L,
- legend: L,
- q: L,
- pre: X({a:1}, D, F),
- p: L,
- em: L,
- dfn: L
- } ;
-})() ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10transitional.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10transitional.js
deleted file mode 100644
index ce056a1be..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/dtd/fck_xhtml10transitional.js
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Contains the DTD mapping for XHTML 1.0 Transitional.
- * This file was automatically generated from the file: xhtml10-transitional.dtd
- */
-FCK.DTD = (function()
-{
- var X = FCKTools.Merge ;
-
- var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I ;
- A = {isindex:1, fieldset:1} ;
- B = {input:1, button:1, select:1, textarea:1, label:1} ;
- C = X({a:1}, B) ;
- D = X({iframe:1}, C) ;
- E = {hr:1, ul:1, menu:1, div:1, blockquote:1, noscript:1, table:1, center:1, address:1, dir:1, pre:1, h5:1, dl:1, h4:1, noframes:1, h6:1, ol:1, h1:1, h3:1, h2:1} ;
- F = {ins:1, del:1, script:1} ;
- G = X({b:1, acronym:1, bdo:1, 'var':1, '#':1, abbr:1, code:1, br:1, i:1, cite:1, kbd:1, u:1, strike:1, s:1, tt:1, strong:1, q:1, samp:1, em:1, dfn:1, span:1}, F) ;
- H = X({sub:1, img:1, object:1, sup:1, basefont:1, map:1, applet:1, font:1, big:1, small:1}, G) ;
- I = X({p:1}, H) ;
- J = X({iframe:1}, H, B) ;
- K = {img:1, noscript:1, br:1, kbd:1, center:1, button:1, basefont:1, h5:1, h4:1, samp:1, h6:1, ol:1, h1:1, h3:1, h2:1, form:1, font:1, '#':1, select:1, menu:1, ins:1, abbr:1, label:1, code:1, table:1, script:1, cite:1, input:1, iframe:1, strong:1, textarea:1, noframes:1, big:1, small:1, span:1, hr:1, sub:1, bdo:1, 'var':1, div:1, object:1, sup:1, strike:1, dir:1, map:1, dl:1, applet:1, del:1, isindex:1, fieldset:1, ul:1, b:1, acronym:1, a:1, blockquote:1, i:1, u:1, s:1, tt:1, address:1, q:1, pre:1, p:1, em:1, dfn:1} ;
-
- L = X({a:1}, J) ;
- M = {tr:1} ;
- N = {'#':1} ;
- O = X({param:1}, K) ;
- P = X({form:1}, A, D, E, I) ;
- Q = {li:1} ;
-
- return {
- col: {},
- tr: {td:1, th:1},
- img: {},
- colgroup: {col:1},
- noscript: P,
- td: P,
- br: {},
- th: P,
- center: P,
- kbd: L,
- button: X(I, E),
- basefont: {},
- h5: L,
- h4: L,
- samp: L,
- h6: L,
- ol: Q,
- h1: L,
- h3: L,
- option: N,
- h2: L,
- form: X(A, D, E, I),
- select: {optgroup:1, option:1},
- font: J, // Changed from L to J (see (1))
- ins: P,
- menu: Q,
- abbr: L,
- label: L,
- table: {thead:1, col:1, tbody:1, tr:1, colgroup:1, caption:1, tfoot:1},
- code: L,
- script: N,
- tfoot: M,
- cite: L,
- li: P,
- input: {},
- iframe: P,
- strong: J, // Changed from L to J (see (1))
- textarea: N,
- noframes: P,
- big: J, // Changed from L to J (see (1))
- small: J, // Changed from L to J (see (1))
- span: J, // Changed from L to J (see (1))
- hr: {},
- dt: L,
- sub: J, // Changed from L to J (see (1))
- optgroup: {option:1},
- param: {},
- bdo: L,
- 'var': J, // Changed from L to J (see (1))
- div: P,
- object: O,
- sup: J, // Changed from L to J (see (1))
- dd: P,
- strike: J, // Changed from L to J (see (1))
- area: {},
- dir: Q,
- map: X({area:1, form:1, p:1}, A, F, E),
- applet: O,
- dl: {dt:1, dd:1},
- del: P,
- isindex: {},
- fieldset: X({legend:1}, K),
- thead: M,
- ul: Q,
- acronym: L,
- b: J, // Changed from L to J (see (1))
- a: J,
- blockquote: P,
- caption: L,
- i: J, // Changed from L to J (see (1))
- u: J, // Changed from L to J (see (1))
- tbody: M,
- s: L,
- address: X(D, I),
- tt: J, // Changed from L to J (see (1))
- legend: L,
- q: L,
- pre: X(G, C),
- p: L,
- em: J, // Changed from L to J (see (1))
- dfn: L
- } ;
-})() ;
-
-/*
- Notes:
- (1) According to the DTD, many elements, like <b> accept <a> elements
- inside of them. But, to produce better output results, we have manually
- changed the map to avoid breaking the links on pieces, having
- "<b>this is a </b><a><b>link</b> test</a>", instead of
- "<b>this is a <a>link</a></b><a> test</a>".
-*/
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdebug.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdebug.html
deleted file mode 100644
index 35dd66339..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdebug.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the Debug window.
- * It automatically popups if the Debug = true in the configuration file.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>FCKeditor Debug Window</title>
- <meta name="robots" content="noindex, nofollow" />
- <script type="text/javascript">
-
-var oWindow ;
-var oDiv ;
-
-if ( !window.FCKMessages )
- window.FCKMessages = new Array() ;
-
-window.onload = function()
-{
- oWindow = document.getElementById('xOutput').contentWindow ;
- oWindow.document.open() ;
- oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
- oWindow.document.close() ;
- oDiv = oWindow.document.getElementById('divMsg') ;
-}
-
-function Output( message, color, noParse )
-{
- if ( !noParse && message != null && isNaN( message ) )
- message = message.replace(/</g, "&lt;") ;
-
- if ( color )
- message = '<font color="' + color + '">' + message + '<\/font>' ;
-
- window.FCKMessages[ window.FCKMessages.length ] = message ;
- StartTimer() ;
-}
-
-function OutputObject( anyObject, color )
-{
- var message ;
-
- if ( anyObject != null )
- {
- message = 'Properties of: ' + anyObject + '</b><blockquote>' ;
-
- for (var prop in anyObject)
- {
- try
- {
- var sVal = anyObject[ prop ] != null ? anyObject[ prop ] + '' : '[null]' ;
- message += '<b>' + prop + '</b> : ' + sVal.replace(/</g, '&lt;') + '<br>' ;
- }
- catch (e)
- {
- try
- {
- message += '<b>' + prop + '</b> : [' + typeof( anyObject[ prop ] ) + ']<br>' ;
- }
- catch (e)
- {
- message += '<b>' + prop + '</b> : [-error-]<br>' ;
- }
- }
- }
-
- message += '</blockquote><b>' ;
- } else
- message = 'OutputObject : Object is "null".' ;
-
- Output( message, color, true ) ;
-}
-
-function StartTimer()
-{
- window.setTimeout( 'CheckMessages()', 100 ) ;
-}
-
-function CheckMessages()
-{
- if ( window.FCKMessages.length > 0 )
- {
- // Get the first item in the queue
- var sMessage = window.FCKMessages[0] ;
-
- // Removes the first item from the queue
- var oTempArray = new Array() ;
- for ( i = 1 ; i < window.FCKMessages.length ; i++ )
- oTempArray[ i - 1 ] = window.FCKMessages[ i ] ;
- window.FCKMessages = oTempArray ;
-
- var d = new Date() ;
- var sTime =
- ( d.getHours() + 100 + '' ).substr( 1,2 ) + ':' +
- ( d.getMinutes() + 100 + '' ).substr( 1,2 ) + ':' +
- ( d.getSeconds() + 100 + '' ).substr( 1,2 ) + ':' +
- ( d.getMilliseconds() + 1000 + '' ).substr( 1,3 ) ;
-
- var oMsgDiv = oWindow.document.createElement( 'div' ) ;
- oMsgDiv.innerHTML = sTime + ': <b>' + sMessage + '<\/b>' ;
- oDiv.appendChild( oMsgDiv ) ;
- oMsgDiv.scrollIntoView() ;
- }
-}
-
-function Clear()
-{
- oDiv.innerHTML = '' ;
-}
- </script>
-</head>
-<body style="margin: 10px">
- <table style="height: 100%" cellspacing="5" cellpadding="0" width="100%" border="0">
- <tr>
- <td>
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tr>
- <td style="font-weight: bold; font-size: 1.2em;">
- FCKeditor Debug Window</td>
- <td align="right">
- <input type="button" value="Clear" onclick="Clear();" /></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr style="height: 100%">
- <td style="border: #696969 1px solid">
- <iframe id="xOutput" width="100%" height="100%" scrolling="auto" src="javascript:void(0)"
- frameborder="0"></iframe>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdialog.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdialog.html
deleted file mode 100644
index 706e4b120..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckdialog.html
+++ /dev/null
@@ -1,819 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This page is used by all dialog box as the container.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script type="text/javascript">
-// <![CDATA[
-
-// Domain relaxation logic.
-(function()
-{
- var d = document.domain ;
-
- while ( true )
- {
- // Test if we can access a parent property.
- try
- {
- var parentDomain = ( Args().TopWindow || E ).document.domain ;
-
- if ( document.domain != parentDomain )
- document.domain = parentDomain ;
-
- break ;
- }
- catch( e ) {}
-
- // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
- d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
- if ( d.length == 0 )
- break ; // It was not able to detect the domain.
-
- document.domain = d ;
- }
-})() ;
-
-var E = frameElement._DialogArguments.Editor ;
-
-// It seems referencing to frameElement._DialogArguments directly would lead to memory leaks in IE.
-// So let's use functions to access its members instead.
-function Args()
-{
- return frameElement._DialogArguments ;
-}
-
-function ParentDialog( dialog )
-{
- return dialog ? dialog._ParentDialog : frameElement._ParentDialog ;
-}
-
-var FCK = E.FCK ;
-var FCKTools = E.FCKTools ;
-var FCKDomTools = E.FCKDomTools ;
-var FCKDialog = E.FCKDialog ;
-var FCKBrowserInfo = E.FCKBrowserInfo ;
-var FCKConfig = E.FCKConfig ;
-
-// Steal the focus so that the caret would no longer stay in the editor iframe.
-window.focus() ;
-
-// Sets the Skin CSS
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-
-// Sets the language direction.
-var langDir = E.FCKLang.Dir ;
-
-// For IE6-, the fck_dialog_ie6.js is loaded, used to fix limitations in the browser.
-if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- document.write( '<' + 'script type="text/javascript" src="' + FCKConfig.SkinPath + 'fck_dialog_ie6.js"><' + '\/script>' ) ;
-
-FCKTools.RegisterDollarFunction( window ) ;
-
-// Resize related functions.
-var Sizer = function()
-{
- var bAutoSize = false ;
-
- var retval = {
- // Sets whether the dialog should auto-resize according to its content's height.
- SetAutoSize : function( autoSize )
- {
- bAutoSize = autoSize ;
- this.RefreshSize() ;
- },
-
- // Fit the dialog container's layout to the inner iframe's external size.
- RefreshContainerSize : function()
- {
- var frmMain = $( 'frmMain' ) ;
-
- if ( frmMain )
- {
- // Get the container size.
- var height = $( 'contents' ).offsetHeight ;
-
- // Subtract the size of other elements.
- height -= $( 'TitleArea' ).offsetHeight ;
- height -= $( 'TabsRow' ).offsetHeight ;
- height -= $( 'PopupButtons' ).offsetHeight ;
-
- frmMain.style.height = Math.max( height, 0 ) + 'px' ;
- }
- },
-
- // Resize and re-layout the dialog.
- // Triggers the onresize event for the layout logic.
- ResizeDialog : function( width, height )
- {
- FCKDomTools.SetElementStyles( window.frameElement,
- {
- 'width' : width + 'px',
- 'height' : height + 'px'
- } ) ;
-
- // If the skin have defined a function for resize fixes, call it now.
- if ( typeof window.DoResizeFixes == 'function' )
- window.DoResizeFixes() ;
- },
-
- // if bAutoSize is true, automatically fit the dialog size and layout to
- // accomodate the inner iframe's internal height.
- // if bAutoSize is false, then only the layout logic for the dialog decorations
- // is run to accomodate the inner iframe's external height.
- RefreshSize : function()
- {
- if ( bAutoSize )
- {
- var frmMain = $( 'frmMain' ) ;
- var innerDoc = frmMain.contentWindow.document ;
- var isStrict = FCKTools.IsStrictMode( innerDoc ) ;
-
- // Get the size of the frame contents.
- var innerWidth = isStrict ? innerDoc.documentElement.scrollWidth : innerDoc.body.scrollWidth ;
- var innerHeight = isStrict ? innerDoc.documentElement.scrollHeight : innerDoc.body.scrollHeight ;
-
- // Get the current frame size.
- var frameSize = FCKTools.GetViewPaneSize( frmMain.contentWindow ) ;
-
- var deltaWidth = innerWidth - frameSize.Width ;
- var deltaHeight = innerHeight - frameSize.Height ;
-
- // If the contents fits the current size.
- if ( deltaWidth <= 0 && deltaHeight <= 0 )
- return ;
-
- var dialogWidth = frameElement.offsetWidth + Math.max( deltaWidth, 0 ) ;
- var dialogHeight = frameElement.offsetHeight + Math.max( deltaHeight, 0 ) ;
-
- this.ResizeDialog( dialogWidth, dialogHeight ) ;
- }
- this.RefreshContainerSize() ;
- }
- }
-
- /**
- * Safari seems to have a bug with the time when RefreshSize() is executed - it
- * thinks frmMain's innerHeight is 0 if we query the value too soon after the
- * page is loaded in some circumstances. (#1316)
- * TODO : Maybe this is not needed anymore after #35.
- */
- if ( FCKBrowserInfo.IsSafari )
- {
- var originalRefreshSize = retval.RefreshSize ;
-
- retval.RefreshSize = function()
- {
- FCKTools.SetTimeout( originalRefreshSize, 1, retval ) ;
- }
- }
-
- /**
- * IE6 has a similar bug where it sometimes thinks $('contents') has an
- * offsetHeight of 0 (#2114).
- */
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var originalRefreshContainerSize = retval.RefreshContainerSize ;
- retval.RefreshContainerSize = function()
- {
- FCKTools.SetTimeout( originalRefreshContainerSize, 1, retval ) ;
- }
- }
-
- window.onresize = function()
- {
- retval.RefreshContainerSize() ;
- }
-
- window.SetAutoSize = FCKTools.Bind( retval, retval.SetAutoSize ) ;
-
- return retval ;
-}() ;
-
-// Manages the throbber image that appears if the inner part of dialog is taking too long to load.
-var Throbber = function()
-{
- var timer ;
-
- var updateThrobber = function()
- {
- var throbberParent = $( 'throbberBlock' ) ;
- var throbberBlocks = throbberParent.childNodes ;
- var lastClass = throbberParent.lastChild.className ;
-
- // From the last to the second one, copy the class from the previous one.
- for ( var i = throbberBlocks.length - 1 ; i > 0 ; i-- )
- throbberBlocks[i].className = throbberBlocks[i-1].className ;
-
- // For the first one, copy the last class (rotation).
- throbberBlocks[0].className = lastClass ;
- }
-
- return {
- Show : function( waitMilliseconds )
- {
- // Auto-setup the Show function to be called again after the
- // requested amount of time.
- if ( waitMilliseconds && waitMilliseconds > 0 )
- {
- timer = FCKTools.SetTimeout( this.Show, waitMilliseconds, this, null, window ) ;
- return ;
- }
-
- var throbberParent = $( 'throbberBlock' ) ;
-
- if (throbberParent.childNodes.length == 0)
- {
- // Create the throbber blocks.
- var classIds = [ 1,2,3,4,5,4,3,2 ] ;
- while ( classIds.length > 0 )
- throbberParent.appendChild( document.createElement( 'div' ) ).className = ' throbber_' + classIds.shift() ;
- }
-
- // Center the throbber.
- var frm = $( 'contents' ) ;
- var frmCoords = FCKTools.GetDocumentPosition( window, frm ) ;
- var x = frmCoords.x + ( frm.offsetWidth - throbberParent.offsetWidth ) / 2 ;
- var y = frmCoords.y + ( frm.offsetHeight - throbberParent.offsetHeight ) / 2 ;
- throbberParent.style.left = parseInt( x, 10 ) + 'px' ;
- throbberParent.style.top = parseInt( y, 10 ) + 'px' ;
-
- // Show it.
- throbberParent.style.visibility = '' ;
-
- // Hide tabs and buttons:
- $( 'Tabs' ).style.visibility = 'hidden' ;
- $( 'PopupButtons' ).style.visibility = 'hidden' ;
-
- // Setup the animation interval.
- timer = setInterval( updateThrobber, 100 ) ;
- },
-
- Hide : function()
- {
- if ( timer )
- {
- clearInterval( timer ) ;
- timer = null ;
- }
-
- $( 'throbberBlock' ).style.visibility = 'hidden' ;
-
- // Show tabs and buttons:
- $( 'Tabs' ).style.visibility = '' ;
- $( 'PopupButtons' ).style.visibility = '' ;
- }
- } ;
-}() ;
-
-// Drag and drop handlers.
-var DragAndDrop = function()
-{
- var registeredWindows = [] ;
- var lastCoords ;
- var currentPos ;
-
- var cleanUpHandlers = function()
- {
- for ( var i = 0 ; i < registeredWindows.length ; i++ )
- {
- FCKTools.RemoveEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
- FCKTools.RemoveEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
- }
- }
-
- var dragMouseMoveHandler = function( evt )
- {
- if ( !lastCoords )
- return ;
-
- if ( !evt )
- evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
-
- // Updated the last coordinates.
- var currentCoords =
- {
- x : evt.screenX,
- y : evt.screenY
- } ;
-
- currentPos =
- {
- x : currentPos.x + ( currentCoords.x - lastCoords.x ),
- y : currentPos.y + ( currentCoords.y - lastCoords.y )
- } ;
-
- lastCoords = currentCoords ;
-
- frameElement.style.left = currentPos.x + 'px' ;
- frameElement.style.top = currentPos.y + 'px' ;
-
- if ( evt.preventDefault )
- evt.preventDefault() ;
- else
- evt.returnValue = false ;
- }
-
- var dragMouseUpHandler = function( evt )
- {
- if ( !lastCoords )
- return ;
- if ( !evt )
- evt = FCKTools.GetElementDocument( this ).parentWindow.event ;
- cleanUpHandlers() ;
- lastCoords = null ;
- }
-
- return {
-
- MouseDownHandler : function( evt )
- {
- var view = null ;
- if ( !evt )
- {
- view = FCKTools.GetElementDocument( this ).parentWindow ;
- evt = view.event ;
- }
- else
- view = evt.view ;
-
- var target = evt.srcElement || evt.target ;
- if ( target.id == 'closeButton' || target.className == 'PopupTab' || target.className == 'PopupTabSelected' )
- return ;
-
- lastCoords =
- {
- x : evt.screenX,
- y : evt.screenY
- } ;
-
- // Save the current IFRAME position.
- currentPos =
- {
- x : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'left' ), 10 ),
- y : parseInt( FCKDomTools.GetCurrentElementStyle( frameElement, 'top' ), 10 )
- } ;
-
- for ( var i = 0 ; i < registeredWindows.length ; i++ )
- {
- FCKTools.AddEventListener( registeredWindows[i].document, 'mousemove', dragMouseMoveHandler ) ;
- FCKTools.AddEventListener( registeredWindows[i].document, 'mouseup', dragMouseUpHandler ) ;
- }
-
- if ( evt.preventDefault )
- evt.preventDefault() ;
- else
- evt.returnValue = false ;
- },
-
- RegisterHandlers : function( w )
- {
- registeredWindows.push( w ) ;
- }
- }
-}() ;
-
-// Selection related functions.
-//(Became simple shortcuts after the fix for #1990)
-var Selection =
-{
- /**
- * Ensures that the editing area contains an active selection. This is a
- * requirement for IE, as it looses the selection when the focus moves to other
- * frames.
- */
- EnsureSelection : function()
- {
- // Move the focus to the Cancel button so even if the dialog contains a
- // contentEditable element the selection is properly restored in the editor #2496
- window.focus() ;
- $( 'btnCancel' ).focus() ;
-
- FCK.Selection.Restore() ;
- },
-
- /**
- * Get the FCKSelection object for the editor instance.
- */
- GetSelection : function()
- {
- return FCK.Selection ;
- },
-
- /**
- * Get the selected element in the editing area (for object selections).
- */
- GetSelectedElement : function()
- {
- return FCK.Selection.GetSelectedElement() ;
- }
-}
-
-// Tab related functions.
-var Tabs = function()
-{
- // Only element ids should be stored here instead of element references since setSelectedTab and TabDiv_OnClick
- // would build circular references with the element references inside and cause memory leaks in IE6.
- var oTabs = new Object() ;
-
- var setSelectedTab = function( tabCode )
- {
- for ( var sCode in oTabs )
- {
- if ( sCode == tabCode )
- $( oTabs[sCode] ).className = 'PopupTabSelected' ;
- else
- $( oTabs[sCode] ).className = 'PopupTab' ;
- }
-
- if ( typeof( window.frames["frmMain"].OnDialogTabChange ) == 'function' )
- window.frames["frmMain"].OnDialogTabChange( tabCode ) ;
- }
-
- function TabDiv_OnClick()
- {
- setSelectedTab( this.TabCode ) ;
- }
-
- window.AddTab = function( tabCode, tabText, startHidden )
- {
- if ( typeof( oTabs[ tabCode ] ) != 'undefined' )
- return ;
-
- var eTabsRow = $( 'Tabs' ) ;
-
- var oCell = eTabsRow.insertCell( eTabsRow.cells.length - 1 ) ;
- oCell.noWrap = true ;
-
- var oDiv = document.createElement( 'DIV' ) ;
- oDiv.className = 'PopupTab' ;
- oDiv.innerHTML = tabText ;
- oDiv.TabCode = tabCode ;
- oDiv.onclick = TabDiv_OnClick ;
- oDiv.id = Math.random() ;
-
- if ( startHidden )
- oDiv.style.display = 'none' ;
-
- eTabsRow = $( 'TabsRow' ) ;
-
- oCell.appendChild( oDiv ) ;
-
- if ( eTabsRow.style.display == 'none' )
- {
- var eTitleArea = $( 'TitleArea' ) ;
- eTitleArea.className = 'PopupTitle' ;
-
- oDiv.className = 'PopupTabSelected' ;
- eTabsRow.style.display = '' ;
-
- if ( window.onresize )
- window.onresize() ;
- }
-
- oTabs[ tabCode ] = oDiv.id ;
-
- FCKTools.DisableSelection( oDiv ) ;
- } ;
-
- window.SetSelectedTab = setSelectedTab ;
-
- window.SetTabVisibility = function( tabCode, isVisible )
- {
- var oTab = $( oTabs[ tabCode ] ) ;
- oTab.style.display = isVisible ? '' : 'none' ;
-
- if ( ! isVisible && oTab.className == 'PopupTabSelected' )
- {
- for ( var sCode in oTabs )
- {
- if ( $( oTabs[sCode] ).style.display != 'none' )
- {
- setSelectedTab( sCode ) ;
- break ;
- }
- }
- }
- } ;
-}() ;
-
-// readystatechange handler for registering drag and drop handlers in cover
-// iframes, defined out here to avoid memory leak.
-// Do NOT put this function as a private function as it will induce memory leak
-// in IE and it's not detectable with Drip or sIEve and undetectable leaks are
-// really nasty (sigh).
-var onReadyRegister = function()
-{
- if ( this.readyState != 'complete' )
- return ;
- DragAndDrop.RegisterHandlers( this.contentWindow ) ;
-} ;
-
-// The business logic of the dialog, dealing with operational things like
-// dialog open/dialog close/enable/disable/etc.
-(function()
-{
- var setOnKeyDown = function( targetDocument )
- {
- targetDocument.onkeydown = function ( e )
- {
- e = e || event || this.parentWindow.event ;
- switch ( e.keyCode )
- {
- case 13 : // ENTER
- var oTarget = e.srcElement || e.target ;
- if ( oTarget.tagName == 'TEXTAREA' )
- return true ;
- Ok() ;
- return false ;
-
- case 27 : // ESC
- Cancel() ;
- return false ;
- }
- return true ;
- }
- } ;
-
- var contextMenuBlocker = function( e )
- {
- var sTagName = e.target.tagName ;
- if ( ! ( ( sTagName == "INPUT" && e.target.type == "text" ) || sTagName == "TEXTAREA" ) )
- e.preventDefault() ;
- } ;
-
- var disableContextMenu = function( targetDocument )
- {
- if ( FCKBrowserInfo.IsIE )
- return ;
-
- targetDocument.addEventListener( 'contextmenu', contextMenuBlocker, true ) ;
- } ;
-
- // Program entry point.
- window.Init = function()
- {
- $( 'contents' ).dir = langDir;
-
- // Start the throbber timer.
- Throbber.Show( 1000 ) ;
-
- Sizer.RefreshContainerSize() ;
- LoadInnerDialog() ;
-
- FCKTools.DisableSelection( document.body ) ;
-
- // Make the title area draggable.
- var titleElement = $( 'header' ) ;
- titleElement.onmousedown = DragAndDrop.MouseDownHandler ;
-
- // Connect mousemove and mouseup events from dialog frame and outer window to dialog dragging logic.
- DragAndDrop.RegisterHandlers( window ) ;
- DragAndDrop.RegisterHandlers( Args().TopWindow ) ;
-
- // Disable the previous dialog if it exists.
- if ( ParentDialog() )
- {
- ParentDialog().contentWindow.SetEnabled( false ) ;
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var currentParent = ParentDialog() ;
- while ( currentParent )
- {
- var blockerFrame = currentParent.contentWindow.$( 'blocker' ) ;
- if ( blockerFrame.readyState == 'complete' )
- DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
- else
- blockerFrame.onreadystatechange = onReadyRegister ;
- currentParent = ParentDialog( currentParent ) ;
- }
- }
- else
- {
- var currentParent = ParentDialog() ;
- while ( currentParent )
- {
- DragAndDrop.RegisterHandlers( currentParent.contentWindow ) ;
- currentParent = ParentDialog( currentParent ) ;
- }
- }
- }
-
- // If this is the only dialog on screen, enable the background cover.
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- var blockerFrame = FCKDialog.GetCover().firstChild ;
- if ( blockerFrame.readyState == 'complete' )
- DragAndDrop.RegisterHandlers( blockerFrame.contentWindow ) ;
- else
- blockerFrame.onreadystatechange = onReadyRegister;
- }
-
- // Add Enter/Esc hotkeys and disable context menu for the dialog.
- setOnKeyDown( document ) ;
- disableContextMenu( document ) ;
- } ;
-
- window.LoadInnerDialog = function()
- {
- if ( window.onresize )
- window.onresize() ;
-
- // First of all, translate the dialog box contents.
- E.FCKLanguageManager.TranslatePage( document ) ;
-
- // Create the IFRAME that holds the dialog contents.
- $( 'innerContents' ).innerHTML = '<iframe id="frmMain" src="' + Args().Page + '" name="frmMain" frameborder="0" width="100%" height="100%" scrolling="auto" style="visibility: hidden;" allowtransparency="true"><\/iframe>' ;
- } ;
-
- window.InnerDialogLoaded = function()
- {
- // If the dialog has been closed before the iframe is loaded, do nothing.
- if ( !frameElement.parentNode )
- return null ;
-
- Throbber.Hide() ;
-
- var frmMain = $('frmMain') ;
- var innerWindow = frmMain.contentWindow ;
- var innerDoc = innerWindow.document ;
-
- // Show the loaded iframe.
- frmMain.style.visibility = '' ;
-
- // Set the language direction.
- innerDoc.documentElement.dir = langDir ;
-
- // Sets the Skin CSS.
- innerDoc.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
-
- setOnKeyDown( innerDoc ) ;
- disableContextMenu( innerDoc ) ;
-
- Sizer.RefreshContainerSize();
-
- DragAndDrop.RegisterHandlers( innerWindow ) ;
-
- innerWindow.focus() ;
-
- return E ;
- } ;
-
- window.SetOkButton = function( showIt )
- {
- $('btnOk').style.visibility = ( showIt ? '' : 'hidden' ) ;
- } ;
-
- window.Ok = function()
- {
- Selection.EnsureSelection() ;
-
- var frmMain = window.frames["frmMain"] ;
-
- if ( frmMain.Ok && frmMain.Ok() )
- CloseDialog() ;
- else
- frmMain.focus() ;
- } ;
-
- window.Cancel = function( dontFireChange )
- {
- Selection.EnsureSelection() ;
- return CloseDialog( dontFireChange ) ;
- } ;
-
- window.CloseDialog = function( dontFireChange )
- {
- Throbber.Hide() ;
-
- // Points the src to a non-existent location to avoid loading errors later, in case the dialog
- // haven't been completed loaded at this point.
- if ( $( 'frmMain' ) )
- $( 'frmMain' ).src = FCKTools.GetVoidUrl() ;
-
- if ( !dontFireChange && !FCK.EditMode )
- {
- // All dialog windows, by default, will fire the "OnSelectionChange"
- // event, no matter the Ok or Cancel button has been pressed.
- // It seems that OnSelectionChange may enter on a concurrency state
- // on some situations (#1965), so we should put the event firing in
- // the execution queue instead of executing it immediately.
- setTimeout( function()
- {
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;
- }, 0 ) ;
- }
-
- FCKDialog.OnDialogClose( window ) ;
- } ;
-
- window.SetEnabled = function( isEnabled )
- {
- var cover = $( 'cover' ) ;
- cover.style.display = isEnabled ? 'none' : '' ;
-
- if ( FCKBrowserInfo.IsIE && !FCKBrowserInfo.IsIE7 )
- {
- if ( !isEnabled )
- {
- // Inser the blocker IFRAME before the cover.
- var blocker = document.createElement( 'iframe' ) ;
- blocker.src = FCKTools.GetVoidUrl() ;
- blocker.hideFocus = true ;
- blocker.frameBorder = 0 ;
- blocker.id = blocker.className = 'blocker' ;
- cover.appendChild( blocker ) ;
- }
- else
- {
- var blocker = $( 'blocker' ) ;
- if ( blocker && blocker.parentNode )
- blocker.parentNode.removeChild( blocker ) ;
- }
- }
- } ;
-})() ;
-// ]]>
- </script>
- </head>
- <body onload="Init();" class="PopupBody">
- <div class="contents" id="contents">
- <div id="header">
- <div id="TitleArea" class="PopupTitle PopupTitleBorder">
- <script type="text/javascript">
-// <![CDATA[
-document.write( Args().Title ) ;
-// ]]>
- </script>
- <div id="closeButton" onclick="Cancel();"></div>
- </div>
- <div id="TabsRow" class="PopupTabArea" style="display: none">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr id="Tabs">
- <td class="PopupTabEmptyArea">&nbsp;</td>
- <td class="PopupTabEmptyArea" width="100%">&nbsp;</td>
- </tr>
- </table>
- </div>
- </div>
- <div id="innerContents"></div>
- <div id="PopupButtons" class="PopupButtons">
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td width="100%">&nbsp;</td>
- <td nowrap="nowrap">
- <input id="btnOk" style="visibility: hidden;" type="button" value="Ok" class="Button" onclick="Ok();" fckLang="DlgBtnOK" />
- &nbsp;
- <input id="btnCancel" type="button" value="Cancel" class="Button" onclick="Cancel();" fckLang="DlgBtnCancel" />
- </td>
- </tr>
- </table>
- </div>
- </div>
- <div class="tl"></div>
- <div class="tc"></div>
- <div class="tr"></div>
- <div class="ml"></div>
- <div class="mr"></div>
- <div class="bl"></div>
- <div class="bc"></div>
- <div class="br"></div>
- <div class="cover" id="cover" style="display:none"></div>
- <div id="throbberBlock" style="position: absolute; visibility: hidden"></div>
- <script type="text/javascript">
-// <![CDATA[
- // Set the class name for language direction.
- document.body.className += ' ' + langDir ;
-
- var cover = $( 'cover' ) ;
- cover.style.backgroundColor = FCKConfig.BackgroundBlockerColor ;
- FCKDomTools.SetOpacity( cover, FCKConfig.BackgroundBlockerOpacity ) ;
-// ]]>
- </script>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.html
deleted file mode 100644
index b6ada3e74..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.html
+++ /dev/null
@@ -1,317 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Main page that holds the editor.
--->
-<html>
-<head>
- <title>FCKeditor</title>
- <meta name="robots" content="noindex, nofollow">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta http-equiv="Cache-Control" content="public">
- <script type="text/javascript">
-
-// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
-// without security.fileuri.strict_origin_policy disabled.
-if ( document.location.protocol == 'file:' )
-{
- try
- {
- window.parent.document.domain ;
- }
- catch ( e )
- {
- window.addEventListener( 'load', function()
- {
- document.body.innerHTML = '\
- <div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
- <p>\
- <b>Your browser security settings don\'t allow FCKeditor to be opened from\
- the local filesystem.<\/b>\
- <\/p>\
- <p>\
- Please open the <b>about:config<\/b> page and disable the\
- &quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
- <\/p>\
- <p>\
- Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
- for more information.\
- <\/p>\
- <\/div>' ;
- }, false ) ;
- }
-}
-
-// Save a reference to the default domain.
-var FCK_ORIGINAL_DOMAIN ;
-
-// Automatically detect the correct document.domain (#123).
-(function()
-{
- var d = FCK_ORIGINAL_DOMAIN = document.domain ;
-
- while ( true )
- {
- // Test if we can access a parent property.
- try
- {
- var test = window.parent.document.domain ;
- break ;
- }
- catch( e ) {}
-
- // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
- d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
- if ( d.length == 0 )
- break ; // It was not able to detect the domain.
-
- try
- {
- document.domain = d ;
- }
- catch (e)
- {
- break ;
- }
- }
-})() ;
-
-// Save a reference to the detected runtime domain.
-var FCK_RUNTIME_DOMAIN = document.domain ;
-
-var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
-
-// Instead of loading scripts and CSSs using inline tags, all scripts are
-// loaded by code. In this way we can guarantee the correct processing order,
-// otherwise external scripts and inline scripts could be executed in an
-// unwanted order (IE).
-
-function LoadScript( url )
-{
- document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
-}
-
-// Main editor scripts.
-var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
-
-LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
-
-// Base configuration file.
-LoadScript( '../fckconfig.js' ) ;
-
- </script>
- <script type="text/javascript">
-
-// Adobe AIR compatibility file.
-if ( FCKBrowserInfo.IsAIR )
- LoadScript( 'js/fckadobeair.js' ) ;
-
-if ( FCKBrowserInfo.IsIE )
-{
- // Remove IE mouse flickering.
- try
- {
- document.execCommand( 'BackgroundImageCache', false, true ) ;
- }
- catch (e)
- {
- // We have been reported about loading problems caused by the above
- // line. For safety, let's just ignore errors.
- }
-
- // Create the default cleanup object used by the editor.
- FCK.IECleanup = new FCKIECleanup( window ) ;
- FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
- FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
-}
-
-// The first function to be called on selection change must the the styles
-// change checker, because the result of its processing may be used by another
-// functions listening to the same event.
-FCK.Events.AttachEvent( 'OnSelectionChange', function() { FCKStyles.CheckSelectionChanges() ; } ) ;
-
-// The config hidden field is processed immediately, because
-// CustomConfigurationsPath may be set in the page.
-FCKConfig.ProcessHiddenField() ;
-
-// Load the custom configurations file (if defined).
-if ( FCKConfig.CustomConfigurationsPath.length > 0 )
- LoadScript( FCKConfig.CustomConfigurationsPath ) ;
-
- </script>
- <script type="text/javascript">
-
-// Load configurations defined at page level.
-FCKConfig_LoadPageConfig() ;
-
-FCKConfig_PreProcess() ;
-
-// Load the full debug script.
-if ( FCKConfig.Debug )
- LoadScript( '_source/internals/fckdebug.js' ) ;
-
- </script>
- <script type="text/javascript">
-
-// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
-var FCK_InternalCSS = FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
-var FCK_ShowTableBordersCSS = FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
-
-// Popup the debug window if debug mode is set to true. It guarantees that the
-// first debug message will not be lost.
-if ( FCKConfig.Debug )
- FCKDebug._GetWindow() ;
-
-// Load the active skin CSS.
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
-
-// Load the language file.
-FCKLanguageManager.Initialize() ;
-LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
-
- </script>
- <script type="text/javascript">
-
-// Initialize the editing area context menu.
-FCK_ContextMenu_Init() ;
-
-FCKPlugins.Load() ;
-
- </script>
- <script type="text/javascript">
-
-// Set the editor interface direction.
-window.document.dir = FCKLang.Dir ;
-
- </script>
- <script type="text/javascript">
-
-window.onload = function()
-{
- InitializeAPI() ;
-
- if ( FCKBrowserInfo.IsIE )
- FCK_PreloadImages() ;
- else
- LoadToolbarSetup() ;
-}
-
-function LoadToolbarSetup()
-{
- FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
-}
-
-function LoadToolbar()
-{
- var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
-
- if ( oToolbarSet.IsLoaded )
- StartEditor() ;
- else
- {
- oToolbarSet.OnLoad = StartEditor ;
- oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
- }
-}
-
-function StartEditor()
-{
- // Remove the onload listener.
- FCK.ToolbarSet.OnLoad = null ;
-
- FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
-
- FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
-
- // Start the editor.
- FCK.StartEditor() ;
-}
-
-function WaitForActive( editorInstance, newStatus )
-{
- if ( newStatus == FCK_STATUS_ACTIVE )
- {
- if ( FCKBrowserInfo.IsGecko )
- FCKTools.RunFunction( window.onresize ) ;
-
- if ( !FCKConfig.PreventSubmitHandler )
- _AttachFormSubmitToAPI() ;
-
- FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
-
- // Call the special "FCKeditor_OnComplete" function that should be present in
- // the HTML page where the editor is located.
- if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
- window.parent.FCKeditor_OnComplete( FCK ) ;
- }
-}
-
-// Gecko browsers doesn't calculate well the IFRAME size so we must
-// recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko && !FCKBrowserInfo.IsOpera )
-{
- window.onresize = function( e )
- {
- // Running in Chrome makes the window receive the event including subframes.
- // we care only about this window. Ticket #1642.
- // #2002: The originalTarget from the event can be the current document, the window, or the editing area.
- if ( e && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
- return ;
-
- var oCell = document.getElementById( 'xEditingArea' ) ;
-
- var eInnerElement = oCell.firstChild ;
- if ( eInnerElement )
- {
- eInnerElement.style.height = '0px' ;
- eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
- }
- }
-}
-
- </script>
-</head>
-<body>
- <table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
- <tr id="xToolbarRow" style="display: none">
- <td id="xToolbarSpace" style="overflow: hidden">
- <table width="100%" cellpadding="0" cellspacing="0">
- <tr id="xCollapsed" style="display: none">
- <td id="xExpandHandle" class="TB_Expand" colspan="3">
- <img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
- </tr>
- <tr id="xExpanded" style="display: none">
- <td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
- <td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
- <img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
- <td id="xToolbar" class="TB_ToolbarSet"></td>
- <td class="TB_SideBorder" style="width: 1px"></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td id="xEditingArea" valign="top" style="height: 100%"></td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.original.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.original.html
deleted file mode 100644
index 1e004316f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/fckeditor.original.html
+++ /dev/null
@@ -1,424 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Main page that holds the editor.
--->
-<html>
-<head>
- <title>FCKeditor</title>
- <meta name="robots" content="noindex, nofollow">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <!-- @Packager.RemoveLine
- <meta http-equiv="Cache-Control" content="public">
- @Packager.RemoveLine -->
- <script type="text/javascript">
-
-// #1645: Alert the user if opening FCKeditor in FF3 from local filesystem
-// without security.fileuri.strict_origin_policy disabled.
-if ( document.location.protocol == 'file:' )
-{
- try
- {
- window.parent.document.domain ;
- }
- catch ( e )
- {
- window.addEventListener( 'load', function()
- {
- document.body.innerHTML = '\
- <div style="border: 1px red solid; font-family: arial; font-size: 12px; color: red; padding:10px;">\
- <p>\
- <b>Your browser security settings don\'t allow FCKeditor to be opened from\
- the local filesystem.<\/b>\
- <\/p>\
- <p>\
- Please open the <b>about:config<\/b> page and disable the\
- &quot;security.fileuri.strict_origin_policy&quot; option; then load this page again.\
- <\/p>\
- <p>\
- Check our <a href="http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/FAQ#ff3perms">FAQ<\/a>\
- for more information.\
- <\/p>\
- <\/div>' ;
- }, false ) ;
- }
-}
-
-// Save a reference to the default domain.
-var FCK_ORIGINAL_DOMAIN ;
-
-// Automatically detect the correct document.domain (#123).
-(function()
-{
- var d = FCK_ORIGINAL_DOMAIN = document.domain ;
-
- while ( true )
- {
- // Test if we can access a parent property.
- try
- {
- var test = window.parent.document.domain ;
- break ;
- }
- catch( e ) {}
-
- // Remove a domain part: www.mytest.example.com => mytest.example.com => example.com ...
- d = d.replace( /.*?(?:\.|$)/, '' ) ;
-
- if ( d.length == 0 )
- break ; // It was not able to detect the domain.
-
- try
- {
- document.domain = d ;
- }
- catch (e)
- {
- break ;
- }
- }
-})() ;
-
-// Save a reference to the detected runtime domain.
-var FCK_RUNTIME_DOMAIN = document.domain ;
-
-var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;
-
-// Instead of loading scripts and CSSs using inline tags, all scripts are
-// loaded by code. In this way we can guarantee the correct processing order,
-// otherwise external scripts and inline scripts could be executed in an
-// unwanted order (IE).
-
-function LoadScript( url )
-{
- document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
-}
-
-// Main editor scripts.
-var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;
-
-/* @Packager.RemoveLine
-LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
-@Packager.RemoveLine */
-// @Packager.Remove.Start
-
-LoadScript( '_source/fckconstants.js' ) ;
-LoadScript( '_source/fckjscoreextensions.js' ) ;
-
-if ( sSuffix == 'ie' )
- LoadScript( '_source/classes/fckiecleanup.js' ) ;
-
-LoadScript( '_source/internals/fckbrowserinfo.js' ) ;
-LoadScript( '_source/internals/fckurlparams.js' ) ;
-LoadScript( '_source/classes/fckevents.js' ) ;
-LoadScript( '_source/classes/fckdataprocessor.js' ) ;
-LoadScript( '_source/internals/fck.js' ) ;
-LoadScript( '_source/internals/fck_' + sSuffix + '.js' ) ;
-LoadScript( '_source/internals/fckconfig.js' ) ;
-
-LoadScript( '_source/internals/fckdebug_empty.js' ) ;
-LoadScript( '_source/internals/fckdomtools.js' ) ;
-LoadScript( '_source/internals/fcktools.js' ) ;
-LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
-LoadScript( '_source/fckeditorapi.js' ) ;
-LoadScript( '_source/classes/fckimagepreloader.js' ) ;
-LoadScript( '_source/internals/fckregexlib.js' ) ;
-LoadScript( '_source/internals/fcklistslib.js' ) ;
-LoadScript( '_source/internals/fcklanguagemanager.js' ) ;
-LoadScript( '_source/internals/fckxhtmlentities.js' ) ;
-LoadScript( '_source/internals/fckxhtml.js' ) ;
-LoadScript( '_source/internals/fckxhtml_' + sSuffix + '.js' ) ;
-LoadScript( '_source/internals/fckcodeformatter.js' ) ;
-LoadScript( '_source/internals/fckundo.js' ) ;
-LoadScript( '_source/classes/fckeditingarea.js' ) ;
-LoadScript( '_source/classes/fckkeystrokehandler.js' ) ;
-
-LoadScript( 'dtd/fck_xhtml10transitional.js' ) ;
-LoadScript( '_source/classes/fckstyle.js' ) ;
-LoadScript( '_source/internals/fckstyles.js' ) ;
-
-LoadScript( '_source/internals/fcklisthandler.js' ) ;
-LoadScript( '_source/classes/fckelementpath.js' ) ;
-LoadScript( '_source/classes/fckdomrange.js' ) ;
-LoadScript( '_source/classes/fckdocumentfragment_' + sSuffix + '.js' ) ;
-LoadScript( '_source/classes/fckw3crange.js' ) ;
-LoadScript( '_source/classes/fckdomrange_' + sSuffix + '.js' ) ;
-LoadScript( '_source/classes/fckdomrangeiterator.js' ) ;
-LoadScript( '_source/classes/fckenterkey.js' ) ;
-
-LoadScript( '_source/internals/fckdocumentprocessor.js' ) ;
-LoadScript( '_source/internals/fckselection.js' ) ;
-LoadScript( '_source/internals/fckselection_' + sSuffix + '.js' ) ;
-
-LoadScript( '_source/internals/fcktablehandler.js' ) ;
-LoadScript( '_source/internals/fcktablehandler_' + sSuffix + '.js' ) ;
-LoadScript( '_source/classes/fckxml.js' ) ;
-LoadScript( '_source/classes/fckxml_' + sSuffix + '.js' ) ;
-
-LoadScript( '_source/commandclasses/fcknamedcommand.js' ) ;
-LoadScript( '_source/commandclasses/fckstylecommand.js' ) ;
-LoadScript( '_source/commandclasses/fck_othercommands.js' ) ;
-LoadScript( '_source/commandclasses/fckshowblocks.js' ) ;
-LoadScript( '_source/commandclasses/fckspellcheckcommand_' + sSuffix + '.js' ) ;
-LoadScript( '_source/commandclasses/fcktextcolorcommand.js' ) ;
-LoadScript( '_source/commandclasses/fckpasteplaintextcommand.js' ) ;
-LoadScript( '_source/commandclasses/fckpastewordcommand.js' ) ;
-LoadScript( '_source/commandclasses/fcktablecommand.js' ) ;
-LoadScript( '_source/commandclasses/fckfitwindow.js' ) ;
-LoadScript( '_source/commandclasses/fcklistcommands.js' ) ;
-LoadScript( '_source/commandclasses/fckjustifycommands.js' ) ;
-LoadScript( '_source/commandclasses/fckindentcommands.js' ) ;
-LoadScript( '_source/commandclasses/fckblockquotecommand.js' ) ;
-LoadScript( '_source/commandclasses/fckcorestylecommand.js' ) ;
-LoadScript( '_source/commandclasses/fckremoveformatcommand.js' ) ;
-LoadScript( '_source/internals/fckcommands.js' ) ;
-
-LoadScript( '_source/classes/fckpanel.js' ) ;
-LoadScript( '_source/classes/fckicon.js' ) ;
-LoadScript( '_source/classes/fcktoolbarbuttonui.js' ) ;
-LoadScript( '_source/classes/fcktoolbarbutton.js' ) ;
-LoadScript( '_source/classes/fckspecialcombo.js' ) ;
-LoadScript( '_source/classes/fcktoolbarspecialcombo.js' ) ;
-LoadScript( '_source/classes/fcktoolbarstylecombo.js' ) ;
-LoadScript( '_source/classes/fcktoolbarfontformatcombo.js' ) ;
-LoadScript( '_source/classes/fcktoolbarfontscombo.js' ) ;
-LoadScript( '_source/classes/fcktoolbarfontsizecombo.js' ) ;
-LoadScript( '_source/classes/fcktoolbarpanelbutton.js' ) ;
-LoadScript( '_source/internals/fcktoolbaritems.js' ) ;
-LoadScript( '_source/classes/fcktoolbar.js' ) ;
-LoadScript( '_source/classes/fcktoolbarbreak_' + sSuffix + '.js' ) ;
-LoadScript( '_source/internals/fcktoolbarset.js' ) ;
-LoadScript( '_source/internals/fckdialog.js' ) ;
-LoadScript( '_source/classes/fckmenuitem.js' ) ;
-LoadScript( '_source/classes/fckmenublock.js' ) ;
-LoadScript( '_source/classes/fckmenublockpanel.js' ) ;
-LoadScript( '_source/classes/fckcontextmenu.js' ) ;
-LoadScript( '_source/internals/fck_contextmenu.js' ) ;
-LoadScript( '_source/classes/fckhtmliterator.js' ) ;
-LoadScript( '_source/classes/fckplugin.js' ) ;
-LoadScript( '_source/internals/fckplugins.js' ) ;
-
-// @Packager.Remove.End
-
-// Base configuration file.
-LoadScript( '../fckconfig.js' ) ;
-
- </script>
- <script type="text/javascript">
-
-// Adobe AIR compatibility file.
-if ( FCKBrowserInfo.IsAIR )
- LoadScript( 'js/fckadobeair.js' ) ;
-
-if ( FCKBrowserInfo.IsIE )
-{
- // Remove IE mouse flickering.
- try
- {
- document.execCommand( 'BackgroundImageCache', false, true ) ;
- }
- catch (e)
- {
- // We have been reported about loading problems caused by the above
- // line. For safety, let's just ignore errors.
- }
-
- // Create the default cleanup object used by the editor.
- FCK.IECleanup = new FCKIECleanup( window ) ;
- FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
- FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
-}
-
-// The first function to be called on selection change must the the styles
-// change checker, because the result of its processing may be used by another
-// functions listening to the same event.
-FCK.Events.AttachEvent( 'OnSelectionChange', function() { FCKStyles.CheckSelectionChanges() ; } ) ;
-
-// The config hidden field is processed immediately, because
-// CustomConfigurationsPath may be set in the page.
-FCKConfig.ProcessHiddenField() ;
-
-// Load the custom configurations file (if defined).
-if ( FCKConfig.CustomConfigurationsPath.length > 0 )
- LoadScript( FCKConfig.CustomConfigurationsPath ) ;
-
- </script>
- <script type="text/javascript">
-
-// Load configurations defined at page level.
-FCKConfig_LoadPageConfig() ;
-
-FCKConfig_PreProcess() ;
-
-// Load the full debug script.
-if ( FCKConfig.Debug )
- LoadScript( '_source/internals/fckdebug.js' ) ;
-
- </script>
- <script type="text/javascript">
-
-var FCK_InternalCSS = FCKConfig.BasePath + 'css/fck_internal.css' ; // @Packager.RemoveLine
-var FCK_ShowTableBordersCSS = FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ; // @Packager.RemoveLine
-/* @Packager.RemoveLine
-// CSS minified by http://iceyboard.no-ip.org/projects/css_compressor (see _dev/css_compression.txt).
-var FCK_InternalCSS = FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'html{min-height:100%}table.FCK__ShowTableBorders,table.FCK__ShowTableBorders td,table.FCK__ShowTableBorders th{border:#d3d3d3 1px solid}form{border:1px dotted #F00;padding:2px}.FCK__Flash{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_flashlogo.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__UnknownObject{border:#a9a9a9 1px solid;background-position:center center;background-image:url(images/fck_plugin.gif);background-repeat:no-repeat;width:80px;height:80px}.FCK__Anchor{border:1px dotted #00F;background-position:center center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;width:16px;height:15px;vertical-align:middle}.FCK__AnchorC{border:1px dotted #00F;background-position:1px center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}a[name]{border:1px dotted #00F;background-position:0 center;background-image:url(images/fck_anchor.gif);background-repeat:no-repeat;padding-left:18px}.FCK__PageBreak{background-position:center center;background-image:url(images/fck_pagebreak.gif);background-repeat:no-repeat;clear:both;display:block;float:none;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;border-right:0;border-left:0;height:5px}.FCK__InputHidden{width:19px;height:18px;background-image:url(images/fck_hiddenfield.gif);background-repeat:no-repeat;vertical-align:text-bottom;background-position:center center}.FCK__ShowBlocks p,.FCK__ShowBlocks div,.FCK__ShowBlocks pre,.FCK__ShowBlocks address,.FCK__ShowBlocks blockquote,.FCK__ShowBlocks h1,.FCK__ShowBlocks h2,.FCK__ShowBlocks h3,.FCK__ShowBlocks h4,.FCK__ShowBlocks h5,.FCK__ShowBlocks h6{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px;padding-left:8px}.FCK__ShowBlocks p{background-image:url(images/block_p.png)}.FCK__ShowBlocks div{background-image:url(images/block_div.png)}.FCK__ShowBlocks pre{background-image:url(images/block_pre.png)}.FCK__ShowBlocks address{background-image:url(images/block_address.png)}.FCK__ShowBlocks blockquote{background-image:url(images/block_blockquote.png)}.FCK__ShowBlocks h1{background-image:url(images/block_h1.png)}.FCK__ShowBlocks h2{background-image:url(images/block_h2.png)}.FCK__ShowBlocks h3{background-image:url(images/block_h3.png)}.FCK__ShowBlocks h4{background-image:url(images/block_h4.png)}.FCK__ShowBlocks h5{background-image:url(images/block_h5.png)}.FCK__ShowBlocks h6{background-image:url(images/block_h6.png)}' ) ;
-var FCK_ShowTableBordersCSS = FCKTools.FixCssUrls( FCKConfig.BasePath + 'css/', 'table:not([border]),table:not([border]) > tr > td,table:not([border]) > tr > th,table:not([border]) > tbody > tr > td,table:not([border]) > tbody > tr > th,table:not([border]) > thead > tr > td,table:not([border]) > thead > tr > th,table:not([border]) > tfoot > tr > td,table:not([border]) > tfoot > tr > th,table[border=\"0\"],table[border=\"0\"] > tr > td,table[border=\"0\"] > tr > th,table[border=\"0\"] > tbody > tr > td,table[border=\"0\"] > tbody > tr > th,table[border=\"0\"] > thead > tr > td,table[border=\"0\"] > thead > tr > th,table[border=\"0\"] > tfoot > tr > td,table[border=\"0\"] > tfoot > tr > th{border:#d3d3d3 1px dotted}' ) ;
-@Packager.RemoveLine */
-
-// Popup the debug window if debug mode is set to true. It guarantees that the
-// first debug message will not be lost.
-if ( FCKConfig.Debug )
- FCKDebug._GetWindow() ;
-
-// Load the active skin CSS.
-document.write( FCKTools.GetStyleHtml( FCKConfig.SkinEditorCSS ) ) ;
-
-// Load the language file.
-FCKLanguageManager.Initialize() ;
-LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
-
- </script>
- <script type="text/javascript">
-
-// Initialize the editing area context menu.
-FCK_ContextMenu_Init() ;
-
-FCKPlugins.Load() ;
-
- </script>
- <script type="text/javascript">
-
-// Set the editor interface direction.
-window.document.dir = FCKLang.Dir ;
-
- </script>
- <script type="text/javascript">
-
-window.onload = function()
-{
- InitializeAPI() ;
-
- if ( FCKBrowserInfo.IsIE )
- FCK_PreloadImages() ;
- else
- LoadToolbarSetup() ;
-}
-
-function LoadToolbarSetup()
-{
- FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
-}
-
-function LoadToolbar()
-{
- var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
-
- if ( oToolbarSet.IsLoaded )
- StartEditor() ;
- else
- {
- oToolbarSet.OnLoad = StartEditor ;
- oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
- }
-}
-
-function StartEditor()
-{
- // Remove the onload listener.
- FCK.ToolbarSet.OnLoad = null ;
-
- FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
-
- FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
-
- // Start the editor.
- FCK.StartEditor() ;
-}
-
-function WaitForActive( editorInstance, newStatus )
-{
- if ( newStatus == FCK_STATUS_ACTIVE )
- {
- if ( FCKBrowserInfo.IsGecko )
- FCKTools.RunFunction( window.onresize ) ;
-
- if ( !FCKConfig.PreventSubmitHandler )
- _AttachFormSubmitToAPI() ;
-
- FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
-
- // Call the special "FCKeditor_OnComplete" function that should be present in
- // the HTML page where the editor is located.
- if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
- window.parent.FCKeditor_OnComplete( FCK ) ;
- }
-}
-
-// Gecko browsers doesn't calculate well the IFRAME size so we must
-// recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko && !FCKBrowserInfo.IsOpera )
-{
- window.onresize = function( e )
- {
- // Running in Chrome makes the window receive the event including subframes.
- // we care only about this window. Ticket #1642.
- // #2002: The originalTarget from the event can be the current document, the window, or the editing area.
- if ( e && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
- return ;
-
- var oCell = document.getElementById( 'xEditingArea' ) ;
-
- var eInnerElement = oCell.firstChild ;
- if ( eInnerElement )
- {
- eInnerElement.style.height = '0px' ;
- eInnerElement.style.height = ( oCell.scrollHeight - 2 ) + 'px' ;
- }
- }
-}
-
- </script>
-</head>
-<body>
- <table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
- <tr id="xToolbarRow" style="display: none">
- <td id="xToolbarSpace" style="overflow: hidden">
- <table width="100%" cellpadding="0" cellspacing="0">
- <tr id="xCollapsed" style="display: none">
- <td id="xExpandHandle" class="TB_Expand" colspan="3">
- <img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
- </tr>
- <tr id="xExpanded" style="display: none">
- <td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
- <td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
- <img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
- <td id="xToolbar" class="TB_ToolbarSet"></td>
- <td class="TB_SideBorder" style="width: 1px"></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td id="xEditingArea" valign="top" style="height: 100%"></td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/anchor.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/anchor.gif
deleted file mode 100644
index 5aa797b22..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/anchor.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_ltr.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_ltr.gif
deleted file mode 100644
index 9c59bfe0b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_ltr.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_rtl.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_rtl.gif
deleted file mode 100644
index 22e864984..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/arrow_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angel_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angel_smile.gif
deleted file mode 100644
index a95e05371..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angel_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angry_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angry_smile.gif
deleted file mode 100644
index c667c5d6a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/angry_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/broken_heart.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/broken_heart.gif
deleted file mode 100644
index 938cce190..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/broken_heart.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cake.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cake.gif
deleted file mode 100644
index f6489d7d5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cake.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/confused_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/confused_smile.gif
deleted file mode 100644
index aeb05393d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/confused_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cry_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cry_smile.gif
deleted file mode 100644
index 0758f429e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/cry_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/devil_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/devil_smile.gif
deleted file mode 100644
index 15518d7f0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/devil_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/embaressed_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/embaressed_smile.gif
deleted file mode 100644
index c43194617..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/embaressed_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/envelope.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/envelope.gif
deleted file mode 100644
index 66d365614..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/envelope.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/heart.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/heart.gif
deleted file mode 100644
index 305714f88..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/heart.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/kiss.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/kiss.gif
deleted file mode 100644
index f840ea602..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/kiss.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/lightbulb.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/lightbulb.gif
deleted file mode 100644
index 863be6e51..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/lightbulb.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/omg_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/omg_smile.gif
deleted file mode 100644
index aabc7fd17..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/omg_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/regular_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/regular_smile.gif
deleted file mode 100644
index 33f297e81..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/regular_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/sad_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/sad_smile.gif
deleted file mode 100644
index dfb78efea..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/sad_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/shades_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/shades_smile.gif
deleted file mode 100644
index 157df770a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/shades_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/teeth_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/teeth_smile.gif
deleted file mode 100644
index 26b5a555f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/teeth_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_down.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_down.gif
deleted file mode 100644
index f53ee7249..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_down.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_up.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_up.gif
deleted file mode 100644
index 7e8c74627..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/thumbs_up.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/tounge_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/tounge_smile.gif
deleted file mode 100644
index b87ec4465..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/tounge_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif
deleted file mode 100644
index c0741223d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/wink_smile.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/wink_smile.gif
deleted file mode 100644
index eefe61dfa..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/smiley/msn/wink_smile.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckadobeair.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckadobeair.js
deleted file mode 100644
index 468164c30..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckadobeair.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Compatibility code for Adobe AIR.
- */
-
-if ( FCKBrowserInfo.IsAIR )
-{
- var FCKAdobeAIR = (function()
- {
- /*
- * ### Private functions.
- */
-
- var getDocumentHead = function( doc )
- {
- var head ;
- var heads = doc.getElementsByTagName( 'head' ) ;
-
- if( heads && heads[0] )
- head = heads[0] ;
- else
- {
- head = doc.createElement( 'head' ) ;
- doc.documentElement.insertBefore( head, doc.documentElement.firstChild ) ;
- }
-
- return head ;
- } ;
-
- /*
- * ### Public interface.
- */
- return {
- FCKeditorAPI_Evaluate : function( parentWindow, script )
- {
- // TODO : This one doesn't work always. The parent window will
- // point to an anonymous function in this window. If this
- // window is destroyied the parent window will be pointing to
- // an invalid reference.
-
- // Evaluate the script in this window.
- eval( script ) ;
-
- // Point the FCKeditorAPI property of the parent window to the
- // local reference.
- parentWindow.FCKeditorAPI = window.FCKeditorAPI ;
- },
-
- EditingArea_Start : function( doc, html )
- {
- // Get the HTML for the <head>.
- var headInnerHtml = html.match( /<head>([\s\S]*)<\/head>/i )[1] ;
-
- if ( headInnerHtml && headInnerHtml.length > 0 )
- {
- // Inject the <head> HTML inside a <div>.
- // Do that before getDocumentHead because WebKit moves
- // <link css> elements to the <head> at this point.
- var div = doc.createElement( 'div' ) ;
- div.innerHTML = headInnerHtml ;
-
- // Move the <div> nodes to <head>.
- FCKDomTools.MoveChildren( div, getDocumentHead( doc ) ) ;
- }
-
- doc.body.innerHTML = html.match( /<body>([\s\S]*)<\/body>/i )[1] ;
-
- //prevent clicking on hyperlinks and navigating away
- doc.addEventListener('click', function( ev )
- {
- ev.preventDefault() ;
- ev.stopPropagation() ;
- }, true ) ;
- },
-
- Panel_Contructor : function( doc, baseLocation )
- {
- var head = getDocumentHead( doc ) ;
-
- // Set the <base> href.
- head.appendChild( doc.createElement('base') ).href = baseLocation ;
-
- doc.body.style.margin = '0px' ;
- doc.body.style.padding = '0px' ;
- },
-
- ToolbarSet_GetOutElement : function( win, outMatch )
- {
- var toolbarTarget = win.parent ;
-
- var targetWindowParts = outMatch[1].split( '.' ) ;
- while ( targetWindowParts.length > 0 )
- {
- var part = targetWindowParts.shift() ;
- if ( part.length > 0 )
- toolbarTarget = toolbarTarget[ part ] ;
- }
-
- toolbarTarget = toolbarTarget.document.getElementById( outMatch[2] ) ;
- },
-
- ToolbarSet_InitOutFrame : function( doc )
- {
- var head = getDocumentHead( doc ) ;
-
- head.appendChild( doc.createElement('base') ).href = window.document.location ;
-
- var targetWindow = doc.defaultView;
-
- targetWindow.adjust = function()
- {
- targetWindow.frameElement.height = doc.body.scrollHeight;
- } ;
-
- targetWindow.onresize = targetWindow.adjust ;
- targetWindow.setTimeout( targetWindow.adjust, 0 ) ;
-
- doc.body.style.overflow = 'hidden';
- doc.body.innerHTML = document.getElementById( 'xToolbarSpace' ).innerHTML ;
- }
- } ;
- })();
-
- /*
- * ### Overrides
- */
- ( function()
- {
- // Save references for override reuse.
- var _Original_FCKPanel_Window_OnFocus = FCKPanel_Window_OnFocus ;
- var _Original_FCKPanel_Window_OnBlur = FCKPanel_Window_OnBlur ;
- var _Original_FCK_StartEditor = FCK.StartEditor ;
-
- FCKPanel_Window_OnFocus = function( e, panel )
- {
- // Call the original implementation.
- _Original_FCKPanel_Window_OnFocus.call( this, e, panel ) ;
-
- if ( panel._focusTimer )
- clearTimeout( panel._focusTimer ) ;
- }
-
- FCKPanel_Window_OnBlur = function( e, panel )
- {
- // Delay the execution of the original function.
- panel._focusTimer = FCKTools.SetTimeout( _Original_FCKPanel_Window_OnBlur, 100, this, [ e, panel ] ) ;
- }
-
- FCK.StartEditor = function()
- {
- // Force pointing to the CSS files instead of using the inline CSS cached styles.
- window.FCK_InternalCSS = FCKConfig.BasePath + 'css/fck_internal.css' ;
- window.FCK_ShowTableBordersCSS = FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;
-
- _Original_FCK_StartEditor.apply( this, arguments ) ;
- }
- })();
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_gecko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_gecko.js
deleted file mode 100644
index 7b28c8d9e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_gecko.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file has been compressed for better performance. The original source
- * can be found at "editor/_source".
- */
-
-var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
-String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
-var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}}})(FCKBrowserInfo);
-var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
-var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
-var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
-var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();FCK.Selection.Release();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;},ToHtml:function(){for (var i=0;i<this.Elements.length;i++){this.Elements[i]='<div>&nbsp;'+this.Elements[i].outerHTML+'</div>';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i<this.Elements.length;i++){if (this.Elements[i].isHtml){A.innerHTML=this.Elements[i];this.Elements[i]=A.firstChild.removeChild(A.firstChild.lastChild);}}}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};(function(){var A=window.frameElement;var B=A.width;var C=A.height;if (/^\d+$/.test(B)) B+='px';if (/^\d+$/.test(C)) C+='px';var D=A.style;D.border=D.padding=D.margin=0;D.backgroundColor='transparent';D.backgroundImage='none';D.width=B;D.height=C;})();
-FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (window.onresize) window.onresize();FCKFocusManager.AddWindow(this.EditorWindow);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this._ExecDrop=function(evt){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){if (evt.dataTransfer){var A=evt.dataTransfer.getData('Text');A=FCKTools.HTMLEncode(A);A=FCKTools.ProcessLineBreaks(window,FCKConfig,A);FCK.InsertHtml(A);}else if (FCKConfig.ShowDropDialog) FCK.PasteAsPlainText();evt.preventDefault();evt.stopPropagation();}};this._ExecCheckCaret=function(evt){if (FCK.EditMode!=0) return;if (evt.type=='keypress'){var B=evt.keyCode;if (B<33||B>40) return;};var C=function(H){if (H.nodeType!=1) return false;var D=H.tagName.toLowerCase();return (FCKListsLib.BlockElements[D]||FCKListsLib.EmptyElements[D]);};var E=function(){var F=FCKSelection.GetSelection();var G=F.getRangeAt(0);if (!G||!G.collapsed) return;var H=G.endContainer;if (H.nodeType!=3) return;if (H.nodeValue.length!=G.endOffset) return;var I=H.parentNode.tagName.toLowerCase();if (!(I=='a'||(!FCKBrowserInfo.IsOpera&&String(H.parentNode.contentEditable)=='false')||(!(FCKListsLib.BlockElements[I]||FCKListsLib.NonEmptyBlockElements[I])&&B==35))) return;var J=FCKTools.GetNextTextNode(H,H.parentNode,C);if (J) return;G=FCK.EditorDocument.createRange();J=FCKTools.GetNextTextNode(H,H.parentNode.parentNode,C);if (J){if (FCKBrowserInfo.IsOpera&&B==37) return;G.setStart(J,0);G.setEnd(J,0);}else{while (H.parentNode&&H.parentNode!=FCK.EditorDocument.body&&H.parentNode!=FCK.EditorDocument.documentElement&&H==H.parentNode.lastChild&&(!FCKListsLib.BlockElements[H.parentNode.tagName.toLowerCase()]&&!FCKListsLib.NonEmptyBlockElements[H.parentNode.tagName.toLowerCase()])) H=H.parentNode;if (FCKListsLib.BlockElements[I]||FCKListsLib.EmptyElements[I]||H==FCK.EditorDocument.body){G.setStart(H,H.childNodes.length);G.setEnd(H,H.childNodes.length);}else{var K=H.nextSibling;while (K){if (K.nodeType!=1){K=K.nextSibling;continue;};var L=K.tagName.toLowerCase();if (FCKListsLib.BlockElements[L]||FCKListsLib.EmptyElements[L]||FCKListsLib.NonEmptyBlockElements[L]) break;K=K.nextSibling;};var M=FCK.EditorDocument.createTextNode('');if (K) H.parentNode.insertBefore(M,K);else H.parentNode.appendChild(M);G.setStart(M,0);G.setEnd(M,0);}};F.removeAllRanges();F.addRange(G);FCK.Events.FireEvent("OnSelectionChange");};setTimeout(E,1);};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this.EditorDocument.addEventListener('keydown',this._KeyDownListener,false);if (FCKBrowserInfo.IsGecko){this.EditorWindow.addEventListener('dragdrop',this._ExecDrop,true);}else if (FCKBrowserInfo.IsSafari){this.EditorDocument.addEventListener('dragover',function (evt){ if (!FCK.MouseDownFlag&&FCK.Config.ForcePasteAsPlainText) evt.returnValue=false;},true);this.EditorDocument.addEventListener('drop',this._ExecDrop,true);this.EditorDocument.addEventListener('mousedown',function(ev){var N=ev.srcElement;if (N.nodeName.IEquals('IMG','HR','INPUT','TEXTAREA','SELECT')){FCKSelection.SelectNode(N);}},true);this.EditorDocument.addEventListener('mouseup',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);this.EditorDocument.addEventListener('click',function(ev){if (ev.srcElement.nodeName.IEquals('INPUT','TEXTAREA','SELECT')) ev.preventDefault()},true);};if (FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsOpera){this.EditorDocument.addEventListener('keypress',this._ExecCheckCaret,false);this.EditorDocument.addEventListener('click',this._ExecCheckCaret,false);};FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?0:-1;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try{if (FCKBrowserInfo.IsSafari) throw '';if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e) {if (FCKConfig.ForcePasteAsPlainText) FCK.PasteAsPlainText();else FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security');};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK._ExecPaste=function(){FCKUndo.SaveUndoStep();if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};return true;};FCK.InsertHtml=function(A){var B=FCK.EditorDocument,range;A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGecko){A=A.replace(/&nbsp;$/,'$&<span _fcktemp="1"/>');var C=new FCKDocumentFragment(this.EditorDocument);C.AppendHtml(A);var D=C.RootNode.lastChild;range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();range.DeleteContents();range.InsertNode(C.RootNode);range.MoveToPosition(D,4);}else B.execCommand('inserthtml',false,A);this.Focus();if (!range){range=new FCKDomRange(this.EditorWindow);range.MoveToSelection();};var E=range.CreateBookmark();FCKDocumentProcessor.Process(B);try{range.MoveToBookmark(E);range.Select();}catch (e) {};this.Events.FireEvent("OnSelectionChange");};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A,B){var C=[];if (FCKSelection.GetSelection().isCollapsed) return C;FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){var D='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',D,false,!!B);var E=this.EditorDocument.evaluate("//a[@href='"+D+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i<E.snapshotLength;i++){var F=E.snapshotItem(i);F.href=A;C.push(F);}};return C;};FCK._FillEmptyBlock=function(A){if (!A||A.nodeType!=1) return;var B=A.tagName.toLowerCase();if (B!='p'&&B!='div') return;if (A.firstChild) return;FCKTools.AppendBogusBr(A);};FCK._ExecCheckEmptyBlock=function(){FCK._FillEmptyBlock(FCK.EditorDocument.body.firstChild);var A=FCKSelection.GetSelection();if (!A||A.rangeCount<1) return;var B=A.getRangeAt(0);FCK._FillEmptyBlock(B.startContainer);};
-var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi,'/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else FCKConfig.BasePath=document.location.protocol+'//'+document.location.host+document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) { }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.push([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.push(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
-var FCKDebug={Output:function(){},OutputObject:function(){}};
-var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
-var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
-FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else if (FCKBrowserInfo.IsSafari) A.style.KhtmlUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var e=A.createElement("STYLE");e.appendChild(A.createTextNode(B));A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=[];var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i].cloneNode(true));e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':var B=(new DOMParser()).parseFromString('<tmp></tmp>','text/xml');FCKDomTools.RemoveNode(B.firstChild);return B;};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.getAttribute('style');if (D&&D.length>0){C.Inline=D;A.setAttribute('style','',0);};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return A.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);var E=null;while (A){var F=D.getComputedStyle(A,'').position;if (F&&F!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (!FCKBrowserInfo.IsOpera){var G=E;while (G&&G!=A){c.X-=G.scrollLeft;c.Y-=G.scrollTop;G=G.parentNode;}};E=A;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;E=null;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.4",VersionBuild : "21629",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
-var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
-var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
-var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
-var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
-var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','Â¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','Æ’':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','â„':'frasl','℘':'weierp','â„‘':'image','ℜ':'real','â„¢':'trade','ℵ':'alefsym','â†':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','â‡':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','âˆ':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','âˆ':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','â‹…':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','â—Š':'loz','â™ ':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','>':'gt','ˆ':'circ','Ëœ':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','â€':'zwj','‎':'lrm','â€':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','â€':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Ã':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Ã…':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','ÃŒ':'Igrave','Ã':'Iacute','ÃŽ':'Icirc','Ã':'Iuml','Ã':'ETH','Ñ':'Ntilde','Ã’':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ã':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','Ã¥':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Å’':'OElig','Å“':'oelig','Å ':'Scaron','Å¡':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Î’':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Î':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Î¥':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','Ï€':'pi','Ï':'rho','Ï‚':'sigmaf','σ':'sigma','Ï„':'tau','Ï…':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={'>':'gt'};A='>';A+=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
-var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')){if (B.nextSibling) return false;else{B.removeAttribute('_moz_editor_bogus_node');B.removeAttribute('type');}};if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+(FCKXHtml.SpecialBlocks.push(A)-1);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)} while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
-FCKXHtml._GetMainXmlString=function(){return (new XMLSerializer()).serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.StartsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class'){G=E.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (G.length==0) continue;}else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);this._AppendAttribute(C,F,G);}}};if (FCKBrowserInfo.IsOpera){FCKXHtml.TagProcessors['head']=function(A,B){FCKXHtml.XML._HeadElement=A;A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B,C){if (B.parentNode.nodeName.toLowerCase()!='head'){var D=FCKXHtml.XML._HeadElement;if (D&&C!=D){delete B._fckxhtmljob;FCKXHtml._AppendNode(D,B);return null;}};return A;}};if (FCKBrowserInfo.IsGecko){FCKXHtml.TagProcessors['link']=function(A,B){if (B.href.substr(0,9).toLowerCase()=='chrome://') return false;return A;}};
-var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+(FCKCodeFormatter.ProtectedData.push(C)-1)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
-var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
-var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(/<head>/i,'<head>'+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(/<head>/i,'<head>'+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
-var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
-FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
-var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<br>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<br />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<br />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<pre>\n'+F.join('')+'</pre>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='<pre>'+C+'</pre>';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
-var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
-var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
-var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
-var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A.collapsed){this.EndNode=this.StartNode;this.EndContainer=this.StartContainer;this.EndBlock=this.StartBlock;this.EndBlockLimit=this.StartBlockLimit;}else{var D=A.endContainer;if (B!=D) C=new FCKElementPath(D);var E=D;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=D;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&C.nodeType==3&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
-FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A&&A.rangeCount>0){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}else if (this.Window.document) this.MoveToElementStart(this.Window.document.body);};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=A.startContainer;if (A.collapsed&&B.nodeType==1&&B.childNodes.length==0) B.appendChild(A._Document.createTextNode(''));var C=this.Window.document.createRange();C.setStart(B,A.startOffset);try{C.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);C.setEnd(A.endContainer,A.endOffset);}else throw(e);};var D=this.Window.getSelection();D.removeAllRanges();D.addRange(C);}};FCKDomRange.prototype.SelectBookmark=function(A){var B=this.Window.document.createRange();var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);B.setStart(C.parentNode,FCKDomTools.GetIndexOf(C));FCKDomTools.RemoveNode(C);if (D){B.setEnd(D.parentNode,FCKDomTools.GetIndexOf(D));FCKDomTools.RemoveNode(D);};var E=this.Window.getSelection();E.removeAllRanges();E.addRange(B);};
-var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I)||H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
-var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},AppendHtml:function(A){var B=this.RootNode.ownerDocument.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}};
-var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
-var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsGeckoLike){if (F){var M=this.Window.document.createElement('span');M.innerHTML='&nbsp;';C.InsertNode(M);FCKDomTools.ScrollIntoView(M,false);C.DeleteContents();}else{FCKDomTools.ScrollIntoView(F||I,false);}};C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);FCKDomTools.ScrollIntoView(I,false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
-var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.push(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.BasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};var F=function(elementName,doc){var G=doc.getElementsByTagName(elementName);for (var i=G.length-1;i>=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}};
-var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
-FCKSelection.GetType=function(){var A='Text';var B;try { B=this.GetSelection();} catch (e) {};if (B&&B.rangeCount==1){var C=B.getRangeAt(0);if (C.startContainer==C.endContainer&&(C.endOffset-C.startOffset)==1&&C.startContainer.nodeType==1&&FCKListsLib.StyleObjectElements[C.startContainer.childNodes[C.startOffset].nodeName.toLowerCase()]){A='Control';}};return A;};FCKSelection.GetSelectedElement=function(){var A=!!FCK.EditorWindow&&this.GetSelection();if (!A||A.rangeCount<1) return null;var B=A.getRangeAt(0);if (B.startContainer!=B.endContainer||B.startContainer.nodeType!=1||B.startOffset!=B.endOffset-1) return null;var C=B.startContainer.childNodes[B.startOffset];if (C.nodeType!=1) return null;return C;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=this.GetSelection();if (A){if (A.anchorNode&&A.anchorNode==A.focusNode){var B=A.getRangeAt(0);if (B.collapsed||B.startContainer.nodeType==3) return A.anchorNode.parentNode;else return A.anchorNode;};var C=new FCKElementPath(A.anchorNode);var D=new FCKElementPath(A.focusNode);var E=null;var F=null;if (C.Elements.length>D.Elements.length){E=C.Elements;F=D.Elements;}else{E=D.Elements;F=C.Elements;};var G=E.length-F.length;for(var i=0;i<F.length;i++){if (E[G+i]==F[i]) return F[i];};return null;}};return null;};FCKSelection.GetBoundaryParentElement=function(A){if (!FCK.EditorWindow) return null;if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var B=this.GetSelection();if (B&&B.rangeCount>0){var C=B.getRangeAt(A?0:(B.rangeCount-1));var D=A?C.startContainer:C.endContainer;return (D.nodeType==1?D:D.parentNode);}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=this.GetSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=this.GetSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try { B=this.GetSelection().getRangeAt(0).startContainer;}catch(e){}}while (B){if (B.nodeType==1&&B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=this.GetSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName.IEquals(A)) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=this.GetSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};FCKSelection.GetSelection=function(){return FCK.EditorWindow.getSelection();};FCKSelection.Save=function(){};FCKSelection.Restore=function(){};FCKSelection.Release=function(){};
-var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=B[i].parentNode;C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];F.insertBefore(B,(A?G:G.nextSibling));}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(A.parentNode);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){FCKDomTools.ClearElementJSProperty(A[i],B);}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;for (var i=0;i<A.length;i++){if (A[i].parentNode.parentNode!=A[0].parentNode.parentNode) return false;};this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0]);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCK.EditorDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCK.EditorDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCK.EditorDocument.createElement(B.nodeName);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCK.EditorDocument.createElement(B.nodeName));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;var G=B.rowSpan;if (isNaN(G)) G=1;if (G>1){B.rowSpan=Math.ceil(G/2);var H=D+Math.ceil(G/2);var I=C[H];var J=null;for (var i=E+1;i<I.length;i++){if (I[i].parentNode.rowIndex==H){J=I[i];break;}};var K=FCK.EditorDocument.createElement(B.nodeName);K.rowSpan=Math.floor(G/2);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);B.parentNode.parentNode.parentNode.rows[H].insertBefore(K,J);}else{var L=B.parentNode.sectionRowIndex+1;var M=FCK.EditorDocument.createElement('tr');var N=B.parentNode.parentNode;if (N.rows.length>L) N.insertBefore(M,N.rows[L]);else N.appendChild(M);for (var i=0;i<C[D].length;){var O=C[D][i].colSpan;if (isNaN(O)||O<1) O=1;if (i==E){i+=O;continue;};var P=C[D][i].rowSpan;if (isNaN(P)) P=1;C[D][i].rowSpan=P+1;i+=O;};var K=FCK.EditorDocument.createElement(B.nodeName);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);M.appendChild(K);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._CreateTableMap=function(A){var B=(A.nodeName=='TABLE'?A:A.parentNode.parentNode.parentNode);var C=B.rows;var r=-1;var D=[];for (var i=0;i<C.length;i++){r++;if (!D[r]) D[r]=[];var c=-1;for (var j=0;j<C[i].cells.length;j++){var E=C[i].cells[j];c++;while (D[r][c]) c++;var F=isNaN(E.colSpan)?1:E.colSpan;var G=isNaN(E.rowSpan)?1:E.rowSpan;for (var H=0;H<G;H++){if (!D[r+H]) D[r+H]=[];for (var I=0;I<F;I++){D[r+H][c+I]=C[i].cells[j];}};c+=F-1;}};return D;};FCKTableHandler._InstallTableMap=function(A,B){var C=FCKBrowserInfo.IsIE?"_fckrowspan":"rowSpan";for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D[C]=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D[C]++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];FCKDomTools.ClearElementJSProperty(D,'_colScanned');FCKDomTools.ClearElementJSProperty(D,'_rowScanned');}};for (var i=0;i<A.length;i++){var I=FCK.EditorDocument.createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);if (C!='rowSpan'){D.rowSpan=D[C];D.removeAttribute(C);};j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};if (FCKBrowserInfo.IsIE){B.rows[i].replaceNode(I);}else{B.rows[i].innerHTML='';FCKDomTools.MoveChildren(I,B.rows[i]);}}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;if (B.parentNode.parentNode!=G.parentNode.parentNode) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
-FCKTableHandler.GetSelectedCells=function(){var A=[];var B=FCKSelection.GetSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C) A[0]=C;return A;};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.nodeName.Equals('TD','TH')) A[A.length]=E;};return A;};
-var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
-FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B;var C=FCKTools.CreateXmlObject('XmlHttp');C.open('GET',A,false);C.send(null);if (C.status==200||C.status==304||(C.status==0&&C.readyState==4)){B=C.responseXML;if (!B) B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}else B=null;if (B){try{var D=B.firstChild;}catch (e){B=(new DOMParser()).parseFromString(C.responseText,'text/xml');}};if (!B||!B.firstChild){this.Error=true;if (window.confirm('Error loading "'+A+'" (HTTP Status: '+C.status+').\r\nDo you want to see the server response dump?')) alert(C.responseText);};this.DOMDocument=B;},SelectNodes:function(A,B){if (this.Error) return [];var C=[];var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;},SelectSingleNode:function(A,B){if (this.Error) return null;var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}};
-var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
-var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
-var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i<A.length;i++) FCKDomTools.RemoveNode(A[i],true);B.MoveToBookmark(C);B.Select();}};var FCKNbsp=function(){this.Name='Non Breaking Space';};FCKNbsp.prototype={Execute:function(){FCK.InsertHtml('&nbsp;');},GetState:function(){return (FCK.EditMode!=0?-1:0);}};
-var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';if (FCKBrowserInfo.IsIE){try{FCK.EditorDocument.selection.createRange().select();}catch (e){}}else{var C=FCK.EditorWindow.getSelection().focusNode;if (C){if (C.nodeType!=1) C=C.parentNode;FCKDomTools.ScrollIntoView(C,false);}};FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
-var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker!='ieSpell');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;case 'WSC':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','wsc/w.html',530,480);}};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
-var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n <tr>\n <td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n <td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n </tr>\n </table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
-var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
-var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
-var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
-var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H,oEditorScrollPos;if (FCK.EditMode==0){H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();oEditorScrollPos=FCKTools.GetScrollPosition(FCK.EditorWindow);}else{var I=FCK.EditingArea.Textarea;H=!FCKBrowserInfo.IsIE&&[I.selectionStart,I.selectionEnd];oEditorScrollPos=[I.scrollLeft,I.scrollTop];};if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();if (FCK.EditMode==0){H.Select();FCK.EditorWindow.scrollTo(oEditorScrollPos.X,oEditorScrollPos.Y);}else{if (!FCKBrowserInfo.IsIE){I.selectionStart=H[0];I.selectionEnd=H[1];};I.scrollLeft=oEditorScrollPos[0];I.scrollTop=oEditorScrollPos[1];}};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
-var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
-var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
-var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
-var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();}while (J.nodeName.IEquals('table','tbody','tr','ol','ul')) J=J.parentNode;var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];var P={};while ((H=G.GetNextParagraph())){var Q=null;var R=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){Q=H.parentNode;R=H;break;};H=H.parentNode;};if (Q&&R&&!R._fckblockquotemoveout){O.push(R);FCKDomTools.SetElementMarker(P,R,'_fckblockquotemoveout',true);}};FCKDomTools.ClearAllMarkers(P);var S=[];var T=[],P={};var U=function(N){for (var i=0;i<N.childNodes.length;i++){if (FCKListsLib.BlockElements[N.childNodes[i].nodeName.toLowerCase()]) return false;};return true;};while (O.length>0){var W=O.shift();var N=W.parentNode;if (W==W.parentNode.firstChild) N.parentNode.insertBefore(N.removeChild(W),N);else if (W==W.parentNode.lastChild) N.parentNode.insertBefore(N.removeChild(W),N.nextSibling);else FCKDomTools.BreakParent(W,W.parentNode,B);if (!N._fckbqprocessed){T.push(N);FCKDomTools.SetElementMarker(P,N,'_fckbqprocessed',true);};S.push(W);};for (var i=T.length-1;i>=0;i--){var N=T[i];if (U(N)) FCKDomTools.RemoveNode(N);};FCKDomTools.ClearAllMarkers(P);if (FCKConfig.EnterMode.IEquals('br')){while (S.length){var W=S.shift();var a=true;if (W.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(W).createDocumentFragment();var c=a&&W.previousSibling&&!FCKListsLib.BlockBoundaries[W.previousSibling.nodeName.toLowerCase()];if (a&&c) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));var d=W.nextSibling&&!FCKListsLib.BlockBoundaries[W.nextSibling.nodeName.toLowerCase()];while (W.firstChild) M.appendChild(W.removeChild(W.firstChild));if (d) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));W.parentNode.replaceChild(M,W);a=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
-var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
-var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
-var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'VisitLink':B=new FCKVisitLinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'Nbsp':B=new FCKNbsp();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'CreateDiv':B=new FCKDialogCommand('CreateDiv',FCKLang.CreateDiv,'dialog/fck_div.html',380,210,null,null,true);break;case 'EditDiv':B=new FCKDialogCommand('EditDiv',FCKLang.EditDiv,'dialog/fck_div.html',380,210,null,null,false);break;case 'DeleteDiv':B=new FCKDeleteDivCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
-var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');FCKTools.ResetStyles(D);D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.style.width=D.style.height='0px';FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.ResizeForSubpanel=function(A,B,C){if (!FCKBrowserInfo.IsIE7) return false;if (!this._Popup.isOpen){this.Subpanel=null;return false;};if (B==0&&C==0){if (this.Subpanel!==A) return false;this.Subpanel=null;this.IncreasedX=0;}else{this.Subpanel=A;if ((this.IncreasedX>=B)&&(this.IncreasedY>=C)) return false;this.IncreasedX=Math.max(this.IncreasedX,B);this.IncreasedY=Math.max(this.IncreasedY,C);};var x=this.ShowRect.x;var w=this.IncreasedX;if (this.IsRTL) x=x-w;var D=this.ShowRect.w+w;var E=Math.max(this.ShowRect.h,this.IncreasedY);if (this.ParentPanel) this.ParentPanel.ResizeForSubpanel(this,D,E);this._Popup.show(x,this.ShowRect.y,D,E,this.RelativeElement);return this.IsRTL;};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (FCKBrowserInfo.IsIE7){if (this.ParentPanel&&this.ParentPanel.ResizeForSubpanel(this,D,E.offsetHeight)){FCKTools.RunFunction(this.Show,this,[x,y,A]);return;}};if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};if (FCKBrowserInfo.IsIE7){this.ShowRect={x:x,y:y,w:D,h:E.offsetHeight};this.IncreasedX=0;this.IncreasedY=0;this.RelativeElement=A;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;if (this._Popup&&this.ParentPanel&&!A) this.ParentPanel.ResizeForSubpanel(this,0,0);FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;this.RelativeElement=null;};
-var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
-var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
-var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
-var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
-var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
-var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');};
-var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=FCKStyles.GetStyle('_FCK_'+E);if (F){F.Label=C[E];A['_FCK_'+E]=F;}else alert("The FCKConfig.CoreStyles['"+E+"'] setting was not found. Please check the fckconfig.js file");};return A;};FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;if (D){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SetLabel(F.Label);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SelectItem(E);return;}}}};
-var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
-var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
-var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
-var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'CreateDiv':B=new FCKToolbarButton('CreateDiv',FCKLang.CreateDiv,null,null,false,true,74);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
-var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
-var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);};
-function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
-var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save(true);var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})();
-var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
-var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
-var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
-var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){if (FCKConfig.BrowserContextMenu) return true;var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if ((B.CtrlDisable&&(A.ctrlKey||A.metaKey))||FCKConfig.BrowserContextMenu) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
-FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){if (!FCKBrowserInfo.IsIE) FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
-var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
-var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
-var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_ie.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_ie.js
deleted file mode 100644
index 95d8ac8ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/js/fckeditorcode_ie.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file has been compressed for better performance. The original source
- * can be found at "editor/_source".
- */
-
-var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000;var FCK_STYLE_BLOCK=0;var FCK_STYLE_INLINE=1;var FCK_STYLE_OBJECT=2;
-String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;i<A.length;i++){if (this==A[i]) return true;};return false;};String.prototype.IEquals=function(){var A=this.toUpperCase();var B=arguments;if (B.length==1&&B[0].pop) B=B[0];for (var i=0;i<B.length;i++){if (A==B[i].toUpperCase()) return true;};return false;};String.prototype.ReplaceAll=function(A,B){var C=this;for (var i=0;i<A.length;i++){C=C.replace(A[i],B[i]);};return C;};String.prototype.StartsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.EndsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.Trim=function(){return this.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,'');};String.prototype.LTrim=function(){return this.replace(/^[ \t\n\r]*/g,'');};String.prototype.RTrim=function(){return this.replace(/[ \t\n\r]*$/g,'');};String.prototype.ReplaceNewLineChars=function(A){return this.replace(/\n/g,A);};String.prototype.Replace=function(A,B,C){if (typeof B=='function'){return this.replace(A,function(){return B.apply(C||this,arguments);});}else return this.replace(A,B);};Array.prototype.IndexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};
-var FCKIECleanup=function(A){if (A._FCKCleanupObj) this.Items=A._FCKCleanupObj.Items;else{this.Items=[];A._FCKCleanupObj=this;FCKTools.AddEventListenerEx(A,'unload',FCKIECleanup_Cleanup);}};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){if (!this._FCKCleanupObj||(FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag)) return;var A=this._FCKCleanupObj.Items;while (A.length>0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();};
-var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=7),IsIE6:/*@cc_on!@*/false&&(parseInt(s.match(/msie (\d+)/)[1],10)>=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};(function(A){A.IsGecko=(navigator.product=='Gecko')&&!A.IsSafari&&!A.IsOpera;A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/rv:(\d+\.\d+)/);var C=B&&parseFloat(B[1]);if (C){A.IsGecko10=(C<1.8);A.IsGecko19=(C>1.8);}}})(FCKBrowserInfo);
-var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i<A.length;i++){var B=A[i].split('=');var C=decodeURIComponent(B[0]);var D=decodeURIComponent(B[1]);FCKURLParams[C]=D;}})();
-var FCKEvents=function(A){this.Owner=A;this._RegisteredEvents={};};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this._RegisteredEvents[A])) this._RegisteredEvents[A]=[B];else{if (C.IndexOf(B)==-1) C.push(B);}};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this._RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++){try{C=(D[i](this.Owner,B)&&C);}catch(e){if (e.number!=-2146823277) throw e;}}};return C;};
-var FCKDataProcessor=function(){};FCKDataProcessor.prototype={ConvertToHtml:function(A){if (FCKConfig.FullPage){FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (!FCKRegexLib.HasBodyTag.test(A)) A='<body>'+A+'</body>';if (!FCKRegexLib.HtmlOpener.test(A)) A='<html dir="'+FCKConfig.ContentLangDirection+'">'+A+'</html>';if (!FCKRegexLib.HeadOpener.test(A)) A=A.replace(FCKRegexLib.HtmlOpener,'$&<head><title></title></head>');return A;}else{var B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&FCKConfig.DocType.length>0&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title></head><body'+FCKConfig.GetBodyAttributes()+'>'+A+'</body></html>';return B;}},ConvertToDataFormat:function(A,B,C,D){var E=FCKXHtml.GetXHTML(A,!B,D);if (C&&FCKRegexLib.EmptyOutParagraph.test(E)) return '';return E;},FixHtml:function(A){return A;}};
-var FCK={Name:FCKURLParams['InstanceName'],Status:0,EditMode:0,Toolbar:null,HasFocus:false,DataProcessor:new FCKDataProcessor(),GetInstanceObject:(function(){var w=window;return function(name){return w[name];}})(),AttachToOnSelectionChange:function(A){this.Events.AttachEvent('OnSelectionChange',A);},GetLinkedFieldValue:function(){return this.LinkedField.value;},GetParentForm:function(){return this.LinkedField.form;},StartupValue:'',IsDirty:function(){if (this.EditMode==1) return (this.StartupValue!=this.EditingArea.Textarea.value);else{if (!this.EditorDocument) return false;return (this.StartupValue!=this.EditorDocument.body.innerHTML);}},ResetIsDirty:function(){if (this.EditMode==1) this.StartupValue=this.EditingArea.Textarea.value;else if (this.EditorDocument.body) this.StartupValue=this.EditorDocument.body.innerHTML;},StartEditor:function(){this.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};A.SetKeystrokes([CTRL+8,true]);this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;this.SetData(this.GetLinkedFieldValue(),true);FCKTools.AddEventListener(document,"keydown",this._TabKeyHandler);this.AttachToOnSelectionChange(_FCK_PaddingNodeListener);if (FCKBrowserInfo.IsGecko) this.AttachToOnSelectionChange(this._ExecCheckEmptyBlock);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:var G=D.nodeName.toLowerCase();if (!FCKListsLib.BlockElements[G]&&G!='li'&&!D.getAttribute('_fckfakelement')&&D.getAttribute('_moz_dirty')==null) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;break;case 8:if (E) F=true;break;};if (F){var H=D.parentNode;if (!E) E=H.insertBefore(B.createElement(A),D);E.appendChild(H.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetData:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B=FCK.EditorDocument;if (!B) return null;var C=FCKConfig.FullPage;var D=FCK.DataProcessor.ConvertToDataFormat(C?B.documentElement:B.body,!C,FCKConfig.IgnoreEmptyParagraphValue,A);D=FCK.ProtectEventsRestore(D);if (FCKBrowserInfo.IsIE) D=D.replace(FCKRegexLib.ToReplace,'$1');if (C){if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) D=FCK.DocTypeDeclaration+'\n'+D;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) D=FCK.XmlDeclaration+'\n'+D;};return FCKConfig.ProtectedSource.Revert(D);},UpdateLinkedField:function(){var A=FCK.GetXHTML(FCKConfig.FormatOutput);if (FCKConfig.HtmlEncodeOutput) A=FCKTools.HTMLEncode(A);FCK.LinkedField.value=A;FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName.toUpperCase()];if (B){for (var i=0;i<B.length;i++) B[i](A);};B=FCK.RegisteredDoubleClickHandlers['*'];if (B){for (var i=0;i<B.length;i++) B[i](A);}},RegisterDoubleClickHandler:function(A,B){var C=B||'*';C=C.toUpperCase();var D;if (!(D=FCK.RegisteredDoubleClickHandlers[C])) FCK.RegisteredDoubleClickHandlers[C]=[A];else{if (D.IndexOf(A)==-1) D.push(A);}},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsArea,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML|EMBED|OBJECT':'ABBR|XML|EMBED|OBJECT';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'<FCK:$1');C=new RegExp('<\/('+B+')>','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'<FCK:$1 />');return A;},SetData:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCKBrowserInfo.IsIE&&FCK.EditorDocument){FCK.EditorDocument.detachEvent("onselectionchange",Doc_OnSelectionChange);};FCKTempBin.Reset();FCK.Selection.Release();if (FCK.EditMode==0){this._ForceResetIsDirty=(B===true);A=FCKConfig.ProtectedSource.Protect(A);A=FCK.DataProcessor.ConvertToHtml(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1></$2>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);var C='';if (!FCKConfig.FullPage) C+=_FCK_GetEditorAreaStyleTags();if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+=FCKTools.GetStyleHtml(FCK_ShowTableBordersCSS,true);C+=FCKTools.GetStyleHtml(FCK_InternalCSS,true);A=A.replace(FCKRegexLib.HeadCloser,C+'$&');this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(A);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;FCKDomTools.PaddingNode=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C,D){if (!D) FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};if (!D) FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (FCKBrowserInfo.IsSafari&&FCK.EditorWindow&&A.IEquals('Paste')) return 0;if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else{return FCK.EditorDocument.queryCommandState(A)?1:0;}}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},Paste:function(A){if (FCK.Status!=2||!FCK.Events.FireEvent('OnPaste')) return false;return A||FCK._ExecPaste();},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) A=FCK.TempBaseTag+FCK.GetXHTML();else A=FCK.GetXHTML();}else{A=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"><head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+_FCK_GetEditorAreaStyleTags()+'</head><body'+FCKConfig.GetBodyAttributes()+'>'+FCK.GetXHTML()+'</body></html>';};var B=FCKConfig.ScreenWidth*0.8;var C=FCKConfig.ScreenHeight*0.7;var D=(FCKConfig.ScreenWidth-B)/2;var E='';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A;E='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.opener._FCKHtmlToLoad );document.close() ;window.opener._FCKHtmlToLoad = null ;})() )';};var F=window.open(E,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+B+',height='+C+',left='+D);if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){F.document.write(A);F.document.close();}},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){FCKCommands.GetCommand('ShowBlocks').SaveState();if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (FCKBrowserInfo.IsIE) FCKTempBin.ToHtml();if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetData(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},InsertElement:function(A){if (typeof A=='string') A=this.EditorDocument.createElement(A);var B=A.nodeName.toLowerCase();FCKSelection.Restore();var C=new FCKDomRange(this.EditorWindow);C.MoveToSelection();C.DeleteContents();if (FCKListsLib.BlockElements[B]!=null){if (C.StartBlock){if (C.CheckStartOfBlock()) C.MoveToPosition(C.StartBlock,3);else if (C.CheckEndOfBlock()) C.MoveToPosition(C.StartBlock,4);else C.SplitBlock();};C.InsertNode(A);var D=FCKDomTools.GetNextSourceElement(A,false,null,['hr','br','param','img','area','input'],true);if (!D&&FCKConfig.EnterMode!='br'){D=this.EditorDocument.body.appendChild(this.EditorDocument.createElement(FCKConfig.EnterMode));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);};if (FCKListsLib.EmptyElements[B]==null) C.MoveToElementEditStart(A);else if (D) C.MoveToElementEditStart(D);else C.MoveToPosition(A,4);if (FCKBrowserInfo.IsGeckoLike){if (D) FCKDomTools.ScrollIntoView(D,false);FCKDomTools.ScrollIntoView(A,false);}}else{C.InsertNode(A);C.SetStart(A,4);C.SetEnd(A,4);};C.Select();C.Release();this.Focus();return A;},_InsertBlockElement:function(A){},_IsFunctionKey:function(A){if (A>=16&&A<=20) return true;if (A==27||(A>=33&&A<=40)) return true;if (A==45) return true;return false;},_KeyDownListener:function(A){if (!A) A=FCK.EditorWindow.event;if (FCK.EditorWindow){if (!FCK._IsFunctionKey(A.keyCode)&&!(A.ctrlKey||A.metaKey)&&!(A.keyCode==46)) FCK._KeyDownUndo();};return true;},_KeyDownUndo:function(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;FCKUndo.Changed=1;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}},_TabKeyHandler:function(A){if (!A) A=window.event;var B=A.keyCode;if (B==9&&FCK.EditMode!=0){if (FCKBrowserInfo.IsIE){var C=document.selection.createRange();if (C.parentElement()!=FCK.EditingArea.Textarea) return true;C.text='\t';C.select();}else{var a=[];var D=FCK.EditingArea.Textarea;var E=D.selectionStart;var F=D.selectionEnd;a.push(D.value.substr(0,E));a.push('\t');a.push(D.value.substr(F));D.value=a.join('');D.setSelectionRange(E+1,E+1);};if (A.preventDefault) return A.preventDefault();return A.returnValue=false;};return true;}};FCK.Events=new FCKEvents(FCK);FCK.GetHTML=FCK.GetXHTML=FCK.GetData;FCK.SetHTML=FCK.SetData;FCK.InsertElementAndGetIt=FCK.CreateElement=FCK.InsertElement;function _FCK_ProtectEvents_ReplaceTags(A){return A.replace(FCKRegexLib.EventAttributes,_FCK_ProtectEvents_ReplaceEvents);};function _FCK_ProtectEvents_ReplaceEvents(A,B){return ' '+B+'_fckprotectedatt="'+encodeURIComponent(A)+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return decodeURIComponent(B);};function _FCK_MouseEventsListener(A){if (!A) A=window.event;if (A.type=='mousedown') FCK.MouseDownFlag=true;else if (A.type=='mouseup') FCK.MouseDownFlag=false;else if (A.type=='mousemove') FCK.Events.FireEvent('OnMouseMove',A);};function _FCK_PaddingNodeListener(){if (FCKConfig.EnterMode.IEquals('br')) return;FCKDomTools.EnforcePaddingNode(FCK.EditorDocument,FCKConfig.EnterMode);if (!FCKBrowserInfo.IsIE&&FCKDomTools.PaddingNode){var A=FCKSelection.GetSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.collapsed&&B.startContainer==FCK.EditorDocument.body&&B.startOffset==0){B.selectNodeContents(FCKDomTools.PaddingNode);B.collapse(true);A.removeAllRanges();A.addRange(B);}}}else if (FCKDomTools.PaddingNode){var C=FCKSelection.GetParentElement();var D=FCKDomTools.PaddingNode;if (C&&C.nodeName.IEquals('body')){if (FCK.EditorDocument.body.childNodes.length==1&&FCK.EditorDocument.body.firstChild==D){if (FCKSelection._GetSelectionDocument(FCK.EditorDocument.selection)!=FCK.EditorDocument) return;var B=FCK.EditorDocument.body.createTextRange();var F=false;if (!D.childNodes.firstChild){D.appendChild(FCKTools.GetElementDocument(D).createTextNode('\ufeff'));F=true;};B.moveToElementText(D);B.select();if (F) B.pasteHTML('');}}}};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;if (FCKBrowserInfo.IsIE) FCKTempBin.ToElements();FCK.InitializeBehaviors();FCK.MouseDownFlag=false;FCKTools.AddEventListener(FCK.EditorDocument,'mousemove',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',_FCK_MouseEventsListener);FCKTools.AddEventListener(FCK.EditorDocument,'mouseup',_FCK_MouseEventsListener);if (FCKBrowserInfo.IsSafari){var A=function(evt){if (!(evt.ctrlKey||evt.metaKey)) return;if (FCK.EditMode!=0) return;switch (evt.keyCode){case 89:FCKUndo.Redo();break;case 90:FCKUndo.Undo();break;}};FCKTools.AddEventListener(FCK.EditorDocument,'keyup',A);};FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode,FCKConfig.TabSpaces);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();FCKCommands.GetCommand('ShowBlocks').RestoreState();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){return FCKTools.GetStyleHtml(FCKConfig.EditorAreaCSS)+FCKTools.GetStyleHtml(FCKConfig.EditorAreaStyles);};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){switch (B){case 'Paste':return!FCK.Paste();case 'Cut':FCKUndo.SaveUndoStep();return false;}}else{if (B.Equals('Paste','Undo','Redo','SelectAll','Cut')) return false;};var C=FCK.Commands.GetCommand(B);if (C.GetState()==-1) return false;return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i<this.Elements.length) this.Elements[i++]=null;this.Elements.length=0;},ToHtml:function(){for (var i=0;i<this.Elements.length;i++){this.Elements[i]='<div>&nbsp;'+this.Elements[i].outerHTML+'</div>';this.Elements[i].isHtml=true;}},ToElements:function(){var A=FCK.EditorDocument.createElement('div');for (var i=0;i<this.Elements.length;i++){if (this.Elements[i].isHtml){A.innerHTML=this.Elements[i];this.Elements[i]=A.firstChild.removeChild(A.firstChild.lastChild);}}}};var FCKFocusManager=FCK.FocusManager={IsLocked:false,AddWindow:function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else if (FCKBrowserInfo.IsSafari) C=A;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);},RemoveWindow:function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);},Lock:function(){this.IsLocked=true;},Unlock:function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;},_ResetTimer:function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}}};function FCKFocusManager_Win_OnBlur(){if (typeof(FCK)!='undefined'&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){if (FCKFocusManager._IsFocusing) return;FCKFocusManager._IsFocusing=true;FCK.Focus();FCKFocusManager_Win_OnFocus();FCKTools.RunFunction(function(){delete FCKFocusManager._IsFocusing;});};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}};(function(){var A=window.frameElement;var B=A.width;var C=A.height;if (/^\d+$/.test(B)) B+='px';if (/^\d+$/.test(C)) C+='px';var D=A.style;D.border=D.padding=D.margin=0;D.backgroundColor='transparent';D.backgroundImage='none';D.width=B;D.height=C;})();
-FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.BasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak,.FCK__InputHidden';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){var A=FCK.EditorDocument.body;A.detachEvent('onpaste',Doc_OnPaste);var B=FCK.Paste(!FCKConfig.ForcePasteAsPlainText&&!FCKConfig.AutoDetectPasteFromWord);A.attachEvent('onpaste',Doc_OnPaste);return B;};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){if (!FCK.IsSelectionChangeLocked&&FCK.EditorDocument) FCK.Events.FireEvent("OnSelectionChange");};function Doc_OnDrop(){if (FCK.MouseDownFlag){FCK.MouseDownFlag=false;return;};if (FCKConfig.ForcePasteAsPlainText){var A=FCK.EditorWindow.event;if (FCK._CheckIsPastingEnabled()||FCKConfig.ShowDropDialog) FCK.PasteAsPlainText(A.dataTransfer.getData('Text'));A.returnValue=false;A.cancelBubble=true;}};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.body.attachEvent('ondrop',Doc_OnDrop);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);this.EditorDocument.attachEvent("onkeydown",FCK._KeyDownListener);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onbeforedeactivate",function(){ FCKSelection.Save();});this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);FCKTools.AddEventListener(FCK.EditorDocument,'mousedown',Doc_OnMouseDown);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);FCKSelection.Restore();FCK.EditorWindow.focus();FCKUndo.SaveUndoStep();var B=FCKSelection.GetSelection();if (B.type.toLowerCase()=='control') B.clear();A='<span id="__fakeFCKRemove__" style="display:none;">fakeFCKRemove</span>'+A;B.createRange().pasteHTML(A);FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode(true);FCKDocumentProcessor.Process(FCK.EditorDocument);this.Events.FireEvent("OnSelectionChange");};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.LinkedField=null;this.EditorWindow=null;this.EditorDocument=null;};FCK._ExecPaste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(A){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var B=null;if (!A) B=clipboardData.getData("Text");else B=A;if (B&&B.length>0){B=FCKTools.HTMLEncode(B);B=FCKTools.ProcessLineBreaks(window,FCKConfig,B);var C=B.search('</p>');var D=B.search('<p>');if ((C!=-1&&D!=-1&&C<D)||(C!=-1&&D==-1)){var E=B.substr(0,C);B=B.substr(C+4);this.InsertHtml(E);};FCKUndo.SaveLocked=true;this.InsertHtml(B);FCKUndo.SaveLocked=false;}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A,B){var C=[];FCK.ExecuteNamedCommand('Unlink',null,false,!!B);if (A.length>0){if (FCKSelection.GetType()=='Control'){var D=this.EditorDocument.createElement('A');D.href=A;var E=FCKSelection.GetSelectedElement();E.parentNode.insertBefore(D,E);E.parentNode.removeChild(E);D.appendChild(E);return [D];};var F='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',F,false,!!B);var G=this.EditorDocument.links;for (i=0;i<G.length;i++){var D=G[i];if (D.getAttribute('href',2)==F){var I=D.innerHTML;D.href=A;D.innerHTML=I;var J=D.lastChild;if (J&&J.nodeName=='BR'){FCKDomTools.InsertAfterNode(D,D.removeChild(J));};C.push(D);}}};return C;};function _FCK_RemoveDisabledAtt(){this.removeAttribute('disabled');};function Doc_OnMouseDown(A){var e=A.srcElement;if (e.nodeName.IEquals('input')&&e.type.IEquals(['radio','checkbox'])&&!e.disabled){e.disabled=true;FCKTools.SetTimeout(_FCK_RemoveDisabledAtt,1,e);}};
-var FCKConfig=FCK.Config={};if (document.location.protocol=='file:'){FCKConfig.BasePath=decodeURIComponent(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi,'/');var sFullProtocol=document.location.href.match(/^(file\:\/{2,3})/)[1];if (FCKBrowserInfo.IsOpera) sFullProtocol+='localhost/';FCKConfig.BasePath=sFullProtocol+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else FCKConfig.BasePath=document.location.protocol+'//'+document.location.host+document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig={};var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=decodeURIComponent(C[0]);var E=decodeURIComponent(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (E.length>0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) { }};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;A.RemoveAttributesArray=(A.RemoveAttributes||'').split(',');if (!FCKConfig.SkinEditorCSS||FCKConfig.SkinEditorCSS.length==0) FCKConfig.SkinEditorCSS=FCKConfig.SkinPath+'fck_editor.css';if (!FCKConfig.SkinDialogCSS||FCKConfig.SkinDialogCSS.length==0) FCKConfig.SkinDialogCSS=FCKConfig.SkinPath+'fck_dialog.css';};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.push([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource._CodeTag=(new Date()).valueOf();FCKConfig.ProtectedSource.RegexEntries=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.push(A);};FCKConfig.ProtectedSource.Protect=function(A){var B=this._CodeTag;function _Replace(protectedSource){var C=FCKTempBin.AddElement(protectedSource);return '<!--{'+B+C+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};var D=new RegExp("(<|&lt;)!--\\{"+this._CodeTag+"(\\d+)\\}--(>|&gt;)","g");return A.replace(D,_Replace);};FCKConfig.GetBodyAttributes=function(){var A='';if (this.BodyId&&this.BodyId.length>0) A+=' id="'+this.BodyId+'"';if (this.BodyClass&&this.BodyClass.length>0) A+=' class="'+this.BodyClass+'"';return A;};FCKConfig.ApplyBodyAttributes=function(A){if (this.BodyId&&this.BodyId.length>0) A.id=FCKConfig.BodyId;if (this.BodyClass&&this.BodyClass.length>0) A.className+=' '+FCKConfig.BodyClass;};
-var FCKDebug={Output:function(){},OutputObject:function(){}};
-var FCKDomTools={MoveChildren:function(A,B,C){if (A==B) return;var D;if (C){while ((D=A.lastChild)) B.insertBefore(A.removeChild(D),B.firstChild);}else{while ((D=A.firstChild)) B.appendChild(A.removeChild(D));}},MoveNode:function(A,B,C){if (C) B.insertBefore(FCKDomTools.RemoveNode(A),B.firstChild);else B.appendChild(FCKDomTools.RemoveNode(A));},TrimNode:function(A){this.LTrimNode(A);this.RTrimNode(A);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length<D){B.splitText(D-C.length);A.removeChild(A.firstChild);}};break;}},RTrimNode:function(A){var B;while ((B=A.lastChild)){if (B.nodeType==3){var C=B.nodeValue.RTrim();var D=B.nodeValue.length;if (C.length==0){B.parentNode.removeChild(B);continue;}else if (C.length<D){B.splitText(C.length);A.lastChild.parentNode.removeChild(A.lastChild);}};break;};if (!FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsOpera){B=A.lastChild;if (B&&B.nodeType==1&&B.nodeName.toLowerCase()=='br'){B.parentNode.removeChild(B);}}},RemoveNode:function(A,B){if (B){var C;while ((C=A.firstChild)) A.parentNode.insertBefore(A.removeChild(C),A);};return A.parentNode.removeChild(A);},GetFirstChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.firstChild;while(C){if (C.nodeType==1&&C.tagName.Equals.apply(C.tagName,B)) return C;C=C.nextSibling;};return null;},GetLastChild:function(A,B){if (typeof (B)=='string') B=[B];var C=A.lastChild;while(C){if (C.nodeType==1&&(!B||C.tagName.Equals(B))) return C;C=C.previousSibling;};return null;},GetPreviousSourceElement:function(A,B,C,D){if (!A) return null;if (C&&A.nodeType==1&&A.nodeName.IEquals(C)) return null;if (A.previousSibling) A=A.previousSibling;else return this.GetPreviousSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D,E){while((A=this.GetNextSourceNode(A,E))){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (D&&A.nodeName.IEquals(D)) return this.GetNextSourceElement(A,B,C,D);return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;};return null;},GetNextSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.firstChild) E=A.firstChild;else{if (D&&A==D) return null;E=A.nextSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetNextSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetNextSourceNode(E,false,C,D);return E;},GetPreviousSourceNode:function(A,B,C,D){if (!A) return null;var E;if (!B&&A.lastChild) E=A.lastChild;else{if (D&&A==D) return null;E=A.previousSibling;if (!E&&(!D||D!=A.parentNode)) return this.GetPreviousSourceNode(A.parentNode,true,C,D);};if (C&&E&&E.nodeType!=C) return this.GetPreviousSourceNode(E,false,C,D);return E;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.unshift(A);A=A.parentNode;};return B;},GetCommonParents:function(A,B){var C=this.GetParents(A);var D=this.GetParents(B);var E=[];for (var i=0;i<C.length;i++){if (C[i]==D[i]) E.push(C[i]);};return E;},GetCommonParentNode:function(A,B,C){var D={};if (!C.pop) C=[C];while (C.length>0) D[C.pop().toLowerCase()]=1;var E=this.GetCommonParents(A,B);var F=null;while ((F=E.pop())){if (D[F.nodeName.toLowerCase()]) return F;};return null;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;},PaddingNode:null,EnforcePaddingNode:function(A,B){try{if (!A||!A.body) return;}catch (e){return;};this.CheckAndRemovePaddingNode(A,B,true);try{if (A.body.lastChild&&(A.body.lastChild.nodeType!=1||A.body.lastChild.tagName.toLowerCase()==B.toLowerCase())) return;}catch (e){return;};var C=A.createElement(B);if (FCKBrowserInfo.IsGecko&&FCKListsLib.NonEmptyBlockElements[B]) FCKTools.AppendBogusBr(C);this.PaddingNode=C;if (A.body.childNodes.length==1&&A.body.firstChild.nodeType==1&&A.body.firstChild.tagName.toLowerCase()=='br'&&(A.body.firstChild.getAttribute('_moz_dirty')!=null||A.body.firstChild.getAttribute('type')=='_moz')) A.body.replaceChild(C,A.body.firstChild);else A.body.appendChild(C);},CheckAndRemovePaddingNode:function(A,B,C){var D=this.PaddingNode;if (!D) return;try{if (D.parentNode!=A.body||D.tagName.toLowerCase()!=B||(D.childNodes.length>1)||(D.firstChild&&D.firstChild.nodeValue!='\xa0'&&String(D.firstChild.tagName).toLowerCase()!='br')){this.PaddingNode=null;return;}}catch (e){this.PaddingNode=null;return;};if (!C){if (D.parentNode.childNodes.length>1) D.parentNode.removeChild(D);this.PaddingNode=null;}},HasAttribute:function(A,B){if (A.hasAttribute) return A.hasAttribute(B);else{var C=A.attributes[B];return (C!=undefined&&C.specified);}},HasAttributes:function(A){var B=A.attributes;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsIE&&B[i].nodeName=='class'){if (A.className.length>0) return true;}else if (B[i].specified) return true;};return false;},RemoveAttribute:function(A,B){if (FCKBrowserInfo.IsIE&&B.toLowerCase()=='class') B='className';return A.removeAttribute(B,0);},RemoveAttributes:function (A,B){for (var i=0;i<B.length;i++) this.RemoveAttribute(A,B[i]);},GetAttributeValue:function(A,B){var C=B;if (typeof B=='string') B=A.attributes[B];else C=B.nodeName;if (B&&B.specified){if (C=='style') return A.style.cssText;else if (C=='class'||C.indexOf('on')==0) return B.nodeValue;else{return A.getAttribute(C,2);}};return null;},Contains:function(A,B){if (A.contains&&B.nodeType==1) return A.contains(B);while ((B=B.parentNode)){if (B==A) return true;};return false;},BreakParent:function(A,B,C){var D=C||new FCKDomRange(FCKTools.GetElementWindow(A));D.SetStart(A,4);D.SetEnd(B,4);var E=D.ExtractContents();D.InsertNode(A.parentNode.removeChild(A));E.InsertAfterNode(A);D.Release(!!C);},GetNodeAddress:function(A,B){var C=[];while (A&&A!=FCKTools.GetElementDocument(A).documentElement){var D=A.parentNode;var E=-1;for(var i=0;i<D.childNodes.length;i++){var F=D.childNodes[i];if (B===true&&F.nodeType==3&&F.previousSibling&&F.previousSibling.nodeType==3) continue;E++;if (D.childNodes[i]==A) break;};C.unshift(E);A=A.parentNode;};return C;},GetNodeFromAddress:function(A,B,C){var D=A.documentElement;for (var i=0;i<B.length;i++){var E=B[i];if (!C){D=D.childNodes[E];continue;};var F=-1;for (var j=0;j<D.childNodes.length;j++){var G=D.childNodes[j];if (C===true&&G.nodeType==3&&G.previousSibling&&G.previousSibling.nodeType==3) continue;F++;if (F==E){D=G;break;}}};return D;},CloneElement:function(A){A=A.cloneNode(false);A.removeAttribute('id',false);return A;},ClearElementJSProperty:function(A,B){if (FCKBrowserInfo.IsIE) A.removeAttribute(B);else delete A[B];},SetElementMarker:function (A,B,C,D){var E=String(parseInt(Math.random()*0xffffffff,10));B._FCKMarkerId=E;B[C]=D;if (!A[E]) A[E]={ 'element':B,'markers':{} };A[E]['markers'][C]=D;},ClearElementMarkers:function(A,B,C){var D=B._FCKMarkerId;if (!D) return;this.ClearElementJSProperty(B,'_FCKMarkerId');for (var j in A[D]['markers']) this.ClearElementJSProperty(B,j);if (C) delete A[D];},ClearAllMarkers:function(A){for (var i in A) this.ClearElementMarkers(A,A[i]['element'],true);},ListToArray:function(A,B,C,D,E){if (!A.nodeName.IEquals(['ul','ol'])) return [];if (!D) D=0;if (!C) C=[];for (var i=0;i<A.childNodes.length;i++){var F=A.childNodes[i];if (!F.nodeName.IEquals('li')) continue;var G={ 'parent':A,'indent':D,'contents':[] };if (!E){G.grandparent=A.parentNode;if (G.grandparent&&G.grandparent.nodeName.IEquals('li')) G.grandparent=G.grandparent.parentNode;}else G.grandparent=E;if (B) this.SetElementMarker(B,F,'_FCK_ListArray_Index',C.length);C.push(G);for (var j=0;j<F.childNodes.length;j++){var H=F.childNodes[j];if (H.nodeName.IEquals(['ul','ol'])) this.ListToArray(H,B,C,D+1,G.grandparent);else G.contents.push(H);}};return C;},ArrayToList:function(A,B,C){if (C==undefined) C=0;if (!A||A.length<C+1) return null;var D=FCKTools.GetElementDocument(A[C].parent);var E=D.createDocumentFragment();var F=null;var G=C;var H=Math.max(A[C].indent,0);var I=null;while (true){var J=A[G];if (J.indent==H){if (!F||A[G].parent.nodeName!=F.nodeName){F=A[G].parent.cloneNode(false);E.appendChild(F);};I=D.createElement('li');F.appendChild(I);for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));G++;}else if (J.indent==Math.max(H,0)+1){var K=this.ArrayToList(A,null,G);I.appendChild(K.listNode);G=K.nextIndex;}else if (J.indent==-1&&C==0&&J.grandparent){var I;if (J.grandparent.nodeName.IEquals(['ul','ol'])) I=D.createElement('li');else{if (FCKConfig.EnterMode.IEquals(['div','p'])&&!J.grandparent.nodeName.IEquals('td')) I=D.createElement(FCKConfig.EnterMode);else I=D.createDocumentFragment();};for (var i=0;i<J.contents.length;i++) I.appendChild(J.contents[i].cloneNode(true));if (I.nodeType==11){if (I.lastChild&&I.lastChild.getAttribute&&I.lastChild.getAttribute('type')=='_moz') I.removeChild(I.lastChild);I.appendChild(D.createElement('br'));};if (I.nodeName.IEquals(FCKConfig.EnterMode)&&I.firstChild){this.TrimNode(I);if (FCKListsLib.BlockBoundaries[I.firstChild.nodeName.toLowerCase()]){var M=D.createDocumentFragment();while (I.firstChild) M.appendChild(I.removeChild(I.firstChild));I=M;}};if (FCKBrowserInfo.IsGeckoLike&&I.nodeName.IEquals(['div','p'])) FCKTools.AppendBogusBr(I);E.appendChild(I);F=null;G++;}else return null;if (A.length<=G||Math.max(A[G].indent,0)<H){break;}};if (B){var N=E.firstChild;while (N){if (N.nodeType==1) this.ClearElementMarkers(B,N);N=this.GetNextSourceNode(N);}};return { 'listNode':E,'nextIndex':G };},GetNextSibling:function(A,B){A=A.nextSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.nextSibling;return A;},GetPreviousSibling:function(A,B){A=A.previousSibling;while (A&&!B&&A.nodeType!=1&&(A.nodeType!=3||A.nodeValue.length==0)) A=A.previousSibling;return A;},CheckIsEmptyElement:function(A,B){var C=A.firstChild;var D;while (C){if (C.nodeType==1){if (D||!FCKListsLib.InlineNonEmptyElements[C.nodeName.toLowerCase()]) return false;if (!B||B(C)===true) D=C;}else if (C.nodeType==3&&C.nodeValue.length>0) return false;C=C.nextSibling;};return D?this.CheckIsEmptyElement(D,B):true;},SetElementStyles:function(A,B){var C=A.style;for (var D in B) C[D]=B[D];},SetOpacity:function(A,B){if (FCKBrowserInfo.IsIE){B=Math.round(B*100);A.style.filter=(B>100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+B+')');}else A.style.opacity=B;},GetCurrentElementStyle:function(A,B){if (FCKBrowserInfo.IsIE) return A.currentStyle[B];else return A.ownerDocument.defaultView.getComputedStyle(A,'').getPropertyValue(B);},GetPositionedAncestor:function(A){var B=A;while (B!=FCKTools.GetElementDocument(B).documentElement){if (this.GetCurrentElementStyle(B,'position')!='static') return B;if (B==FCKTools.GetElementDocument(B).documentElement&&currentWindow!=w) B=currentWindow.frameElement;else B=B.parentNode;};return null;},ScrollIntoView:function(A,B){var C=FCKTools.GetElementWindow(A);var D=FCKTools.GetViewPaneSize(C).Height;var E=D*-1;if (B===false){E+=A.offsetHeight||0;E+=parseInt(this.GetCurrentElementStyle(A,'marginBottom')||0,10)||0;};var F=FCKTools.GetDocumentPosition(C,A);E+=F.y;var G=FCKTools.GetScrollPosition(C).Y;if (E>0&&(E>G||E<G-D)) C.scrollTo(0,E);},CheckIsEditable:function(A){var B=A.nodeName.toLowerCase();var C=FCK.DTD[B]||FCK.DTD.span;return (C['#']&&!FCKListsLib.NonEditableElements[B]);},GetSelectedDivContainers:function(){var A=[];var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.GetTouchedStartNode();var D=B.GetTouchedEndNode();var E=C;if (C==D){while (D.nodeType==1&&D.lastChild) D=D.lastChild;D=FCKDomTools.GetNextSourceNode(D);}while (E&&E!=D){if (E.nodeType!=3||!/^[ \t\n]*$/.test(E.nodeValue)){var F=new FCKElementPath(E);var G=F.BlockLimit;if (G&&G.nodeName.IEquals('div')&&A.IndexOf(G)==-1) A.push(G);};E=FCKDomTools.GetNextSourceNode(E);};return A;}};
-var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.FixCssUrls=function(A,B){if (!A||A.length==0) return B;return B.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(match,opener,path,closer){if (/^\/|^\w?:/.test(path)) return match;else return 'url('+opener+A+path+closer+')';});};FCKTools._GetUrlFixedCss=function(A,B){var C=A.match(/^([^|]+)\|([\s\S]*)/);if (C) return FCKTools.FixCssUrls(C[1],C[2]);else return A;};FCKTools.AppendStyleSheet=function(A,B){if (!B) return [];if (typeof(B)=='string'){if (/[\\\/\.][^{}]*$/.test(B)){return this.AppendStyleSheet(A,B.split(','));}else return [this.AppendStyleString(A,FCKTools._GetUrlFixedCss(B))];}else{var C=[];for (var i=0;i<B.length;i++) C.push(this._AppendStyleSheet(A,B[i]));return C;}};FCKTools.GetStyleHtml=(function(){var A=function(styleDef,markTemp){if (styleDef.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<style type="text/css"'+B+'>'+styleDef+'</style>';};var C=function(cssFileUrl,markTemp){if (cssFileUrl.length==0) return '';var B=markTemp?' _fcktemp="true"':'';return '<link href="'+cssFileUrl+'" type="text/css" rel="stylesheet" '+B+'/>';};return function(cssFileOrArrayOrDef,markTemp){if (!cssFileOrArrayOrDef) return '';if (typeof(cssFileOrArrayOrDef)=='string'){if (/[\\\/\.][^{}]*$/.test(cssFileOrArrayOrDef)){return this.GetStyleHtml(cssFileOrArrayOrDef.split(','),markTemp);}else return A(this._GetUrlFixedCss(cssFileOrArrayOrDef),markTemp);}else{var E='';for (var i=0;i<cssFileOrArrayOrDef.length;i++) E+=C(cssFileOrArrayOrDef[i],markTemp);return E;}}})();FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.FixDocumentParentWindow=function(A){if (A.document) A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/&gt;/g,'>');A=A.replace(/&lt;/g,'<');A=A.replace(/&amp;/g,'&');return A;};FCKTools._ProcessLineBreaksForPMode=function(A,B,C,D,E){var F=0;var G="<p>";var H="</p>";var I="<br />";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='p'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};var n=B.charAt(i+1);if (n=='\r'){i++;n=B.charAt(i+1);};if (n=='\n'){i++;if (F) E.push(H);E.push(G);F=1;}else E.push(I);}};FCKTools._ProcessLineBreaksForDivMode=function(A,B,C,D,E){var F=0;var G="<div>";var H="</div>";if (C){G="<li>";H="</li>";F=1;}while (D&&D!=A.FCK.EditorDocument.body){if (D.tagName.toLowerCase()=='div'){F=1;break;};D=D.parentNode;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F){if (E[E.length-1]==G){E.push("&nbsp;");};E.push(H);};E.push(G);F=1;};if (F) E.push(H);};FCKTools._ProcessLineBreaksForBrMode=function(A,B,C,D,E){var F=0;var G="<br />";var H="";if (C){G="<li>";H="</li>";F=1;};for (var i=0;i<B.length;i++){var c=B.charAt(i);if (c=='\r') continue;if (c!='\n'){E.push(c);continue;};if (F&&H.length) E.push (H);E.push(G);F=1;}};FCKTools.ProcessLineBreaks=function(A,B,C){var D=B.EnterMode.toLowerCase();var E=[];var F=0;var G=new A.FCKDomRange(A.FCK.EditorWindow);G.MoveToSelection();var H=G._Range.startContainer;while (H&&H.nodeType!=1) H=H.parentNode;if (H&&H.tagName.toLowerCase()=='li') F=1;if (D=='p') this._ProcessLineBreaksForPMode(A,C,F,H,E);else if (D=='div') this._ProcessLineBreaksForDivMode(A,C,F,H,E);else if (D=='br') this._ProcessLineBreaksForBrMode(A,C,F,H,E);return E.join("");};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.IsStrictMode=function(A){return ('CSS1Compat'==(A.compatMode||(FCKBrowserInfo.IsSafari?'CSS1Compat':null)));};FCKTools.ArgumentsToArray=function(A,B,C){B=B||0;C=C||A.length;var D=[];for (var i=B;i<B+C&&i<A.length;i++) D.push(A[i]);return D;};FCKTools.CloneObject=function(A){var B=function() {};B.prototype=A;return new B;};FCKTools.AppendBogusBr=function(A){if (!A) return;var B=this.GetLastItem(A.getElementsByTagName('br'));if (!B||(B.getAttribute('type',2)!='_moz'&&B.getAttribute('_moz_dirty')==null)){var C=this.GetElementDocument(A);if (FCKBrowserInfo.IsOpera) A.appendChild(C.createTextNode(''));else A.appendChild(this.CreateBogusBR(C));}};FCKTools.GetLastItem=function(A){if (A.length>0) return A[A.length-1];return null;};FCKTools.GetDocumentPosition=function(w,A){var x=0;var y=0;var B=A;var C=null;var D=FCKTools.GetElementWindow(B);while (B&&!(D==w&&(B==w.document.body||B==w.document.documentElement))){x+=B.offsetLeft-B.scrollLeft;y+=B.offsetTop-B.scrollTop;if (!FCKBrowserInfo.IsOpera){var E=C;while (E&&E!=B){x-=E.scrollLeft;y-=E.scrollTop;E=E.parentNode;}};C=B;if (B.offsetParent) B=B.offsetParent;else{if (D!=w){B=D.frameElement;C=null;if (B) D=B.contentWindow.parent;}else B=null;}};if (FCKDomTools.GetCurrentElementStyle(w.document.body,'position')!='static'||(FCKBrowserInfo.IsIE&&FCKDomTools.GetPositionedAncestor(A)==null)){x+=w.document.body.offsetLeft;y+=w.document.body.offsetTop;};return { "x":x,"y":y };};FCKTools.GetWindowPosition=function(w,A){var B=this.GetDocumentPosition(w,A);var C=FCKTools.GetScrollPosition(w);B.x-=C.X;B.y-=C.Y;return B;};FCKTools.ProtectFormStyles=function(A){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return [];var B=[];var C=['style','className'];for (var i=0;i<C.length;i++){var D=C[i];if (A.elements.namedItem(D)){var E=A.elements.namedItem(D);B.push([E,E.nextSibling]);A.removeChild(E);}};return B;};FCKTools.RestoreFormStyles=function(A,B){if (!A||A.nodeType!=1||A.tagName.toLowerCase()!='form') return;if (B.length>0){for (var i=B.length-1;i>=0;i--){var C=B[i][0];var D=B[i][1];if (D) A.insertBefore(C,D);else A.appendChild(C);}}};FCKTools.GetNextNode=function(A,B){if (A.firstChild) return A.firstChild;else if (A.nextSibling) return A.nextSibling;else{var C=A.parentNode;while (C){if (C==B) return null;if (C.nextSibling) return C.nextSibling;else C=C.parentNode;}};return null;};FCKTools.GetNextTextNode=function(A,B,C){node=this.GetNextNode(A,B);if (C&&node&&C(node)) return null;while (node&&node.nodeType!=3){node=this.GetNextNode(node,B);if (C&&node&&C(node)) return null;};return node;};FCKTools.Merge=function(){var A=arguments;var o=A[0];for (var i=1;i<A.length;i++){var B=A[i];for (var p in B) o[p]=B[p];};return o;};FCKTools.IsArray=function(A){return (A instanceof Array);};FCKTools.AppendLengthProperty=function(A,B){var C=0;for (var n in A) C++;return A[B||'length']=C;};FCKTools.NormalizeCssText=function(A){var B=document.createElement('span');B.style.cssText=A;return B.style.cssText;};FCKTools.Bind=function(A,B){return function(){ return B.apply(A,arguments);};};FCKTools.GetVoidUrl=function(){if (FCK_IS_CUSTOM_DOMAIN) return "javascript: void( function(){document.open();document.write('<html><head><title></title></head><body></body></html>');document.domain = '"+FCK_RUNTIME_DOMAIN+"';document.close();}() ) ;";if (FCKBrowserInfo.IsIE){if (FCKBrowserInfo.IsIE7||!FCKBrowserInfo.IsIE6) return "";else return "javascript: '';";};return "javascript: void(0);";};FCKTools.ResetStyles=function(A){A.style.cssText='margin:0;padding:0;border:0;background-color:transparent;background-image:none;';};
-FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.AppendStyleString=function(A,B){if (!B) return null;var s=A.createStyleSheet("");s.cssText=B;return s;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':if (document.location.protocol!='file:') try { return new XMLHttpRequest();} catch (e) {};B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=A.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=FCKTools.ProtectFormStyles(A);var C={};if (A.className.length>0){C.Class=A.className;A.className='';};var D=A.style.cssText;if (D.length>0){C.Inline=D;A.style.cssText='';};FCKTools.RestoreFormStyles(A,B);return C;};FCKTools.RestoreStyles=function(A,B){var C=FCKTools.ProtectFormStyles(A);A.className=B.Class||'';A.style.cssText=B.Inline||'';FCKTools.RestoreFormStyles(A,C);};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();};
-var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='window.FCKeditorAPI = {Version : "2.6.4",VersionBuild : "21629",Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},GetInstance : function( name ){return this.Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.Instances ){var oEditor = FCKeditorAPI.Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if(FCKBrowserInfo.IsAIR){FCKAdobeAIR.FCKeditorAPI_Evaluate(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;FCKeditorAPI.__Instances=FCKeditorAPI.Instances;};FCKeditorAPI.Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat&&!window.FCKUnloadFlag) return;delete FCKeditorAPI.Instances[FCK.Name];};function FCKeditorAPI_ConfirmCleanup(){if (window.FCKConfig&&FCKConfig.MsWebBrowserControlCompat) window.FCKUnloadFlag=true;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);FCKTools.AddEventListener(window,'beforeunload',FCKeditorAPI_ConfirmCleanup);
-var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i<A.length;i++){var B=document.createElement('img');FCKTools.AddEventListenerEx(B,'load',_FCKImagePreloader_OnImage,this);FCKTools.AddEventListenerEx(B,'error',_FCKImagePreloader_OnImage,this);B.src=A[i];_FCKImagePreloader_ImageCache.push(B);}}};var _FCKImagePreloader_ImageCache=[];function _FCKImagePreloader_OnImage(A,B){if ((--B._PreloadCount)==0&&B.OnComplete) B.OnComplete();};
-var FCKRegexLib={AposEntity:/&apos;/gi,ObjectElements:/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i,NamedCommands:/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i,BeforeBody:/(^[\s\S]*\<body[^\>]*\>)/i,AfterBody:/(\<\/body\>[\s\S]*$)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/<base /i,HasBodyTag:/<body[\s|>]/i,HtmlOpener:/<html\s?[^>]*>/i,HeadOpener:/<head\s?[^>]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/\s*FCK__[^ ]*(?=\s+|$)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/,TagBody:/></,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/<img(?=\s).*?\ssrc=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsA:/<a(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,ProtectUrlsArea:/<area(?=\s).*?\shref=((?:(?:\s*)("|').*?\2)|(?:[^"'][^ >]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/<!DOCTYPE[^>]*>/i,HtmlDocType:/DTD HTML/,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi,StyleVariableAttName:/#\(\s*("|')(.+?)\1[^\)]*\s*\)/g,RegExp:/^\/(.*)\/([gim]*)$/,HtmlTag:/<[^\s<>](?:"[^"]*"|'[^']*'|[^<])*>/};
-var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },InlineNonEmptyElements:{ a:1,abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,col:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,div:1,td:1,th:1,caption:1,form:1 },StyleBlockElements:{ address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 },StyleObjectElements:{ img:1,hr:1,li:1,table:1,tr:1,td:1,embed:1,object:1,ol:1,ul:1 },NonEditableElements:{ button:1,option:1,script:1,iframe:1,textarea:1,object:1,embed:1,map:1,applet:1 },BlockBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1 },ListBoundaries:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,address:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1,table:1,thead:1,tbody:1,tfoot:1,tr:1,th:1,td:1,caption:1,col:1,colgroup:1,blockquote:1,body:1,br:1 }};
-var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if ((E=e[i].getAttribute('fckLang'))){if ((s=FCKLang[E])){if (D) s=FCKTools.HTMLEncode(s);e[i][C]=s;}}}},TranslatePage:function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);this.TranslateElements(A,'LEGEND','innerHTML');},Initialize:function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage={};this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}};
-var FCKXHtmlEntities={};FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;var A='';var B,e;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','Â¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','Æ’':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','â„':'frasl','℘':'weierp','â„‘':'image','ℜ':'real','â„¢':'trade','ℵ':'alefsym','â†':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','â‡':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','âˆ':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','âˆ':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','â‹…':'sdot','\u2308':'lceil','\u2309':'rceil','\u230a':'lfloor','\u230b':'rfloor','\u2329':'lang','\u232a':'rang','â—Š':'loz','â™ ':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','>':'gt','ˆ':'circ','Ëœ':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','â€':'zwj','‎':'lrm','â€':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','â€':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};for (e in FCKXHtmlEntities.Entities) A+=e;if (FCKConfig.IncludeLatinEntities){B={'À':'Agrave','Ã':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Ã…':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','ÃŒ':'Igrave','Ã':'Iacute','ÃŽ':'Icirc','Ã':'Iuml','Ã':'ETH','Ñ':'Ntilde','Ã’':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ã':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','Ã¥':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Å’':'OElig','Å“':'oelig','Å ':'Scaron','Å¡':'scaron','Ÿ':'Yuml'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;};if (FCKConfig.IncludeGreekEntities){B={'Α':'Alpha','Î’':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Î':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Î¥':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','Ï€':'pi','Ï':'rho','Ï‚':'sigmaf','σ':'sigma','Ï„':'tau','Ï…':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega','\u03d1':'thetasym','\u03d2':'upsih','\u03d6':'piv'};for (e in B){FCKXHtmlEntities.Entities[e]=B[e];A+=e;};B=null;}}else{FCKXHtmlEntities.Entities={'>':'gt'};A='>';A+=' ';};var C='['+A+']';if (FCKConfig.ProcessNumericEntities) C='[^ -~]|'+C;var D=FCKConfig.AdditionalNumericEntities;if (D&&D.length>0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');};
-var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKDomTools.CheckAndRemovePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;if (FCKBrowserInfo.IsSafari) E=E.replace(/^<xhtml.*?>/,'<xhtml>');E=E.substr(7,E.length-15).Trim();if (FCKConfig.DocType.length>0&&FCKRegexLib.HtmlDocType.test(FCKConfig.DocType)) E=E.replace(FCKRegexLib.SpaceNoClose,'>');else E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var F=new RegExp('___FCKsi___'+i);E=E.replace(F,FCKXHtml.SpecialBlocks[i]);};E=E.replace(FCKRegexLib.GeckoEntitiesMarker,'&');if (!D) FCK.ResetIsDirty();FCKDomTools.EnforcePaddingNode(FCKTools.GetElementDocument(A),FCKConfig.EnterMode);return E;};FCKXHtml._AppendAttribute=function(A,B,C){try{if (C==undefined||C==null) C='';else if (C.replace){if (FCKConfig.ForceSimpleAmpersand) C=C.replace(/&/g,'___FCKAmp___');C=C.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity);};var D=this.XML.createAttribute(B);D.value=C;A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=B.firstChild;while (D){this._AppendNode(A,D);D=D.nextSibling;};if (C&&B.tagName&&B.tagName.toLowerCase()!='pre'){FCKDomTools.TrimNode(A);if (FCKConfig.FillEmptyBlocks){var E=A.lastChild;if (E&&E.nodeType==1&&E.nodeName=='br') this._AppendEntity(A,this._NbspEntity);}};if (A.childNodes.length==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,this._NbspEntity);return A;};var F=A.nodeName;if (FCKListsLib.InlineChildReqElements[F]) return null;if (!FCKListsLib.EmptyElements[F]) A.appendChild(this.XML.createTextNode(''));};return A;};FCKXHtml._AppendNode=function(A,B){if (!B) return false;switch (B.nodeType){case 1:if (FCKBrowserInfo.IsGecko&&B.tagName.toLowerCase()=='br'&&B.parentNode.tagName.toLowerCase()=='pre'){var C='\r';if (B==B.parentNode.firstChild) C+='\r';return FCKXHtml._AppendNode(A,this.XML.createTextNode(C));};if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&(B.hasAttribute('_moz_editor_bogus_node')||B.getAttribute('type')=='_moz')){if (B.nextSibling) return false;else{B.removeAttribute('_moz_editor_bogus_node');B.removeAttribute('type');}};if (B.getAttribute('_fcktemp')) return false;var D=B.tagName.toLowerCase();if (FCKBrowserInfo.IsIE){if (B.scopeName&&B.scopeName!='HTML'&&B.scopeName!='FCK') D=B.scopeName.toLowerCase()+':'+D;}else{if (D.StartsWith('fck:')) D=D.Remove(0,4);};if (!FCKRegexLib.ElementName.test(D)) return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var E=this.XML.createElement(D);FCKXHtml._AppendAttributes(A,B,E,D);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var F=FCKXHtml.TagProcessors[D];if (F) E=F(E,B,A);else E=this._AppendChildNodes(E,B,Boolean(FCKListsLib.NonEmptyBlockElements[D]));if (!E) return false;A.appendChild(E);break;case 3:if (B.parentNode&&B.parentNode.nodeName.IEquals('pre')) return this._AppendTextNode(A,B.nodeValue);return this._AppendTextNode(A,B.nodeValue.ReplaceNewLineChars(' '));case 8:if (FCKBrowserInfo.IsIE&&!B.innerHTML) break;try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) {};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+(FCKXHtml.SpecialBlocks.push(A)-1);};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendTextNode=function(A,B){var C=B.length>0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml.TagProcessors={a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},area:function(A,B){var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){if (!A.attributes.getNamedItem('coords')){var D=B.getAttribute('coords',2);if (D&&D!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',D);};if (!A.attributes.getNamedItem('shape')){var E=B.getAttribute('shape',2);if (E&&E.length>0) FCKXHtml._AppendAttribute(A,'shape',E.toLowerCase());}};return A;},body:function(A,B){A=FCKXHtml._AppendChildNodes(A,B,false);A.removeAttribute('spellcheck');return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);if (B.style.width) A.removeAttribute('width');if (B.style.height) A.removeAttribute('height');return A;},li:function(A,B,C){if (C.nodeName.IEquals(['ul','ol'])) return FCKXHtml._AppendChildNodes(A,B,true);var D=FCKXHtml.XML.createElement('ul');B._fckxhtmljob=null;do{FCKXHtml._AppendNode(D,B);do{B=FCKDomTools.GetNextSibling(B);} while (B&&B.nodeType==3&&B.nodeValue.Trim().length==0)} while (B&&B.nodeName.toLowerCase()=='li') return D;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},pre:function (A,B){var C=B.firstChild;if (C&&C.nodeType==3) A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem('\r\n')));FCKXHtml._AppendChildNodes(A,B,true);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');var C=B.innerHTML;if (FCKBrowserInfo.IsIE) C=C.replace(/^(\r\n|\n|\r)/,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol;
-FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes,bHasStyle;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.StartsWith('_fck')) continue;else if (G=='style'){bHasStyle=true;continue;}else if (G=='class'){H=F.nodeValue.replace(FCKRegexLib.FCK_Class,'');if (H.length==0) continue;}else if (G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else{try{H=B.getAttribute(G,2);}catch (e) {}};this._AppendAttribute(C,G,H||F.nodeValue);}};if (bHasStyle||B.style.cssText.length>0){var I=FCKTools.ProtectFormStyles(B);var J=B.style.cssText.replace(FCKRegexLib.StyleProperties,FCKTools.ToLowerCase);FCKTools.RestoreFormStyles(B,I);this._AppendAttribute(C,'style',J);}};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text');return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['map']=function(A,B){if (!A.attributes.getNamedItem('name')){var C=B.name;if (C) FCKXHtml._AppendAttribute(A,'name',C);};A=FCKXHtml._AppendChildNodes(A,B,true);return A;};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;};
-var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DL|DT|DD|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL|DL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+(FCKCodeFormatter.ProtectedData.push(C)-1)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var j=0;j<FCKCodeFormatter.ProtectedData.length;j++){var F=new RegExp('___FCKpd___'+j);B=B.replace(F,FCKCodeFormatter.ProtectedData[j].replace(/\$/g,'$$$$'));};return B.Trim();};
-var FCKUndo={};FCKUndo.SavedData=[];FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=0;FCKUndo.Changed=false;FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveLocked=false;FCKUndo._GetBookmark=function(){FCKSelection.Restore();var A=new FCKDomRange(FCK.EditorWindow);try{A.MoveToSelection();}catch (e){return null;};if (FCKBrowserInfo.IsIE){var B=A.CreateBookmark();var C=FCK.EditorDocument.body.innerHTML;A.MoveToBookmark(B);return [B,C];};return A.CreateBookmark2();};FCKUndo._SelectBookmark=function(A){if (!A) return;var B=new FCKDomRange(FCK.EditorWindow);if (A instanceof Object){if (FCKBrowserInfo.IsIE) B.MoveToBookmark(A[0]);else B.MoveToBookmark2(A);try{B.Select();}catch (e){B.MoveToPosition(FCK.EditorDocument.body,4);B.Select();}}};FCKUndo._CompareCursors=function(A,B){for (var i=0;i<Math.min(A.length,B.length);i++){if (A[i]<B[i]) return-1;else if (A[i]>B[i]) return 1;};if (A.length<B.length) return-1;else if (A.length>B.length) return 1;return 0;};FCKUndo._CheckIsBookmarksEqual=function(A,B){if (!(A&&B)) return false;if (FCKBrowserInfo.IsIE){var C=A[1].search(A[0].StartId);var D=B[1].search(B[0].StartId);var E=A[1].search(A[0].EndId);var F=B[1].search(B[0].EndId);return C==D&&E==F;}else{return this._CompareCursors(A.Start,B.Start)==0&&this._CompareCursors(A.End,B.End)==0;}};FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=0||this.SaveLocked) return;if (this.SavedData.length) this.Changed=true;var A=FCK.EditorDocument.body.innerHTML;var B=this._GetBookmark();this.SavedData=this.SavedData.slice(0,this.CurrentIndex+1);if (this.CurrentIndex>0&&A==this.SavedData[this.CurrentIndex][0]&&this._CheckIsBookmarksEqual(B,this.SavedData[this.CurrentIndex][1])) return;else if (this.CurrentIndex==0&&this.SavedData.length&&A==this.SavedData[0][0]){this.SavedData[0][1]=B;return;};if (this.CurrentIndex+1>=FCKConfig.MaxUndoLevels) this.SavedData.shift();else this.CurrentIndex++;this.SavedData[this.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (this.Changed||this.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (this.CurrentIndex<(this.SavedData.length-1));};FCKUndo.Undo=function(){if (this.CheckUndoState()){if (this.CurrentIndex==(this.SavedData.length-1)){this.SaveUndoStep();};this._ApplyUndoLevel(--this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (this.CheckRedoState()){this._ApplyUndoLevel(++this.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=this.SavedData[A];if (!B) return;if (FCKBrowserInfo.IsIE){if (B[1]&&B[1][1]) FCK.SetInnerHtml(B[1][1]);else FCK.SetInnerHtml(B[0]);}else FCK.EditorDocument.body.innerHTML=B[0];this._SelectBookmark(B[1]);this.TypesCount=0;this.Changed=false;this.Typing=false;};
-var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.firstChild) C.removeChild(C.firstChild);if (this.Mode==0){if (FCK_IS_CUSTOM_DOMAIN) A='<script>document.domain="'+FCK_RUNTIME_DOMAIN+'";</script>'+A;if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');else if (!B){var E=A.match(FCKRegexLib.BeforeBody);var F=A.match(FCKRegexLib.AfterBody);if (E&&F){var G=A.substr(E[1].length,A.length-E[1].length-F[1].length);A=E[1]+'&nbsp;'+F[1];if (FCKBrowserInfo.IsGecko&&(G.length==0||FCKRegexLib.EmptyParagraph.test(G))) G='<br type="_moz">';this._BodyHTML=G;}else this._BodyHTML=A;};var H=this.IFrame=D.createElement('iframe');var I='<script type="text/javascript" _fcktemp="true">window.onerror=function(){return true;};</script>';H.frameBorder=0;H.style.width=H.style.height='100%';if (FCK_IS_CUSTOM_DOMAIN&&FCKBrowserInfo.IsIE){window._FCKHtmlToLoad=A.replace(/<head>/i,'<head>'+I);H.src='javascript:void( (function(){document.open() ;document.domain="'+document.domain+'" ;document.write( window.parent._FCKHtmlToLoad );document.close() ;window.parent._FCKHtmlToLoad = null ;})() )';}else if (!FCKBrowserInfo.IsGecko){H.src='javascript:void(0)';};C.appendChild(H);this.Window=H.contentWindow;if (!FCK_IS_CUSTOM_DOMAIN||!FCKBrowserInfo.IsIE){var J=this.Window.document;J.open();J.write(A.replace(/<head>/i,'<head>'+I));J.close();};if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.EditingArea_Start(J,A);if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};if (H.readyState&&H.readyState!='completed'){var K=this;setTimeout(function(){try{K.Window.document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;};K.Window._FCKEditingArea=K;FCKEditingArea_CompleteStart.call(K.Window);},0);}else{this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}}else{var L=this.Textarea=D.createElement('textarea');L.className='SourceField';L.dir='ltr';FCKDomTools.SetElementStyles(L,{width:'100%',height:'100%',border:'none',resize:'none',outline:'none'});C.appendChild(L);L.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.Document=A.Window.document;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.disabled=true;A.body.contentEditable=true;A.body.removeAttribute("disabled");}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;A.body.offsetLeft;this._BodyHTML=null;};A.designMode='on';A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e){FCKTools.AddEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);}}};function FCKEditingArea_Document_AttributeNodeModified(A){var B=A.currentTarget.contentWindow._FCKEditingArea;if (B._timer) window.clearTimeout(B._timer);B._timer=FCKTools.SetTimeout(FCKEditingArea_MakeEditableByMutation,1000,B);};function FCKEditingArea_MakeEditableByMutation(){delete this._timer;FCKTools.RemoveEventListener(this.Window.frameElement,'DOMAttrModified',FCKEditingArea_Document_AttributeNodeModified);this.MakeEditable();};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE) this._FocusIE();else this.Window.focus();}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};FCKEditingArea.prototype._FocusIE=function(){this.Document.body.setActive();this.Window.focus();var A=this.Document.selection.createRange();var B=A.parentElement();var C=B.nodeName.toLowerCase();if (B.childNodes.length>0||!(FCKListsLib.BlockElements[C]||FCKListsLib.NonEmptyBlockElements[C])){return;};A=new FCKDomRange(this.Window);A.MoveToElementEditStart(B);A.Select();};function FCKEditingArea_Cleanup(){if (this.Document) this.Document.body.innerHTML="";this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}};
-var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i<arguments.length;i++){var A=arguments[i];if (!A) continue;if (typeof(A[0])=='object') this.SetKeystrokes.apply(this,A);else{if (A.length==1) delete this.Keystrokes[A[0]];else this.Keystrokes[A[0]]=A[1]===true?true:A;}}};function _FCKKeystrokeHandler_OnKeyDown(A,B){var C=A.keyCode||A.which;var D=0;if (A.ctrlKey||A.metaKey) D+=CTRL;if (A.shiftKey) D+=SHIFT;if (A.altKey) D+=ALT;var E=C+D;var F=B._CancelIt=false;var G=B.Keystrokes[E];if (G){if (G===true||!(B.OnKeystroke&&B.OnKeystroke.apply(B,G))) return true;F=true;};if (F||(B.CancelCtrlDefaults&&D==CTRL&&(C<33||C>40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;};
-FCK.DTD=(function(){var X=FCKTools.Merge;var A,L,J,M,N,O,D,H,P,K,Q,F,G,C,B,E,I;A={isindex:1,fieldset:1};B={input:1,button:1,select:1,textarea:1,label:1};C=X({a:1},B);D=X({iframe:1},C);E={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1};F={ins:1,del:1,script:1};G=X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F);H=X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G);I=X({p:1},H);J=X({iframe:1},H,B);K={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1};L=X({a:1},J);M={tr:1};N={'#':1};O=X({param:1},K);P=X({form:1},A,D,E,I);Q={li:1};return {col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:P,td:P,br:{},th:P,center:P,kbd:L,button:X(I,E),basefont:{},h5:L,h4:L,samp:L,h6:L,ol:Q,h1:L,h3:L,option:N,h2:L,form:X(A,D,E,I),select:{optgroup:1,option:1},font:J,ins:P,menu:Q,abbr:L,label:L,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:L,script:N,tfoot:M,cite:L,li:P,input:{},iframe:P,strong:J,textarea:N,noframes:P,big:J,small:J,span:J,hr:{},dt:L,sub:J,optgroup:{option:1},param:{},bdo:L,'var':J,div:P,object:O,sup:J,dd:P,strike:J,area:{},dir:Q,map:X({area:1,form:1,p:1},A,F,E),applet:O,dl:{dt:1,dd:1},del:P,isindex:{},fieldset:X({legend:1},K),thead:M,ul:Q,acronym:L,b:J,a:J,blockquote:P,caption:L,i:J,u:J,tbody:M,s:L,address:X(D,I),tt:J,legend:L,q:L,pre:X(G,C),p:L,em:J,dfn:L};})();
-var FCKStyle=function(A){this.Element=(A.Element||'span').toLowerCase();this._StyleDesc=A;};FCKStyle.prototype={GetType:function(){var A=this.GetType_$;if (A!=undefined) return A;var B=this.Element;if (B=='#'||FCKListsLib.StyleBlockElements[B]) A=0;else if (FCKListsLib.StyleObjectElements[B]) A=2;else A=1;return (this.GetType_$=A);},ApplyToSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.ApplyToRange(B,true);},ApplyToRange:function(A,B,C){switch (this.GetType()){case 0:this.ApplyToRange=this._ApplyBlockStyle;break;case 1:this.ApplyToRange=this._ApplyInlineStyle;break;default:return;};this.ApplyToRange(A,B,C);},ApplyToObject:function(A){if (!A) return;this.BuildElement(null,A);},RemoveFromSelection:function(A){var B=new FCKDomRange(A);B.MoveToSelection();this.RemoveFromRange(B,true);},RemoveFromRange:function(A,B,C){var D;var E=this._GetAttribsForComparison();var F=this._GetOverridesForComparison();if (A.CheckIsCollapsed()){var D=A.CreateBookmark(true);var H=A.GetBookmarkNode(D,true);var I=new FCKElementPath(H.parentNode);var J=[];var K=!FCKDomTools.GetNextSibling(H);var L=K||!FCKDomTools.GetPreviousSibling(H);var M;var N=-1;for (var i=0;i<I.Elements.length;i++){var O=I.Elements[i];if (this.CheckElementRemovable(O)){if (L&&!FCKDomTools.CheckIsEmptyElement(O,function(el){return (el!=H);})){M=O;N=J.length-1;}else{var P=O.nodeName.toLowerCase();if (P==this.Element){for (var Q in E){if (FCKDomTools.HasAttribute(O,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(O);break;case 'class':if (FCKDomTools.GetAttributeValue(O,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(O,Q);}}}};this._RemoveOverrides(O,F[P]);if (this.GetType()==1) this._RemoveNoAttribElement(O);}}else if (L) J.push(O);L=L&&((K&&!FCKDomTools.GetNextSibling(O))||(!K&&!FCKDomTools.GetPreviousSibling(O)));if (M&&(!L||(i==I.Elements.length-1))){var R=FCKDomTools.RemoveNode(H);for (var j=0;j<=N;j++){var S=FCKDomTools.CloneElement(J[j]);S.appendChild(R);R=S;};if (K) FCKDomTools.InsertAfterNode(M,R);else M.parentNode.insertBefore(R,M);L=false;M=null;}};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);return;};A.Expand('inline_elements');D=A.CreateBookmark(true);var T=A.GetBookmarkNode(D,true);var U=A.GetBookmarkNode(D,false);A.Release(true);var I=new FCKElementPath(T);var X=I.Elements;var O;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(T,O,A);};I=new FCKElementPath(U);X=I.Elements;for (var i=1;i<X.length;i++){O=X[i];if (O==I.Block||O==I.BlockLimit) break;b=O.nodeName.toLowerCase();if (this.CheckElementRemovable(O)) FCKDomTools.BreakParent(U,O,A);};var Z=FCKDomTools.GetNextSourceNode(T,true);while (Z){var a=FCKDomTools.GetNextSourceNode(Z);if (Z.nodeType==1){var b=Z.nodeName.toLowerCase();var c=(b==this.Element);if (c){for (var Q in E){if (FCKDomTools.HasAttribute(Z,Q)){switch (Q){case 'style':this._RemoveStylesFromElement(Z);break;case 'class':if (FCKDomTools.GetAttributeValue(Z,Q)!=this.GetFinalAttributeValue(Q)) continue;default:FCKDomTools.RemoveAttribute(Z,Q);}}}}else c=!!F[b];if (c){this._RemoveOverrides(Z,F[b]);this._RemoveNoAttribElement(Z);}};if (a==U) break;Z=a;};this._FixBookmarkStart(T);if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},CheckElementRemovable:function(A,B){if (!A) return false;var C=A.nodeName.toLowerCase();if (C==this.Element){if (!B&&!FCKDomTools.HasAttributes(A)) return true;var D=this._GetAttribsForComparison();var E=(D._length==0);for (var F in D){if (F=='_length') continue;if (this._CompareAttributeValues(F,FCKDomTools.GetAttributeValue(A,F),(this.GetFinalAttributeValue(F)||''))){E=true;if (!B) break;}else{E=false;if (B) return false;}};if (E) return true;};var G=this._GetOverridesForComparison()[C];if (G){if (!(D=G.Attributes)) return true;for (var i=0;i<D.length;i++){var H=D[i][0];if (FCKDomTools.HasAttribute(A,H)){var I=D[i][1];if (I==null||(typeof I=='string'&&FCKDomTools.GetAttributeValue(A,H)==I)||I.test(FCKDomTools.GetAttributeValue(A,H))) return true;}}};return false;},CheckActive:function(A){switch (this.GetType()){case 0:return this.CheckElementRemovable(A.Block||A.BlockLimit,true);case 1:var B=A.Elements;for (var i=0;i<B.length;i++){var C=B[i];if (C==A.Block||C==A.BlockLimit) continue;if (this.CheckElementRemovable(C,true)) return true;}};return false;},RemoveFromElement:function(A){var B=this._GetAttribsForComparison();var C=this._GetOverridesForComparison();var D=A.getElementsByTagName(this.Element);for (var i=D.length-1;i>=0;i--){var E=D[i];for (var F in B){if (FCKDomTools.HasAttribute(E,F)){switch (F){case 'style':this._RemoveStylesFromElement(E);break;case 'class':if (FCKDomTools.GetAttributeValue(E,F)!=this.GetFinalAttributeValue(F)) continue;default:FCKDomTools.RemoveAttribute(E,F);}}};this._RemoveOverrides(E,C[this.Element]);this._RemoveNoAttribElement(E);};for (var G in C){if (G!=this.Element){D=A.getElementsByTagName(G);for (var i=D.length-1;i>=0;i--){var E=D[i];this._RemoveOverrides(E,C[G]);this._RemoveNoAttribElement(E);}}}},_RemoveStylesFromElement:function(A){var B=A.style.cssText;var C=this.GetFinalStyleValue();if (B.length>0&&C.length==0) return;C='(^|;)\\s*('+C.replace(/\s*([^ ]+):.*?(;|$)/g,'$1|').replace(/\|$/,'')+'):[^;]+';var D=new RegExp(C,'gi');B=B.replace(D,'').Trim();if (B.length==0||B==';') FCKDomTools.RemoveAttribute(A,'style');else A.style.cssText=B.replace(D,'');},_RemoveOverrides:function(A,B){var C=B&&B.Attributes;if (C){for (var i=0;i<C.length;i++){var D=C[i][0];if (FCKDomTools.HasAttribute(A,D)){var E=C[i][1];if (E==null||(E.test&&E.test(FCKDomTools.GetAttributeValue(A,D)))||(typeof E=='string'&&FCKDomTools.GetAttributeValue(A,D)==E)) FCKDomTools.RemoveAttribute(A,D);}}}},_RemoveNoAttribElement:function(A){if (!FCKDomTools.HasAttributes(A)){var B=A.firstChild;var C=A.lastChild;FCKDomTools.RemoveNode(A,true);this._MergeSiblings(B);if (B!=C) this._MergeSiblings(C);}},BuildElement:function(A,B){var C=B||A.createElement(this.Element);var D=this._StyleDesc.Attributes;var E;if (D){for (var F in D){E=this.GetFinalAttributeValue(F);if (F.toLowerCase()=='class') C.className=E;else C.setAttribute(F,E);}};if (this._GetStyleText().length>0) C.style.cssText=this.GetFinalStyleValue();return C;},_CompareAttributeValues:function(A,B,C){if (A=='style'&&B&&C){B=B.replace(/;$/,'').toLowerCase();C=C.replace(/;$/,'').toLowerCase();};return (B==C||((B===null||B==='')&&(C===null||C==='')))},GetFinalAttributeValue:function(A){var B=this._StyleDesc.Attributes;var B=B?B[A]:null;if (!B&&A=='style') return this.GetFinalStyleValue();if (B&&this._Variables) B=B.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);return B;},GetFinalStyleValue:function(){var A=this._GetStyleText();if (A.length>0&&this._Variables){A=A.Replace(FCKRegexLib.StyleVariableAttName,this._GetVariableReplace,this);A=FCKTools.NormalizeCssText(A);};return A;},_GetVariableReplace:function(){return this._Variables[arguments[2]]||arguments[0];},SetVariable:function(A,B){var C=this._Variables;if (!C) C=this._Variables={};this._Variables[A]=B;},_FromPre:function(A,B,C){var D=B.innerHTML;D=D.replace(/(\r\n|\r)/g,'\n');D=D.replace(/^[ \t]*\n/,'');D=D.replace(/\n$/,'');D=D.replace(/^[ \t]+|[ \t]+$/g,function(match,offset,s){if (match.length==1) return '&nbsp;';else if (offset==0) return new Array(match.length).join('&nbsp;')+' ';else return ' '+new Array(match.length).join('&nbsp;');});var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag){value=value.replace(/\n/g,'<br>');value=value.replace(/[ \t]{2,}/g,function (match){return new Array(match.length).join('&nbsp;')+' ';});};F.push(value);});C.innerHTML=F.join('');return C;},_ToPre:function(A,B,C){var D=B.innerHTML.Trim();D=D.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'<br />');var E=new FCKHtmlIterator(D);var F=[];E.Each(function(isTag,value){if (!isTag) value=value.replace(/([ \t\n\r]+|&nbsp;)/g,' ');else if (isTag&&value=='<br />') value='\n';F.push(value);});if (FCKBrowserInfo.IsIE){var G=A.createElement('div');G.appendChild(C);C.outerHTML='<pre>\n'+F.join('')+'</pre>';C=G.removeChild(G.firstChild);}else C.innerHTML=F.join('');return C;},_CheckAndMergePre:function(A,B){if (A!=FCKDomTools.GetPreviousSourceElement(B,true)) return;var C=A.innerHTML.replace(/\n$/,'')+'\n\n'+B.innerHTML.replace(/^\n/,'');if (FCKBrowserInfo.IsIE) B.outerHTML='<pre>'+C+'</pre>';else B.innerHTML=C;FCKDomTools.RemoveNode(A);},_CheckAndSplitPre:function(A){var B;var C=A.firstChild;C=C&&C.nextSibling;while (C){var D=C.nextSibling;if (D&&D.nextSibling&&C.nodeName.IEquals('br')&&D.nodeName.IEquals('br')){FCKDomTools.RemoveNode(C);C=D.nextSibling;FCKDomTools.RemoveNode(D);B=FCKDomTools.InsertAfterNode(B||A,FCKDomTools.CloneElement(A));continue;};if (B){C=C.previousSibling;FCKDomTools.MoveNode(C.nextSibling,B);};C=C.nextSibling;}},_ApplyBlockStyle:function(A,B,C){var D;if (B) D=A.CreateBookmark();var E=new FCKDomRangeIterator(A);E.EnforceRealBlocks=true;var F;var G=A.Window.document;var H;while((F=E.GetNextParagraph())){var I=this.BuildElement(G);var J=I.nodeName.IEquals('pre');var K=F.nodeName.IEquals('pre');var L=J&&!K;var M=!J&&K;if (L) I=this._ToPre(G,F,I);else if (M) I=this._FromPre(G,F,I);else FCKDomTools.MoveChildren(F,I);F.parentNode.insertBefore(I,F);FCKDomTools.RemoveNode(F);if (J){if (H) this._CheckAndMergePre(H,I);H=I;}else if (M) this._CheckAndSplitPre(I);};if (B) A.SelectBookmark(D);if (C) A.MoveToBookmark(D);},_ApplyInlineStyle:function(A,B,C){var D=A.Window.document;if (A.CheckIsCollapsed()){var E=this.BuildElement(D);A.InsertNode(E);A.MoveToPosition(E,2);A.Select();return;};var F=this.Element;var G=FCK.DTD[F]||FCK.DTD.span;var H=this._GetAttribsForComparison();var I;A.Expand('inline_elements');var J=A.CreateBookmark(true);var K=A.GetBookmarkNode(J,true);var L=A.GetBookmarkNode(J,false);A.Release(true);var M=FCKDomTools.GetNextSourceNode(K,true);while (M){var N=false;var O=M.nodeType;var P=O==1?M.nodeName.toLowerCase():null;if (!P||G[P]){if ((FCK.DTD[M.parentNode.nodeName.toLowerCase()]||FCK.DTD.span)[F]||!FCK.DTD[F]){if (!A.CheckHasRange()) A.SetStart(M,3);if (O!=1||M.childNodes.length==0){var Q=M;var R=Q.parentNode;while (Q==R.lastChild&&G[R.nodeName.toLowerCase()]){Q=R;};A.SetEnd(Q,4);if (Q==Q.parentNode.lastChild&&!G[Q.parentNode.nodeName.toLowerCase()]) N=true;}else{A.SetEnd(M,3);}}else N=true;}else N=true;M=FCKDomTools.GetNextSourceNode(M);if (M==L){M=null;N=true;};if (N&&A.CheckHasRange()&&!A.CheckIsCollapsed()){I=this.BuildElement(D);A.ExtractContents().AppendTo(I);if (I.innerHTML.RTrim().length>0){A.InsertNode(I);this.RemoveFromElement(I);this._MergeSiblings(I,this._GetAttribsForComparison());if (!FCKBrowserInfo.IsIE) I.normalize();};A.Release(true);}};this._FixBookmarkStart(K);if (B) A.SelectBookmark(J);if (C) A.MoveToBookmark(J);},_FixBookmarkStart:function(A){var B;while ((B=A.nextSibling)){if (B.nodeType==1&&FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){if (!B.firstChild) FCKDomTools.RemoveNode(B);else FCKDomTools.MoveNode(A,B,true);continue;};if (B.nodeType==3&&B.length==0){FCKDomTools.RemoveNode(B);continue;};break;}},_MergeSiblings:function(A,B){if (!A||A.nodeType!=1||!FCKListsLib.InlineNonEmptyElements[A.nodeName.toLowerCase()]) return;this._MergeNextSibling(A,B);this._MergePreviousSibling(A,B);},_MergeNextSibling:function(A,B){var C=A.nextSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.nextSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.lastChild;if (D) FCKDomTools.MoveNode(A.nextSibling,A);FCKDomTools.MoveChildren(C,A);FCKDomTools.RemoveNode(C);if (E) this._MergeNextSibling(E);}}},_MergePreviousSibling:function(A,B){var C=A.previousSibling;var D=(C&&C.nodeType==1&&C.getAttribute('_fck_bookmark'));if (D) C=C.previousSibling;if (C&&C.nodeType==1&&C.nodeName==A.nodeName){if (!B) B=this._CreateElementAttribsForComparison(A);if (this._CheckAttributesMatch(C,B)){var E=A.firstChild;if (D) FCKDomTools.MoveNode(A.previousSibling,A,true);FCKDomTools.MoveChildren(C,A,true);FCKDomTools.RemoveNode(C);if (E) this._MergePreviousSibling(E);}}},_GetStyleText:function(){var A=this._StyleDesc.Styles;var B=(this._StyleDesc.Attributes?this._StyleDesc.Attributes['style']||'':'');if (B.length>0) B+=';';for (var C in A) B+=C+':'+A[C]+';';if (B.length>0&&!(/#\(/.test(B))){B=FCKTools.NormalizeCssText(B);};return (this._GetStyleText=function() { return B;})();},_GetAttribsForComparison:function(){var A=this._GetAttribsForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Attributes;if (B){for (var C in B){A[C.toLowerCase()]=B[C].toLowerCase();}};if (this._GetStyleText().length>0){A['style']=this._GetStyleText().toLowerCase();};FCKTools.AppendLengthProperty(A,'_length');return (this._GetAttribsForComparison_$=A);},_GetOverridesForComparison:function(){var A=this._GetOverridesForComparison_$;if (A) return A;A={};var B=this._StyleDesc.Overrides;if (B){if (!FCKTools.IsArray(B)) B=[B];for (var i=0;i<B.length;i++){var C=B[i];var D;var E;var F;if (typeof C=='string') D=C.toLowerCase();else{D=C.Element?C.Element.toLowerCase():this.Element;F=C.Attributes;};E=A[D]||(A[D]={});if (F){var G=(E.Attributes=E.Attributes||[]);for (var H in F){G.push([H.toLowerCase(),F[H]]);}}}};return (this._GetOverridesForComparison_$=A);},_CreateElementAttribsForComparison:function(A){var B={};var C=0;for (var i=0;i<A.attributes.length;i++){var D=A.attributes[i];if (D.specified){B[D.nodeName.toLowerCase()]=FCKDomTools.GetAttributeValue(A,D).toLowerCase();C++;}};B._length=C;return B;},_CheckAttributesMatch:function(A,B){var C=A.attributes;var D=0;for (var i=0;i<C.length;i++){var E=C[i];if (E.specified){var F=E.nodeName.toLowerCase();var G=B[F];if (!G) break;if (G!=FCKDomTools.GetAttributeValue(A,E).toLowerCase()) break;D++;}};return (D==B._length);}};
-var FCKStyles=FCK.Styles={_Callbacks:{},_ObjectStyles:{},ApplyStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){if (A.GetType()==2) A.ApplyToObject(FCKSelection.GetSelectedElement());else A.ApplyToSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},RemoveStyle:function(A){if (typeof A=='string') A=this.GetStyles()[A];if (A){A.RemoveFromSelection(FCK.EditorWindow);FCK.Events.FireEvent('OnSelectionChange');}},AttachStyleStateChange:function(A,B,C){var D=this._Callbacks[A];if (!D) D=this._Callbacks[A]=[];D.push([B,C]);},CheckSelectionChanges:function(){var A=FCKSelection.GetBoundaryParentElement(true);if (!A) return;var B=new FCKElementPath(A);var C=this.GetStyles();for (var D in C){var E=this._Callbacks[D];if (E){var F=C[D];var G=F.CheckActive(B);if (G!=(F._LastState||null)){F._LastState=G;for (var i=0;i<E.length;i++){var H=E[i][0];var I=E[i][1];H.call(I||window,D,G);}}}}},CheckStyleInSelection:function(A){return false;},_GetRemoveFormatTagsRegex:function (){var A=new RegExp('^(?:'+FCKConfig.RemoveFormatTags.replace(/,/g,'|')+')$','i');return (this._GetRemoveFormatTagsRegex=function(){return A;})&&A;},RemoveAll:function(){var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();if (A.CheckIsCollapsed()) return;A.Expand('inline_elements');var B=A.CreateBookmark(true);var C=A.GetBookmarkNode(B,true);var D=A.GetBookmarkNode(B,false);A.Release(true);var E=this._GetRemoveFormatTagsRegex();var F=new FCKElementPath(C);var G=F.Elements;var H;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;if (E.test(H.nodeName)) FCKDomTools.BreakParent(C,H,A);};F=new FCKElementPath(D);G=F.Elements;for (var i=1;i<G.length;i++){H=G[i];if (H==F.Block||H==F.BlockLimit) break;elementName=H.nodeName.toLowerCase();if (E.test(H.nodeName)) FCKDomTools.BreakParent(D,H,A);};var I=FCKDomTools.GetNextSourceNode(C,true,1);while (I){if (I==D) break;var J=FCKDomTools.GetNextSourceNode(I,false,1);if (E.test(I.nodeName)) FCKDomTools.RemoveNode(I,true);else FCKDomTools.RemoveAttributes(I,FCKConfig.RemoveAttributesArray);I=J;};A.SelectBookmark(B);FCK.Events.FireEvent('OnSelectionChange');},GetStyle:function(A){return this.GetStyles()[A];},GetStyles:function(){var A=this._GetStyles;if (!A){A=this._GetStyles=FCKTools.Merge(this._LoadStylesCore(),this._LoadStylesCustom(),this._LoadStylesXml());};return A;},CheckHasObjectStyle:function(A){return!!this._ObjectStyles[A];},_LoadStylesCore:function(){var A={};var B=FCKConfig.CoreStyles;for (var C in B){var D=A['_FCK_'+C]=new FCKStyle(B[C]);D.IsCore=true;};return A;},_LoadStylesCustom:function(){var A={};var B=FCKConfig.CustomStyles;if (B){for (var C in B){var D=A[C]=new FCKStyle(B[C]);D.Name=C;}};return A;},_LoadStylesXml:function(){var A={};var B=FCKConfig.StylesXmlPath;if (!B||B.length==0) return A;var C=new FCKXml();C.LoadUrl(B);var D=FCKXml.TransformToObject(C.SelectSingleNode('Styles'));var E=D.$Style;if (!E) return A;for (var i=0;i<E.length;i++){var F=E[i];var G=(F.element||'').toLowerCase();if (G.length==0) throw('The element name is required. Error loading "'+B+'"');var H={Element:G,Attributes:{},Styles:{},Overrides:[]};var I=F.$Attribute||[];for (var j=0;j<I.length;j++){H.Attributes[I[j].name]=I[j].value;};var J=F.$Style||[];for (j=0;j<J.length;j++){H.Styles[J[j].name]=J[j].value;};var K=F.$Override;if (K){for (j=0;j<K.length;j++){var L=K[j];var M={Element:L.element};var N=L.$Attribute;if (N){M.Attributes={};for (var k=0;k<N.length;k++){var O=N[k].value||null;if (O){var P=O&&FCKRegexLib.RegExp.exec(O);if (P) O=new RegExp(P[1],P[2]||'');};M.Attributes[N[k].name]=O;}};H.Overrides.push(M);}};var Q=new FCKStyle(H);Q.Name=F.name||G;if (Q.GetType()==2) this._ObjectStyles[G]=true;A[Q.Name]=Q;};return A;}};
-var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}};
-var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (FCKBrowserInfo.IsIE&&e.scopeName!='HTML') E=e.scopeName.toLowerCase()+':'+E;if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null){if (!B&&E=='div'&&!FCKElementPath._CheckHasBlock(e)) B=e;else C=e;}};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;};FCKElementPath._CheckHasBlock=function(A){var B=A.childNodes;for (var i=0,count=B.length;i<count;i++){var C=B[i];if (C.nodeType==1&&FCKListsLib.BlockElements[C.nodeName.toLowerCase()]) return true;};return false;};
-var FCKDomRange=function(A){this.Window=A;this._Cache={};};FCKDomRange.prototype={_UpdateElementInfo:function(){var A=this._Range;if (!A) this.Release(true);else{var B=A.startContainer;var C=new FCKElementPath(B);this.StartNode=B.nodeType==3?B:B.childNodes[A.startOffset];this.StartContainer=B;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A.collapsed){this.EndNode=this.StartNode;this.EndContainer=this.StartContainer;this.EndBlock=this.StartBlock;this.EndBlockLimit=this.StartBlockLimit;}else{var D=A.endContainer;if (B!=D) C=new FCKElementPath(D);var E=D;if (A.endOffset==0){while (E&&!E.previousSibling) E=E.parentNode;if (E) E=E.previousSibling;}else if (E.nodeType==1) E=E.childNodes[A.endOffset-1];this.EndNode=E;this.EndContainer=D;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}};this._Cache={};},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;};return null;},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;return false;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while (A&&A.nodeType==1){if (FCKDomTools.CheckIsEditable(A)) B=A;else if (B) break;A=A.firstChild;};if (B) this.MoveToElementStart(B);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(){if (this.CheckIsCollapsed()) return true;var A=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(A);FCKDomTools.TrimNode(A);return (A.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this._Cache;var B=A.IsStartOfBlock;if (B!=undefined) return B;var C=this.StartBlock||this.StartBlockLimit;var D=this._Range.startContainer;var E=this._Range.startOffset;var F;if (E>0){if (D.nodeType==3){var G=D.nodeValue.substr(0,E).Trim();if (G.length!=0) return A.IsStartOfBlock=false;}else F=D.childNodes[E-1];};if (!F) F=FCKDomTools.GetPreviousSourceNode(D,true,null,C);while (F){switch (F.nodeType){case 1:if (!FCKListsLib.InlineChildReqElements[F.nodeName.toLowerCase()]) return A.IsStartOfBlock=false;break;case 3:if (F.nodeValue.Trim().length>0) return A.IsStartOfBlock=false;};F=FCKDomTools.GetPreviousSourceNode(F,false,null,C);};return A.IsStartOfBlock=true;},CheckEndOfBlock:function(A){var B=this._Cache.IsEndOfBlock;if (B!=undefined) return B;var C=this.EndBlock||this.EndBlockLimit;var D=this._Range.endContainer;var E=this._Range.endOffset;var F;if (D.nodeType==3){var G=D.nodeValue;if (E<G.length){G=G.substr(E);if (G.Trim().length!=0) return this._Cache.IsEndOfBlock=false;}}else F=D.childNodes[E];if (!F) F=FCKDomTools.GetNextSourceNode(D,true,null,C);var H=false;while (F){switch (F.nodeType){case 1:var I=F.nodeName.toLowerCase();if (FCKListsLib.InlineChildReqElements[I]) break;if (I=='br'&&!H){H=true;break;};return this._Cache.IsEndOfBlock=false;case 3:if (F.nodeValue.Trim().length>0) return this._Cache.IsEndOfBlock=false;};F=FCKDomTools.GetNextSourceNode(F,false,null,C);};if (A) this.Select();return this._Cache.IsEndOfBlock=true;},CreateBookmark:function(A){var B={StartId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'S',EndId:(new Date()).valueOf()+Math.floor(Math.random()*1000)+'E'};var C=this.Window.document;var D;var E;var F;if (!this.CheckIsCollapsed()){E=C.createElement('span');E.style.display='none';E.id=B.EndId;E.setAttribute('_fck_bookmark',true);E.innerHTML='&nbsp;';F=this.Clone();F.Collapse(false);F.InsertNode(E);};D=C.createElement('span');D.style.display='none';D.id=B.StartId;D.setAttribute('_fck_bookmark',true);D.innerHTML='&nbsp;';F=this.Clone();F.Collapse(true);F.InsertNode(D);if (A){B.StartNode=D;B.EndNode=E;};if (E){this.SetStart(D,4);this.SetEnd(E,3);}else this.MoveToPosition(D,4);return B;},GetBookmarkNode:function(A,B){var C=this.Window.document;if (B) return A.StartNode||C.getElementById(A.StartId);else return A.EndNode||C.getElementById(A.EndId);},MoveToBookmark:function(A,B){var C=this.GetBookmarkNode(A,true);var D=this.GetBookmarkNode(A,false);this.SetStart(C,3);if (!B) FCKDomTools.RemoveNode(C);if (D){this.SetEnd(D,3);if (!B) FCKDomTools.RemoveNode(D);}else this.Collapse(true);this._UpdateElementInfo();},CreateBookmark2:function(){if (!this._Range) return { "Start":0,"End":0 };var A={"Start":[this._Range.startOffset],"End":[this._Range.endOffset]};var B=this._Range.startContainer.previousSibling;var C=this._Range.endContainer.previousSibling;var D=this._Range.startContainer;var E=this._Range.endContainer;while (B&&B.nodeType==3&&D.nodeType==3){A.Start[0]+=B.length;D=B;B=B.previousSibling;}while (C&&C.nodeType==3&&E.nodeType==3){A.End[0]+=C.length;E=C;C=C.previousSibling;};if (D.nodeType==1&&D.childNodes[A.Start[0]]&&D.childNodes[A.Start[0]].nodeType==3){var F=D.childNodes[A.Start[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};D=F;A.Start[0]=G;};if (E.nodeType==1&&E.childNodes[A.End[0]]&&E.childNodes[A.End[0]].nodeType==3){var F=E.childNodes[A.End[0]];var G=0;while (F.previousSibling&&F.previousSibling.nodeType==3){F=F.previousSibling;G+=F.length;};E=F;A.End[0]=G;};A.Start=FCKDomTools.GetNodeAddress(D,true).concat(A.Start);A.End=FCKDomTools.GetNodeAddress(E,true).concat(A.End);return A;},MoveToBookmark2:function(A){var B=FCKDomTools.GetNodeFromAddress(this.Window.document,A.Start.slice(0,-1),true);var C=FCKDomTools.GetNodeFromAddress(this.Window.document,A.End.slice(0,-1),true);this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var D=A.Start[A.Start.length-1];var E=A.End[A.End.length-1];while (B.nodeType==3&&D>B.length){if (!B.nextSibling||B.nextSibling.nodeType!=3) break;D-=B.length;B=B.nextSibling;}while (C.nodeType==3&&E>C.length){if (!C.nextSibling||C.nextSibling.nodeType!=3) break;E-=C.length;C=C.nextSibling;};this._Range.setStart(B,D);this._Range.setEnd(C,E);this._UpdateElementInfo();},MoveToPosition:function(A,B){this.SetStart(A,B);this.Collapse(true);},SetStart:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setStart(A,0);break;case 2:D.setStart(A,A.childNodes.length);break;case 3:D.setStartBefore(A);break;case 4:D.setStartAfter(A);};if (!C) this._UpdateElementInfo();},SetEnd:function(A,B,C){var D=this._Range;if (!D) D=this._Range=this.CreateRange();switch(B){case 1:D.setEnd(A,0);break;case 2:D.setEnd(A,A.childNodes.length);break;case 3:D.setEndBefore(A);break;case 4:D.setEndAfter(A);};if (!C) this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'inline_elements':if (this._Range.startOffset==0){B=this._Range.startContainer;if (B.nodeType!=1) B=B.previousSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setStartBefore(B);if (B!=B.parentNode.firstChild) break;B=B.parentNode;}}};B=this._Range.endContainer;var C=this._Range.endOffset;if ((B.nodeType==3&&C>=B.nodeValue.length)||(B.nodeType==1&&C>=B.childNodes.length)||(B.nodeType!=1&&B.nodeType!=3)){if (B.nodeType!=1) B=B.nextSibling?null:B.parentNode;if (B){while (FCKListsLib.InlineNonEmptyElements[B.nodeName.toLowerCase()]){this._Range.setEndAfter(B);if (B!=B.parentNode.lastChild) break;B=B.parentNode;}}};break;case 'block_contents':case 'list_contents':var D=FCKListsLib.BlockBoundaries;if (A=='list_contents'||FCKConfig.EnterMode=='br') D=FCKListsLib.ListBoundaries;if (this.StartBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents') this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){var E=B.childNodes[this._Range.startOffset];if (E) B=FCKDomTools.GetPreviousSourceNode(E,true);else B=B.lastChild||B;}while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setStartBefore(B);B=B.previousSibling||B.parentNode;}};if (this.EndBlock&&FCKConfig.EnterMode!='br'&&A=='block_contents'&&this.EndBlock.nodeName.toLowerCase()!='li') this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;while (B&&(B.nodeType!=1||(B!=this.StartBlockLimit&&!D[B.nodeName.toLowerCase()]))){this._Range.setEndAfter(B);B=B.nextSibling||B.parentNode;};if (B&&B.nodeName.toLowerCase()=='br') this._Range.setEndAfter(B);};this._UpdateElementInfo();}},SplitBlock:function(A){var B=A||FCKConfig.EnterMode;if (!this._Range) this.MoveToSelection();if (this.StartBlockLimit==this.EndBlockLimit){var C=this.StartBlock;var D=this.EndBlock;var E=null;if (B!='br'){if (!C){C=this.FixBlock(true,B);D=this.EndBlock;};if (!D) D=this.FixBlock(false,B);};var F=(C!=null&&this.CheckStartOfBlock());var G=(D!=null&&this.CheckEndOfBlock());if (!this.CheckIsEmpty()) this.DeleteContents();if (C&&D&&C==D){if (G){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(D,4);D=null;}else if (F){E=new FCKElementPath(this.StartContainer);this.MoveToPosition(C,3);C=null;}else{this.SetEnd(C,2);var H=this.ExtractContents();D=C.cloneNode(false);D.removeAttribute('id',false);H.AppendTo(D);FCKDomTools.InsertAfterNode(C,D);this.MoveToPosition(C,4);if (FCKBrowserInfo.IsGecko&&!C.nodeName.IEquals(['ul','ol'])) FCKTools.AppendBogusBr(C);}};return {PreviousBlock:C,NextBlock:D,WasStartOfBlock:F,WasEndOfBlock:G,ElementPath:E};};return null;},FixBlock:function(A,B){var C=this.CreateBookmark();this.Collapse(A);this.Expand('block_contents');var D=this.Window.document.createElement(B);this.ExtractContents().AppendTo(D);FCKDomTools.TrimNode(D);if (FCKDomTools.CheckIsEmptyElement(D,function(element) { return element.getAttribute('_fck_bookmark')!='true';})&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(D);this.InsertNode(D);this.MoveToBookmark(C);return D;},Release:function(A){if (!A) this.Window=null;this.StartNode=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndNode=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;this._Cache=null;},CheckHasRange:function(){return!!this._Range;},GetTouchedStartNode:function(){var A=this._Range;var B=A.startContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.startOffset]||B;},GetTouchedEndNode:function(){var A=this._Range;var B=A.endContainer;if (A.collapsed||B.nodeType!=1) return B;return B.childNodes[A.endOffset-1]||B;}};
-FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var A=this.Window.document.selection;if (A.type!='Control'){var B=this._GetSelectionMarkerTag(true);var C=this._GetSelectionMarkerTag(false);if (!B&&!C){this._Range.setStart(this.Window.document.body,0);this._UpdateElementInfo();return;};this._Range.setStart(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);this._Range.setEnd(C.parentNode,FCKDomTools.GetIndexOf(C));C.parentNode.removeChild(C);this._UpdateElementInfo();}else{var D=A.createRange().item(0);if (D){this._Range.setStartBefore(D);this._Range.setEndAfter(D);this._UpdateElementInfo();}}};FCKDomRange.prototype.Select=function(A){if (this._Range) this.SelectBookmark(this.CreateBookmark(true),A);};FCKDomRange.prototype.SelectBookmark=function(A,B){var C=this.CheckIsCollapsed();var D;var E;var F=this.GetBookmarkNode(A,true);if (!F) return;var G;if (!C) G=this.GetBookmarkNode(A,false);var H=this.Window.document.body.createTextRange();H.moveToElementText(F);H.moveStart('character',1);if (G){var I=this.Window.document.body.createTextRange();I.moveToElementText(G);H.setEndPoint('EndToEnd',I);H.moveEnd('character',-1);}else{D=(B||!F.previousSibling||F.previousSibling.nodeName.toLowerCase()=='br')&&!F.nextSibing;E=this.Window.document.createElement('span');E.innerHTML='&#65279;';F.parentNode.insertBefore(E,F);if (D){F.parentNode.insertBefore(this.Window.document.createTextNode('\ufeff'),F);}};if (!this._Range) this._Range=this.CreateRange();this._Range.setStartBefore(F);F.parentNode.removeChild(F);if (C){if (D){H.moveStart('character',-1);H.select();this.Window.document.selection.clear();}else H.select();FCKDomTools.RemoveNode(E);}else{this._Range.setEndBefore(G);G.parentNode.removeChild(G);H.select();}};FCKDomRange.prototype._GetSelectionMarkerTag=function(A){var B=this.Window.document;var C=B.selection;var D;try{D=C.createRange();}catch (e){return null;};if (D.parentElement().document!=B) return null;D.collapse(A===true);var E='fck_dom_range_temp_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000);D.pasteHTML('<span id="'+E+'"></span>');return B.getElementById(E);};
-var FCKDomRangeIterator=function(A){this.Range=A;this.ForceBrBreak=false;this.EnforceRealBlocks=false;};FCKDomRangeIterator.CreateFromSelection=function(A){var B=new FCKDomRange(A);B.MoveToSelection();return new FCKDomRangeIterator(B);};FCKDomRangeIterator.prototype={GetNextParagraph:function(){var A;var B;var C;var D;var E;var F=this.ForceBrBreak?FCKListsLib.ListBoundaries:FCKListsLib.BlockBoundaries;if (!this._LastNode){var B=this.Range.Clone();B.Expand(this.ForceBrBreak?'list_contents':'block_contents');this._NextNode=B.GetTouchedStartNode();this._LastNode=B.GetTouchedEndNode();B=null;};var H=this._NextNode;var I=this._LastNode;this._NextNode=null;while (H){var J=false;var K=(H.nodeType!=1);var L=false;if (!K){var M=H.nodeName.toLowerCase();if (F[M]&&(!FCKBrowserInfo.IsIE||H.scopeName=='HTML')){if (M=='br') K=true;else if (!B&&H.childNodes.length==0&&M!='hr'){A=H;C=H==I;break;};if (B){B.SetEnd(H,3,true);if (M!='br') this._NextNode=FCKDomTools.GetNextSourceNode(H,true,null,I)||H;};J=true;}else{if (H.firstChild){if (!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};H=H.firstChild;continue;};K=true;}}else if (H.nodeType==3){if (/^[\r\n\t ]+$/.test(H.nodeValue)) K=false;};if (K&&!B){B=new FCKDomRange(this.Range.Window);B.SetStart(H,3,true);};C=((!J||K)&&H==I);if (B&&!J){while (!H.nextSibling&&!C){var N=H.parentNode;if (F[N.nodeName.toLowerCase()]){J=true;C=C||(N==I);break;};H=N;K=true;C=(H==I);L=true;}};if (K) B.SetEnd(H,4,true);if ((J||C)&&B){B._UpdateElementInfo();if (B.StartNode==B.EndNode&&B.StartNode.parentNode==B.StartBlockLimit&&B.StartNode.getAttribute&&B.StartNode.getAttribute('_fck_bookmark')) B=null;else break;};if (C) break;H=FCKDomTools.GetNextSourceNode(H,L,null,I);};if (!A){if (!B){this._NextNode=null;return null;};A=B.StartBlock;if (!A&&!this.EnforceRealBlocks&&B.StartBlockLimit.nodeName.IEquals('DIV','TH','TD')&&B.CheckStartOfBlock()&&B.CheckEndOfBlock()){A=B.StartBlockLimit;}else if (!A||(this.EnforceRealBlocks&&A.nodeName.toLowerCase()=='li')){A=this.Range.Window.document.createElement(FCKConfig.EnterMode=='p'?'p':'div');B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);B.InsertNode(A);D=true;E=true;}else if (A.nodeName.toLowerCase()!='li'){if (!B.CheckStartOfBlock()||!B.CheckEndOfBlock()){A=A.cloneNode(false);B.ExtractContents().AppendTo(A);FCKDomTools.TrimNode(A);var O=B.SplitBlock();D=!O.WasStartOfBlock;E=!O.WasEndOfBlock;B.InsertNode(A);}}else if (!C){this._NextNode=A==I?null:FCKDomTools.GetNextSourceNode(B.EndNode,true,null,I);return A;}};if (D){var P=A.previousSibling;if (P&&P.nodeType==1){if (P.nodeName.toLowerCase()=='br') P.parentNode.removeChild(P);else if (P.lastChild&&P.lastChild.nodeName.IEquals('br')) P.removeChild(P.lastChild);}};if (E){var Q=A.lastChild;if (Q&&Q.nodeType==1&&Q.nodeName.toLowerCase()=='br') A.removeChild(Q);};if (!this._NextNode) this._NextNode=(C||A==I)?null:FCKDomTools.GetNextSourceNode(A,true,null,I);return A;}};
-var FCKDocumentFragment=function(A){this._Document=A;this.RootNode=A.createElement('div');};FCKDocumentFragment.prototype={AppendTo:function(A){FCKDomTools.MoveChildren(this.RootNode,A);},AppendHtml:function(A){var B=this._Document.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){var B=this.RootNode;var C;while((C=B.lastChild)) FCKDomTools.InsertAfterNode(A,B.removeChild(C));}};
-var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else if (E>C.childNodes.length-1){C=C.appendChild(this._Document.createTextNode(''));G=true;}else C=C.childNodes[E].previousSibling;};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i<I.length;i++){topStart=I[i];topEnd=J[i];if (topStart!=topEnd) break;};var K,levelStartNode,levelClone,currentNode,currentSibling;if (B) K=B.RootNode;for (var j=i;j<I.length;j++){levelStartNode=I[j];if (K&&levelStartNode!=C) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==C));currentNode=levelStartNode.nextSibling;while(currentNode){if (currentNode==J[j]||currentNode==D) break;currentSibling=currentNode.nextSibling;if (A==2) K.appendChild(currentNode.cloneNode(true));else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.appendChild(currentNode);};currentNode=currentSibling;};if (K) K=levelClone;};if (B) K=B.RootNode;for (var k=i;k<J.length;k++){levelStartNode=J[k];if (A>0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)){var N=FCKDomTools.GetIndexOf(topEnd);if (G&&topEnd.parentNode==C.parentNode) N--;this.setStart(topEnd.parentNode,N);};this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);}};
-var FCKEnterKey=function(A,B,C,D){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var E=new FCKKeystrokeHandler(false);E._EnterKey=this;E.OnKeystroke=FCKEnterKey_OnKeystroke;E.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[CTRL+8,'CtrlBackspace'],[46,'Delete']]);this.TabText='';if (D>0||FCKBrowserInfo.IsSafari){while (D--) this.TabText+='\xa0';E.SetKeystrokes([9,'Tab']);};E.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();break;case 'Tab':return C.DoTab();break;case 'CtrlBackspace':return C.DoCtrlBackspace();break;}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){FCKUndo.SaveUndoStep();this._HasShift=(B===true);var C=FCKSelection.GetParentElement();var D=new FCKElementPath(C);var E=A||this.EnterMode;if (E=='br'||D.Block&&D.Block.tagName.toLowerCase()=='pre') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(E);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};var C=B.CheckIsCollapsed();if (!C){if (FCKBrowserInfo.IsIE&&this.Window.document.selection.type.toLowerCase()=="control"){var D=this.Window.document.selection.createRange();for (var i=D.length-1;i>=0;i--){var E=D.item(i);E.parentNode.removeChild(E);};return true;};return false;};if (FCKBrowserInfo.IsIE){var F=FCKDomTools.GetPreviousSourceElement(B.StartNode,true);if (F&&F.nodeName.toLowerCase()=='br'){var G=B.Clone();G.SetStart(F,4);if (G.CheckIsEmpty()){F.parentNode.removeChild(F);return true;}}};var H=B.StartBlock;var I=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&H&&I){if (!C){var J=B.CheckEndOfBlock();B.DeleteContents();if (H!=I){B.SetStart(I,1);B.SetEnd(I,1);};B.Select();A=(H==I);};if (B.CheckStartOfBlock()){var K=B.StartBlock;var L=FCKDomTools.GetPreviousSourceElement(K,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,L,K);}else if (FCKBrowserInfo.IsGeckoLike){B.Select();}};B.Release();return A;};FCKEnterKey.prototype.DoCtrlBackspace=function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(this.Window);A.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(A,this.Window.document.body)){this._FixIESelectAllBug(A);return true;};return false;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.LTrimNode(C);FCKDomTools.RTrimNode(B);A.SetStart(B,2,true);A.Collapse(true);var I=A.CreateBookmark(true);if (!C.tagName.IEquals(['TABLE'])) FCKDomTools.MoveChildren(C,B);A.SelectBookmark(I);D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){FCKUndo.SaveUndoStep();var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (FCKBrowserInfo.IsIE&&this._CheckIsAllContentsIncluded(B,this.Window.document.body)){this._FixIESelectAllBug(B);return true;};if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKTools.GetElementAscensor(C,'td');var E=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL','TR'],true);if (D){var F=FCKTools.GetElementAscensor(E,'td');if (F!=D) return true;};A=this._ExecuteBackspace(B,C,E);};B.Release();return A;};FCKEnterKey.prototype.DoTab=function(){var A=new FCKDomRange(this.Window);A.MoveToSelection();var B=A._Range.startContainer;while (B){if (B.nodeType==1){var C=B.tagName.toLowerCase();if (C=="tr"||C=="td"||C=="th"||C=="tbody"||C=="table") return false;else break;};B=B.parentNode;};if (this.TabText){A.DeleteContents();A.InsertNode(this.Window.document.createTextNode(this.TabText));A.Collapse(false);A.Select();};return true;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);var D=C.SplitBlock(A);if (D){var E=D.PreviousBlock;var F=D.NextBlock;var G=D.WasStartOfBlock;var H=D.WasEndOfBlock;if (F){if (F.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(F,F.parentNode);FCKDomTools.MoveNode(F,F.nextSibling,true);}}else if (E&&E.parentNode.nodeName.IEquals('li')){FCKDomTools.BreakParent(E,E.parentNode);C.MoveToElementEditStart(E.nextSibling);FCKDomTools.MoveNode(E,E.previousSibling);};if (!G&&!H){if (F.nodeName.IEquals('li')&&F.firstChild&&F.firstChild.nodeName.IEquals(['ul','ol'])) F.insertBefore(FCKTools.GetElementDocument(F).createTextNode('\xa0'),F.firstChild);if (F) C.MoveToElementEditStart(F);}else{if (G&&H&&E.tagName.toUpperCase()=='LI'){C.MoveToElementStart(E);this._OutdentWithSelection(E,C);C.Release();return true;};var I;if (E){var J=E.tagName.toUpperCase();if (!this._HasShift&&!(/^H[1-6]$/).test(J)){I=FCKDomTools.CloneElement(E);}}else if (F) I=FCKDomTools.CloneElement(F);if (!I) I=this.Window.document.createElement(A);var K=D.ElementPath;if (K){for (var i=0,len=K.Elements.length;i<len;i++){var L=K.Elements[i];if (L==K.Block||L==K.BlockLimit) break;if (FCKListsLib.InlineChildReqElements[L.nodeName.toLowerCase()]){L=FCKDomTools.CloneElement(L);FCKDomTools.MoveChildren(I,L);I.appendChild(L);}}};if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(I);C.InsertNode(I);if (FCKBrowserInfo.IsIE){C.MoveToElementEditStart(I);C.Select();};C.MoveToElementEditStart(G&&!H?F:I);};if (FCKBrowserInfo.IsGeckoLike){if (F){var M=this.Window.document.createElement('span');M.innerHTML='&nbsp;';C.InsertNode(M);FCKDomTools.ScrollIntoView(M,false);C.DeleteContents();}else{FCKDomTools.ScrollIntoView(F||I,false);}};C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;var G=false;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{var H;G=E.IEquals('pre');if (G) H=this.Window.document.createTextNode(FCKBrowserInfo.IsIE?'\r':'\n');else H=this.Window.document.createElement('br');B.InsertNode(H);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(H,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(H,4);else B.SetStart(H.nextSibling,1);if (!FCKBrowserInfo.IsIE){var I=null;if (FCKBrowserInfo.IsOpera) I=this.Window.document.createElement('span');else I=this.Window.document.createElement('br');H.parentNode.insertBefore(I,H.nextSibling);FCKDomTools.ScrollIntoView(I,false);I.parentNode.removeChild(I);}};B.Collapse(true);B.Select(G);};B.Release();return true;};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();};FCKEnterKey.prototype._CheckIsAllContentsIncluded=function(A,B){var C=false;var D=false;if (A.StartContainer==B||A.StartContainer==B.firstChild) C=(A._Range.startOffset==0);if (A.EndContainer==B||A.EndContainer==B.lastChild){var E=A.EndContainer.nodeType==3?A.EndContainer.length:A.EndContainer.childNodes.length;D=(A._Range.endOffset==E);};return C&&D;};FCKEnterKey.prototype._FixIESelectAllBug=function(A){var B=this.Window.document;B.body.innerHTML='';var C;if (FCKConfig.EnterMode.IEquals(['div','p'])){C=B.createElement(FCKConfig.EnterMode);B.body.appendChild(C);}else C=B.body;A.MoveToNodeContents(C);A.Collapse(true);A.Select();A.Release();};
-var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.push(A);return A;};FCKDocumentProcessor.Process=function(A){var B=FCK.IsDirty();var C,i=0;while((C=this._Items[i++])) C.ProcessDocument(A);if (!B) FCK.ResetIsDirty();};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCKTools.GetElementDocument(B).createElement('IMG');C.className=A;C.src=FCKConfig.BasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKEmbedAndObjectProcessor=(function(){var A=[];var B=function(el){var C=el.cloneNode(true);var D;var E=D=FCKDocumentProcessor_CreateFakeImage('FCK__UnknownObject',C);FCKEmbedAndObjectProcessor.RefreshView(E,el);for (var i=0;i<A.length;i++) D=A[i](el,D)||D;if (D!=E) FCKTempBin.RemoveElement(E.getAttribute('_fckrealelement'));el.parentNode.replaceChild(D,el);};var F=function(elementName,doc){var G=doc.getElementsByTagName(elementName);for (var i=G.length-1;i>=0;i--) B(G[i]);};var H=function(doc){F('object',doc);F('embed',doc);};return FCKTools.Merge(FCKDocumentProcessor.AppendNew(),{ProcessDocument:function(doc){if (FCKBrowserInfo.IsGecko) FCKTools.RunFunction(H,this,[doc]);else H(doc);},RefreshView:function(placeHolder,original){if (original.getAttribute('width')>0) placeHolder.style.width=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('width'));if (original.getAttribute('height')>0) placeHolder.style.height=FCKTools.ConvertHtmlSizeToStyle(original.getAttribute('height'));},AddCustomHandler:function(func){A.push(func);}});})();FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};FCKEmbedAndObjectProcessor.AddCustomHandler(function(A,B){if (!(A.nodeName.IEquals('embed')&&(A.type=='application/x-shockwave-flash'||/\.swf($|#|\?)/i.test(A.src)))) return;B.className='FCK__Flash';B.setAttribute('_fckflash','true',0);});if (FCKBrowserInfo.IsSafari){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByClassName?A.getElementsByClassName('Apple-style-span'):Array.prototype.filter.call(A.getElementsByTagName('span'),function(item){ return item.className=='Apple-style-span';});for (var i=B.length-1;i>=0;i--) FCKDomTools.RemoveNode(B[i],true);}};
-var FCKSelection=FCK.Selection={GetParentBlock:function(){var A=this.GetParentElement();while (A){if (FCKListsLib.BlockBoundaries[A.nodeName.toLowerCase()]) break;A=A.parentNode;};return A;},ApplyStyle:function(A){FCKStyles.ApplyStyle(new FCKStyle(A));}};
-FCKSelection.GetType=function(){try{var A=FCKSelection.GetSelection().type;if (A=='Control'||A=='Text') return A;if (this.GetSelection().createRange().parentElement) return 'Text';}catch(e){};return 'None';};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=this.GetSelection().createRange();if (A&&A.item) return this.GetSelection().createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':var A=FCKSelection.GetSelectedElement();return A?A.parentElement:null;case 'None':return null;default:return this.GetSelection().createRange().parentElement();}};FCKSelection.GetBoundaryParentElement=function(A){switch (this.GetType()){case 'Control':var B=FCKSelection.GetSelectedElement();return B?B.parentElement:null;case 'None':return null;default:var C=FCK.EditorDocument;var D=C.selection.createRange();D.collapse(A!==false);var B=D.parentElement();return FCKTools.GetElementDocument(B)==C?B:null;}};FCKSelection.SelectNode=function(A){FCK.Focus();this.GetSelection().empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=this.GetSelection().createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (this.GetSelection().type=="Control"){B=this.GetSelectedElement();}else{var C=this.GetSelection().createRange();B=C.parentElement();}while (B){if (B.nodeName.IEquals(A)) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (this.GetSelection().type=="Control"){oRange=this.GetSelection().createRange();for (i=0;i<oRange.length;i++){if (oRange(i).parentNode){B=oRange(i).parentNode;break;}}}else{oRange=this.GetSelection().createRange();B=oRange.parentElement();}while (B&&!B.nodeName.Equals(A)) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=this.GetSelection();if (A.type.toLowerCase()!="none"){A.clear();};return A;};FCKSelection.GetSelection=function(){this.Restore();return FCK.EditorDocument.selection;};FCKSelection.Save=function(A){var B=FCK.EditorDocument;if (!B) return;if (this.locked) return;this.locked=!!A;var C=B.selection;var D;if (C){try {D=C.createRange();}catch(e) {};if (D){if (D.parentElement&&FCKTools.GetElementDocument(D.parentElement())!=B) D=null;else if (D.item&&FCKTools.GetElementDocument(D.item(0))!=B) D=null;}};this.SelectionData=D;};FCKSelection._GetSelectionDocument=function(A){var B=A.createRange();if (!B) return null;else if (B.item) return FCKTools.GetElementDocument(B.item(0));else return FCKTools.GetElementDocument(B.parentElement());};FCKSelection.Restore=function(){if (this.SelectionData){FCK.IsSelectionChangeLocked=true;try{if (String(this._GetSelectionDocument(FCK.EditorDocument.selection).body.contentEditable)=='true'){FCK.IsSelectionChangeLocked=false;return;};this.SelectionData.select();}catch (e) {};FCK.IsSelectionChangeLocked=false;}};FCKSelection.Release=function(){this.locked=false;delete this.SelectionData;};
-var FCKTableHandler={};FCKTableHandler.InsertRow=function(A){var B=FCKSelection.MoveToAncestorNode('TR');if (!B) return;var C=B.cloneNode(true);B.parentNode.insertBefore(C,B);FCKTableHandler.ClearRow(A?C:B);};FCKTableHandler.DeleteRows=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();var C=[];for (var i=0;i<B.length;i++){var D=B[i].parentNode;C[D.rowIndex]=D;};for (var i=C.length;i>=0;i--){if (C[i]) FCKTableHandler.DeleteRows(C[i]);};return;};var E=FCKTools.GetElementAscensor(A,'TABLE');if (E.rows.length==1){FCKTableHandler.DeleteTable(E);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode('TABLE');};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();if (A.parentNode.childNodes.length==1) A.parentNode.parentNode.removeChild(A.parentNode);else A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(A){var B=null;var C=this.GetSelectedCells();if (C&&C.length) B=C[A?0:(C.length-1)];if (!B) return;var D=FCKTools.GetElementAscensor(B,'TABLE');var E=B.cellIndex;for (var i=0;i<D.rows.length;i++){var F=D.rows[i];if (F.cells.length<(E+1)) continue;B=F.cells[E].cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B);var G=F.cells[E];F.insertBefore(B,(A?G:G.nextSibling));}};FCKTableHandler.DeleteColumns=function(A){if (!A){var B=FCKTableHandler.GetSelectedCells();for (var i=B.length;i>=0;i--){if (B[i]) FCKTableHandler.DeleteColumns(B[i]);};return;};if (!A) return;var C=FCKTools.GetElementAscensor(A,'TABLE');var D=A.cellIndex;for (var i=C.rows.length-1;i>=0;i--){var E=C.rows[i];if (D==0&&E.cells.length==1){FCKTableHandler.DeleteRows(E);continue;};if (E.cells[D]) E.removeChild(E.cells[D]);}};FCKTableHandler.InsertCell=function(A,B){var C=null;var D=this.GetSelectedCells();if (D&&D.length) C=D[B?0:(D.length-1)];if (!C) return null;var E=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(E);if (!B&&C.cellIndex==C.parentNode.cells.length-1) C.parentNode.appendChild(E);else C.parentNode.insertBefore(E,B?C:C.nextSibling);return E;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(A.parentNode);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler._MarkCells=function(A,B){for (var i=0;i<A.length;i++) A[i][B]=true;};FCKTableHandler._UnmarkCells=function(A,B){for (var i=0;i<A.length;i++){FCKDomTools.ClearElementJSProperty(A[i],B);}};FCKTableHandler._ReplaceCellsByMarker=function(A,B,C){for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){if (A[i][j][B]) A[i][j]=C;}}};FCKTableHandler._GetMarkerGeometry=function(A,B,C,D){var E=0;var F=0;var G=0;var H=0;for (var i=C;A[B][i]&&A[B][i][D];i++) E++;for (var i=C-1;A[B][i]&&A[B][i][D];i--){E++;G++;};for (var i=B;A[i]&&A[i][C]&&A[i][C][D];i++) F++;for (var i=B-1;A[i]&&A[i][C]&&A[i][C][D];i--){F++;H++;};return { 'width':E,'height':F,'x':G,'y':H };};FCKTableHandler.CheckIsSelectionRectangular=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<1) return false;for (var i=0;i<A.length;i++){if (A[i].parentNode.parentNode!=A[0].parentNode.parentNode) return false;};this._MarkCells(A,'_CellSelected');var B=this._CreateTableMap(A[0]);var C=A[0].parentNode.rowIndex;var D=this._GetCellIndexSpan(B,C,A[0]);var E=this._GetMarkerGeometry(B,C,D,'_CellSelected');var F=D-E.x;var G=C-E.y;if (E.width>=E.height){for (D=F;D<F+E.width;D++){C=G+(D-F) % E.height;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}}else{for (C=G;C<G+E.height;C++){D=F+(C-G) % E.width;if (!B[C]||!B[C][D]){this._UnmarkCells(A,'_CellSelected');return false;};var g=this._GetMarkerGeometry(B,C,D,'_CellSelected');if (g.width!=E.width||g.height!=E.height){this._UnmarkCells(A,'_CellSelected');return false;}}};this._UnmarkCells(A,'_CellSelected');return true;};FCKTableHandler.MergeCells=function(){var A=this.GetSelectedCells();if (A.length<2) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);this._MarkCells(A,'_SelectedCells');var F=this._GetMarkerGeometry(C,D,E,'_SelectedCells');var G=E-F.x;var H=D-F.y;var I=FCKTools.GetElementDocument(B).createDocumentFragment();for (var i=0;i<F.height;i++){var J=0;for (var j=0;j<F.width;j++){var K=C[H+i][G+j];while (K.childNodes.length>0){var L=K.removeChild(K.firstChild);if (L.nodeType!=1||(L.getAttribute('type',2)!='_moz'&&L.getAttribute('_moz_dirty')!=null)){I.appendChild(L);J++;}}};if (J>0) I.appendChild(FCK.EditorDocument.createElement('br'));};this._ReplaceCellsByMarker(C,'_SelectedCells',B);this._UnmarkCells(A,'_SelectedCells');this._InstallTableMap(C,B.parentNode.parentNode.parentNode);B.appendChild(I);if (FCKBrowserInfo.IsGeckoLike&&(!B.firstChild)) FCKTools.AppendBogusBr(B);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeRight=function(){var A=this.GetMergeRightTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCK.EditorDocument.createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));D.parentNode.removeChild(D);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.MergeDown=function(){var A=this.GetMergeDownTarget();if (A==null) return;var B=A.refCell;var C=A.tableMap;var D=A.nextCell;var E=FCKTools.GetElementDocument(B).createDocumentFragment();while (D&&D.childNodes&&D.childNodes.length>0) E.appendChild(D.removeChild(D.firstChild));if (E.firstChild) E.insertBefore(FCK.EditorDocument.createElement('br'),E.firstChild);B.appendChild(E);this._MarkCells([D],'_Replace');this._ReplaceCellsByMarker(C,'_Replace',B);this._InstallTableMap(C,B.parentNode.parentNode.parentNode);this._MoveCaretToCell(B,false);};FCKTableHandler.HorizontalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;if (F>1){var G=Math.ceil(F/2);var H=FCK.EditorDocument.createElement(B.nodeName);if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(H);var I=E+G;var J=E+F;var K=isNaN(B.rowSpan)?1:B.rowSpan;for (var r=D;r<D+K;r++){for (var i=I;i<J;i++) C[r][i]=H;}}else{var L=[];for (var i=0;i<C.length;i++){var M=C[i].slice(0,E);if (C[i].length<=E){L.push(M);continue;};if (C[i][E]==B){M.push(B);M.push(FCK.EditorDocument.createElement(B.nodeName));if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(M[M.length-1]);}else{M.push(C[i][E]);M.push(C[i][E]);};for (var j=E+1;j<C[i].length;j++) M.push(C[i][j]);L.push(M);};C=L;};this._InstallTableMap(C,B.parentNode.parentNode.parentNode);};FCKTableHandler.VerticalSplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=FCKTableHandler._GetCellIndexSpan(C,D,B);var F=isNaN(B.colSpan)?1:B.colSpan;var G=B.rowSpan;if (isNaN(G)) G=1;if (G>1){B.rowSpan=Math.ceil(G/2);var H=D+Math.ceil(G/2);var I=C[H];var J=null;for (var i=E+1;i<I.length;i++){if (I[i].parentNode.rowIndex==H){J=I[i];break;}};var K=FCK.EditorDocument.createElement(B.nodeName);K.rowSpan=Math.floor(G/2);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);B.parentNode.parentNode.parentNode.rows[H].insertBefore(K,J);}else{var L=B.parentNode.sectionRowIndex+1;var M=FCK.EditorDocument.createElement('tr');var N=B.parentNode.parentNode;if (N.rows.length>L) N.insertBefore(M,N.rows[L]);else N.appendChild(M);for (var i=0;i<C[D].length;){var O=C[D][i].colSpan;if (isNaN(O)||O<1) O=1;if (i==E){i+=O;continue;};var P=C[D][i].rowSpan;if (isNaN(P)) P=1;C[D][i].rowSpan=P+1;i+=O;};var K=FCK.EditorDocument.createElement(B.nodeName);if (F>1) K.colSpan=F;if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(K);M.appendChild(K);}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCellLocation=function(A,B){for (var i=0;i<A.length;i++){for (var c=0;c<A[i].length;c++){if (A[i][c]==B) return [i,c];}};return null;};FCKTableHandler._CreateTableMap=function(A){var B=(A.nodeName=='TABLE'?A:A.parentNode.parentNode.parentNode);var C=B.rows;var r=-1;var D=[];for (var i=0;i<C.length;i++){r++;if (!D[r]) D[r]=[];var c=-1;for (var j=0;j<C[i].cells.length;j++){var E=C[i].cells[j];c++;while (D[r][c]) c++;var F=isNaN(E.colSpan)?1:E.colSpan;var G=isNaN(E.rowSpan)?1:E.rowSpan;for (var H=0;H<G;H++){if (!D[r+H]) D[r+H]=[];for (var I=0;I<F;I++){D[r+H][c+I]=C[i].cells[j];}};c+=F-1;}};return D;};FCKTableHandler._InstallTableMap=function(A,B){var C=FCKBrowserInfo.IsIE?"_fckrowspan":"rowSpan";for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (D.parentNode) D.parentNode.removeChild(D);D.colSpan=D[C]=1;}};var E=0;for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];if (!D) continue;if (j>E) E=j;if (D._colScanned===true) continue;if (A[i][j-1]==D) D.colSpan++;if (A[i][j+1]!=D) D._colScanned=true;}};for (var i=0;i<=E;i++){for (var j=0;j<A.length;j++){if (!A[j]) continue;var D=A[j][i];if (!D||D._rowScanned===true) continue;if (A[j-1]&&A[j-1][i]==D) D[C]++;if (!A[j+1]||A[j+1][i]!=D) D._rowScanned=true;}};for (var i=0;i<A.length;i++){for (var j=0;j<A[i].length;j++){var D=A[i][j];FCKDomTools.ClearElementJSProperty(D,'_colScanned');FCKDomTools.ClearElementJSProperty(D,'_rowScanned');}};for (var i=0;i<A.length;i++){var I=FCK.EditorDocument.createElement('tr');for (var j=0;j<A[i].length;){var D=A[i][j];if (A[i-1]&&A[i-1][j]==D){j+=D.colSpan;continue;};I.appendChild(D);if (C!='rowSpan'){D.rowSpan=D[C];D.removeAttribute(C);};j+=D.colSpan;if (D.colSpan==1) D.removeAttribute('colspan');if (D.rowSpan==1) D.removeAttribute('rowspan');};if (FCKBrowserInfo.IsIE){B.rows[i].replaceNode(I);}else{B.rows[i].innerHTML='';FCKDomTools.MoveChildren(I,B.rows[i]);}}};FCKTableHandler._MoveCaretToCell=function (A,B){var C=new FCKDomRange(FCK.EditorWindow);C.MoveToNodeContents(A);C.Collapse(B);C.Select();};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){B[i].innerHTML='';if (FCKBrowserInfo.IsGeckoLike) FCKTools.AppendBogusBr(B[i]);}};FCKTableHandler.GetMergeRightTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=E+(isNaN(B.colSpan)?1:B.colSpan);var G=C[D][F];if (!G) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,D,F,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.height!=I.height||H.y!=I.y) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};FCKTableHandler.GetMergeDownTarget=function(){var A=this.GetSelectedCells();if (A.length!=1) return null;var B=A[0];var C=this._CreateTableMap(B);var D=B.parentNode.rowIndex;var E=this._GetCellIndexSpan(C,D,B);var F=D+(isNaN(B.rowSpan)?1:B.rowSpan);if (!C[F]) return null;var G=C[F][E];if (!G) return null;if (B.parentNode.parentNode!=G.parentNode.parentNode) return null;this._MarkCells([B,G],'_SizeTest');var H=this._GetMarkerGeometry(C,D,E,'_SizeTest');var I=this._GetMarkerGeometry(C,F,E,'_SizeTest');this._UnmarkCells([B,G],'_SizeTest');if (H.width!=I.width||H.x!=I.x) return null;return { 'refCell':B,'nextCell':G,'tableMap':C };};
-FCKTableHandler.GetSelectedCells=function(){if (FCKSelection.GetType()=='Control'){var A=FCKSelection.MoveToAncestorNode(['TD','TH']);return A?[A]:[];};var B=[];var C=FCKSelection.GetSelection().createRange();var D=FCKSelection.GetParentElement();if (D&&D.tagName.Equals('TD','TH')) B[0]=D;else{D=FCKSelection.MoveToAncestorNode('TABLE');if (D){for (var i=0;i<D.cells.length;i++){var E=FCK.EditorDocument.body.createTextRange();E.moveToElementText(D.cells[i]);if (C.inRange(E)||(C.compareEndPoints('StartToStart',E)>=0&&C.compareEndPoints('StartToEnd',E)<=0)||(C.compareEndPoints('EndToStart',E)>=0&&C.compareEndPoints('EndToEnd',E)<=0)){B[B.length]=D.cells[i];}}}};return B;};
-var FCKXml=function(){this.Error=false;};FCKXml.GetAttribute=function(A,B,C){var D=A.attributes.getNamedItem(B);return D?D.value:C;};FCKXml.TransformToObject=function(A){if (!A) return null;var B={};var C=A.attributes;for (var i=0;i<C.length;i++){var D=C[i];B[D.name]=D.value;};var E=A.childNodes;for (i=0;i<E.length;i++){var F=E[i];if (F.nodeType==1){var G='$'+F.nodeName;var H=B[G];if (!H) H=B[G]=[];H.push(this.TransformToObject(F));}};return B;};
-FCKXml.prototype={LoadUrl:function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304||(B.status==0&&B.readyState==4)){this.DOMDocument=B.responseXML;if (!this.DOMDocument||this.DOMDocument.firstChild==null){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}}else{this.DOMDocument=null;};if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+B.status+'\r\nResponse text:\r\n'+B.responseText);}},SelectNodes:function(A,B){if (this.Error) return [];if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);},SelectSingleNode:function(A,B){if (this.Error) return null;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}};
-var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState(this.Name);};
-var FCKStyleCommand=function(){};FCKStyleCommand.prototype={Name:'Style',Execute:function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) FCK.Styles.RemoveStyle(B.Style);else FCK.Styles.ApplyStyle(B.Style);FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorDocument) return -1;if (FCKSelection.GetType()=='Control'){var A=FCKSelection.GetSelectedElement();if (!A||!FCKStyles.CheckHasObjectStyle(A.nodeName.toLowerCase())) return -1;};return 0;}};
-var FCKDialogCommand=function(A,B,C,D,E,F,G,H){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.CustomValue=H;this.GetStateFunction=F;this.GetStateParam=G;this.Resizable=false;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height,this.CustomValue,null,this.Resizable);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK.EditMode==0?0:-1;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return 0;};var FCKFormatBlockCommand=function(){};FCKFormatBlockCommand.prototype={Name:'FormatBlock',Execute:FCKStyleCommand.prototype.Execute,GetState:function(){return FCK.EditorDocument?0:-1;}};var FCKFontNameCommand=function(){};FCKFontNameCommand.prototype={Name:'FontName',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKFontSizeCommand=function(){};FCKFontSizeCommand.prototype={Name:'FontSize',Execute:FCKStyleCommand.prototype.Execute,GetState:FCKFormatBlockCommand.prototype.GetState};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetData('');FCKUndo.Typing=true;FCK.Focus();};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){FCKUndo.Undo();};FCKUndoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckUndoState()?0:-1);};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){FCKUndo.Redo();};FCKRedoCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return (FCKUndo.CheckRedoState()?0:-1);};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.SplitBlock();B.InsertNode(A);FCK.Events.FireEvent('OnSelectionChange');};FCKPageBreakCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (FCKBrowserInfo.IsGeckoLike){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKVisitLinkCommand=function(){this.Name='VisitLink';};FCKVisitLinkCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCK.GetNamedCommandState('Unlink');if (A==0){var B=FCKSelection.MoveToAncestorNode('A');if (!B.href) A=-1;};return A;},Execute:function(){var A=FCKSelection.MoveToAncestorNode('A');var B=A.getAttribute('_fcksavedurl')||A.getAttribute('href',2);if (!/:\/\//.test(B)){var C=FCKConfig.BaseHref;var D=FCK.GetInstanceObject('parent');if (!C){C=D.document.location.href;C=C.substring(0,C.lastIndexOf('/')+1);};if (/^\//.test(B)){try{C=C.match(/^.*:\/\/+[^\/]+/)[0];}catch (e){C=D.document.location.protocol+'://'+D.parent.document.location.host;}};B=C+B;};if (!window.open(B,'_blank')) alert(FCKLang.VisitLinkBlocked);}};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}};var FCKRuleCommand=function(){this.Name='Rule';};FCKRuleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();FCK.InsertElement('hr');},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('InsertHorizontalRule');}};var FCKCutCopyCommand=function(A){this.Name=A?'Cut':'Copy';};FCKCutCopyCommand.prototype={Execute:function(){var A=false;if (FCKBrowserInfo.IsIE){var B=function(){A=true;};var C='on'+this.Name.toLowerCase();FCK.EditorDocument.body.attachEvent(C,B);FCK.ExecuteNamedCommand(this.Name);FCK.EditorDocument.body.detachEvent(C,B);}else{try{FCK.ExecuteNamedCommand(this.Name);A=true;}catch(e){}};if (!A) alert(FCKLang['PasteError'+this.Name]);},GetState:function(){return FCK.EditMode!=0?-1:FCK.GetNamedCommandState('Cut');}};var FCKAnchorDeleteCommand=function(){this.Name='AnchorDelete';};FCKAnchorDeleteCommand.prototype={Execute:function(){if (FCK.Selection.GetType()=='Control'){FCK.Selection.Delete();}else{var A=FCK.Selection.GetSelectedElement();if (A){if (A.tagName=='IMG'&&A.getAttribute('_fckanchor')) oAnchor=FCK.GetRealElement(A);else A=null;};if (!A){oAnchor=FCK.Selection.MoveToAncestorNode('A');if (oAnchor) FCK.Selection.SelectNode(oAnchor);};if (oAnchor.href.length!=0){oAnchor.removeAttribute('name');if (FCKBrowserInfo.IsIE) oAnchor.className=oAnchor.className.replace(FCKRegexLib.FCK_Class,'');return;};if (A){A.parentNode.removeChild(A);return;};if (oAnchor.innerHTML.length==0){oAnchor.parentNode.removeChild(oAnchor);return;};FCKTools.RemoveOuterTags(oAnchor);};if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);},GetState:function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Unlink');}};var FCKDeleteDivCommand=function(){};FCKDeleteDivCommand.prototype={GetState:function(){if (FCK.EditMode!=0) return -1;var A=FCKSelection.GetParentElement();var B=new FCKElementPath(A);return B.BlockLimit&&B.BlockLimit.nodeName.IEquals('div')?0:-1;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCKDomTools.GetSelectedDivContainers();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();for (var i=0;i<A.length;i++) FCKDomTools.RemoveNode(A[i],true);B.MoveToBookmark(C);B.Select();}};var FCKNbsp=function(){this.Name='Non Breaking Space';};FCKNbsp.prototype={Execute:function(){FCK.InsertHtml('&nbsp;');},GetState:function(){return (FCK.EditMode!=0?-1:0);}};
-var FCKShowBlockCommand=function(A,B){this.Name=A;if (B!=undefined) this._SavedState=B;else this._SavedState=null;};FCKShowBlockCommand.prototype.Execute=function(){var A=this.GetState();if (A==-1) return;var B=FCK.EditorDocument.body;if (A==1) B.className=B.className.replace(/(^| )FCK__ShowBlocks/g,'');else B.className+=' FCK__ShowBlocks';if (FCKBrowserInfo.IsIE){try{FCK.EditorDocument.selection.createRange().select();}catch (e){}}else{var C=FCK.EditorWindow.getSelection().focusNode;if (C){if (C.nodeType!=1) C=C.parentNode;FCKDomTools.ScrollIntoView(C,false);}};FCK.Events.FireEvent('OnSelectionChange');};FCKShowBlockCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;if (!FCK.EditorDocument) return 0;if (/FCK__ShowBlocks(?:\s|$)/.test(FCK.EditorDocument.body.className)) return 1;return 0;};FCKShowBlockCommand.prototype.SaveState=function(){this._SavedState=this.GetState();};FCKShowBlockCommand.prototype.RestoreState=function(){if (this._SavedState!=null&&this.GetState()!=this._SavedState) this.Execute();};
-var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=true;};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;case 'WSC':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','wsc/w.html',530,480);}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return this.IsEnabled?0:-1;};
-var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCK.ToolbarSet.ToolbarItems.GetItem(this.Name).RegisterPanel(this._Panel);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){FCKUndo.SaveUndoStep();var B=FCKStyles.GetStyle('_FCK_'+(this.Type=='ForeColor'?'Color':'BackColor'));if (!A||A.length==0) FCK.Styles.RemoveStyle(B);else{B.SetVariable('Color',A);FCKStyles.ApplyStyle(B);};FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');};FCKTextColorCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return 0;};function FCKTextColorCommand_OnMouseOver(){this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut(){this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(A,B,C){this.className='ColorDeselected';B.SetColor(C);B._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(A,B){this.className='ColorDeselected';B.SetColor('');B._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(A,B){this.className='ColorDeselected';B._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',410,320,FCKTools.Bind(B,B.SetColor));};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';FCKTools.AddEventListenerEx(C,'mouseover',FCKTextColorCommand_OnMouseOver);FCKTools.AddEventListenerEx(C,'mouseout',FCKTextColorCommand_OnMouseOut);return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\n <tr>\n <td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\n <td nowrap width="100%" align="center">'+FCKLang.ColorAutomatic+'</td>\n </tr>\n </table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8;i++,H++){if (H<G.length){var J=G[H].split('/');var K='#'+J[0];var L=J[1]||K;};C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: '+K+'"></div></div>';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';};
-var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');};
-var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');};
-var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;};
-var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H,oEditorScrollPos;if (FCK.EditMode==0){H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();oEditorScrollPos=FCKTools.GetScrollPosition(FCK.EditorWindow);}else{var I=FCK.EditingArea.Textarea;H=!FCKBrowserInfo.IsIE&&[I.selectionStart,I.selectionEnd];oEditorScrollPos=[I.scrollLeft,I.scrollTop];};if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();if (FCK.EditMode==0){H.Select();FCK.EditorWindow.scrollTo(oEditorScrollPos.X,oEditorScrollPos.Y);}else{if (!FCKBrowserInfo.IsIE){I.selectionStart=H[0];I.selectionEnd=H[1];};I.scrollLeft=oEditorScrollPos[0];I.scrollTop=oEditorScrollPos[1];}};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';};
-var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i<T.rangeCount;i++) K.push(T.getRangeAt(i));};if (K.length<1) J=false;else{var U=FCKW3CRange.CreateFromRange(A,K.shift());B._Range=U;B._UpdateElementInfo();if (B.StartNode.nodeName.IEquals('td')) B.SetStart(B.StartNode,1);if (B.EndNode.nodeName.IEquals('td')) B.SetEnd(B.EndNode,2);H=new FCKDomRangeIterator(B);H.ForceBrBreak=(C==0);}}};var W=[];while (F.length>0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;i<W.length;i++){var M=W[i];var Z=false;var a=M;while (!Z){a=a.nextSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.firstChild) M.appendChild(a.removeChild(a.firstChild));};Z=false;a=M;while (!Z){a=a.previousSibling;if (a&&a.nodeType==3&&a.nodeValue.search(/^[\n\r\t ]*$/)==0) continue;Z=true;};if (a&&a.nodeName.IEquals(this.TagName)){a.parentNode.removeChild(a);while (a.lastChild) M.insertBefore(a.removeChild(a.lastChild),M.firstChild);}};FCKDomTools.ClearAllMarkers(G);B.MoveToBookmark(E);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},_ChangeListType:function(A,B,C){var D=FCKDomTools.ListToArray(A.root,B);var E=[];for (var i=0;i<A.contents.length;i++){var F=A.contents[i];F=FCKTools.GetElementAscensor(F,'li');if (!F||F._FCK_ListItem_Processed) continue;E.push(F);FCKDomTools.SetElementMarker(B,F,'_FCK_ListItem_Processed',true);};var G=FCKTools.GetElementDocument(A.root).createElement(this.TagName);for (var i=0;i<E.length;i++){var H=E[i]._FCK_ListArray_Index;D[H].parent=G;};var I=FCKDomTools.ArrayToList(D,B);for (var i=0;i<I.listNode.childNodes.length;i++){if (I.listNode.childNodes[i].nodeName.IEquals(this.TagName)) C.push(I.listNode.childNodes[i]);};A.root.parentNode.replaceChild(I.listNode,A.root);},_CreateList:function(A,B){var C=A.contents;var D=FCKTools.GetElementDocument(A.root);var E=[];if (C.length==1&&C[0]==A.root){var F=D.createElement('div');while (C[0].firstChild) F.appendChild(C[0].removeChild(C[0].firstChild));C[0].appendChild(F);C[0]=F;};var G=A.contents[0].parentNode;for (var i=0;i<C.length;i++) G=FCKDomTools.GetCommonParents(G,C[i].parentNode).pop();for (var i=0;i<C.length;i++){var H=C[i];while (H.parentNode){if (H.parentNode==G){E.push(H);break;};H=H.parentNode;}};if (E.length<1) return;var I=E[E.length-1].nextSibling;var J=D.createElement(this.TagName);B.push(J);while (E.length){var K=E.shift();var L=D.createDocumentFragment();while (K.firstChild) L.appendChild(K.removeChild(K.firstChild));K.parentNode.removeChild(K);var M=D.createElement('li');M.appendChild(L);J.appendChild(M);};G.insertBefore(J,I);},_RemoveList:function(A,B){var C=FCKDomTools.ListToArray(A.root,B);var D=[];for (var i=0;i<A.contents.length;i++){var E=A.contents[i];E=FCKTools.GetElementAscensor(E,'li');if (!E||E._FCK_ListItem_Processed) continue;D.push(E);FCKDomTools.SetElementMarker(B,E,'_FCK_ListItem_Processed',true);};var F=null;for (var i=0;i<D.length;i++){var G=D[i]._FCK_ListArray_Index;C[G].indent=-1;F=G;};for (var i=F+1;i<C.length;i++){if (C[i].indent>C[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}};
-var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}};
-var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i<FCKConfig.IndentClasses.length;i++) this._IndentClassMap[FCKConfig.IndentClasses[i]]=i+1;this._ClassNameRegex=new RegExp('(?:^|\\s+)('+FCKConfig.IndentClasses.join('|')+')(?=$|\\s)');}else this._UseIndentClasses=false;};FCKIndentCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=A.CreateBookmark();var C=FCKDomTools.GetCommonParentNode(A.StartNode||A.StartContainer,A.EndNode||A.EndContainer,['ul','ol']);if (C) this._IndentList(A,C);else this._IndentBlock(A);A.MoveToBookmark(B);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;if (FCKIndentCommand._UseIndentClasses==undefined) FCKIndentCommand._InitIndentModeParameters();var A=FCKSelection.GetBoundaryParentElement(true);var B=FCKSelection.GetBoundaryParentElement(false);var C=FCKDomTools.GetCommonParentNode(A,B,['ul','ol']);if (C){if (this.Name.IEquals('outdent')) return 0;var D=FCKTools.GetElementAscensor(A,'li');if (!D||!D.previousSibling) return -1;return 0;};if (!FCKIndentCommand._UseIndentClasses&&this.Name.IEquals('indent')) return 0;var E=new FCKElementPath(A);var F=E.Block||E.BlockLimit;if (!F) return -1;if (FCKIndentCommand._UseIndentClasses){var G=F.className.match(FCKIndentCommand._ClassNameRegex);var H=0;if (G!=null){G=G[1];H=FCKIndentCommand._IndentClassMap[G];};if ((this.Name=='outdent'&&H==0)||(this.Name=='indent'&&H==FCKConfig.IndentClasses.length)) return -1;return 0;}else{var I=parseInt(F.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;if (I<=0) return -1;return 0;}},_IndentBlock:function(A){var B=new FCKDomRangeIterator(A);B.EnforceRealBlocks=true;A.Expand('block_contents');var C=FCKDomTools.GetCommonParents(A.StartContainer,A.EndContainer);var D=C[C.length-1];var E;while ((E=B.GetNextParagraph())){if (!(E==D||E.parentNode==D)) continue;if (FCKIndentCommand._UseIndentClasses){var F=E.className.match(FCKIndentCommand._ClassNameRegex);var G=0;if (F!=null){F=F[1];G=FCKIndentCommand._IndentClassMap[F];};if (this.Name.IEquals('outdent')) G--;else if (this.Name.IEquals('indent')) G++;G=Math.min(G,FCKConfig.IndentClasses.length);G=Math.max(G,0);var H=E.className.replace(FCKIndentCommand._ClassNameRegex,'');if (G<1) E.className=H;else E.className=(H.length>0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;i<H.length;i++){if (H[i].nodeName.IEquals(['ul','ol'])){B=H[i];break;}};var I=this.Name.IEquals('indent')?1:-1;var J=F[0];var K=F[F.length-1];var L={};var M=FCKDomTools.ListToArray(B,L);var N=M[K._FCK_ListArray_Index].indent;for (var i=J._FCK_ListArray_Index;i<=K._FCK_ListArray_Index;i++) M[i].indent+=I;for (var i=K._FCK_ListArray_Index+1;i<M.length&&M[i].indent>N;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}};
-var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i<I.length;i++){H=I[i];J=FCKDomTools.GetCommonParents(H.parentNode,J).pop();}while (J.nodeName.IEquals('table','tbody','tr','ol','ul')) J=J.parentNode;var L=null;while (I.length>0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];var P={};while ((H=G.GetNextParagraph())){var Q=null;var R=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){Q=H.parentNode;R=H;break;};H=H.parentNode;};if (Q&&R&&!R._fckblockquotemoveout){O.push(R);FCKDomTools.SetElementMarker(P,R,'_fckblockquotemoveout',true);}};FCKDomTools.ClearAllMarkers(P);var S=[];var T=[],P={};var U=function(N){for (var i=0;i<N.childNodes.length;i++){if (FCKListsLib.BlockElements[N.childNodes[i].nodeName.toLowerCase()]) return false;};return true;};while (O.length>0){var W=O.shift();var N=W.parentNode;if (W==W.parentNode.firstChild) N.parentNode.insertBefore(N.removeChild(W),N);else if (W==W.parentNode.lastChild) N.parentNode.insertBefore(N.removeChild(W),N.nextSibling);else FCKDomTools.BreakParent(W,W.parentNode,B);if (!N._fckbqprocessed){T.push(N);FCKDomTools.SetElementMarker(P,N,'_fckbqprocessed',true);};S.push(W);};for (var i=T.length-1;i>=0;i--){var N=T[i];if (U(N)) FCKDomTools.RemoveNode(N);};FCKDomTools.ClearAllMarkers(P);if (FCKConfig.EnterMode.IEquals('br')){while (S.length){var W=S.shift();var a=true;if (W.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(W).createDocumentFragment();var c=a&&W.previousSibling&&!FCKListsLib.BlockBoundaries[W.previousSibling.nodeName.toLowerCase()];if (a&&c) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));var d=W.nextSibling&&!FCKListsLib.BlockBoundaries[W.nextSibling.nodeName.toLowerCase()];while (W.firstChild) M.appendChild(W.removeChild(W.firstChild));if (d) M.appendChild(FCKTools.GetElementDocument(W).createElement('br'));W.parentNode.replaceChild(M,W);a=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i<A.Elements.length;i++){if (A.Elements[i].nodeName.IEquals('blockquote')) return 1;};return 0;}};
-var FCKCoreStyleCommand=function(A){this.Name='CoreStyle';this.StyleName='_FCK_'+A;this.IsActive=false;FCKStyles.AttachStyleStateChange(this.StyleName,this._OnStyleStateChange,this);};FCKCoreStyleCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();if (this.IsActive) FCKStyles.RemoveStyle(this.StyleName);else FCKStyles.ApplyStyle(this.StyleName);FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0) return -1;return this.IsActive?1:0;},_OnStyleStateChange:function(A,B){this.IsActive=B;}};
-var FCKRemoveFormatCommand=function(){this.Name='RemoveFormat';};FCKRemoveFormatCommand.prototype={Execute:function(){FCKStyles.RemoveAll();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){return FCK.EditorWindow?0:-1;}};
-var FCKCommands=FCK.Commands={};FCKCommands.LoadedCommands={};FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'Bold':case 'Italic':case 'Underline':case 'StrikeThrough':case 'Subscript':case 'Superscript':B=new FCKCoreStyleCommand(A);break;case 'RemoveFormat':B=new FCKRemoveFormatCommand();break;case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,380,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,300);break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'VisitLink':B=new FCKVisitLinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,160);break;case 'AnchorDelete':B=new FCKAnchorDeleteCommand();break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html?UL',370,160);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html?OL',370,160);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',420,330,function(){ return 0;});break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Find');break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgFindAndReplaceTitle,'dialog/fck_replace.html',340,230,null,null,'Replace');break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,390);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,390);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,290);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',480,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',480,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',550,240);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'Rule':B=new FCKRuleCommand();break;case 'Nbsp':B=new FCKNbsp();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'Paste':B=new FCKPasteCommand();break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'JustifyLeft':B=new FCKJustifyCommand('left');break;case 'JustifyCenter':B=new FCKJustifyCommand('center');break;case 'JustifyRight':B=new FCKJustifyCommand('right');break;case 'JustifyFull':B=new FCKJustifyCommand('justify');break;case 'Indent':B=new FCKIndentCommand('indent',FCKConfig.IndentLength);break;case 'Outdent':B=new FCKIndentCommand('outdent',FCKConfig.IndentLength*-1);break;case 'Blockquote':B=new FCKBlockQuoteCommand();break;case 'CreateDiv':B=new FCKDialogCommand('CreateDiv',FCKLang.CreateDiv,'dialog/fck_div.html',380,210,null,null,true);break;case 'EditDiv':B=new FCKDialogCommand('EditDiv',FCKLang.EditDiv,'dialog/fck_div.html',380,210,null,null,false);break;case 'DeleteDiv':B=new FCKDeleteDivCommand();break;case 'TableInsertRowAfter':B=new FCKTableCommand('TableInsertRowAfter');break;case 'TableInsertRowBefore':B=new FCKTableCommand('TableInsertRowBefore');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumnAfter':B=new FCKTableCommand('TableInsertColumnAfter');break;case 'TableInsertColumnBefore':B=new FCKTableCommand('TableInsertColumnBefore');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCellAfter':B=new FCKTableCommand('TableInsertCellAfter');break;case 'TableInsertCellBefore':B=new FCKTableCommand('TableInsertCellBefore');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableMergeRight':B=new FCKTableCommand('TableMergeRight');break;case 'TableMergeDown':B=new FCKTableCommand('TableMergeDown');break;case 'TableHorizontalSplitCell':B=new FCKTableCommand('TableHorizontalSplitCell');break;case 'TableVerticalSplitCell':B=new FCKTableCommand('TableVerticalSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,210);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,200);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,200);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,210);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,210);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,190);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,210);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,340);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,390);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Copy':B=new FCKCutCopyCommand(false);break;case 'Cut':B=new FCKCutCopyCommand(true);break;case 'SelectAll':B=new FCKSelectAllCommand();break;case 'InsertOrderedList':B=new FCKListCommand('insertorderedlist','ol');break;case 'InsertUnorderedList':B=new FCKListCommand('insertunorderedlist','ul');break;case 'ShowBlocks':B=new FCKShowBlockCommand('ShowBlocks',FCKConfig.StartupShowBlocks?1:0);break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?0:-1;};FCKCommands.GetBooleanState=function(A){return A?-1:0;};
-var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&&!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');FCKTools.ResetStyles(D);D.src='javascript:void(0)';D.allowTransparency=true;D.frameBorder='0';D.scrolling='no';D.style.width=D.style.height='0px';FCKDomTools.SetElementStyles(D,{position:'absolute',zIndex:FCKConfig.FloatingPanelsZIndex});this._Window.document.body.appendChild(D);var E=D.contentWindow;B=this.Document=E.document;var F='';if (FCKBrowserInfo.IsSafari) F='<base href="'+window.document.location+'">';B.open();B.write('<html><head>'+F+'<\/head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.ResizeForSubpanel=function(A,B,C){if (!FCKBrowserInfo.IsIE7) return false;if (!this._Popup.isOpen){this.Subpanel=null;return false;};if (B==0&&C==0){if (this.Subpanel!==A) return false;this.Subpanel=null;this.IncreasedX=0;}else{this.Subpanel=A;if ((this.IncreasedX>=B)&&(this.IncreasedY>=C)) return false;this.IncreasedX=Math.max(this.IncreasedX,B);this.IncreasedY=Math.max(this.IncreasedY,C);};var x=this.ShowRect.x;var w=this.IncreasedX;if (this.IsRTL) x=x-w;var D=this.ShowRect.w+w;var E=Math.max(this.ShowRect.h,this.IncreasedY);if (this.ParentPanel) this.ParentPanel.ResizeForSubpanel(this,D,E);this._Popup.show(x,this.ShowRect.y,D,E,this.RelativeElement);return this.IsRTL;};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (FCKBrowserInfo.IsIE7){if (this.ParentPanel&&this.ParentPanel.ResizeForSubpanel(this,D,E.offsetHeight)){FCKTools.RunFunction(this.Show,this,[x,y,A]);return;}};if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};if (FCKBrowserInfo.IsIE7){this.ShowRect={x:x,y:y,w:D,h:E.offsetHeight};this.IncreasedX=0;this.IncreasedY=0;this.RelativeElement=A;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;if (this._Popup&&this.ParentPanel&&!A) this.ParentPanel.ResizeForSubpanel(this,0,0);FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;this.RelativeElement=null;};
-var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;};
-var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;};
-var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);};
-var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?'&nbsp;':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0"><tr><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_Text">'+this.Caption+'</td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td><td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td><td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td></tr></table>';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}};
-var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);};
-var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e<D.length;e++){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D[e],true)){A.SetLabel(F.Label||F.Name);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B;var C;var D;var E=FCK.ToolbarSet.CurrentInstance.Selection;if (E.GetType()=='Control'){B=E.GetSelectedElement();D=B.nodeName.toLowerCase();}else{B=E.GetBoundaryParentElement(true);C=new FCKElementPath(B);};for (var i in A.Items){var F=A.Items[i];var G=F.Style;if ((D&&G.Element==D)||(!D&&G.GetType()!=2)){F.style.display='';if ((C&&G.CheckActive(C))||(!C&&G.CheckElementRemovable(B,true))) A.SelectItem(G.Name);}else F.style.display='none';}};function FCKToolbarStyleCombo_BuildPreview(A,B){var C=A.GetType();var D=[];if (C==0) D.push('<div class="BaseFont">');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'</',E,'>');if (C==0) D.push('</div>');return D.join('');};
-var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=FCKStyles.GetStyle('_FCK_'+E);if (F){F.Label=C[E];A['_FCK_'+E]=F;}else alert("The FCKConfig.CoreStyles['"+E+"'] setting was not found. Please check the fckconfig.js file");};return A;};FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;if (D){for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SetLabel(F.Label);return;}}}};A.SetLabel(this.DefaultLabel);};FCKToolbarFontFormatCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Block;for (var i in A.Items){var E=A.Items[i];var F=E.Style;if (F.CheckElementRemovable(D)){A.SelectItem(E);return;}}}};
-var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontLabel||'';};FCKToolbarFontsCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_FontFace');if (!A){alert("The FCKConfig.CoreStyles['Size'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontNames.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Font',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontsCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick=function(A){A.DeselectAll();var B=FCKSelection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);for (var i in A.Items){var D=A.Items[i];var E=D.Style;if (E.CheckActive(C)){A.SelectItem(D);return;}}}};
-var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultFontSizeLabel||'';this.FieldWidth=70;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarFontFormatCombo(false);FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.GetStyles=function(){var A=FCKStyles.GetStyle('_FCK_Size');if (!A){alert("The FCKConfig.CoreStyles['FontFace'] setting was not found. Please check the fckconfig.js file");return {};};var B={};var C=FCKConfig.FontSizes.split(';');for (var i=0;i<C.length;i++){var D=C[i].split('/');var E=D[0];var F=D[1]||E;var G=FCKTools.CloneObject(A);G.SetVariable('Size',E);G.Label=F;B[F]=G;};return B;};FCKToolbarFontSizeCombo.prototype.RefreshActiveItems=FCKToolbarStyleCombo.prototype.RefreshActiveItems;FCKToolbarFontSizeCombo.prototype.StyleCombo_OnBeforeClick=FCKToolbarFontsCombo.prototype.StyleCombo_OnBeforeClick;
-var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;this.RegisterPanel(B);};FCKToolbarPanelButton.prototype.RegisterPanel=function(A){if (A._FCKToolbarPanelButton) return;A._FCKToolbarPanelButton=this;var B=A.Document.body.appendChild(A.Document.createElement('div'));B.style.position='absolute';B.style.top='0px';var C=A._FCKToolbarPanelButtonLineDiv=B.appendChild(A.Document.createElement('IMG'));C.className='TB_ConnectionLine';C.style.position='absolute';C.src=FCK_SPACER_PATH;A.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(A){var B=this._FCKToolbarPanelButton;var e=B._UIButton.MainElement;B._UIButton.ChangeState(1);var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(B.CommandName);var D=C._Panel;D._FCKToolbarPanelButtonLineDiv.style.width=(e.offsetWidth-2)+'px';C.Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var A=this._FCKToolbarPanelButton;A._UIButton.ChangeState(0);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
-var FCKToolbarItems={};FCKToolbarItems.LoadedItems={};FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,2,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,true,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Blockquote':B=new FCKToolbarButton('Blockquote',FCKLang.Blockquote,null,null,false,true,73);break;case 'CreateDiv':B=new FCKToolbarButton('CreateDiv',FCKLang.CreateDiv,null,null,false,true,74);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'Rule':B=new FCKToolbarButton('Rule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;case 'ShowBlocks':B=new FCKToolbarButton('ShowBlocks',FCKLang.ShowBlocks,null,null,null,true,72);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;};
-var FCKToolbar=function(){this.Items=[];};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(A){var B=A._FCKToolbar;if (B.OnItemClick) B.OnItemClick(B,A);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var e=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;var C=e.insertRow(-1);var D;if (!this.HideStart){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(C.insertCell(-1));};if (!this.HideEnd){D=C.insertCell(-1);D.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';};
-var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A).createElement('div');B.className='TB_Break';B.style.clear=FCKLang.Dir=='rtl'?'left':'right';A.appendChild(B);};
-function FCKToolbarSet_Create(A){var B;var C=A||FCKConfig.ToolbarLocation;switch (C){case 'In':document.getElementById('xToolbarRow').style.display='';B=new FCKToolbarSet(document);break;case 'None':B=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var D;var E=C.match(/^Out:(.+)\((\w+)\)$/);if (E){if (FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_GetOutElement(window,E);else D=eval('parent.'+E[1]).document.getElementById(E[2]);}else{E=C.match(/^Out:(\w+)$/);if (E) D=parent.document.getElementById(E[1]);};if (!D){alert('Invalid value for "ToolbarLocation"');return arguments.callee('In');};B=D.__FCKToolbarSet;if (B) break;var F=FCKTools.GetElementDocument(D).createElement('iframe');F.src='javascript:void(0)';F.frameBorder=0;F.width='100%';F.height='10';D.appendChild(F);F.unselectable='on';var G=F.contentWindow.document;var H='';if (FCKBrowserInfo.IsSafari) H='<base href="'+window.document.location+'">';G.open();G.write('<html><head>'+H+'<script type="text/javascript"> var adjust = function() { window.frameElement.height = document.body.scrollHeight ; }; window.onresize = window.onload = function(){var timer = null;var lastHeight = -1;var lastChange = 0;var poller = function(){var currentHeight = document.body.scrollHeight || 0;var currentTime = (new Date()).getTime();if (currentHeight != lastHeight){lastChange = currentTime;adjust();lastHeight = document.body.scrollHeight;}if (lastChange < currentTime - 1000) clearInterval(timer);};timer = setInterval(poller, 100);}</script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x<B.length;x++){var C=B[x];if (!C) continue;var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=2) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=2) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==0){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var j=0;j<C.length;j++) C[j].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
-var FCKDialog=(function(){var A;var B;var C;var D=window.parent;while (D.parent&&D.parent!=D){try{if (D.parent.document.domain!=document.domain) break;if (D.parent.document.getElementsByTagName('frameset').length>0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save(true);var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})();
-var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;};
-var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};function FCKMenuBlock_Item_OnClick(A,B){if (B.Hide) B.Hide();FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuBlock_Item_OnActivate(A){var B=A._ActiveItem;if (B&&B!=this){if (!FCKBrowserInfo.IsIE&&B.HasSubMenu&&!this.HasSubMenu){A._Window.focus();A.Panel.HasFocus=true;};B.Deactivate();};A._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';};
-var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinEditorCSS);FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();};
-var FCKContextMenu=function(A,B){this.CtrlDisable=false;var C=this._Panel=new FCKPanel(A);C.AppendStyleSheet(FCKConfig.SkinEditorCSS);C.IsContextMenu=true;if (FCKBrowserInfo.IsGecko) C.Document.addEventListener('draggesture',function(e) {e.preventDefault();return false;},true);var D=this._MenuBlock=new FCKMenuBlock();D.Panel=C;D.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;if (FCKBrowserInfo.IsOpera&&!('oncontextmenu' in document.createElement('foo'))){this._Document.addEventListener('mousedown',FCKContextMenu_Document_OnMouseDown,false);this._Document.addEventListener('mouseup',FCKContextMenu_Document_OnMouseUp,false);};this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D,E){var F=this._MenuBlock.AddItem(A,B,C,D,E);this._Redraw=true;return F;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,A._FCKContextMenu,A);return false;};A=A.parentNode;};return true;};var FCKContextMenu_OverrideButton;function FCKContextMenu_Document_OnMouseDown(e){if(!e||e.button!=2) return false;if (FCKConfig.BrowserContextMenu) return true;var A=e.target;while (A){if (A._FCKContextMenu){if (A._FCKContextMenu.CtrlDisable&&(e.ctrlKey||e.metaKey)) return true;var B=FCKContextMenu_OverrideButton;if(!B){var C=FCKTools.GetElementDocument(e.target);B=FCKContextMenu_OverrideButton=C.createElement('input');B.type='button';var D=C.createElement('p');C.body.appendChild(D);D.appendChild(B);};B.style.cssText='position:absolute;top:'+(e.clientY-2)+'px;left:'+(e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';};A=A.parentNode;};return false;};function FCKContextMenu_Document_OnMouseUp(e){if (FCKConfig.BrowserContextMenu) return true;var A=FCKContextMenu_OverrideButton;if (A){var B=A.parentNode;B.parentNode.removeChild(B);FCKContextMenu_OverrideButton=undefined;if(e&&e.button==2){FCKContextMenu_Document_OnContextMenu(e);return false;}};return true;};function FCKContextMenu_AttachedElement_OnContextMenu(A,B,C){if ((B.CtrlDisable&&(A.ctrlKey||A.metaKey))||FCKConfig.BrowserContextMenu) return true;var D=C||this;if (B.OnBeforeOpen) B.OnBeforeOpen.call(B,D);if (B._MenuBlock.Count()==0) return false;if (B._Redraw){B._MenuBlock.Create(B._Panel.MainNode);B._Redraw=false;};FCKTools.DisableSelection(B._Panel.Document.body);var x=0;var y=0;if (FCKBrowserInfo.IsIE){x=A.screenX;y=A.screenY;}else if (FCKBrowserInfo.IsSafari){x=A.clientX;y=A.clientY;}else{x=A.pageX;y=A.pageY;};B._Panel.Show(x,y,A.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(A,B){B._Panel.Hide();FCKTools.RunFunction(B.OnItemClick,B,A);};
-FCK.ContextMenu={};FCK.ContextMenu.Listeners=[];FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var A=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCKLang.Dir);A.CtrlDisable=FCKConfig.BrowserContextMenuOnCtrl;A.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;A.OnItemClick=FCK_ContextMenu_OnItemClick;var B=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) B.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(A){switch (A){case 'Generic':return {AddItems:function(menu,tag,tagName){menu.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==-1);menu.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==-1);menu.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==-1);}};case 'Table':return {AddItems:function(menu,tag,tagName){var B=(tagName=='TABLE');var C=(!B&&FCKSelection.HasAncestorNode('TABLE'));if (C){menu.AddSeparator();var D=menu.AddItem('Cell',FCKLang.CellCM);D.AddItem('TableInsertCellBefore',FCKLang.InsertCellBefore,69);D.AddItem('TableInsertCellAfter',FCKLang.InsertCellAfter,58);D.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);if (FCKBrowserInfo.IsGecko) D.AddItem('TableMergeCells',FCKLang.MergeCells,60,FCKCommands.GetCommand('TableMergeCells').GetState()==-1);else{D.AddItem('TableMergeRight',FCKLang.MergeRight,60,FCKCommands.GetCommand('TableMergeRight').GetState()==-1);D.AddItem('TableMergeDown',FCKLang.MergeDown,60,FCKCommands.GetCommand('TableMergeDown').GetState()==-1);};D.AddItem('TableHorizontalSplitCell',FCKLang.HorizontalSplitCell,61,FCKCommands.GetCommand('TableHorizontalSplitCell').GetState()==-1);D.AddItem('TableVerticalSplitCell',FCKLang.VerticalSplitCell,61,FCKCommands.GetCommand('TableVerticalSplitCell').GetState()==-1);D.AddSeparator();D.AddItem('TableCellProp',FCKLang.CellProperties,57,FCKCommands.GetCommand('TableCellProp').GetState()==-1);menu.AddSeparator();D=menu.AddItem('Row',FCKLang.RowCM);D.AddItem('TableInsertRowBefore',FCKLang.InsertRowBefore,70);D.AddItem('TableInsertRowAfter',FCKLang.InsertRowAfter,62);D.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);menu.AddSeparator();D=menu.AddItem('Column',FCKLang.ColumnCM);D.AddItem('TableInsertColumnBefore',FCKLang.InsertColumnBefore,71);D.AddItem('TableInsertColumnAfter',FCKLang.InsertColumnAfter,64);D.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (B||C){menu.AddSeparator();menu.AddItem('TableDelete',FCKLang.TableDelete);menu.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(menu,tag,tagName){var E=(tagName=='A'||FCKSelection.HasAncestorNode('A'));if (E||FCK.GetNamedCommandState('Unlink')!=-1){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i<C.length;i++) C[i].AddItems(B,A,sTagName);};function FCK_ContextMenu_OnItemClick(A){if (!FCKBrowserInfo.IsIE) FCK.Focus();FCKCommands.GetCommand(A.Name).Execute(A.CustomData);};
-var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};
-var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');};
-var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/_translationstatus.txt b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/_translationstatus.txt
deleted file mode 100644
index 5eaae4089..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/_translationstatus.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Translations Status.
- */
-
-af.js Found: 396 Missing: 32
-ar.js Found: 420 Missing: 8
-bg.js Found: 373 Missing: 55
-bn.js Found: 380 Missing: 48
-bs.js Found: 226 Missing: 202
-ca.js Found: 420 Missing: 8
-cs.js Found: 420 Missing: 8
-da.js Found: 419 Missing: 9
-de.js Found: 420 Missing: 8
-el.js Found: 396 Missing: 32
-en-au.js Found: 423 Missing: 5
-en-ca.js Found: 423 Missing: 5
-en-uk.js Found: 423 Missing: 5
-eo.js Found: 346 Missing: 82
-es.js Found: 428 Missing: 0
-et.js Found: 411 Missing: 17
-eu.js Found: 420 Missing: 8
-fa.js Found: 413 Missing: 15
-fi.js Found: 411 Missing: 17
-fo.js Found: 420 Missing: 8
-fr-ca.js Found: 419 Missing: 9
-fr.js Found: 428 Missing: 0
-gl.js Found: 381 Missing: 47
-gu.js Found: 411 Missing: 17
-he.js Found: 428 Missing: 0
-hi.js Found: 420 Missing: 8
-hr.js Found: 420 Missing: 8
-hu.js Found: 411 Missing: 17
-is.js Found: 428 Missing: 0
-it.js Found: 410 Missing: 18
-ja.js Found: 420 Missing: 8
-km.js Found: 370 Missing: 58
-ko.js Found: 390 Missing: 38
-lt.js Found: 376 Missing: 52
-lv.js Found: 381 Missing: 47
-mn.js Found: 411 Missing: 17
-ms.js Found: 352 Missing: 76
-nb.js Found: 414 Missing: 14
-nl.js Found: 420 Missing: 8
-no.js Found: 414 Missing: 14
-pl.js Found: 411 Missing: 17
-pt-br.js Found: 411 Missing: 17
-pt.js Found: 381 Missing: 47
-ro.js Found: 410 Missing: 18
-ru.js Found: 427 Missing: 1
-sk.js Found: 420 Missing: 8
-sl.js Found: 411 Missing: 17
-sr-latn.js Found: 368 Missing: 60
-sr.js Found: 368 Missing: 60
-sv.js Found: 409 Missing: 19
-th.js Found: 393 Missing: 35
-tr.js Found: 428 Missing: 0
-uk.js Found: 419 Missing: 9
-vi.js Found: 419 Missing: 9
-zh-cn.js Found: 428 Missing: 0
-zh.js Found: 423 Missing: 5
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/af.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/af.js
deleted file mode 100644
index bf69f9846..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/af.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Afrikaans language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Vou Gereedskaps balk toe",
-ToolbarExpand : "Vou Gereedskaps balk oop",
-
-// Toolbar Items and Context Menu
-Save : "Bewaar",
-NewPage : "Nuwe Bladsy",
-Preview : "Voorskou",
-Cut : "Uitsny ",
-Copy : "Kopieer",
-Paste : "Byvoeg",
-PasteText : "Slegs inhoud byvoeg",
-PasteWord : "Van Word af byvoeg",
-Print : "Druk",
-SelectAll : "Selekteer alles",
-RemoveFormat : "Formaat verweider",
-InsertLinkLbl : "Skakel",
-InsertLink : "Skakel byvoeg/verander",
-RemoveLink : "Skakel verweider",
-VisitLink : "Open Link", //MISSING
-Anchor : "Plekhouer byvoeg/verander",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Beeld",
-InsertImage : "Beeld byvoeg/verander",
-InsertFlashLbl : "Flash",
-InsertFlash : "Flash byvoeg/verander",
-InsertTableLbl : "Tabel",
-InsertTable : "Tabel byvoeg/verander",
-InsertLineLbl : "Lyn",
-InsertLine : "Horisontale lyn byvoeg",
-InsertSpecialCharLbl: "Spesiaale karakter",
-InsertSpecialChar : "Spesiaale Karakter byvoeg",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Smiley byvoeg",
-About : "Meer oor FCKeditor",
-Bold : "Vet",
-Italic : "Skuins",
-Underline : "Onderstreep",
-StrikeThrough : "Gestreik",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Links rig",
-CenterJustify : "Rig Middel",
-RightJustify : "Regs rig",
-BlockJustify : "Blok paradeer",
-DecreaseIndent : "Paradeering verkort",
-IncreaseIndent : "Paradeering verleng",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Ont-skep",
-Redo : "Her-skep",
-NumberedListLbl : "Genommerde lys",
-NumberedList : "Genommerde lys byvoeg/verweider",
-BulletedListLbl : "Gepunkte lys",
-BulletedList : "Gepunkte lys byvoeg/verweider",
-ShowTableBorders : "Wys tabel kante",
-ShowDetails : "Wys informasie",
-Style : "Styl",
-FontFormat : "Karakter formaat",
-Font : "Karakters",
-FontSize : "Karakter grote",
-TextColor : "Karakter kleur",
-BGColor : "Agtergrond kleur",
-Source : "Source",
-Find : "Vind",
-Replace : "Vervang",
-SpellCheck : "Spelling nagaan",
-UniversalKeyboard : "Universeele Sleutelbord",
-PageBreakLbl : "Bladsy breek",
-PageBreak : "Bladsy breek byvoeg",
-
-Form : "Form",
-Checkbox : "HakBox",
-RadioButton : "PuntBox",
-TextField : "Byvoegbare karakter strook",
-Textarea : "Byvoegbare karakter area",
-HiddenField : "Blinde strook",
-Button : "Knop",
-SelectionField : "Opklapbare keuse strook",
-ImageButton : "Beeld knop",
-
-FitWindow : "Maksimaliseer venster grote",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Verander skakel",
-CellCM : "Cell",
-RowCM : "Ry",
-ColumnCM : "Kolom",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Ry verweider",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Kolom verweider",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Cell verweider",
-MergeCells : "Cell verenig",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Tabel verweider",
-CellProperties : "Cell eienskappe",
-TableProperties : "Tabel eienskappe",
-ImageProperties : "Beeld eienskappe",
-FlashProperties : "Flash eienskappe",
-
-AnchorProp : "Plekhouer eienskappe",
-ButtonProp : "Knop eienskappe",
-CheckboxProp : "HakBox eienskappe",
-HiddenFieldProp : "Blinde strook eienskappe",
-RadioButtonProp : "PuntBox eienskappe",
-ImageButtonProp : "Beeld knop eienskappe",
-TextFieldProp : "Karakter strook eienskappe",
-SelectionFieldProp : "Opklapbare keuse strook eienskappe",
-TextareaProp : "Karakter area eienskappe",
-FormProp : "Form eienskappe",
-
-FontFormats : "Normaal;Geformateerd;Adres;Opskrif 1;Opskrif 2;Opskrif 3;Opskrif 4;Opskrif 5;Opskrif 6;Normaal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML word verarbeit. U geduld asseblief...",
-Done : "Kompleet",
-PasteWordConfirm : "Die informasie wat U probeer byvoeg is warskynlik van Word. Wil U dit reinig voor die byvoeging?",
-NotCompatiblePaste : "Die instruksie is beskikbaar vir Internet Explorer weergawe 5.5 of hor. Wil U dir byvoeg sonder reiniging?",
-UnknownToolbarItem : "Unbekende gereedskaps balk item \"%1\"",
-UnknownCommand : "Unbekende instruksie naam \"%1\"",
-NotImplemented : "Instruksie is nie geimplementeer nie.",
-UnknownToolbarSet : "Gereedskaps balk \"%1\" bestaan nie",
-NoActiveX : "U browser sekuriteit instellings kan die funksies van die editor behinder. U moet die opsie \"Run ActiveX controls and plug-ins\" aktiveer. U ondervinding mag problematies geskiet of sekere funksionaliteit mag verhinder word.",
-BrowseServerBlocked : "Die vorraad venster word geblok! Verseker asseblief dat U die \"popup blocker\" instelling verander.",
-DialogBlocked : "Die dialoog venster vir verdere informasie word geblok. De-aktiveer asseblief die \"popup blocker\" instellings wat dit behinder.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Kanseleer",
-DlgBtnClose : "Sluit",
-DlgBtnBrowseServer : "Server deurblaai",
-DlgAdvancedTag : "Ingewikkeld",
-DlgOpOther : "<Ander>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Voeg asseblief die URL in",
-
-// General Dialogs Labels
-DlgGenNotSet : "<geen instelling>",
-DlgGenId : "Id",
-DlgGenLangDir : "Taal rigting",
-DlgGenLangDirLtr : "Links na regs (LTR)",
-DlgGenLangDirRtl : "Regs na links (RTL)",
-DlgGenLangCode : "Taal kode",
-DlgGenAccessKey : "Toegang sleutel",
-DlgGenName : "Naam",
-DlgGenTabIndex : "Tab Index",
-DlgGenLongDescr : "Lang beskreiwing URL",
-DlgGenClass : "Skakel Tiepe",
-DlgGenTitle : "Voorbeveelings Titel",
-DlgGenContType : "Voorbeveelings inhoud soort",
-DlgGenLinkCharset : "Geskakelde voorbeeld karakterstel",
-DlgGenStyle : "Styl",
-
-// Image Dialog
-DlgImgTitle : "Beeld eienskappe",
-DlgImgInfoTab : "Beeld informasie",
-DlgImgBtnUpload : "Stuur dit na die Server",
-DlgImgURL : "URL",
-DlgImgUpload : "Uplaai",
-DlgImgAlt : "Alternatiewe beskrywing",
-DlgImgWidth : "Weidte",
-DlgImgHeight : "Hoogde",
-DlgImgLockRatio : "Behou preporsie",
-DlgBtnResetSize : "Herstel groote",
-DlgImgBorder : "Kant",
-DlgImgHSpace : "HSpasie",
-DlgImgVSpace : "VSpasie",
-DlgImgAlign : "Paradeer",
-DlgImgAlignLeft : "Links",
-DlgImgAlignAbsBottom: "Abs Onder",
-DlgImgAlignAbsMiddle: "Abs Middel",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Onder",
-DlgImgAlignMiddle : "Middel",
-DlgImgAlignRight : "Regs",
-DlgImgAlignTextTop : "Text Bo",
-DlgImgAlignTop : "Bo",
-DlgImgPreview : "Voorskou",
-DlgImgAlertUrl : "Voeg asseblief Beeld URL in.",
-DlgImgLinkTab : "Skakel",
-
-// Flash Dialog
-DlgFlashTitle : "Flash eienskappe",
-DlgFlashChkPlay : "Automaties Speel",
-DlgFlashChkLoop : "Herhaling",
-DlgFlashChkMenu : "Laat Flash Menu toe",
-DlgFlashScale : "Scale",
-DlgFlashScaleAll : "Wys alles",
-DlgFlashScaleNoBorder : "Geen kante",
-DlgFlashScaleFit : "Presiese pas",
-
-// Link Dialog
-DlgLnkWindowTitle : "Skakel",
-DlgLnkInfoTab : "Skakel informasie",
-DlgLnkTargetTab : "Mikpunt",
-
-DlgLnkType : "Skakel soort",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Skakel na plekhouers in text",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<ander>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Kies 'n plekhouer",
-DlgLnkAnchorByName : "Volgens plekhouer naam",
-DlgLnkAnchorById : "Volgens element Id",
-DlgLnkNoAnchors : "(Geen plekhouers beskikbaar in dokument}",
-DlgLnkEMail : "E-Mail Adres",
-DlgLnkEMailSubject : "Boodskap Opskrif",
-DlgLnkEMailBody : "Boodskap Inhoud",
-DlgLnkUpload : "Oplaai",
-DlgLnkBtnUpload : "Stuur na Server",
-
-DlgLnkTarget : "Mikpunt",
-DlgLnkTargetFrame : "<raam>",
-DlgLnkTargetPopup : "<popup venster>",
-DlgLnkTargetBlank : "Nuwe Venster (_blank)",
-DlgLnkTargetParent : "Vorige Venster (_parent)",
-DlgLnkTargetSelf : "Selfde Venster (_self)",
-DlgLnkTargetTop : "Boonste Venster (_top)",
-DlgLnkTargetFrameName : "Mikpunt Venster Naam",
-DlgLnkPopWinName : "Popup Venster Naam",
-DlgLnkPopWinFeat : "Popup Venster Geaartheid",
-DlgLnkPopResize : "Verstelbare Groote",
-DlgLnkPopLocation : "Adres Balk",
-DlgLnkPopMenu : "Menu Balk",
-DlgLnkPopScroll : "Gleibalkstuk",
-DlgLnkPopStatus : "Status Balk",
-DlgLnkPopToolbar : "Gereedskap Balk",
-DlgLnkPopFullScrn : "Voll Skerm (IE)",
-DlgLnkPopDependent : "Afhanklik (Netscape)",
-DlgLnkPopWidth : "Weite",
-DlgLnkPopHeight : "Hoogde",
-DlgLnkPopLeft : "Links Posisie",
-DlgLnkPopTop : "Bo Posisie",
-
-DlnLnkMsgNoUrl : "Voeg asseblief die URL in",
-DlnLnkMsgNoEMail : "Voeg asseblief die e-mail adres in",
-DlnLnkMsgNoAnchor : "Kies asseblief 'n plekhouer",
-DlnLnkMsgInvPopName : "Die popup naam moet begin met alphabetiese karakters sonder spasies.",
-
-// Color Dialog
-DlgColorTitle : "Kies Kleur",
-DlgColorBtnClear : "Maak skoon",
-DlgColorHighlight : "Highlight",
-DlgColorSelected : "Geselekteer",
-
-// Smiley Dialog
-DlgSmileyTitle : "Voeg Smiley by",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Kies spesiale karakter",
-
-// Table Dialog
-DlgTableTitle : "Tabel eienskappe",
-DlgTableRows : "Reie",
-DlgTableColumns : "Kolome",
-DlgTableBorder : "Kant groote",
-DlgTableAlign : "Parideering",
-DlgTableAlignNotSet : "<geen instelling>",
-DlgTableAlignLeft : "Links",
-DlgTableAlignCenter : "Middel",
-DlgTableAlignRight : "Regs",
-DlgTableWidth : "Weite",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Hoogde",
-DlgTableCellSpace : "Cell spasieering",
-DlgTableCellPad : "Cell buffer",
-DlgTableCaption : "Beskreiwing",
-DlgTableSummary : "Opsomming",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Cell eienskappe",
-DlgCellWidth : "Weite",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Hoogde",
-DlgCellWordWrap : "Woord Wrap",
-DlgCellWordWrapNotSet : "<geen instelling>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nee",
-DlgCellHorAlign : "Horisontale rigting",
-DlgCellHorAlignNotSet : "<geen instelling>",
-DlgCellHorAlignLeft : "Links",
-DlgCellHorAlignCenter : "Middel",
-DlgCellHorAlignRight: "Regs",
-DlgCellVerAlign : "Vertikale rigting",
-DlgCellVerAlignNotSet : "<geen instelling>",
-DlgCellVerAlignTop : "Bo",
-DlgCellVerAlignMiddle : "Middel",
-DlgCellVerAlignBottom : "Onder",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Rei strekking",
-DlgCellCollSpan : "Kolom strekking",
-DlgCellBackColor : "Agtergrond Kleur",
-DlgCellBorderColor : "Kant Kleur",
-DlgCellBtnSelect : "Keuse...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Vind",
-DlgFindFindBtn : "Vind",
-DlgFindNotFoundMsg : "Die gespesifiseerde karakters word nie gevind nie.",
-
-// Replace Dialog
-DlgReplaceTitle : "Vervang",
-DlgReplaceFindLbl : "Soek wat:",
-DlgReplaceReplaceLbl : "Vervang met:",
-DlgReplaceCaseChk : "Vergelyk karakter skryfweise",
-DlgReplaceReplaceBtn : "Vervang",
-DlgReplaceReplAllBtn : "Vervang alles",
-DlgReplaceWordChk : "Vergelyk komplete woord",
-
-// Paste Operations / Dialog
-PasteErrorCut : "U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+X).",
-PasteErrorCopy : "U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+C).",
-
-PasteAsText : "Voeg slegs karakters by",
-PasteFromWord : "Byvoeging uit Word",
-
-DlgPasteMsg2 : "Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl+V</STRONG>) en druk <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignoreer karakter soort defenisies",
-DlgPasteRemoveStyles : "Verweider Styl defenisies",
-
-// Color Picker
-ColorAutomatic : "Automaties",
-ColorMoreColors : "Meer Kleure...",
-
-// Document Properties
-DocProps : "Dokument Eienskappe",
-
-// Anchor Dialog
-DlgAnchorTitle : "Plekhouer Eienskappe",
-DlgAnchorName : "Plekhouer Naam",
-DlgAnchorErrorName : "Voltooi die plekhouer naam asseblief",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nie in woordeboek nie",
-DlgSpellChangeTo : "Verander na",
-DlgSpellBtnIgnore : "Ignoreer",
-DlgSpellBtnIgnoreAll : "Ignoreer na-volgende",
-DlgSpellBtnReplace : "Vervang",
-DlgSpellBtnReplaceAll : "vervang na-volgende",
-DlgSpellBtnUndo : "Ont-skep",
-DlgSpellNoSuggestions : "- Geen voorstel -",
-DlgSpellProgress : "Spelling word beproef...",
-DlgSpellNoMispell : "Spellproef kompleet: Geen foute",
-DlgSpellNoChanges : "Spellproef kompleet: Geen woord veranderings",
-DlgSpellOneChange : "Spellproef kompleet: Een woord verander",
-DlgSpellManyChanges : "Spellproef kompleet: %1 woorde verander",
-
-IeSpellDownload : "Geen Spellproefer geinstaleer nie. Wil U dit aflaai?",
-
-// Button Dialog
-DlgButtonText : "Karakters (Waarde)",
-DlgButtonType : "Soort",
-DlgButtonTypeBtn : "Knop",
-DlgButtonTypeSbm : "Indien",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Naam",
-DlgCheckboxValue : "Waarde",
-DlgCheckboxSelected : "Uitgekies",
-
-// Form Dialog
-DlgFormName : "Naam",
-DlgFormAction : "Aksie",
-DlgFormMethod : "Metode",
-
-// Select Field Dialog
-DlgSelectName : "Naam",
-DlgSelectValue : "Waarde",
-DlgSelectSize : "Grote",
-DlgSelectLines : "lyne",
-DlgSelectChkMulti : "Laat meerere keuses toe",
-DlgSelectOpAvail : "Beskikbare Opsies",
-DlgSelectOpText : "Karakters",
-DlgSelectOpValue : "Waarde",
-DlgSelectBtnAdd : "Byvoeg",
-DlgSelectBtnModify : "Verander",
-DlgSelectBtnUp : "Op",
-DlgSelectBtnDown : "Af",
-DlgSelectBtnSetValue : "Stel as uitgekiesde waarde",
-DlgSelectBtnDelete : "Verweider",
-
-// Textarea Dialog
-DlgTextareaName : "Naam",
-DlgTextareaCols : "Kolom",
-DlgTextareaRows : "Reie",
-
-// Text Field Dialog
-DlgTextName : "Naam",
-DlgTextValue : "Waarde",
-DlgTextCharWidth : "Karakter weite",
-DlgTextMaxChars : "Maximale karakters",
-DlgTextType : "Soort",
-DlgTextTypeText : "Karakters",
-DlgTextTypePass : "Wagwoord",
-
-// Hidden Field Dialog
-DlgHiddenName : "Naam",
-DlgHiddenValue : "Waarde",
-
-// Bulleted List Dialog
-BulletedListProp : "Gepunkte lys eienskappe",
-NumberedListProp : "Genommerde lys eienskappe",
-DlgLstStart : "Begin",
-DlgLstType : "Soort",
-DlgLstTypeCircle : "Sirkel",
-DlgLstTypeDisc : "Skyf",
-DlgLstTypeSquare : "Vierkant",
-DlgLstTypeNumbers : "Nommer (1, 2, 3)",
-DlgLstTypeLCase : "Klein Letters (a, b, c)",
-DlgLstTypeUCase : "Hoof Letters (A, B, C)",
-DlgLstTypeSRoman : "Klein Romeinse nommers (i, ii, iii)",
-DlgLstTypeLRoman : "Groot Romeinse nommers (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Algemeen",
-DlgDocBackTab : "Agtergrond",
-DlgDocColorsTab : "Kleure en Rante",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Bladsy Opskrif",
-DlgDocLangDir : "Taal rigting",
-DlgDocLangDirLTR : "Link na Regs (LTR)",
-DlgDocLangDirRTL : "Regs na Links (RTL)",
-DlgDocLangCode : "Taal Kode",
-DlgDocCharSet : "Karakterstel Kodeering",
-DlgDocCharSetCE : "Sentraal Europa",
-DlgDocCharSetCT : "Chinees Traditioneel (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Grieks",
-DlgDocCharSetJP : "Japanees",
-DlgDocCharSetKR : "Koreans",
-DlgDocCharSetTR : "Turks",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "Ander Karakterstel Kodeering",
-
-DlgDocDocType : "Dokument Opskrif Soort",
-DlgDocDocTypeOther : "Ander Dokument Opskrif Soort",
-DlgDocIncXHTML : "Voeg XHTML verklaring by",
-DlgDocBgColor : "Agtergrond kleur",
-DlgDocBgImage : "Agtergrond Beeld URL",
-DlgDocBgNoScroll : "Vasgeklemde Agtergrond",
-DlgDocCText : "Karakters",
-DlgDocCLink : "Skakel",
-DlgDocCVisited : "Besoekte Skakel",
-DlgDocCActive : "Aktiewe Skakel",
-DlgDocMargins : "Bladsy Rante",
-DlgDocMaTop : "Bo",
-DlgDocMaLeft : "Links",
-DlgDocMaRight : "Regs",
-DlgDocMaBottom : "Onder",
-DlgDocMeIndex : "Dokument Index Sleutelwoorde(comma verdeelt)",
-DlgDocMeDescr : "Dokument Beskrywing",
-DlgDocMeAuthor : "Skrywer",
-DlgDocMeCopy : "Kopiereg",
-DlgDocPreview : "Voorskou",
-
-// Templates Dialog
-Templates : "Templates",
-DlgTemplatesTitle : "Inhoud Templates",
-DlgTemplatesSelMsg : "Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):",
-DlgTemplatesLoading : "Templates word gelaai. U geduld asseblief...",
-DlgTemplatesNoTpl : "(Geen templates gedefinieerd)",
-DlgTemplatesReplace : "Vervang bestaande inhoud",
-
-// About Dialog
-DlgAboutAboutTab : "Meer oor",
-DlgAboutBrowserInfoTab : "Blaai Informasie deur",
-DlgAboutLicenseTab : "Lesensie",
-DlgAboutVersion : "weergawe",
-DlgAboutInfo : "Vir meer informasie gaan na ",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ar.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ar.js
deleted file mode 100644
index 5efa4eee3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ar.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Arabic language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "rtl",
-
-ToolbarCollapse : "ضم شريط الأدوات",
-ToolbarExpand : "تمدد شريط الأدوات",
-
-// Toolbar Items and Context Menu
-Save : "Ø­ÙØ¸",
-NewPage : "ØµÙØ­Ø© جديدة",
-Preview : "معاينة Ø§Ù„ØµÙØ­Ø©",
-Cut : "قص",
-Copy : "نسخ",
-Paste : "لصق",
-PasteText : "لصق كنص بسيط",
-PasteWord : "لصق من وورد",
-Print : "طباعة",
-SelectAll : "تحديد الكل",
-RemoveFormat : "إزالة التنسيقات",
-InsertLinkLbl : "رابط",
-InsertLink : "إدراج/تحرير رابط",
-RemoveLink : "إزالة رابط",
-VisitLink : "Ø§ÙØªØ­ الرابط",
-Anchor : "إدراج/تحرير إشارة مرجعية",
-AnchorDelete : "إزالة إشارة مرجعية",
-InsertImageLbl : "صورة",
-InsertImage : "إدراج/تحرير صورة",
-InsertFlashLbl : "Ùلاش",
-InsertFlash : "إدراج/تحرير Ùيلم Ùلاش",
-InsertTableLbl : "جدول",
-InsertTable : "إدراج/تحرير جدول",
-InsertLineLbl : "خط ÙØ§ØµÙ„",
-InsertLine : "إدراج خط ÙØ§ØµÙ„",
-InsertSpecialCharLbl: "رموز",
-InsertSpecialChar : "إدراج رموز..Ù",
-InsertSmileyLbl : "ابتسامات",
-InsertSmiley : "إدراج ابتسامات",
-About : "حول FCKeditor",
-Bold : "غامق",
-Italic : "مائل",
-Underline : "تسطير",
-StrikeThrough : "يتوسطه خط",
-Subscript : "Ù…Ù†Ø®ÙØ¶",
-Superscript : "Ù…Ø±ØªÙØ¹",
-LeftJustify : "محاذاة إلى اليسار",
-CenterJustify : "توسيط",
-RightJustify : "محاذاة إلى اليمين",
-BlockJustify : "ضبط",
-DecreaseIndent : "إنقاص Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة",
-IncreaseIndent : "زيادة Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة",
-Blockquote : "اقتباس",
-CreateDiv : "إنشاء حاوية Div",
-EditDiv : "تعديل حاوية Div",
-DeleteDiv : "إزالة حاوية Div",
-Undo : "تراجع",
-Redo : "إعادة",
-NumberedListLbl : "تعداد رقمي",
-NumberedList : "إدراج/إلغاء تعداد رقمي",
-BulletedListLbl : "تعداد نقطي",
-BulletedList : "إدراج/إلغاء تعداد نقطي",
-ShowTableBorders : "معاينة حدود الجداول",
-ShowDetails : "معاينة Ø§Ù„ØªÙØ§ØµÙŠÙ„",
-Style : "نمط",
-FontFormat : "تنسيق",
-Font : "خط",
-FontSize : "حجم الخط",
-TextColor : "لون النص",
-BGColor : "لون الخلÙية",
-Source : "Ø´ÙØ±Ø© المصدر",
-Find : "بحث",
-Replace : "إستبدال",
-SpellCheck : "تدقيق إملائي",
-UniversalKeyboard : "لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ العالمية",
-PageBreakLbl : "ÙØµÙ„ Ø§Ù„ØµÙØ­Ø©",
-PageBreak : "إدخال ØµÙØ­Ø© جديدة",
-
-Form : "نموذج",
-Checkbox : "خانة إختيار",
-RadioButton : "زر خيار",
-TextField : "مربع نص",
-Textarea : "ناحية نص",
-HiddenField : "إدراج حقل Ø®ÙÙŠ",
-Button : "زر ضغط",
-SelectionField : "قائمة منسدلة",
-ImageButton : "زر صورة",
-
-FitWindow : "تكبير حجم المحرر",
-ShowBlocks : "مخطط ØªÙØµÙŠÙ„ÙŠ",
-
-// Context Menu
-EditLink : "تحرير رابط",
-CellCM : "خلية",
-RowCM : "صÙ",
-ColumnCM : "عمود",
-InsertRowAfter : "إدراج ص٠بعد",
-InsertRowBefore : "إدراج ص٠قبل",
-DeleteRows : "حذ٠صÙÙˆÙ",
-InsertColumnAfter : "إدراج عمود بعد",
-InsertColumnBefore : "إدراج عمود قبل",
-DeleteColumns : "حذ٠أعمدة",
-InsertCellAfter : "إدراج خلية بعد",
-InsertCellBefore : "إدراج خلية قبل",
-DeleteCells : "حذ٠خلايا",
-MergeCells : "دمج خلايا",
-MergeRight : "دمج لليمين",
-MergeDown : "دمج للأسÙÙ„",
-HorizontalSplitCell : "تقسيم الخلية Ø£Ùقياً",
-VerticalSplitCell : "تقسيم الخلية عمودياً",
-TableDelete : "حذ٠الجدول",
-CellProperties : "خصائص الخلية",
-TableProperties : "خصائص الجدول",
-ImageProperties : "خصائص الصورة",
-FlashProperties : "خصائص Ùيلم الÙلاش",
-
-AnchorProp : "خصائص الإشارة المرجعية",
-ButtonProp : "خصائص زر الضغط",
-CheckboxProp : "خصائص خانة الإختيار",
-HiddenFieldProp : "خصائص الحقل الخÙÙŠ",
-RadioButtonProp : "خصائص زر الخيار",
-ImageButtonProp : "خصائص زر الصورة",
-TextFieldProp : "خصائص مربع النص",
-SelectionFieldProp : "خصائص القائمة المنسدلة",
-TextareaProp : "خصائص ناحية النص",
-FormProp : "خصائص النموذج",
-
-FontFormats : "عادي;منسّق;دوس;العنوان 1;العنوان 2;العنوان 3;العنوان 4;العنوان 5;العنوان 6",
-
-// Alerts and Messages
-ProcessingXHTML : "إنتظر قليلاً ريثما تتم معالَجة†XHTML. لن يستغرق طويلاً...",
-Done : "تم",
-PasteWordConfirm : "يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيÙÙ‡ قبل الشروع ÙÙŠ عملية اللصق؟",
-NotCompatiblePaste : "هذه الميزة تحتاج Ù„Ù…ØªØµÙØ­ من النوعInternet Explorer إصدار 5.5 Ùما Ùوق. هل تود اللصق دون تنظي٠الكود؟",
-UnknownToolbarItem : "عنصر شريط أدوات غير معرو٠\"%1\"",
-UnknownCommand : "أمر غير معرو٠\"%1\"",
-NotImplemented : "لم يتم دعم هذا الأمر",
-UnknownToolbarSet : "لم أتمكن من العثور على طقم الأدوات \"%1\" ",
-NoActiveX : "لتأمين Ù…ØªØµÙØ­Ùƒ يجب أن تحدد بعض مميزات المحرر. يتوجب عليك تمكين الخيار \"Run ActiveX controls and plug-ins\". قد تواجة أخطاء وتلاحظ مميزات Ù…Ùقودة",
-BrowseServerBlocked : "لايمكن ÙØªØ­ مصدر Ø§Ù„Ù…ØªØµÙØ­. ÙØ¶Ù„ا يجب التأكد بأن جميع موانع Ø§Ù„Ù†ÙˆØ§ÙØ° المنبثقة معطلة",
-DialogBlocked : "لايمكن ÙØªØ­ Ù†Ø§ÙØ°Ø© الحوار . ÙØ¶Ù„ا تأكد من أن مانع Ø§Ù„Ù†ÙˆØ§ÙØ° المنبثة معطل .",
-VisitLinkBlocked : "لا يمكن ÙØªØ­ Ù†Ø§ÙØ°Ø© جديدة. تأكد من إيقا٠كل مانعي ÙØªØ­ Ø§Ù„Ù†ÙˆØ§ÙØ° من العمل.",
-
-// Dialogs
-DlgBtnOK : "مواÙÙ‚",
-DlgBtnCancel : "إلغاء الأمر",
-DlgBtnClose : "إغلاق",
-DlgBtnBrowseServer : "ØªØµÙØ­ الخادم",
-DlgAdvancedTag : "متقدم",
-DlgOpOther : "<أخرى>",
-DlgInfoTab : "معلومات",
-DlgAlertUrl : "الرجاء كتابة عنوان الإنترنت",
-
-// General Dialogs Labels
-DlgGenNotSet : "<بدون تحديد>",
-DlgGenId : "الرقم",
-DlgGenLangDir : "إتجاه النص",
-DlgGenLangDirLtr : "اليسار لليمين (LTR)",
-DlgGenLangDirRtl : "اليمين لليسار (RTL)",
-DlgGenLangCode : "رمز اللغة",
-DlgGenAccessKey : "Ù…ÙØ§ØªÙŠØ­ الإختصار",
-DlgGenName : "الاسم",
-DlgGenTabIndex : "الترتيب",
-DlgGenLongDescr : "عنوان Ø§Ù„ÙˆØµÙ Ø§Ù„Ù…ÙØµÙ‘Ù„",
-DlgGenClass : "ÙØ¦Ø§Øª التنسيق",
-DlgGenTitle : "تلميح الشاشة",
-DlgGenContType : "نوع التلميح",
-DlgGenLinkCharset : "ترميز المادة المطلوبة",
-DlgGenStyle : "نمط",
-
-// Image Dialog
-DlgImgTitle : "خصائص الصورة",
-DlgImgInfoTab : "معلومات الصورة",
-DlgImgBtnUpload : "أرسلها للخادم",
-DlgImgURL : "موقع الصورة",
-DlgImgUpload : "Ø±ÙØ¹",
-DlgImgAlt : "الوصÙ",
-DlgImgWidth : "العرض",
-DlgImgHeight : "Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹",
-DlgImgLockRatio : "تناسق الحجم",
-DlgBtnResetSize : "إستعادة الحجم الأصلي",
-DlgImgBorder : "سمك الحدود",
-DlgImgHSpace : "تباعد Ø£Ùقي",
-DlgImgVSpace : "تباعد عمودي",
-DlgImgAlign : "محاذاة",
-DlgImgAlignLeft : "يسار",
-DlgImgAlignAbsBottom: "أسÙÙ„ النص",
-DlgImgAlignAbsMiddle: "وسط السطر",
-DlgImgAlignBaseline : "على السطر",
-DlgImgAlignBottom : "أسÙÙ„",
-DlgImgAlignMiddle : "وسط",
-DlgImgAlignRight : "يمين",
-DlgImgAlignTextTop : "أعلى النص",
-DlgImgAlignTop : "أعلى",
-DlgImgPreview : "معاينة",
-DlgImgAlertUrl : "ÙØ¶Ù„اً أكتب الموقع الذي توجد عليه هذه الصورة.",
-DlgImgLinkTab : "الرابط",
-
-// Flash Dialog
-DlgFlashTitle : "خصائص Ùيلم الÙلاش",
-DlgFlashChkPlay : "تشغيل تلقائي",
-DlgFlashChkLoop : "تكرار",
-DlgFlashChkMenu : "تمكين قائمة Ùيلم الÙلاش",
-DlgFlashScale : "الحجم",
-DlgFlashScaleAll : "إظهار الكل",
-DlgFlashScaleNoBorder : "بلا حدود",
-DlgFlashScaleFit : "ضبط تام",
-
-// Link Dialog
-DlgLnkWindowTitle : "إرتباط تشعبي",
-DlgLnkInfoTab : "معلومات الرابط",
-DlgLnkTargetTab : "الهدÙ",
-
-DlgLnkType : "نوع الربط",
-DlgLnkTypeURL : "العنوان",
-DlgLnkTypeAnchor : "مكان ÙÙŠ هذا المستند",
-DlgLnkTypeEMail : "بريد إلكتروني",
-DlgLnkProto : "البروتوكول",
-DlgLnkProtoOther : "<أخرى>",
-DlgLnkURL : "الموقع",
-DlgLnkAnchorSel : "اختر علامة مرجعية",
-DlgLnkAnchorByName : "حسب اسم العلامة",
-DlgLnkAnchorById : "حسب تعري٠العنصر",
-DlgLnkNoAnchors : "(لا يوجد علامات مرجعية ÙÙŠ هذا المستند)",
-DlgLnkEMail : "عنوان بريد إلكتروني",
-DlgLnkEMailSubject : "موضوع الرسالة",
-DlgLnkEMailBody : "محتوى الرسالة",
-DlgLnkUpload : "Ø±ÙØ¹",
-DlgLnkBtnUpload : "أرسلها للخادم",
-
-DlgLnkTarget : "الهدÙ",
-DlgLnkTargetFrame : "<إطار>",
-DlgLnkTargetPopup : "<Ù†Ø§ÙØ°Ø© منبثقة>",
-DlgLnkTargetBlank : "إطار جديد (_blank)",
-DlgLnkTargetParent : "الإطار الأصل (_parent)",
-DlgLnkTargetSelf : "Ù†ÙØ³ الإطار (_self)",
-DlgLnkTargetTop : "ØµÙØ­Ø© كاملة (_top)",
-DlgLnkTargetFrameName : "اسم الإطار الهدÙ",
-DlgLnkPopWinName : "تسمية Ø§Ù„Ù†Ø§ÙØ°Ø© المنبثقة",
-DlgLnkPopWinFeat : "خصائص Ø§Ù„Ù†Ø§ÙØ°Ø© المنبثقة",
-DlgLnkPopResize : "قابلة للتحجيم",
-DlgLnkPopLocation : "شريط العنوان",
-DlgLnkPopMenu : "القوائم الرئيسية",
-DlgLnkPopScroll : "أشرطة التمرير",
-DlgLnkPopStatus : "شريط الحالة السÙلي",
-DlgLnkPopToolbar : "شريط الأدوات",
-DlgLnkPopFullScrn : "ملئ الشاشة (IE)",
-DlgLnkPopDependent : "تابع (Netscape)",
-DlgLnkPopWidth : "العرض",
-DlgLnkPopHeight : "Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹",
-DlgLnkPopLeft : "التمركز لليسار",
-DlgLnkPopTop : "التمركز للأعلى",
-
-DlnLnkMsgNoUrl : "ÙØ¶Ù„اً أدخل عنوان الموقع الذي يشير إليه الرابط",
-DlnLnkMsgNoEMail : "ÙØ¶Ù„اً أدخل عنوان البريد الإلكتروني",
-DlnLnkMsgNoAnchor : "ÙØ¶Ù„اً حدد العلامة المرجعية المرغوبة",
-DlnLnkMsgInvPopName : "اسم Ø§Ù„Ù†Ø§ÙØ°Ø© المنبثقة يجب أن يبدأ بحر٠أبجدي دون Ù…Ø³Ø§ÙØ§Øª",
-
-// Color Dialog
-DlgColorTitle : "اختر لوناً",
-DlgColorBtnClear : "مسح",
-DlgColorHighlight : "تحديد",
-DlgColorSelected : "إختيار",
-
-// Smiley Dialog
-DlgSmileyTitle : "إدراج إبتسامات ",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "إدراج رمز",
-
-// Table Dialog
-DlgTableTitle : "إدراج جدول",
-DlgTableRows : "صÙÙˆÙ",
-DlgTableColumns : "أعمدة",
-DlgTableBorder : "سمك الحدود",
-DlgTableAlign : "المحاذاة",
-DlgTableAlignNotSet : "<بدون تحديد>",
-DlgTableAlignLeft : "يسار",
-DlgTableAlignCenter : "وسط",
-DlgTableAlignRight : "يمين",
-DlgTableWidth : "العرض",
-DlgTableWidthPx : "بكسل",
-DlgTableWidthPc : "بالمئة",
-DlgTableHeight : "Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹",
-DlgTableCellSpace : "تباعد الخلايا",
-DlgTableCellPad : "Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة",
-DlgTableCaption : "الوصÙ",
-DlgTableSummary : "الخلاصة",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "خصائص الخلية",
-DlgCellWidth : "العرض",
-DlgCellWidthPx : "بكسل",
-DlgCellWidthPc : "بالمئة",
-DlgCellHeight : "Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹",
-DlgCellWordWrap : "Ø§Ù„ØªÙØ§Ù النص",
-DlgCellWordWrapNotSet : "<بدون تحديد>",
-DlgCellWordWrapYes : "نعم",
-DlgCellWordWrapNo : "لا",
-DlgCellHorAlign : "المحاذاة الأÙقية",
-DlgCellHorAlignNotSet : "<بدون تحديد>",
-DlgCellHorAlignLeft : "يسار",
-DlgCellHorAlignCenter : "وسط",
-DlgCellHorAlignRight: "يمين",
-DlgCellVerAlign : "المحاذاة العمودية",
-DlgCellVerAlignNotSet : "<بدون تحديد>",
-DlgCellVerAlignTop : "أعلى",
-DlgCellVerAlignMiddle : "وسط",
-DlgCellVerAlignBottom : "أسÙÙ„",
-DlgCellVerAlignBaseline : "على السطر",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "إمتداد الصÙÙˆÙ",
-DlgCellCollSpan : "إمتداد الأعمدة",
-DlgCellBackColor : "لون الخلÙية",
-DlgCellBorderColor : "لون الحدود",
-DlgCellBtnSelect : "حدّد...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "بحث واستبدال",
-
-// Find Dialog
-DlgFindTitle : "بحث",
-DlgFindFindBtn : "ابحث",
-DlgFindNotFoundMsg : "لم يتم العثور على النص المحدد.",
-
-// Replace Dialog
-DlgReplaceTitle : "إستبدال",
-DlgReplaceFindLbl : "البحث عن:",
-DlgReplaceReplaceLbl : "إستبدال بـ:",
-DlgReplaceCaseChk : "مطابقة حالة الأحرÙ",
-DlgReplaceReplaceBtn : "إستبدال",
-DlgReplaceReplAllBtn : "إستبدال الكل",
-DlgReplaceWordChk : "الكلمة بالكامل Ùقط",
-
-// Paste Operations / Dialog
-PasteErrorCut : "الإعدادات الأمنية Ù„Ù„Ù…ØªØµÙØ­ الذي تستخدمه تمنع القص التلقائي. ÙØ¶Ù„اً إستخدم لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ Ù„ÙØ¹Ù„ ذلك (Ctrl+X).",
-PasteErrorCopy : "الإعدادات الأمنية Ù„Ù„Ù…ØªØµÙØ­ الذي تستخدمه تمنع النسخ التلقائي. ÙØ¶Ù„اً إستخدم لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ Ù„ÙØ¹Ù„ ذلك (Ctrl+C).",
-
-PasteAsText : "لصق كنص بسيط",
-PasteFromWord : "لصق من وورد",
-
-DlgPasteMsg2 : "الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) ÙÙŠ لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ØŒ ثم اضغط زر <STRONG>مواÙÙ‚</STRONG>.",
-DlgPasteSec : "نظراً لإعدادات الأمان الخاصة Ø¨Ù…ØªØµÙØ­ÙƒØŒ لن يتمكن هذا المحرر من الوصول لمحتوى Ø­Ø§ÙØ¸ØªÙƒØŒ لذا وجب عليك لصق المحتوى مرة أخرى ÙÙŠ هذه Ø§Ù„Ù†Ø§ÙØ°Ø©.",
-DlgPasteIgnoreFont : "تجاهل ØªØ¹Ø±ÙŠÙØ§Øª أسماء الخطوط",
-DlgPasteRemoveStyles : "إزالة ØªØ¹Ø±ÙŠÙØ§Øª الأنماط",
-
-// Color Picker
-ColorAutomatic : "تلقائي",
-ColorMoreColors : "ألوان إضاÙية...",
-
-// Document Properties
-DocProps : "خصائص Ø§Ù„ØµÙØ­Ø©",
-
-// Anchor Dialog
-DlgAnchorTitle : "خصائص إشارة مرجعية",
-DlgAnchorName : "اسم الإشارة المرجعية",
-DlgAnchorErrorName : "الرجاء كتابة اسم الإشارة المرجعية",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "ليست ÙÙŠ القاموس",
-DlgSpellChangeTo : "التغيير إلى",
-DlgSpellBtnIgnore : "تجاهل",
-DlgSpellBtnIgnoreAll : "تجاهل الكل",
-DlgSpellBtnReplace : "تغيير",
-DlgSpellBtnReplaceAll : "تغيير الكل",
-DlgSpellBtnUndo : "تراجع",
-DlgSpellNoSuggestions : "- لا توجد إقتراحات -",
-DlgSpellProgress : "جاري التدقيق إملائياً",
-DlgSpellNoMispell : "تم إكمال التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية",
-DlgSpellNoChanges : "تم إكمال التدقيق الإملائي: لم يتم تغيير أي كلمة",
-DlgSpellOneChange : "تم إكمال التدقيق الإملائي: تم تغيير كلمة واحدة Ùقط",
-DlgSpellManyChanges : "تم إكمال التدقيق الإملائي: تم تغيير %1 كلمات\كلمة",
-
-IeSpellDownload : "المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟",
-
-// Button Dialog
-DlgButtonText : "القيمة/التسمية",
-DlgButtonType : "نوع الزر",
-DlgButtonTypeBtn : "زر",
-DlgButtonTypeSbm : "إرسال",
-DlgButtonTypeRst : "إعادة تعيين",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "الاسم",
-DlgCheckboxValue : "القيمة",
-DlgCheckboxSelected : "محدد",
-
-// Form Dialog
-DlgFormName : "الاسم",
-DlgFormAction : "اسم الملÙ",
-DlgFormMethod : "الأسلوب",
-
-// Select Field Dialog
-DlgSelectName : "الاسم",
-DlgSelectValue : "القيمة",
-DlgSelectSize : "الحجم",
-DlgSelectLines : "الأسطر",
-DlgSelectChkMulti : "السماح بتحديدات متعددة",
-DlgSelectOpAvail : "الخيارات المتاحة",
-DlgSelectOpText : "النص",
-DlgSelectOpValue : "القيمة",
-DlgSelectBtnAdd : "Ø¥Ø¶Ø§ÙØ©",
-DlgSelectBtnModify : "تعديل",
-DlgSelectBtnUp : "تحريك لأعلى",
-DlgSelectBtnDown : "تحريك لأسÙÙ„",
-DlgSelectBtnSetValue : "إجعلها محددة",
-DlgSelectBtnDelete : "إزالة",
-
-// Textarea Dialog
-DlgTextareaName : "الاسم",
-DlgTextareaCols : "الأعمدة",
-DlgTextareaRows : "الصÙÙˆÙ",
-
-// Text Field Dialog
-DlgTextName : "الاسم",
-DlgTextValue : "القيمة",
-DlgTextCharWidth : "العرض بالأحرÙ",
-DlgTextMaxChars : "عدد الحرو٠الأقصى",
-DlgTextType : "نوع المحتوى",
-DlgTextTypeText : "نص",
-DlgTextTypePass : "كلمة مرور",
-
-// Hidden Field Dialog
-DlgHiddenName : "الاسم",
-DlgHiddenValue : "القيمة",
-
-// Bulleted List Dialog
-BulletedListProp : "خصائص التعداد النقطي",
-NumberedListProp : "خصائص التعداد الرقمي",
-DlgLstStart : "البدء عند",
-DlgLstType : "النوع",
-DlgLstTypeCircle : "دائرة",
-DlgLstTypeDisc : "قرص",
-DlgLstTypeSquare : "مربع",
-DlgLstTypeNumbers : "أرقام (1، 2، 3)َ",
-DlgLstTypeLCase : "حرو٠صغيرة (a, b, c)َ",
-DlgLstTypeUCase : "حرو٠كبيرة (A, B, C)َ",
-DlgLstTypeSRoman : "ترقيم روماني صغير (i, ii, iii)َ",
-DlgLstTypeLRoman : "ترقيم روماني كبير (I, II, III)َ",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "عام",
-DlgDocBackTab : "الخلÙية",
-DlgDocColorsTab : "الألوان والهوامش",
-DlgDocMetaTab : "Ø§Ù„Ù…Ø¹Ø±Ù‘ÙØ§Øª الرأسية",
-
-DlgDocPageTitle : "عنوان Ø§Ù„ØµÙØ­Ø©",
-DlgDocLangDir : "إتجاه اللغة",
-DlgDocLangDirLTR : "اليسار لليمين (LTR)",
-DlgDocLangDirRTL : "اليمين لليسار (RTL)",
-DlgDocLangCode : "رمز اللغة",
-DlgDocCharSet : "ترميز الحروÙ",
-DlgDocCharSetCE : "أوروبا الوسطى",
-DlgDocCharSetCT : "الصينية التقليدية (Big5)",
-DlgDocCharSetCR : "السيريلية",
-DlgDocCharSetGR : "اليونانية",
-DlgDocCharSetJP : "اليابانية",
-DlgDocCharSetKR : "الكورية",
-DlgDocCharSetTR : "التركية",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "أوروبا الغربية",
-DlgDocCharSetOther : "ترميز آخر",
-
-DlgDocDocType : "ترويسة نوع Ø§Ù„ØµÙØ­Ø©",
-DlgDocDocTypeOther : "ترويسة نوع ØµÙØ­Ø© أخرى",
-DlgDocIncXHTML : "تضمين إعلانات†لغة XHTMLَ",
-DlgDocBgColor : "لون الخلÙية",
-DlgDocBgImage : "رابط الصورة الخلÙية",
-DlgDocBgNoScroll : "جعلها علامة مائية",
-DlgDocCText : "النص",
-DlgDocCLink : "الروابط",
-DlgDocCVisited : "المزارة",
-DlgDocCActive : "النشطة",
-DlgDocMargins : "هوامش Ø§Ù„ØµÙØ­Ø©",
-DlgDocMaTop : "علوي",
-DlgDocMaLeft : "أيسر",
-DlgDocMaRight : "أيمن",
-DlgDocMaBottom : "سÙلي",
-DlgDocMeIndex : "الكلمات الأساسية (Ù…ÙØµÙˆÙ„Ø© بÙواصل)ÙŽ",
-DlgDocMeDescr : "ÙˆØµÙ Ø§Ù„ØµÙØ­Ø©",
-DlgDocMeAuthor : "الكاتب",
-DlgDocMeCopy : "المالك",
-DlgDocPreview : "معاينة",
-
-// Templates Dialog
-Templates : "القوالب",
-DlgTemplatesTitle : "قوالب المحتوى",
-DlgTemplatesSelMsg : "اختر القالب الذي تود وضعه ÙÙŠ المحرر <br>(سيتم Ùقدان المحتوى الحالي):",
-DlgTemplatesLoading : "جاري تحميل قائمة القوالب، الرجاء الإنتظار...",
-DlgTemplatesNoTpl : "(لم يتم تعري٠أي قالب)",
-DlgTemplatesReplace : "استبدال المحتوى",
-
-// About Dialog
-DlgAboutAboutTab : "نبذة",
-DlgAboutBrowserInfoTab : "معلومات Ù…ØªØµÙØ­Ùƒ",
-DlgAboutLicenseTab : "الترخيص",
-DlgAboutVersion : "الإصدار",
-DlgAboutInfo : "لمزيد من المعلومات ØªÙØ¶Ù„ بزيارة",
-
-// Div Dialog
-DlgDivGeneralTab : "عام",
-DlgDivAdvancedTab : "متقدم",
-DlgDivStyle : "المظهر",
-DlgDivInlineStyle : "المظهر المضمن"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bg.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bg.js
deleted file mode 100644
index 923e31f98..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bg.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Bulgarian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Скрий панела Ñ Ð¸Ð½Ñтрументите",
-ToolbarExpand : "Покажи панела Ñ Ð¸Ð½Ñтрументите",
-
-// Toolbar Items and Context Menu
-Save : "Запази",
-NewPage : "Ðова Ñтраница",
-Preview : "Предварителен изглед",
-Cut : "Изрежи",
-Copy : "Запамети",
-Paste : "Вмъкни",
-PasteText : "Вмъкни Ñамо текÑÑ‚",
-PasteWord : "Вмъкни от MS Word",
-Print : "Печат",
-SelectAll : "Селектирай вÑичко",
-RemoveFormat : "Изтрий форматирането",
-InsertLinkLbl : "Връзка",
-InsertLink : "Добави/Редактирай връзка",
-RemoveLink : "Изтрий връзка",
-VisitLink : "Open Link", //MISSING
-Anchor : "Добави/Редактирай котва",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Изображение",
-InsertImage : "Добави/Редактирай изображение",
-InsertFlashLbl : "Flash",
-InsertFlash : "Добави/Редактиай Flash обект",
-InsertTableLbl : "Таблица",
-InsertTable : "Добави/Редактирай таблица",
-InsertLineLbl : "ЛиниÑ",
-InsertLine : "Вмъкни хоризонтална линиÑ",
-InsertSpecialCharLbl: "Специален Ñимвол",
-InsertSpecialChar : "Вмъкни Ñпециален Ñимвол",
-InsertSmileyLbl : "УÑмивка",
-InsertSmiley : "Добави уÑмивка",
-About : "За FCKeditor",
-Bold : "Удебелен",
-Italic : "КурÑив",
-Underline : "Подчертан",
-StrikeThrough : "Зачертан",
-Subscript : "Ð˜Ð½Ð´ÐµÐºÑ Ð·Ð° база",
-Superscript : "Ð˜Ð½Ð´ÐµÐºÑ Ð·Ð° Ñтепен",
-LeftJustify : "ПодравнÑване в лÑво",
-CenterJustify : "ПодравнÑвне в Ñредата",
-RightJustify : "ПодравнÑване в дÑÑно",
-BlockJustify : "ДвуÑтранно подравнÑване",
-DecreaseIndent : "Ðамали отÑтъпа",
-IncreaseIndent : "Увеличи отÑтъпа",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Отмени",
-Redo : "Повтори",
-NumberedListLbl : "Ðумериран ÑпиÑък",
-NumberedList : "Добави/Изтрий нумериран ÑпиÑък",
-BulletedListLbl : "Ðенумериран ÑпиÑък",
-BulletedList : "Добави/Изтрий ненумериран ÑпиÑък",
-ShowTableBorders : "Покажи рамките на таблицата",
-ShowDetails : "Покажи подробноÑти",
-Style : "Стил",
-FontFormat : "Формат",
-Font : "Шрифт",
-FontSize : "Размер",
-TextColor : "ЦвÑÑ‚ на текÑта",
-BGColor : "ЦвÑÑ‚ на фона",
-Source : "Код",
-Find : "ТърÑи",
-Replace : "ЗамеÑти",
-SpellCheck : "Провери правопиÑа",
-UniversalKeyboard : "УниверÑална клавиатура",
-PageBreakLbl : "Ðов ред",
-PageBreak : "Вмъкни нов ред",
-
-Form : "ФормулÑÑ€",
-Checkbox : "Поле за отметка",
-RadioButton : "Поле за опциÑ",
-TextField : "ТекÑтово поле",
-Textarea : "ТекÑтова облаÑÑ‚",
-HiddenField : "Скрито поле",
-Button : "Бутон",
-SelectionField : "Падащо меню Ñ Ð¾Ð¿Ñ†Ð¸Ð¸",
-ImageButton : "Бутон-изображение",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Редактирай връзка",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Изтрий редовете",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Изтрий колоните",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Изтрий клетките",
-MergeCells : "Обедини клетките",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Изтрий таблицата",
-CellProperties : "Параметри на клетката",
-TableProperties : "Параметри на таблицата",
-ImageProperties : "Параметри на изображението",
-FlashProperties : "Параметри на Flash обекта",
-
-AnchorProp : "Параметри на котвата",
-ButtonProp : "Параметри на бутона",
-CheckboxProp : "Параметри на полето за отметка",
-HiddenFieldProp : "Параметри на Ñкритото поле",
-RadioButtonProp : "Параметри на полето за опциÑ",
-ImageButtonProp : "Параметри на бутона-изображение",
-TextFieldProp : "Параметри на текÑтовото-поле",
-SelectionFieldProp : "Параметри на падащото меню Ñ Ð¾Ð¿Ñ†Ð¸Ð¸",
-TextareaProp : "Параметри на текÑтовата облаÑÑ‚",
-FormProp : "Параметри на формулÑра",
-
-FontFormats : "Ðормален;Форматиран;ÐдреÑ;Заглавие 1;Заглавие 2;Заглавие 3;Заглавие 4;Заглавие 5;Заглавие 6;Параграф (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Обработка на XHTML. ÐœÐ¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ...",
-Done : "Готово",
-PasteWordConfirm : "ТекÑтът, който иÑкате да вмъкнете е копиран от MS Word. Желаете ли да бъде изчиÑтен преди вмъкването?",
-NotCompatiblePaste : "Тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¸Ñква MS Internet Explorer верÑÐ¸Ñ 5.5 или по-виÑока. Желаете ли да вмъкнете запаметеното без изчиÑтване?",
-UnknownToolbarItem : "Ðепознат инÑтрумент \"%1\"",
-UnknownCommand : "Ðепозната команда \"%1\"",
-NotImplemented : "Командата не е имплементирана",
-UnknownToolbarSet : "Панелът \"%1\" не ÑъщеÑтвува",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "ОК",
-DlgBtnCancel : "Отказ",
-DlgBtnClose : "Затвори",
-DlgBtnBrowseServer : "Разгледай Ñървъра",
-DlgAdvancedTag : "ПодробноÑти...",
-DlgOpOther : "<Друго>",
-DlgInfoTab : "ИнформациÑ",
-DlgAlertUrl : "МолÑ, въведете Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¿ÑŠÑ‚ (URL)",
-
-// General Dialogs Labels
-DlgGenNotSet : "<не е наÑтроен>",
-DlgGenId : "Идентификатор",
-DlgGenLangDir : "поÑока на речта",
-DlgGenLangDirLtr : "От лÑво на дÑÑно",
-DlgGenLangDirRtl : "От дÑÑно на лÑво",
-DlgGenLangCode : "Код на езика",
-DlgGenAccessKey : "Бърз клавиш",
-DlgGenName : "Име",
-DlgGenTabIndex : "Ред на доÑтъп",
-DlgGenLongDescr : "ОпиÑание на връзката",
-DlgGenClass : "ÐšÐ»Ð°Ñ Ð¾Ñ‚ Ñтиловите таблици",
-DlgGenTitle : "Препоръчително заглавие",
-DlgGenContType : "Препоръчителен тип на Ñъдържанието",
-DlgGenLinkCharset : "Тип на ÑÐ²ÑŠÑ€Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ",
-DlgGenStyle : "Стил",
-
-// Image Dialog
-DlgImgTitle : "Параметри на изображението",
-DlgImgInfoTab : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изображението",
-DlgImgBtnUpload : "Прати към Ñървъра",
-DlgImgURL : "Пълен път (URL)",
-DlgImgUpload : "Качи",
-DlgImgAlt : "Ðлтернативен текÑÑ‚",
-DlgImgWidth : "Ширина",
-DlgImgHeight : "ВиÑочина",
-DlgImgLockRatio : "Запази пропорциÑта",
-DlgBtnResetSize : "ВъзÑтанови размера",
-DlgImgBorder : "Рамка",
-DlgImgHSpace : "Хоризонтален отÑтъп",
-DlgImgVSpace : "Вертикален отÑтъп",
-DlgImgAlign : "ПодравнÑване",
-DlgImgAlignLeft : "ЛÑво",
-DlgImgAlignAbsBottom: "Ðай-долу",
-DlgImgAlignAbsMiddle: "Точно по Ñредата",
-DlgImgAlignBaseline : "По базовата линиÑ",
-DlgImgAlignBottom : "Долу",
-DlgImgAlignMiddle : "По Ñредата",
-DlgImgAlignRight : "ДÑÑно",
-DlgImgAlignTextTop : "Върху текÑта",
-DlgImgAlignTop : "Отгоре",
-DlgImgPreview : "Изглед",
-DlgImgAlertUrl : "МолÑ, въведете Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¿ÑŠÑ‚ до изображението",
-DlgImgLinkTab : "Връзка",
-
-// Flash Dialog
-DlgFlashTitle : "Параметри на Flash обекта",
-DlgFlashChkPlay : "Ðвтоматично Ñтартиране",
-DlgFlashChkLoop : "Ðово Ñтартиране Ñлед завършването",
-DlgFlashChkMenu : "Разрешено Flash меню",
-DlgFlashScale : "ОразмерÑване",
-DlgFlashScaleAll : "Покажи Ñ†ÐµÐ»Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚",
-DlgFlashScaleNoBorder : "Без рамка",
-DlgFlashScaleFit : "Според мÑÑтото",
-
-// Link Dialog
-DlgLnkWindowTitle : "Връзка",
-DlgLnkInfoTab : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° връзката",
-DlgLnkTargetTab : "Цел",
-
-DlgLnkType : "Вид на връзката",
-DlgLnkTypeURL : "Пълен път (URL)",
-DlgLnkTypeAnchor : "Котва в текущата Ñтраница",
-DlgLnkTypeEMail : "Е-поща",
-DlgLnkProto : "Протокол",
-DlgLnkProtoOther : "<друго>",
-DlgLnkURL : "Пълен път (URL)",
-DlgLnkAnchorSel : "Изберете котва",
-DlgLnkAnchorByName : "По име на котвата",
-DlgLnkAnchorById : "По идентификатор на елемент",
-DlgLnkNoAnchors : "(ÐÑма котви в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚)",
-DlgLnkEMail : "ÐÐ´Ñ€ÐµÑ Ð·Ð° е-поща",
-DlgLnkEMailSubject : "Тема на пиÑмото",
-DlgLnkEMailBody : "ТекÑÑ‚ на пиÑмото",
-DlgLnkUpload : "Качи",
-DlgLnkBtnUpload : "Прати на Ñървъра",
-
-DlgLnkTarget : "Цел",
-DlgLnkTargetFrame : "<рамка>",
-DlgLnkTargetPopup : "<дъщерен прозорец>",
-DlgLnkTargetBlank : "Ðов прозорец (_blank)",
-DlgLnkTargetParent : "РодителÑки прозорец (_parent)",
-DlgLnkTargetSelf : "ÐÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† (_self)",
-DlgLnkTargetTop : "Ð¦ÐµÐ»Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† (_top)",
-DlgLnkTargetFrameName : "Име на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†",
-DlgLnkPopWinName : "Име на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†",
-DlgLnkPopWinFeat : "Параметри на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†",
-DlgLnkPopResize : "С променливи размери",
-DlgLnkPopLocation : "Поле за адреÑ",
-DlgLnkPopMenu : "Меню",
-DlgLnkPopScroll : "Плъзгач",
-DlgLnkPopStatus : "Поле за ÑтатуÑ",
-DlgLnkPopToolbar : "Панел Ñ Ð±ÑƒÑ‚Ð¾Ð½Ð¸",
-DlgLnkPopFullScrn : "ГолÑм екран (MS IE)",
-DlgLnkPopDependent : "ЗавиÑим (Netscape)",
-DlgLnkPopWidth : "Ширина",
-DlgLnkPopHeight : "ВиÑочина",
-DlgLnkPopLeft : "Координати - X",
-DlgLnkPopTop : "Координати - Y",
-
-DlnLnkMsgNoUrl : "МолÑ, напишете Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¿ÑŠÑ‚ (URL)",
-DlnLnkMsgNoEMail : "МолÑ, напишете адреÑа за е-поща",
-DlnLnkMsgNoAnchor : "МолÑ, изберете котва",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Изберете цвÑÑ‚",
-DlgColorBtnClear : "ИзчиÑти",
-DlgColorHighlight : "Текущ",
-DlgColorSelected : "Избран",
-
-// Smiley Dialog
-DlgSmileyTitle : "Добави уÑмивка",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Изберете Ñпециален Ñимвол",
-
-// Table Dialog
-DlgTableTitle : "Параметри на таблицата",
-DlgTableRows : "Редове",
-DlgTableColumns : "Колони",
-DlgTableBorder : "Размер на рамката",
-DlgTableAlign : "ПодравнÑване",
-DlgTableAlignNotSet : "<Ðе е избрано>",
-DlgTableAlignLeft : "ЛÑво",
-DlgTableAlignCenter : "Център",
-DlgTableAlignRight : "ДÑÑно",
-DlgTableWidth : "Ширина",
-DlgTableWidthPx : "пикÑели",
-DlgTableWidthPc : "проценти",
-DlgTableHeight : "ВиÑочина",
-DlgTableCellSpace : "РазÑтоÑние между клетките",
-DlgTableCellPad : "ОтÑтъп на Ñъдържанието в клетките",
-DlgTableCaption : "Заглавие",
-DlgTableSummary : "Резюме",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Параметри на клетката",
-DlgCellWidth : "Ширина",
-DlgCellWidthPx : "пикÑели",
-DlgCellWidthPc : "проценти",
-DlgCellHeight : "ВиÑочина",
-DlgCellWordWrap : "пренаÑÑне на нов ред",
-DlgCellWordWrapNotSet : "<Ðе е наÑтроено>",
-DlgCellWordWrapYes : "Да",
-DlgCellWordWrapNo : "не",
-DlgCellHorAlign : "Хоризонтално подравнÑване",
-DlgCellHorAlignNotSet : "<Ðе е наÑтроено>",
-DlgCellHorAlignLeft : "ЛÑво",
-DlgCellHorAlignCenter : "Център",
-DlgCellHorAlignRight: "ДÑÑно",
-DlgCellVerAlign : "Вертикално подравнÑване",
-DlgCellVerAlignNotSet : "<Ðе е наÑтроено>",
-DlgCellVerAlignTop : "Горе",
-DlgCellVerAlignMiddle : "По Ñредата",
-DlgCellVerAlignBottom : "Долу",
-DlgCellVerAlignBaseline : "По базовата линиÑ",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "повече от един ред",
-DlgCellCollSpan : "повече от една колона",
-DlgCellBackColor : "фонов цвÑÑ‚",
-DlgCellBorderColor : "цвÑÑ‚ на рамката",
-DlgCellBtnSelect : "Изберете...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "ТърÑи",
-DlgFindFindBtn : "ТърÑи",
-DlgFindNotFoundMsg : "Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ не беше намерен.",
-
-// Replace Dialog
-DlgReplaceTitle : "ЗамеÑти",
-DlgReplaceFindLbl : "ТърÑи:",
-DlgReplaceReplaceLbl : "ЗамеÑти Ñ:",
-DlgReplaceCaseChk : "Ð¡ÑŠÑ ÑÑŠÑ‰Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтър",
-DlgReplaceReplaceBtn : "ЗамеÑти",
-DlgReplaceReplAllBtn : "ЗамеÑти вÑички",
-DlgReplaceWordChk : "ТърÑи Ñъщата дума",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°Ð·ÑƒÑŠÑ€ не разрешават на редактора да изпълни изрÑзването. За целта използвайте клавиатурата (Ctrl+X).",
-PasteErrorCopy : "ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°Ð·ÑƒÑŠÑ€ не разрешават на редактора да изпълни запаметÑването. За целта използвайте клавиатурата (Ctrl+C).",
-
-PasteAsText : "Вмъкни като чиÑÑ‚ текÑÑ‚",
-PasteFromWord : "Вмъкни от MS Word",
-
-DlgPasteMsg2 : "Вмъкнете тук Ñъдъжанието Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÐ°Ñ€Ð°Ñ‚Ð° (<STRONG>Ctrl+V</STRONG>) и натиÑнете <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Игнорирай шрифтовите дефиниции",
-DlgPasteRemoveStyles : "Изтрий Ñтиловите дефиниции",
-
-// Color Picker
-ColorAutomatic : "По подразбиране",
-ColorMoreColors : "Други цветове...",
-
-// Document Properties
-DocProps : "Параметри на документа",
-
-// Anchor Dialog
-DlgAnchorTitle : "Параметри на котвата",
-DlgAnchorName : "Име на котвата",
-DlgAnchorErrorName : "МолÑ, въведете име на котвата",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "ЛипÑва в речника",
-DlgSpellChangeTo : "Промени на",
-DlgSpellBtnIgnore : "Игнорирай",
-DlgSpellBtnIgnoreAll : "Игнорирай вÑички",
-DlgSpellBtnReplace : "ЗамеÑти",
-DlgSpellBtnReplaceAll : "ЗамеÑти вÑички",
-DlgSpellBtnUndo : "Отмени",
-DlgSpellNoSuggestions : "- ÐÑма Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ -",
-DlgSpellProgress : "Извършване на проверката за правопиÑ...",
-DlgSpellNoMispell : "Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: не Ñа открити правопиÑни грешки",
-DlgSpellNoChanges : "Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: нÑма променени думи",
-DlgSpellOneChange : "Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: една дума е променена",
-DlgSpellManyChanges : "Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: %1 думи Ñа променени",
-
-IeSpellDownload : "ИнÑтрументът за проверка на Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð½Ðµ е инÑталиран. Желаете ли да го инÑталирате ?",
-
-// Button Dialog
-DlgButtonText : "ТекÑÑ‚ (СтойноÑÑ‚)",
-DlgButtonType : "Тип",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Име",
-DlgCheckboxValue : "СтойноÑÑ‚",
-DlgCheckboxSelected : "Отметнато",
-
-// Form Dialog
-DlgFormName : "Име",
-DlgFormAction : "ДейÑтвие",
-DlgFormMethod : "Метод",
-
-// Select Field Dialog
-DlgSelectName : "Име",
-DlgSelectValue : "СтойноÑÑ‚",
-DlgSelectSize : "Размер",
-DlgSelectLines : "линии",
-DlgSelectChkMulti : "Разрешено множеÑтвено Ñелектиране",
-DlgSelectOpAvail : "Възможни опции",
-DlgSelectOpText : "ТекÑÑ‚",
-DlgSelectOpValue : "СтойноÑÑ‚",
-DlgSelectBtnAdd : "Добави",
-DlgSelectBtnModify : "Промени",
-DlgSelectBtnUp : "Ðагоре",
-DlgSelectBtnDown : "Ðадолу",
-DlgSelectBtnSetValue : "ÐаÑтрой като избрана ÑтойноÑÑ‚",
-DlgSelectBtnDelete : "Изтрий",
-
-// Textarea Dialog
-DlgTextareaName : "Име",
-DlgTextareaCols : "Колони",
-DlgTextareaRows : "Редове",
-
-// Text Field Dialog
-DlgTextName : "Име",
-DlgTextValue : "СтойноÑÑ‚",
-DlgTextCharWidth : "Ширина на Ñимволите",
-DlgTextMaxChars : "МакÑимум Ñимволи",
-DlgTextType : "Тип",
-DlgTextTypeText : "ТекÑÑ‚",
-DlgTextTypePass : "Парола",
-
-// Hidden Field Dialog
-DlgHiddenName : "Име",
-DlgHiddenValue : "СтойноÑÑ‚",
-
-// Bulleted List Dialog
-BulletedListProp : "Параметри на Ð½ÐµÐ½ÑƒÐ¼ÐµÑ€Ð¸Ñ€Ð°Ð½Ð¸Ñ ÑпиÑък",
-NumberedListProp : "Параметри на Ð½ÑƒÐ¼ÐµÑ€Ð¸Ñ€Ð°Ð½Ð¸Ñ ÑпиÑък",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Тип",
-DlgLstTypeCircle : "ОкръжноÑÑ‚",
-DlgLstTypeDisc : "Кръг",
-DlgLstTypeSquare : "Квадрат",
-DlgLstTypeNumbers : "ЧиÑла (1, 2, 3)",
-DlgLstTypeLCase : "Малки букви (a, b, c)",
-DlgLstTypeUCase : "Големи букви (A, B, C)",
-DlgLstTypeSRoman : "Малки римÑки чиÑла (i, ii, iii)",
-DlgLstTypeLRoman : "Големи римÑки чиÑла (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Общи",
-DlgDocBackTab : "Фон",
-DlgDocColorsTab : "Цветове и отÑтъпи",
-DlgDocMetaTab : "Мета данни",
-
-DlgDocPageTitle : "Заглавие на Ñтраницата",
-DlgDocLangDir : "ПоÑока на речта",
-DlgDocLangDirLTR : "От лÑво на дÑÑно",
-DlgDocLangDirRTL : "От дÑÑно на лÑво",
-DlgDocLangCode : "Код на езика",
-DlgDocCharSet : "Кодиране на Ñимволите",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Друго кодиране на Ñимволите",
-
-DlgDocDocType : "Тип на документа",
-DlgDocDocTypeOther : "Друг тип на документа",
-DlgDocIncXHTML : "Включи XHTML декларациÑ",
-DlgDocBgColor : "ЦвÑÑ‚ на фона",
-DlgDocBgImage : "Пълен път до фоновото изображение",
-DlgDocBgNoScroll : "Ðе-повтарÑщо Ñе фоново изображение",
-DlgDocCText : "ТекÑÑ‚",
-DlgDocCLink : "Връзка",
-DlgDocCVisited : "ПоÑетена връзка",
-DlgDocCActive : "Ðктивна връзка",
-DlgDocMargins : "ОтÑтъпи на Ñтраницата",
-DlgDocMaTop : "Горе",
-DlgDocMaLeft : "ЛÑво",
-DlgDocMaRight : "ДÑÑно",
-DlgDocMaBottom : "Долу",
-DlgDocMeIndex : "Ключови думи за документа (разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸)",
-DlgDocMeDescr : "ОпиÑание на документа",
-DlgDocMeAuthor : "Ðвтор",
-DlgDocMeCopy : "ÐвторÑки права",
-DlgDocPreview : "Изглед",
-
-// Templates Dialog
-Templates : "Шаблони",
-DlgTemplatesTitle : "Шаблони",
-DlgTemplatesSelMsg : "Изберете шаблон <br>(текущото Ñъдържание на редактора ще бъде загубено):",
-DlgTemplatesLoading : "Зареждане на ÑпиÑъка Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸Ñ‚Ðµ. ÐœÐ¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ...",
-DlgTemplatesNoTpl : "(ÐÑма дефинирани шаблони)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "За",
-DlgAboutBrowserInfoTab : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° браузъра",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "верÑиÑ",
-DlgAboutInfo : "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ñетете",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bn.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bn.js
deleted file mode 100644
index 638254629..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bn.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Bengali/Bangla language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "টূলবার গà§à¦Ÿà¦¿à§Ÿà§‡ দাও",
-ToolbarExpand : "টূলবার ছড়িয়ে দাও",
-
-// Toolbar Items and Context Menu
-Save : "সংরকà§à¦·à¦¨ কর",
-NewPage : "নতà§à¦¨ পেজ",
-Preview : "পà§à¦°à¦¿à¦­à¦¿à¦‰",
-Cut : "কাট",
-Copy : "কপি",
-Paste : "পেসà§à¦Ÿ",
-PasteText : "পেসà§à¦Ÿ (সাদা টেকà§à¦¸à¦Ÿ)",
-PasteWord : "পেসà§à¦Ÿ (শবà§à¦¦)",
-Print : "পà§à¦°à¦¿à¦¨à§à¦Ÿ",
-SelectAll : "সব সিলেকà§à¦Ÿ কর",
-RemoveFormat : "ফরমেট সরাও",
-InsertLinkLbl : "লিংকের যà§à¦•à§à¦¤ করার লেবেল",
-InsertLink : "লিংক যà§à¦•à§à¦¤ কর",
-RemoveLink : "লিংক সরাও",
-VisitLink : "Open Link", //MISSING
-Anchor : "নোঙà§à¦—র",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "ছবির লেবেল যà§à¦•à§à¦¤ কর",
-InsertImage : "ছবি যà§à¦•à§à¦¤ কর",
-InsertFlashLbl : "ফà§à¦²à¦¾à¦¶ লেবেল যà§à¦•à§à¦¤ কর",
-InsertFlash : "ফà§à¦²à¦¾à¦¶ যà§à¦•à§à¦¤ কর",
-InsertTableLbl : "টেবিলের লেবেল যà§à¦•à§à¦¤ কর",
-InsertTable : "টেবিল যà§à¦•à§à¦¤ কর",
-InsertLineLbl : "রেখা যà§à¦•à§à¦¤ কর",
-InsertLine : "রেখা যà§à¦•à§à¦¤ কর",
-InsertSpecialCharLbl: "বিশেষ অকà§à¦·à¦°à§‡à¦° লেবেল যà§à¦•à§à¦¤ কর",
-InsertSpecialChar : "বিশেষ অকà§à¦·à¦° যà§à¦•à§à¦¤ কর",
-InsertSmileyLbl : "সà§à¦®à¦¾à¦‡à¦²à§€",
-InsertSmiley : "সà§à¦®à¦¾à¦‡à¦²à§€ যà§à¦•à§à¦¤ কর",
-About : "FCKeditor কে বানিয়েছে",
-Bold : "বোলà§à¦¡",
-Italic : "ইটালিক",
-Underline : "আনà§à¦¡à¦¾à¦°à¦²à¦¾à¦‡à¦¨",
-StrikeThrough : "সà§à¦Ÿà§à¦°à¦¾à¦‡à¦• থà§à¦°à§",
-Subscript : "অধোলেখ",
-Superscript : "অভিলেখ",
-LeftJustify : "বা দিকে ঘেà¦à¦·à¦¾",
-CenterJustify : "মাঠবরাবর ঘেষা",
-RightJustify : "ডান দিকে ঘেà¦à¦·à¦¾",
-BlockJustify : "বà§à¦²à¦• জাসà§à¦Ÿà¦¿à¦«à¦¾à¦‡",
-DecreaseIndent : "ইনডেনà§à¦Ÿ কমাও",
-IncreaseIndent : "ইনডেনà§à¦Ÿ বাড়াও",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "আনডà§",
-Redo : "রি-ডà§",
-NumberedListLbl : "সাংখà§à¦¯à¦¿à¦• লিসà§à¦Ÿà§‡à¦° লেবেল",
-NumberedList : "সাংখà§à¦¯à¦¿à¦• লিসà§à¦Ÿ",
-BulletedListLbl : "বà§à¦²à§‡à¦Ÿ লিসà§à¦Ÿ লেবেল",
-BulletedList : "বà§à¦²à§‡à¦Ÿà§‡à¦¡ লিসà§à¦Ÿ",
-ShowTableBorders : "টেবিল বরà§à¦¡à¦¾à¦°",
-ShowDetails : "সবটà§à¦•ৠদেখাও",
-Style : "সà§à¦Ÿà¦¾à¦‡à¦²",
-FontFormat : "ফনà§à¦Ÿ ফরমেট",
-Font : "ফনà§à¦Ÿ",
-FontSize : "সাইজ",
-TextColor : "টেকà§à¦¸à§à¦Ÿ রং",
-BGColor : "বেকগà§à¦°à¦¾à¦‰à¦¨à§à¦¡ রং",
-Source : "সোরà§à¦¸",
-Find : "খোজো",
-Replace : "রিপà§à¦²à§‡à¦¸",
-SpellCheck : "বানান চেক",
-UniversalKeyboard : "সারà§à¦¬à¦œà¦¨à§€à¦¨ কিবোরà§à¦¡",
-PageBreakLbl : "পেজ বà§à¦°à§‡à¦• লেবেল",
-PageBreak : "পেজ বà§à¦°à§‡à¦•",
-
-Form : "ফরà§à¦®",
-Checkbox : "চেক বাকà§à¦¸",
-RadioButton : "রেডিও বাটন",
-TextField : "টেকà§à¦¸à¦Ÿ ফীলà§à¦¡",
-Textarea : "টেকà§à¦¸à¦Ÿ à¦à¦°à¦¿à§Ÿà¦¾",
-HiddenField : "গà§à¦ªà§à¦¤ ফীলà§à¦¡",
-Button : "বাটন",
-SelectionField : "বাছাই ফীলà§à¦¡",
-ImageButton : "ছবির বাটন",
-
-FitWindow : "উইনà§à¦¡à§‹ ফিট কর",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "লিংক সমà§à¦ªà¦¾à¦¦à¦¨",
-CellCM : "সেল",
-RowCM : "রো",
-ColumnCM : "কলাম",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "রো মà§à¦›à§‡ দাও",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "কলাম মà§à¦›à§‡ দাও",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "সেল মà§à¦›à§‡ দাও",
-MergeCells : "সেল জোড়া দাও",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "টেবিল ডিলীট কর",
-CellProperties : "সেলের পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿à¦œ",
-TableProperties : "টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-ImageProperties : "ছবি পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-FlashProperties : "ফà§à¦²à¦¾à¦¶ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-
-AnchorProp : "নোঙর পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-ButtonProp : "বাটন পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-CheckboxProp : "চেক বকà§à¦¸ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-HiddenFieldProp : "গà§à¦ªà§à¦¤ ফীলà§à¦¡ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-RadioButtonProp : "রেডিও বাটন পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-ImageButtonProp : "ছবি বাটন পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-TextFieldProp : "টেকà§à¦¸à¦Ÿ ফীলà§à¦¡ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-SelectionFieldProp : "বাছাই ফীলà§à¦¡ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-TextareaProp : "টেকà§à¦¸à¦Ÿ à¦à¦°à¦¿à§Ÿà¦¾ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-FormProp : "ফরà§à¦® পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-
-FontFormats : "সাধারণ;ফরà§à¦®à§‡à¦Ÿà§‡à¦¡;ঠিকানা;শীরà§à¦·à¦• à§§;শীরà§à¦·à¦• ২;শীরà§à¦·à¦• à§©;শীরà§à¦·à¦• ৪;শীরà§à¦·à¦• à§«;শীরà§à¦·à¦• ৬;শীরà§à¦·à¦• (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML পà§à¦°à¦¸à§‡à¦¸ করা হচà§à¦›à§‡",
-Done : "শেষ হয়েছে",
-PasteWordConfirm : "যে টেকসà§à¦Ÿà¦Ÿà¦¿ আপনি পেসà§à¦Ÿ করতে চাচà§à¦›à§‡à¦¨ মনে হচà§à¦›à§‡ সেটি ওয়ারà§à¦¡ থেকে কপি করা। আপনি কি পেসà§à¦Ÿ করার আগে à¦à¦•ে পরিষà§à¦•ার করতে চান?",
-NotCompatiblePaste : "à¦à¦‡ কমানà§à¦¡à¦Ÿà¦¿ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ইনà§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ à¦à¦•à§à¦¸à¦ªà§à¦²à§‹à¦°à¦¾à¦° à§«.০ বা তার পরের ভারà§à¦¸à¦¨à§‡ পাওয়া সমà§à¦­à¦¬à¥¤ আপনি কি পরিষà§à¦•ার না করেই পেসà§à¦Ÿ করতে চান?",
-UnknownToolbarItem : "অজানা টà§à¦²à¦¬à¦¾à¦° আইটেম \"%1\"",
-UnknownCommand : "অজানা কমানà§à¦¡ \"%1\"",
-NotImplemented : "কমানà§à¦¡ ইমপà§à¦²à¦¿à¦®à§‡à¦¨à§à¦Ÿ করা হয়নি",
-UnknownToolbarSet : "টà§à¦²à¦¬à¦¾à¦° সেট \"%1\" à¦à¦° অসà§à¦¤à¦¿à¦¤à§à¦¬ নেই",
-NoActiveX : "আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস কারনে à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° কিছৠফিচার পাওয়া নাও যেতে পারে। আপনাকে অবশà§à¦¯à¦‡ \"Run ActiveX controls and plug-ins\" à¦à¦¨à¦¾à¦¬à§‡à¦² করে নিতে হবে। আপনি ভà§à¦²à¦­à§à¦°à¦¾à¦¨à§à¦¤à¦¿ কিছৠকিছৠফিচারের অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ উপলবà§à¦§à¦¿ করতে পারেন।",
-BrowseServerBlocked : "রিসোরà§à¦¸ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° খোলা গেল না। নিশà§à¦šà¦¿à¦¤ করà§à¦¨ যে সব পপআপ বà§à¦²à¦•ার বনà§à¦§ করা আছে।",
-DialogBlocked : "ডায়ালগ ইউনà§à¦¡à§‹ খোলা গেল না। নিশà§à¦šà¦¿à¦¤ করà§à¦¨ যে সব পপআপ বà§à¦²à¦•ার বনà§à¦§ করা আছে।",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "ওকে",
-DlgBtnCancel : "বাতিল",
-DlgBtnClose : "বনà§à¦§ কর",
-DlgBtnBrowseServer : "বà§à¦°à¦¾à¦‰à¦œ সারà§à¦­à¦¾à¦°",
-DlgAdvancedTag : "à¦à¦¡à¦­à¦¾à¦¨à§à¦¸à¦¡",
-DlgOpOther : "<অনà§à¦¯>",
-DlgInfoTab : "তথà§à¦¯",
-DlgAlertUrl : "দয়া করে URL যà§à¦•à§à¦¤ করà§à¦¨",
-
-// General Dialogs Labels
-DlgGenNotSet : "<সেট নেই>",
-DlgGenId : "আইডি",
-DlgGenLangDir : "ভাষা লেখার দিক",
-DlgGenLangDirLtr : "বাম থেকে ডান (LTR)",
-DlgGenLangDirRtl : "ডান থেকে বাম (RTL)",
-DlgGenLangCode : "ভাষা কোড",
-DlgGenAccessKey : "à¦à¦•à§à¦¸à§‡à¦¸ কী",
-DlgGenName : "নাম",
-DlgGenTabIndex : "টà§à¦¯à¦¾à¦¬ ইনà§à¦¡à§‡à¦•à§à¦¸",
-DlgGenLongDescr : "URL à¦à¦° লমà§à¦¬à¦¾ বরà§à¦£à¦¨à¦¾",
-DlgGenClass : "সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸",
-DlgGenTitle : "পরামরà§à¦¶ শীরà§à¦·à¦•",
-DlgGenContType : "পরামরà§à¦¶ কনà§à¦Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° পà§à¦°à¦•ার",
-DlgGenLinkCharset : "লিংক রিসোরà§à¦¸ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦° সেট",
-DlgGenStyle : "সà§à¦Ÿà¦¾à¦‡à¦²",
-
-// Image Dialog
-DlgImgTitle : "ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-DlgImgInfoTab : "ছবির তথà§à¦¯",
-DlgImgBtnUpload : "ইহাকে সারà§à¦­à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর",
-DlgImgURL : "URL",
-DlgImgUpload : "আপলোড",
-DlgImgAlt : "বিকলà§à¦ª টেকà§à¦¸à¦Ÿ",
-DlgImgWidth : "পà§à¦°à¦¸à§à¦¥",
-DlgImgHeight : "দৈরà§à¦˜à§à¦¯",
-DlgImgLockRatio : "অনà§à¦ªà¦¾à¦¤ লক কর",
-DlgBtnResetSize : "সাইজ পূরà§à¦¬à¦¾à¦¬à¦¸à§à¦¥à¦¾à§Ÿ ফিরিয়ে দাও",
-DlgImgBorder : "বরà§à¦¡à¦¾à¦°",
-DlgImgHSpace : "হরাইজনà§à¦Ÿà¦¾à¦² সà§à¦ªà§‡à¦¸",
-DlgImgVSpace : "ভারà§à¦Ÿà¦¿à¦•েল সà§à¦ªà§‡à¦¸",
-DlgImgAlign : "à¦à¦²à¦¾à¦‡à¦¨",
-DlgImgAlignLeft : "বামে",
-DlgImgAlignAbsBottom: "Abs নীচে",
-DlgImgAlignAbsMiddle: "Abs উপর",
-DlgImgAlignBaseline : "মূল রেখা",
-DlgImgAlignBottom : "নীচে",
-DlgImgAlignMiddle : "মধà§à¦¯",
-DlgImgAlignRight : "ডানে",
-DlgImgAlignTextTop : "টেকà§à¦¸à¦Ÿ উপর",
-DlgImgAlignTop : "উপর",
-DlgImgPreview : "পà§à¦°à§€à¦­à¦¿à¦‰",
-DlgImgAlertUrl : "অনà§à¦—à§à¦°à¦¹à¦• করে ছবির URL টাইপ করà§à¦¨",
-DlgImgLinkTab : "লিংক",
-
-// Flash Dialog
-DlgFlashTitle : "ফà§à¦²à§à¦¯à¦¾à¦¶ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-DlgFlashChkPlay : "অটো পà§à¦²à§‡",
-DlgFlashChkLoop : "লূপ",
-DlgFlashChkMenu : "ফà§à¦²à§à¦¯à¦¾à¦¶ মেনৠà¦à¦¨à¦¾à¦¬à¦² কর",
-DlgFlashScale : "সà§à¦•েল",
-DlgFlashScaleAll : "সব দেখাও",
-DlgFlashScaleNoBorder : "কোনো বরà§à¦¡à¦¾à¦° নেই",
-DlgFlashScaleFit : "নিখà§à¦à¦¤ ফিট",
-
-// Link Dialog
-DlgLnkWindowTitle : "লিংক",
-DlgLnkInfoTab : "লিংক তথà§à¦¯",
-DlgLnkTargetTab : "টারà§à¦—েট",
-
-DlgLnkType : "লিংক পà§à¦°à¦•ার",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "à¦à¦‡ পেজে নোঙর কর",
-DlgLnkTypeEMail : "ইমেইল",
-DlgLnkProto : "পà§à¦°à§‹à¦Ÿà§‹à¦•ল",
-DlgLnkProtoOther : "<অনà§à¦¯>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "নোঙর বাছাই",
-DlgLnkAnchorByName : "নোঙরের নাম দিয়ে",
-DlgLnkAnchorById : "নোঙরের আইডি দিয়ে",
-DlgLnkNoAnchors : "(No anchors available in the document)", //MISSING
-DlgLnkEMail : "ইমেইল ঠিকানা",
-DlgLnkEMailSubject : "মেসেজের বিষয়",
-DlgLnkEMailBody : "মেসেজের দেহ",
-DlgLnkUpload : "আপলোড",
-DlgLnkBtnUpload : "à¦à¦•ে সারà§à¦­à¦¾à¦°à§‡ পাঠাও",
-
-DlgLnkTarget : "টারà§à¦—েট",
-DlgLnkTargetFrame : "<ফà§à¦°à§‡à¦®>",
-DlgLnkTargetPopup : "<পপআপ উইনà§à¦¡à§‹>",
-DlgLnkTargetBlank : "নতà§à¦¨ উইনà§à¦¡à§‹ (_blank)",
-DlgLnkTargetParent : "মূল উইনà§à¦¡à§‹ (_parent)",
-DlgLnkTargetSelf : "à¦à¦‡ উইনà§à¦¡à§‹ (_self)",
-DlgLnkTargetTop : "শীরà§à¦· উইনà§à¦¡à§‹ (_top)",
-DlgLnkTargetFrameName : "টারà§à¦—েট ফà§à¦°à§‡à¦®à§‡à¦° নাম",
-DlgLnkPopWinName : "পপআপ উইনà§à¦¡à§‹à¦° নাম",
-DlgLnkPopWinFeat : "পপআপ উইনà§à¦¡à§‹ ফীচার সমূহ",
-DlgLnkPopResize : "রিসাইজ করা সমà§à¦­à¦¬",
-DlgLnkPopLocation : "লোকেশন বার",
-DlgLnkPopMenu : "মেনà§à¦¯à§ বার",
-DlgLnkPopScroll : "সà§à¦•à§à¦°à¦² বার",
-DlgLnkPopStatus : "সà§à¦Ÿà§à¦¯à¦¾à¦Ÿà¦¾à¦¸ বার",
-DlgLnkPopToolbar : "টà§à¦² বার",
-DlgLnkPopFullScrn : "পূরà§à¦£ পরà§à¦¦à¦¾ জà§à§œà§‡ (IE)",
-DlgLnkPopDependent : "ডিপেনà§à¦¡à§‡à¦¨à§à¦Ÿ (Netscape)",
-DlgLnkPopWidth : "পà§à¦°à¦¸à§à¦¥",
-DlgLnkPopHeight : "দৈরà§à¦˜à§à¦¯",
-DlgLnkPopLeft : "বামের পজিশন",
-DlgLnkPopTop : "ডানের পজিশন",
-
-DlnLnkMsgNoUrl : "অনà§à¦—à§à¦°à¦¹ করে URL লিংক টাইপ করà§à¦¨",
-DlnLnkMsgNoEMail : "অনà§à¦—à§à¦°à¦¹ করে ইমেইল à¦à¦¡à§à¦°à§‡à¦¸ টাইপ করà§à¦¨",
-DlnLnkMsgNoAnchor : "অনà§à¦—à§à¦°à¦¹ করে নোঙর বাছাই করà§à¦¨",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "রং বাছাই কর",
-DlgColorBtnClear : "পরিষà§à¦•ার কর",
-DlgColorHighlight : "হাইলাইট",
-DlgColorSelected : "সিলেকà§à¦Ÿà§‡à¦¡",
-
-// Smiley Dialog
-DlgSmileyTitle : "সà§à¦®à¦¾à¦‡à¦²à§€ যà§à¦•à§à¦¤ কর",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "বিশেষ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° বাছাই কর",
-
-// Table Dialog
-DlgTableTitle : "টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-DlgTableRows : "রো",
-DlgTableColumns : "কলাম",
-DlgTableBorder : "বরà§à¦¡à¦¾à¦° সাইজ",
-DlgTableAlign : "à¦à¦²à¦¾à¦‡à¦¨à¦®à§‡à¦¨à§à¦Ÿ",
-DlgTableAlignNotSet : "<সেট নেই>",
-DlgTableAlignLeft : "বামে",
-DlgTableAlignCenter : "মাà¦à¦–ানে",
-DlgTableAlignRight : "ডানে",
-DlgTableWidth : "পà§à¦°à¦¸à§à¦¥",
-DlgTableWidthPx : "পিকà§à¦¸à§‡à¦²",
-DlgTableWidthPc : "শতকরা",
-DlgTableHeight : "দৈরà§à¦˜à§à¦¯",
-DlgTableCellSpace : "সেল সà§à¦ªà§‡à¦¸",
-DlgTableCellPad : "সেল পà§à¦¯à¦¾à¦¡à¦¿à¦‚",
-DlgTableCaption : "শীরà§à¦·à¦•",
-DlgTableSummary : "সারাংশ",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "সেল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-DlgCellWidth : "পà§à¦°à¦¸à§à¦¥",
-DlgCellWidthPx : "পিকà§à¦¸à§‡à¦²",
-DlgCellWidthPc : "শতকরা",
-DlgCellHeight : "দৈরà§à¦˜à§à¦¯",
-DlgCellWordWrap : "ওয়ারà§à¦¡ রেপ",
-DlgCellWordWrapNotSet : "<সেট নেই>",
-DlgCellWordWrapYes : "হাà¦",
-DlgCellWordWrapNo : "না",
-DlgCellHorAlign : "হরাইজনà§à¦Ÿà¦¾à¦² à¦à¦²à¦¾à¦‡à¦¨à¦®à§‡à¦¨à§à¦Ÿ",
-DlgCellHorAlignNotSet : "<সেট নেই>",
-DlgCellHorAlignLeft : "বামে",
-DlgCellHorAlignCenter : "মাà¦à¦–ানে",
-DlgCellHorAlignRight: "ডানে",
-DlgCellVerAlign : "ভারà§à¦Ÿà¦¿à¦•à§à¦¯à¦¾à¦² à¦à¦²à¦¾à¦‡à¦¨à¦®à§‡à¦¨à§à¦Ÿ",
-DlgCellVerAlignNotSet : "<সেট নেই>",
-DlgCellVerAlignTop : "উপর",
-DlgCellVerAlignMiddle : "মধà§à¦¯",
-DlgCellVerAlignBottom : "নীচে",
-DlgCellVerAlignBaseline : "মূলরেখা",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "রো সà§à¦ªà§à¦¯à¦¾à¦¨",
-DlgCellCollSpan : "কলাম সà§à¦ªà§à¦¯à¦¾à¦¨",
-DlgCellBackColor : "বà§à¦¯à¦¾à¦•গà§à¦°à¦¾à¦‰à¦¨à§à¦¡ রং",
-DlgCellBorderColor : "বরà§à¦¡à¦¾à¦°à§‡à¦° রং",
-DlgCellBtnSelect : "বাছাই কর",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "খোà¦à¦œà§‹",
-DlgFindFindBtn : "খোà¦à¦œà§‹",
-DlgFindNotFoundMsg : "আপনার উলà§à¦²à§‡à¦–িত টেকসà§à¦Ÿ পাওয়া যায়নি",
-
-// Replace Dialog
-DlgReplaceTitle : "বদলে দাও",
-DlgReplaceFindLbl : "যা খà§à¦à¦œà¦¤à§‡ হবে:",
-DlgReplaceReplaceLbl : "যার সাথে বদলাতে হবে:",
-DlgReplaceCaseChk : "কেস মিলাও",
-DlgReplaceReplaceBtn : "বদলে দাও",
-DlgReplaceReplAllBtn : "সব বদলে দাও",
-DlgReplaceWordChk : "পà§à¦°à¦¾ শবà§à¦¦ মেলাও",
-
-// Paste Operations / Dialog
-PasteErrorCut : "আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস à¦à¦¡à¦¿à¦Ÿà¦°à¦•ে অটোমেটিক কাট করার অনà§à¦®à¦¤à¦¿ দেয়নি। দয়া করে à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl+X)।",
-PasteErrorCopy : "আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস à¦à¦¡à¦¿à¦Ÿà¦°à¦•ে অটোমেটিক কপি করার অনà§à¦®à¦¤à¦¿ দেয়নি। দয়া করে à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl+C)।",
-
-PasteAsText : "সাদা টেকà§à¦¸à¦Ÿ হিসেবে পেসà§à¦Ÿ কর",
-PasteFromWord : "ওয়ারà§à¦¡ থেকে পেসà§à¦Ÿ কর",
-
-DlgPasteMsg2 : "অনà§à¦—à§à¦°à¦¹ করে নীচের বাকà§à¦¸à§‡ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে (<STRONG>Ctrl+V</STRONG>) পেসà§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ <STRONG>OK</STRONG> চাপ দিন",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "ফনà§à¦Ÿ ফেস ডেফিনেশন ইগনোর করà§à¦¨",
-DlgPasteRemoveStyles : "সà§à¦Ÿà¦¾à¦‡à¦² ডেফিনেশন সরিয়ে দিন",
-
-// Color Picker
-ColorAutomatic : "অটোমেটিক",
-ColorMoreColors : "আরও রং...",
-
-// Document Properties
-DocProps : "ডকà§à¦¯à§à¦®à§‡à¦¨à§à¦Ÿ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-
-// Anchor Dialog
-DlgAnchorTitle : "নোঙরের পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-DlgAnchorName : "নোঙরের নাম",
-DlgAnchorErrorName : "নোঙরের নাম টাইপ করà§à¦¨",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "শবà§à¦¦à¦•োষে নেই",
-DlgSpellChangeTo : "à¦à¦¤à§‡ বদলাও",
-DlgSpellBtnIgnore : "ইগনোর কর",
-DlgSpellBtnIgnoreAll : "সব ইগনোর কর",
-DlgSpellBtnReplace : "বদলে দাও",
-DlgSpellBtnReplaceAll : "সব বদলে দাও",
-DlgSpellBtnUndo : "আনà§à¦¡à§",
-DlgSpellNoSuggestions : "- কোন সাজেশন নেই -",
-DlgSpellProgress : "বানান পরীকà§à¦·à¦¾ চলছে...",
-DlgSpellNoMispell : "বানান পরীকà§à¦·à¦¾ শেষ: কোন ভà§à¦² বানান পাওয়া যায়নি",
-DlgSpellNoChanges : "বানান পরীকà§à¦·à¦¾ শেষ: কোন শবà§à¦¦ পরিবরà§à¦¤à¦¨ করা হয়নি",
-DlgSpellOneChange : "বানান পরীকà§à¦·à¦¾ শেষ: à¦à¦•টি মাতà§à¦° শবà§à¦¦ পরিবরà§à¦¤à¦¨ করা হয়েছে",
-DlgSpellManyChanges : "বানান পরীকà§à¦·à¦¾ শেষ: %1 গà§à¦²à§‹ শবà§à¦¦ বদলে গà§à¦¯à¦¾à¦›à§‡",
-
-IeSpellDownload : "বানান পরীকà§à¦·à¦• ইনসà§à¦Ÿà¦² করা নেই। আপনি কি à¦à¦–নই à¦à¦Ÿà¦¾ ডাউনলোড করতে চান?",
-
-// Button Dialog
-DlgButtonText : "টেকà§à¦¸à¦Ÿ (ভà§à¦¯à¦¾à¦²à§)",
-DlgButtonType : "পà§à¦°à¦•ার",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "নাম",
-DlgCheckboxValue : "ভà§à¦¯à¦¾à¦²à§",
-DlgCheckboxSelected : "সিলেকà§à¦Ÿà§‡à¦¡",
-
-// Form Dialog
-DlgFormName : "নাম",
-DlgFormAction : "à¦à¦•শà§à¦¯à¦¨",
-DlgFormMethod : "পদà§à¦§à¦¤à¦¿",
-
-// Select Field Dialog
-DlgSelectName : "নাম",
-DlgSelectValue : "ভà§à¦¯à¦¾à¦²à§",
-DlgSelectSize : "সাইজ",
-DlgSelectLines : "লাইন সমূহ",
-DlgSelectChkMulti : "à¦à¦•াধিক সিলেকশন à¦à¦²à¦¾à¦‰ কর",
-DlgSelectOpAvail : "অনà§à¦¯à¦¾à¦¨à§à¦¯ বিকলà§à¦ª",
-DlgSelectOpText : "টেকà§à¦¸à¦Ÿ",
-DlgSelectOpValue : "ভà§à¦¯à¦¾à¦²à§",
-DlgSelectBtnAdd : "যà§à¦•à§à¦¤",
-DlgSelectBtnModify : "বদলে দাও",
-DlgSelectBtnUp : "উপর",
-DlgSelectBtnDown : "নীচে",
-DlgSelectBtnSetValue : "বাছাই করা ভà§à¦¯à¦¾à¦²à§ হিসেবে সেট কর",
-DlgSelectBtnDelete : "ডিলীট",
-
-// Textarea Dialog
-DlgTextareaName : "নাম",
-DlgTextareaCols : "কলাম",
-DlgTextareaRows : "রো",
-
-// Text Field Dialog
-DlgTextName : "নাম",
-DlgTextValue : "ভà§à¦¯à¦¾à¦²à§",
-DlgTextCharWidth : "কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° পà§à¦°à¦¶à¦¸à§à¦¤à¦¤à¦¾",
-DlgTextMaxChars : "সরà§à¦¬à¦¾à¦§à¦¿à¦• কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦°",
-DlgTextType : "টাইপ",
-DlgTextTypeText : "টেকà§à¦¸à¦Ÿ",
-DlgTextTypePass : "পাসওয়ারà§à¦¡",
-
-// Hidden Field Dialog
-DlgHiddenName : "নাম",
-DlgHiddenValue : "ভà§à¦¯à¦¾à¦²à§",
-
-// Bulleted List Dialog
-BulletedListProp : "বà§à¦²à§‡à¦Ÿà§‡à¦¡ সূচী পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-NumberedListProp : "সাংখà§à¦¯à¦¿à¦• সূচী পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "পà§à¦°à¦•ার",
-DlgLstTypeCircle : "গোল",
-DlgLstTypeDisc : "ডিসà§à¦•",
-DlgLstTypeSquare : "চৌকোণা",
-DlgLstTypeNumbers : "সংখà§à¦¯à¦¾ (1, 2, 3)",
-DlgLstTypeLCase : "ছোট অকà§à¦·à¦° (a, b, c)",
-DlgLstTypeUCase : "বড় অকà§à¦·à¦° (A, B, C)",
-DlgLstTypeSRoman : "ছোট রোমান সংখà§à¦¯à¦¾ (i, ii, iii)",
-DlgLstTypeLRoman : "বড় রোমান সংখà§à¦¯à¦¾ (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "সাধারন",
-DlgDocBackTab : "বà§à¦¯à¦¾à¦•গà§à¦°à¦¾à¦‰à¦¨à§à¦¡",
-DlgDocColorsTab : "রং à¦à¦¬à¦‚ মারà§à¦œà¦¿à¦¨",
-DlgDocMetaTab : "মেটাডেটা",
-
-DlgDocPageTitle : "পেজ শীরà§à¦·à¦•",
-DlgDocLangDir : "ভাষা লিখার দিক",
-DlgDocLangDirLTR : "বাম থেকে ডানে (LTR)",
-DlgDocLangDirRTL : "ডান থেকে বামে (RTL)",
-DlgDocLangCode : "ভাষা কোড",
-DlgDocCharSet : "কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° সেট à¦à¦¨à¦•োডিং",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "অনà§à¦¯ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° সেট à¦à¦¨à¦•োডিং",
-
-DlgDocDocType : "ডকà§à¦¯à§à¦®à§‡à¦¨à§à¦Ÿ টাইপ হেডিং",
-DlgDocDocTypeOther : "অনà§à¦¯ ডকà§à¦¯à§à¦®à§‡à¦¨à§à¦Ÿ টাইপ হেডিং",
-DlgDocIncXHTML : "XHTML ডেকà§à¦²à¦¾à¦°à§‡à¦¶à¦¨ যà§à¦•à§à¦¤ কর",
-DlgDocBgColor : "বà§à¦¯à¦¾à¦•গà§à¦°à¦¾à¦‰à¦¨à§à¦¡ রং",
-DlgDocBgImage : "বà§à¦¯à¦¾à¦•গà§à¦°à¦¾à¦‰à¦¨à§à¦¡ ছবির URL",
-DlgDocBgNoScroll : "সà§à¦•à§à¦°à¦²à¦¹à§€à¦¨ বà§à¦¯à¦¾à¦•গà§à¦°à¦¾à¦‰à¦¨à§à¦¡",
-DlgDocCText : "টেকà§à¦¸à¦Ÿ",
-DlgDocCLink : "লিংক",
-DlgDocCVisited : "ভিজিট করা লিংক",
-DlgDocCActive : "সকà§à¦°à¦¿à§Ÿ লিংক",
-DlgDocMargins : "পেজ মারà§à¦œà¦¿à¦¨",
-DlgDocMaTop : "উপর",
-DlgDocMaLeft : "বামে",
-DlgDocMaRight : "ডানে",
-DlgDocMaBottom : "নীচে",
-DlgDocMeIndex : "ডকà§à¦¯à§à¦®à§‡à¦¨à§à¦Ÿ ইনà§à¦¡à§‡à¦•à§à¦¸ কিওয়ারà§à¦¡ (কমা দà§à¦¬à¦¾à¦°à¦¾ বিচà§à¦›à¦¿à¦¨à§à¦¨)",
-DlgDocMeDescr : "ডকà§à¦¯à§‚মেনà§à¦Ÿ বরà§à¦£à¦¨à¦¾",
-DlgDocMeAuthor : "লেখক",
-DlgDocMeCopy : "কপীরাইট",
-DlgDocPreview : "পà§à¦°à§€à¦­à¦¿à¦‰",
-
-// Templates Dialog
-Templates : "টেমপà§à¦²à§‡à¦Ÿ",
-DlgTemplatesTitle : "কনটেনà§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿ",
-DlgTemplatesSelMsg : "অনà§à¦—à§à¦°à¦¹ করে à¦à¦¡à¦¿à¦Ÿà¦°à§‡ ওপেন করার জনà§à¦¯ টেমপà§à¦²à§‡à¦Ÿ বাছাই করà§à¦¨<br>(আসল কনটেনà§à¦Ÿ হারিয়ে যাবে):",
-DlgTemplatesLoading : "টেমপà§à¦²à§‡à¦Ÿ লিসà§à¦Ÿ হারিয়ে যাবে। অনà§à¦—à§à¦°à¦¹ করে অপেকà§à¦·à¦¾ করà§à¦¨...",
-DlgTemplatesNoTpl : "(কোন টেমপà§à¦²à§‡à¦Ÿ ডিফাইন করা নেই)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "কে বানিয়েছে",
-DlgAboutBrowserInfoTab : "বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° বà§à¦¯à¦¾à¦ªà¦¾à¦°à§‡ তথà§à¦¯",
-DlgAboutLicenseTab : "লাইসেনà§à¦¸",
-DlgAboutVersion : "ভারà§à¦¸à¦¨",
-DlgAboutInfo : "আরও তথà§à¦¯à§‡à¦° জনà§à¦¯ যান",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bs.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bs.js
deleted file mode 100644
index 104090142..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/bs.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Bosnian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Skupi trake sa alatima",
-ToolbarExpand : "Otvori trake sa alatima",
-
-// Toolbar Items and Context Menu
-Save : "Snimi",
-NewPage : "Novi dokument",
-Preview : "Prikaži",
-Cut : "Izreži",
-Copy : "Kopiraj",
-Paste : "Zalijepi",
-PasteText : "Zalijepi kao obièan tekst",
-PasteWord : "Zalijepi iz Word-a",
-Print : "Å tampaj",
-SelectAll : "Selektuj sve",
-RemoveFormat : "Poništi format",
-InsertLinkLbl : "Link",
-InsertLink : "Ubaci/Izmjeni link",
-RemoveLink : "Izbriši link",
-VisitLink : "Open Link", //MISSING
-Anchor : "Insert/Edit Anchor", //MISSING
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Slika",
-InsertImage : "Ubaci/Izmjeni sliku",
-InsertFlashLbl : "Flash", //MISSING
-InsertFlash : "Insert/Edit Flash", //MISSING
-InsertTableLbl : "Tabela",
-InsertTable : "Ubaci/Izmjeni tabelu",
-InsertLineLbl : "Linija",
-InsertLine : "Ubaci horizontalnu liniju",
-InsertSpecialCharLbl: "Specijalni karakter",
-InsertSpecialChar : "Ubaci specijalni karater",
-InsertSmileyLbl : "Smješko",
-InsertSmiley : "Ubaci smješka",
-About : "O FCKeditor-u",
-Bold : "Boldiraj",
-Italic : "Ukosi",
-Underline : "Podvuci",
-StrikeThrough : "Precrtaj",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Lijevo poravnanje",
-CenterJustify : "Centralno poravnanje",
-RightJustify : "Desno poravnanje",
-BlockJustify : "Puno poravnanje",
-DecreaseIndent : "Smanji uvod",
-IncreaseIndent : "Poveæaj uvod",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Vrati",
-Redo : "Ponovi",
-NumberedListLbl : "Numerisana lista",
-NumberedList : "Ubaci/Izmjeni numerisanu listu",
-BulletedListLbl : "Lista",
-BulletedList : "Ubaci/Izmjeni listu",
-ShowTableBorders : "Pokaži okvire tabela",
-ShowDetails : "Pokaži detalje",
-Style : "Stil",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "Velièina",
-TextColor : "Boja teksta",
-BGColor : "Boja pozadine",
-Source : "HTML kôd",
-Find : "Naði",
-Replace : "Zamjeni",
-SpellCheck : "Check Spelling", //MISSING
-UniversalKeyboard : "Universal Keyboard", //MISSING
-PageBreakLbl : "Page Break", //MISSING
-PageBreak : "Insert Page Break", //MISSING
-
-Form : "Form", //MISSING
-Checkbox : "Checkbox", //MISSING
-RadioButton : "Radio Button", //MISSING
-TextField : "Text Field", //MISSING
-Textarea : "Textarea", //MISSING
-HiddenField : "Hidden Field", //MISSING
-Button : "Button", //MISSING
-SelectionField : "Selection Field", //MISSING
-ImageButton : "Image Button", //MISSING
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Izmjeni link",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Briši redove",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Briši kolone",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Briši æelije",
-MergeCells : "Spoji æelije",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Delete Table", //MISSING
-CellProperties : "Svojstva æelije",
-TableProperties : "Svojstva tabele",
-ImageProperties : "Svojstva slike",
-FlashProperties : "Flash Properties", //MISSING
-
-AnchorProp : "Anchor Properties", //MISSING
-ButtonProp : "Button Properties", //MISSING
-CheckboxProp : "Checkbox Properties", //MISSING
-HiddenFieldProp : "Hidden Field Properties", //MISSING
-RadioButtonProp : "Radio Button Properties", //MISSING
-ImageButtonProp : "Image Button Properties", //MISSING
-TextFieldProp : "Text Field Properties", //MISSING
-SelectionFieldProp : "Selection Field Properties", //MISSING
-TextareaProp : "Textarea Properties", //MISSING
-FormProp : "Form Properties", //MISSING
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Procesiram XHTML. Molim saèekajte...",
-Done : "Gotovo",
-PasteWordConfirm : "Tekst koji želite zalijepiti èini se da je kopiran iz Worda. Da li želite da se prvo oèisti?",
-NotCompatiblePaste : "Ova komanda je podržana u Internet Explorer-u verzijama 5.5 ili novijim. Da li želite da izvršite lijepljenje teksta bez èišæenja?",
-UnknownToolbarItem : "Nepoznata stavka sa trake sa alatima \"%1\"",
-UnknownCommand : "Nepoznata komanda \"%1\"",
-NotImplemented : "Komanda nije implementirana",
-UnknownToolbarSet : "Traka sa alatima \"%1\" ne postoji",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Odustani",
-DlgBtnClose : "Zatvori",
-DlgBtnBrowseServer : "Browse Server", //MISSING
-DlgAdvancedTag : "Naprednije",
-DlgOpOther : "<Other>", //MISSING
-DlgInfoTab : "Info", //MISSING
-DlgAlertUrl : "Please insert the URL", //MISSING
-
-// General Dialogs Labels
-DlgGenNotSet : "<nije podešeno>",
-DlgGenId : "Id",
-DlgGenLangDir : "Smjer pisanja",
-DlgGenLangDirLtr : "S lijeva na desno (LTR)",
-DlgGenLangDirRtl : "S desna na lijevo (RTL)",
-DlgGenLangCode : "Jezièni kôd",
-DlgGenAccessKey : "Pristupna tipka",
-DlgGenName : "Naziv",
-DlgGenTabIndex : "Tab indeks",
-DlgGenLongDescr : "Dugaèki opis URL-a",
-DlgGenClass : "Klase CSS stilova",
-DlgGenTitle : "Advisory title",
-DlgGenContType : "Advisory vrsta sadržaja",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Stil",
-
-// Image Dialog
-DlgImgTitle : "Svojstva slike",
-DlgImgInfoTab : "Info slike",
-DlgImgBtnUpload : "Å alji na server",
-DlgImgURL : "URL",
-DlgImgUpload : "Å alji",
-DlgImgAlt : "Tekst na slici",
-DlgImgWidth : "Å irina",
-DlgImgHeight : "Visina",
-DlgImgLockRatio : "Zakljuèaj odnos",
-DlgBtnResetSize : "Resetuj dimenzije",
-DlgImgBorder : "Okvir",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Poravnanje",
-DlgImgAlignLeft : "Lijevo",
-DlgImgAlignAbsBottom: "Abs dole",
-DlgImgAlignAbsMiddle: "Abs sredina",
-DlgImgAlignBaseline : "Bazno",
-DlgImgAlignBottom : "Dno",
-DlgImgAlignMiddle : "Sredina",
-DlgImgAlignRight : "Desno",
-DlgImgAlignTextTop : "Vrh teksta",
-DlgImgAlignTop : "Vrh",
-DlgImgPreview : "Prikaz",
-DlgImgAlertUrl : "Molimo ukucajte URL od slike.",
-DlgImgLinkTab : "Link", //MISSING
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties", //MISSING
-DlgFlashChkPlay : "Auto Play", //MISSING
-DlgFlashChkLoop : "Loop", //MISSING
-DlgFlashChkMenu : "Enable Flash Menu", //MISSING
-DlgFlashScale : "Scale", //MISSING
-DlgFlashScaleAll : "Show all", //MISSING
-DlgFlashScaleNoBorder : "No Border", //MISSING
-DlgFlashScaleFit : "Exact Fit", //MISSING
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link info",
-DlgLnkTargetTab : "Prozor",
-
-DlgLnkType : "Tip linka",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Sidro na ovoj stranici",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<drugi>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Izaberi sidro",
-DlgLnkAnchorByName : "Po nazivu sidra",
-DlgLnkAnchorById : "Po Id-u elementa",
-DlgLnkNoAnchors : "(Nema dostupnih sidra na stranici)",
-DlgLnkEMail : "E-Mail Adresa",
-DlgLnkEMailSubject : "Subjekt poruke",
-DlgLnkEMailBody : "Poruka",
-DlgLnkUpload : "Å alji",
-DlgLnkBtnUpload : "Å alji na server",
-
-DlgLnkTarget : "Prozor",
-DlgLnkTargetFrame : "<frejm>",
-DlgLnkTargetPopup : "<popup prozor>",
-DlgLnkTargetBlank : "Novi prozor (_blank)",
-DlgLnkTargetParent : "Glavni prozor (_parent)",
-DlgLnkTargetSelf : "Isti prozor (_self)",
-DlgLnkTargetTop : "Najgornji prozor (_top)",
-DlgLnkTargetFrameName : "Target Frame Name", //MISSING
-DlgLnkPopWinName : "Naziv popup prozora",
-DlgLnkPopWinFeat : "Moguænosti popup prozora",
-DlgLnkPopResize : "Promjenljive velièine",
-DlgLnkPopLocation : "Traka za lokaciju",
-DlgLnkPopMenu : "Izborna traka",
-DlgLnkPopScroll : "Scroll traka",
-DlgLnkPopStatus : "Statusna traka",
-DlgLnkPopToolbar : "Traka sa alatima",
-DlgLnkPopFullScrn : "Cijeli ekran (IE)",
-DlgLnkPopDependent : "Ovisno (Netscape)",
-DlgLnkPopWidth : "Å irina",
-DlgLnkPopHeight : "Visina",
-DlgLnkPopLeft : "Lijeva pozicija",
-DlgLnkPopTop : "Gornja pozicija",
-
-DlnLnkMsgNoUrl : "Molimo ukucajte URL link",
-DlnLnkMsgNoEMail : "Molimo ukucajte e-mail adresu",
-DlnLnkMsgNoAnchor : "Molimo izaberite sidro",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Izaberi boju",
-DlgColorBtnClear : "Oèisti",
-DlgColorHighlight : "Igled",
-DlgColorSelected : "Selektovana",
-
-// Smiley Dialog
-DlgSmileyTitle : "Ubaci smješka",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Izaberi specijalni karakter",
-
-// Table Dialog
-DlgTableTitle : "Svojstva tabele",
-DlgTableRows : "Redova",
-DlgTableColumns : "Kolona",
-DlgTableBorder : "Okvir",
-DlgTableAlign : "Poravnanje",
-DlgTableAlignNotSet : "<Nije podešeno>",
-DlgTableAlignLeft : "Lijevo",
-DlgTableAlignCenter : "Centar",
-DlgTableAlignRight : "Desno",
-DlgTableWidth : "Å irina",
-DlgTableWidthPx : "piksela",
-DlgTableWidthPc : "posto",
-DlgTableHeight : "Visina",
-DlgTableCellSpace : "Razmak æelija",
-DlgTableCellPad : "Uvod æelija",
-DlgTableCaption : "Naslov",
-DlgTableSummary : "Summary", //MISSING
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Svojstva æelije",
-DlgCellWidth : "Å irina",
-DlgCellWidthPx : "piksela",
-DlgCellWidthPc : "posto",
-DlgCellHeight : "Visina",
-DlgCellWordWrap : "Vrapuj tekst",
-DlgCellWordWrapNotSet : "<Nije podešeno>",
-DlgCellWordWrapYes : "Da",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Horizontalno poravnanje",
-DlgCellHorAlignNotSet : "<Nije podešeno>",
-DlgCellHorAlignLeft : "Lijevo",
-DlgCellHorAlignCenter : "Centar",
-DlgCellHorAlignRight: "Desno",
-DlgCellVerAlign : "Vertikalno poravnanje",
-DlgCellVerAlignNotSet : "<Nije podešeno>",
-DlgCellVerAlignTop : "Gore",
-DlgCellVerAlignMiddle : "Sredina",
-DlgCellVerAlignBottom : "Dno",
-DlgCellVerAlignBaseline : "Bazno",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Spajanje æelija",
-DlgCellCollSpan : "Spajanje kolona",
-DlgCellBackColor : "Boja pozadine",
-DlgCellBorderColor : "Boja okvira",
-DlgCellBtnSelect : "Selektuj...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Naði",
-DlgFindFindBtn : "Naði",
-DlgFindNotFoundMsg : "Traženi tekst nije pronaðen.",
-
-// Replace Dialog
-DlgReplaceTitle : "Zamjeni",
-DlgReplaceFindLbl : "Naði šta:",
-DlgReplaceReplaceLbl : "Zamjeni sa:",
-DlgReplaceCaseChk : "Uporeðuj velika/mala slova",
-DlgReplaceReplaceBtn : "Zamjeni",
-DlgReplaceReplAllBtn : "Zamjeni sve",
-DlgReplaceWordChk : "Uporeðuj samo cijelu rijeè",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).",
-PasteErrorCopy : "Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).",
-
-PasteAsText : "Zalijepi kao obièan tekst",
-PasteFromWord : "Zalijepi iz Word-a",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.", //MISSING
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignore Font Face definitions", //MISSING
-DlgPasteRemoveStyles : "Remove Styles definitions", //MISSING
-
-// Color Picker
-ColorAutomatic : "Automatska",
-ColorMoreColors : "Više boja...",
-
-// Document Properties
-DocProps : "Document Properties", //MISSING
-
-// Anchor Dialog
-DlgAnchorTitle : "Anchor Properties", //MISSING
-DlgAnchorName : "Anchor Name", //MISSING
-DlgAnchorErrorName : "Please type the anchor name", //MISSING
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Not in dictionary", //MISSING
-DlgSpellChangeTo : "Change to", //MISSING
-DlgSpellBtnIgnore : "Ignore", //MISSING
-DlgSpellBtnIgnoreAll : "Ignore All", //MISSING
-DlgSpellBtnReplace : "Replace", //MISSING
-DlgSpellBtnReplaceAll : "Replace All", //MISSING
-DlgSpellBtnUndo : "Undo", //MISSING
-DlgSpellNoSuggestions : "- No suggestions -", //MISSING
-DlgSpellProgress : "Spell check in progress...", //MISSING
-DlgSpellNoMispell : "Spell check complete: No misspellings found", //MISSING
-DlgSpellNoChanges : "Spell check complete: No words changed", //MISSING
-DlgSpellOneChange : "Spell check complete: One word changed", //MISSING
-DlgSpellManyChanges : "Spell check complete: %1 words changed", //MISSING
-
-IeSpellDownload : "Spell checker not installed. Do you want to download it now?", //MISSING
-
-// Button Dialog
-DlgButtonText : "Text (Value)", //MISSING
-DlgButtonType : "Type", //MISSING
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Name", //MISSING
-DlgCheckboxValue : "Value", //MISSING
-DlgCheckboxSelected : "Selected", //MISSING
-
-// Form Dialog
-DlgFormName : "Name", //MISSING
-DlgFormAction : "Action", //MISSING
-DlgFormMethod : "Method", //MISSING
-
-// Select Field Dialog
-DlgSelectName : "Name", //MISSING
-DlgSelectValue : "Value", //MISSING
-DlgSelectSize : "Size", //MISSING
-DlgSelectLines : "lines", //MISSING
-DlgSelectChkMulti : "Allow multiple selections", //MISSING
-DlgSelectOpAvail : "Available Options", //MISSING
-DlgSelectOpText : "Text", //MISSING
-DlgSelectOpValue : "Value", //MISSING
-DlgSelectBtnAdd : "Add", //MISSING
-DlgSelectBtnModify : "Modify", //MISSING
-DlgSelectBtnUp : "Up", //MISSING
-DlgSelectBtnDown : "Down", //MISSING
-DlgSelectBtnSetValue : "Set as selected value", //MISSING
-DlgSelectBtnDelete : "Delete", //MISSING
-
-// Textarea Dialog
-DlgTextareaName : "Name", //MISSING
-DlgTextareaCols : "Columns", //MISSING
-DlgTextareaRows : "Rows", //MISSING
-
-// Text Field Dialog
-DlgTextName : "Name", //MISSING
-DlgTextValue : "Value", //MISSING
-DlgTextCharWidth : "Character Width", //MISSING
-DlgTextMaxChars : "Maximum Characters", //MISSING
-DlgTextType : "Type", //MISSING
-DlgTextTypeText : "Text", //MISSING
-DlgTextTypePass : "Password", //MISSING
-
-// Hidden Field Dialog
-DlgHiddenName : "Name", //MISSING
-DlgHiddenValue : "Value", //MISSING
-
-// Bulleted List Dialog
-BulletedListProp : "Bulleted List Properties", //MISSING
-NumberedListProp : "Numbered List Properties", //MISSING
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Type", //MISSING
-DlgLstTypeCircle : "Circle", //MISSING
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "Square", //MISSING
-DlgLstTypeNumbers : "Numbers (1, 2, 3)", //MISSING
-DlgLstTypeLCase : "Lowercase Letters (a, b, c)", //MISSING
-DlgLstTypeUCase : "Uppercase Letters (A, B, C)", //MISSING
-DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)", //MISSING
-DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)", //MISSING
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General", //MISSING
-DlgDocBackTab : "Background", //MISSING
-DlgDocColorsTab : "Colors and Margins", //MISSING
-DlgDocMetaTab : "Meta Data", //MISSING
-
-DlgDocPageTitle : "Page Title", //MISSING
-DlgDocLangDir : "Language Direction", //MISSING
-DlgDocLangDirLTR : "Left to Right (LTR)", //MISSING
-DlgDocLangDirRTL : "Right to Left (RTL)", //MISSING
-DlgDocLangCode : "Language Code", //MISSING
-DlgDocCharSet : "Character Set Encoding", //MISSING
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Other Character Set Encoding", //MISSING
-
-DlgDocDocType : "Document Type Heading", //MISSING
-DlgDocDocTypeOther : "Other Document Type Heading", //MISSING
-DlgDocIncXHTML : "Include XHTML Declarations", //MISSING
-DlgDocBgColor : "Background Color", //MISSING
-DlgDocBgImage : "Background Image URL", //MISSING
-DlgDocBgNoScroll : "Nonscrolling Background", //MISSING
-DlgDocCText : "Text", //MISSING
-DlgDocCLink : "Link", //MISSING
-DlgDocCVisited : "Visited Link", //MISSING
-DlgDocCActive : "Active Link", //MISSING
-DlgDocMargins : "Page Margins", //MISSING
-DlgDocMaTop : "Top", //MISSING
-DlgDocMaLeft : "Left", //MISSING
-DlgDocMaRight : "Right", //MISSING
-DlgDocMaBottom : "Bottom", //MISSING
-DlgDocMeIndex : "Document Indexing Keywords (comma separated)", //MISSING
-DlgDocMeDescr : "Document Description", //MISSING
-DlgDocMeAuthor : "Author", //MISSING
-DlgDocMeCopy : "Copyright", //MISSING
-DlgDocPreview : "Preview", //MISSING
-
-// Templates Dialog
-Templates : "Templates", //MISSING
-DlgTemplatesTitle : "Content Templates", //MISSING
-DlgTemplatesSelMsg : "Please select the template to open in the editor<br />(the actual contents will be lost):", //MISSING
-DlgTemplatesLoading : "Loading templates list. Please wait...", //MISSING
-DlgTemplatesNoTpl : "(No templates defined)", //MISSING
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "About", //MISSING
-DlgAboutBrowserInfoTab : "Browser Info", //MISSING
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "verzija",
-DlgAboutInfo : "Za više informacija posjetite",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ca.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ca.js
deleted file mode 100644
index 7cce7fccb..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ca.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Catalan language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Redueix la barra d'eines",
-ToolbarExpand : "Amplia la barra d'eines",
-
-// Toolbar Items and Context Menu
-Save : "Desa",
-NewPage : "Nova Pàgina",
-Preview : "Visualització prèvia",
-Cut : "Retalla",
-Copy : "Copia",
-Paste : "Enganxa",
-PasteText : "Enganxa com a text no formatat",
-PasteWord : "Enganxa des del Word",
-Print : "Imprimeix",
-SelectAll : "Selecciona-ho tot",
-RemoveFormat : "Elimina Format",
-InsertLinkLbl : "Enllaç",
-InsertLink : "Insereix/Edita enllaç",
-RemoveLink : "Elimina l'enllaç",
-VisitLink : "Obre l'enllaç",
-Anchor : "Insereix/Edita àncora",
-AnchorDelete : "Elimina àncora",
-InsertImageLbl : "Imatge",
-InsertImage : "Insereix/Edita imatge",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insereix/Edita Flash",
-InsertTableLbl : "Taula",
-InsertTable : "Insereix/Edita taula",
-InsertLineLbl : "Línia",
-InsertLine : "Insereix línia horitzontal",
-InsertSpecialCharLbl: "Caràcter Especial",
-InsertSpecialChar : "Insereix caràcter especial",
-InsertSmileyLbl : "Icona",
-InsertSmiley : "Insereix icona",
-About : "Quant a l'FCKeditor",
-Bold : "Negreta",
-Italic : "Cursiva",
-Underline : "Subratllat",
-StrikeThrough : "Barrat",
-Subscript : "Subíndex",
-Superscript : "Superíndex",
-LeftJustify : "Alinia a l'esquerra",
-CenterJustify : "Centrat",
-RightJustify : "Alinia a la dreta",
-BlockJustify : "Justificat",
-DecreaseIndent : "Redueix el sagnat",
-IncreaseIndent : "Augmenta el sagnat",
-Blockquote : "Bloc de cita",
-CreateDiv : "Crea un contenidor Div",
-EditDiv : "Edita el contenidor Div",
-DeleteDiv : "Elimina el contenidor Div",
-Undo : "Desfés",
-Redo : "Refés",
-NumberedListLbl : "Llista numerada",
-NumberedList : "Numeració activada/desactivada",
-BulletedListLbl : "Llista de pics",
-BulletedList : "Pics activats/descativats",
-ShowTableBorders : "Mostra les vores de les taules",
-ShowDetails : "Mostra detalls",
-Style : "Estil",
-FontFormat : "Format",
-Font : "Tipus de lletra",
-FontSize : "Mida",
-TextColor : "Color de Text",
-BGColor : "Color de Fons",
-Source : "Codi font",
-Find : "Cerca",
-Replace : "Reemplaça",
-SpellCheck : "Revisa l'ortografia",
-UniversalKeyboard : "Teclat universal",
-PageBreakLbl : "Salt de pàgina",
-PageBreak : "Insereix salt de pàgina",
-
-Form : "Formulari",
-Checkbox : "Casella de verificació",
-RadioButton : "Botó d'opció",
-TextField : "Camp de text",
-Textarea : "Àrea de text",
-HiddenField : "Camp ocult",
-Button : "Botó",
-SelectionField : "Camp de selecció",
-ImageButton : "Botó d'imatge",
-
-FitWindow : "Maximiza la mida de l'editor",
-ShowBlocks : "Mostra els blocs",
-
-// Context Menu
-EditLink : "Edita l'enllaç",
-CellCM : "Cel·la",
-RowCM : "Fila",
-ColumnCM : "Columna",
-InsertRowAfter : "Insereix fila darrera",
-InsertRowBefore : "Insereix fila abans de",
-DeleteRows : "Suprimeix una fila",
-InsertColumnAfter : "Insereix columna darrera",
-InsertColumnBefore : "Insereix columna abans de",
-DeleteColumns : "Suprimeix una columna",
-InsertCellAfter : "Insereix cel·la darrera",
-InsertCellBefore : "Insereix cel·la abans de",
-DeleteCells : "Suprimeix les cel·les",
-MergeCells : "Fusiona les cel·les",
-MergeRight : "Fusiona cap a la dreta",
-MergeDown : "Fusiona cap avall",
-HorizontalSplitCell : "Divideix la cel·la horitzontalment",
-VerticalSplitCell : "Divideix la cel·la verticalment",
-TableDelete : "Suprimeix la taula",
-CellProperties : "Propietats de la cel·la",
-TableProperties : "Propietats de la taula",
-ImageProperties : "Propietats de la imatge",
-FlashProperties : "Propietats del Flash",
-
-AnchorProp : "Propietats de l'àncora",
-ButtonProp : "Propietats del botó",
-CheckboxProp : "Propietats de la casella de verificació",
-HiddenFieldProp : "Propietats del camp ocult",
-RadioButtonProp : "Propietats del botó d'opció",
-ImageButtonProp : "Propietats del botó d'imatge",
-TextFieldProp : "Propietats del camp de text",
-SelectionFieldProp : "Propietats del camp de selecció",
-TextareaProp : "Propietats de l'àrea de text",
-FormProp : "Propietats del formulari",
-
-FontFormats : "Normal;Formatejat;Adreça;Encapçalament 1;Encapçalament 2;Encapçalament 3;Encapçalament 4;Encapçalament 5;Encapçalament 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Processant XHTML. Si us plau esperi...",
-Done : "Fet",
-PasteWordConfirm : "El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?",
-NotCompatiblePaste : "Aquesta funció és disponible per a Internet Explorer versió 5.5 o superior. Voleu enganxar sense netejar?",
-UnknownToolbarItem : "Element de la barra d'eines desconegut \"%1\"",
-UnknownCommand : "Nom de comanda desconegut \"%1\"",
-NotImplemented : "Mètode no implementat",
-UnknownToolbarSet : "Conjunt de barra d'eines \"%1\" inexistent",
-NoActiveX : "Les preferències del navegador poden limitar algunes funcions d'aquest editor. Cal habilitar l'opció \"Executa controls ActiveX i plug-ins\". Poden sorgir errors i poden faltar algunes funcions.",
-BrowseServerBlocked : "El visualitzador de recursos no s'ha pogut obrir. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
-DialogBlocked : "No ha estat possible obrir una finestra de diàleg. Assegureu-vos que els bloquejos de finestres emergents estan desactivats.",
-VisitLinkBlocked : "No ha estat possible obrir una nova finestra. Assegureu-vos que els bloquejos de finestres emergents estan desactivats.",
-
-// Dialogs
-DlgBtnOK : "D'acord",
-DlgBtnCancel : "Cancel·la",
-DlgBtnClose : "Tanca",
-DlgBtnBrowseServer : "Veure servidor",
-DlgAdvancedTag : "Avançat",
-DlgOpOther : "Altres",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Si us plau, afegiu la URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<no definit>",
-DlgGenId : "Id",
-DlgGenLangDir : "Direcció de l'idioma",
-DlgGenLangDirLtr : "D'esquerra a dreta (LTR)",
-DlgGenLangDirRtl : "De dreta a esquerra (RTL)",
-DlgGenLangCode : "Codi d'idioma",
-DlgGenAccessKey : "Clau d'accés",
-DlgGenName : "Nom",
-DlgGenTabIndex : "Index de Tab",
-DlgGenLongDescr : "Descripció llarga de la URL",
-DlgGenClass : "Classes del full d'estil",
-DlgGenTitle : "Títol consultiu",
-DlgGenContType : "Tipus de contingut consultiu",
-DlgGenLinkCharset : "Conjunt de caràcters font enllaçat",
-DlgGenStyle : "Estil",
-
-// Image Dialog
-DlgImgTitle : "Propietats de la imatge",
-DlgImgInfoTab : "Informació de la imatge",
-DlgImgBtnUpload : "Envia-la al servidor",
-DlgImgURL : "URL",
-DlgImgUpload : "Puja",
-DlgImgAlt : "Text alternatiu",
-DlgImgWidth : "Amplada",
-DlgImgHeight : "Alçada",
-DlgImgLockRatio : "Bloqueja les proporcions",
-DlgBtnResetSize : "Restaura la mida",
-DlgImgBorder : "Vora",
-DlgImgHSpace : "Espaiat horit.",
-DlgImgVSpace : "Espaiat vert.",
-DlgImgAlign : "Alineació",
-DlgImgAlignLeft : "Ajusta a l'esquerra",
-DlgImgAlignAbsBottom: "Abs Bottom",
-DlgImgAlignAbsMiddle: "Abs Middle",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Bottom",
-DlgImgAlignMiddle : "Middle",
-DlgImgAlignRight : "Ajusta a la dreta",
-DlgImgAlignTextTop : "Text Top",
-DlgImgAlignTop : "Top",
-DlgImgPreview : "Vista prèvia",
-DlgImgAlertUrl : "Si us plau, escriviu la URL de la imatge",
-DlgImgLinkTab : "Enllaç",
-
-// Flash Dialog
-DlgFlashTitle : "Propietats del Flash",
-DlgFlashChkPlay : "Reprodució automàtica",
-DlgFlashChkLoop : "Bucle",
-DlgFlashChkMenu : "Habilita menú Flash",
-DlgFlashScale : "Escala",
-DlgFlashScaleAll : "Mostra-ho tot",
-DlgFlashScaleNoBorder : "Sense vores",
-DlgFlashScaleFit : "Mida exacta",
-
-// Link Dialog
-DlgLnkWindowTitle : "Enllaç",
-DlgLnkInfoTab : "Informació de l'enllaç",
-DlgLnkTargetTab : "Destí",
-
-DlgLnkType : "Tipus d'enllaç",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Àncora en aquesta pàgina",
-DlgLnkTypeEMail : "Correu electrònic",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<altra>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Selecciona una àncora",
-DlgLnkAnchorByName : "Per nom d'àncora",
-DlgLnkAnchorById : "Per Id d'element",
-DlgLnkNoAnchors : "(No hi ha àncores disponibles en aquest document)",
-DlgLnkEMail : "Adreça de correu electrònic",
-DlgLnkEMailSubject : "Assumpte del missatge",
-DlgLnkEMailBody : "Cos del missatge",
-DlgLnkUpload : "Puja",
-DlgLnkBtnUpload : "Envia al servidor",
-
-DlgLnkTarget : "Destí",
-DlgLnkTargetFrame : "<marc>",
-DlgLnkTargetPopup : "<finestra emergent>",
-DlgLnkTargetBlank : "Nova finestra (_blank)",
-DlgLnkTargetParent : "Finestra pare (_parent)",
-DlgLnkTargetSelf : "Mateixa finestra (_self)",
-DlgLnkTargetTop : "Finestra Major (_top)",
-DlgLnkTargetFrameName : "Nom del marc de destí",
-DlgLnkPopWinName : "Nom finestra popup",
-DlgLnkPopWinFeat : "Característiques finestra popup",
-DlgLnkPopResize : "Redimensionable",
-DlgLnkPopLocation : "Barra d'adreça",
-DlgLnkPopMenu : "Barra de menú",
-DlgLnkPopScroll : "Barres d'scroll",
-DlgLnkPopStatus : "Barra d'estat",
-DlgLnkPopToolbar : "Barra d'eines",
-DlgLnkPopFullScrn : "Pantalla completa (IE)",
-DlgLnkPopDependent : "Depenent (Netscape)",
-DlgLnkPopWidth : "Amplada",
-DlgLnkPopHeight : "Alçada",
-DlgLnkPopLeft : "Posició esquerra",
-DlgLnkPopTop : "Posició dalt",
-
-DlnLnkMsgNoUrl : "Si us plau, escrigui l'enllaç URL",
-DlnLnkMsgNoEMail : "Si us plau, escrigui l'adreça correu electrònic",
-DlnLnkMsgNoAnchor : "Si us plau, escrigui l'àncora",
-DlnLnkMsgInvPopName : "El nom de la finestra emergent ha de començar amb una lletra i no pot tenir espais",
-
-// Color Dialog
-DlgColorTitle : "Selecciona el color",
-DlgColorBtnClear : "Neteja",
-DlgColorHighlight : "Realça",
-DlgColorSelected : "Selecciona",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insereix una icona",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Selecciona el caràcter especial",
-
-// Table Dialog
-DlgTableTitle : "Propietats de la taula",
-DlgTableRows : "Files",
-DlgTableColumns : "Columnes",
-DlgTableBorder : "Mida vora",
-DlgTableAlign : "Alineació",
-DlgTableAlignNotSet : "<No Definit>",
-DlgTableAlignLeft : "Esquerra",
-DlgTableAlignCenter : "Centre",
-DlgTableAlignRight : "Dreta",
-DlgTableWidth : "Amplada",
-DlgTableWidthPx : "píxels",
-DlgTableWidthPc : "percentatge",
-DlgTableHeight : "Alçada",
-DlgTableCellSpace : "Espaiat de cel·les",
-DlgTableCellPad : "Encoixinament de cel·les",
-DlgTableCaption : "Títol",
-DlgTableSummary : "Resum",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Propietats de la cel·la",
-DlgCellWidth : "Amplada",
-DlgCellWidthPx : "píxels",
-DlgCellWidthPc : "percentatge",
-DlgCellHeight : "Alçada",
-DlgCellWordWrap : "Ajust de paraula",
-DlgCellWordWrapNotSet : "<No Definit>",
-DlgCellWordWrapYes : "Si",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Alineació horitzontal",
-DlgCellHorAlignNotSet : "<No Definit>",
-DlgCellHorAlignLeft : "Esquerra",
-DlgCellHorAlignCenter : "Centre",
-DlgCellHorAlignRight: "Dreta",
-DlgCellVerAlign : "Alineació vertical",
-DlgCellVerAlignNotSet : "<No definit>",
-DlgCellVerAlignTop : "Top",
-DlgCellVerAlignMiddle : "Middle",
-DlgCellVerAlignBottom : "Bottom",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Rows Span",
-DlgCellCollSpan : "Columns Span",
-DlgCellBackColor : "Color de fons",
-DlgCellBorderColor : "Color de la vora",
-DlgCellBtnSelect : "Seleccioneu...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Cerca i reemplaça",
-
-// Find Dialog
-DlgFindTitle : "Cerca",
-DlgFindFindBtn : "Cerca",
-DlgFindNotFoundMsg : "El text especificat no s'ha trobat.",
-
-// Replace Dialog
-DlgReplaceTitle : "Reemplaça",
-DlgReplaceFindLbl : "Cerca:",
-DlgReplaceReplaceLbl : "Remplaça amb:",
-DlgReplaceCaseChk : "Distingeix majúscules/minúscules",
-DlgReplaceReplaceBtn : "Reemplaça",
-DlgReplaceReplAllBtn : "Reemplaça-ho tot",
-DlgReplaceWordChk : "Només paraules completes",
-
-// Paste Operations / Dialog
-PasteErrorCut : "La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).",
-PasteErrorCopy : "La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).",
-
-PasteAsText : "Enganxa com a text no formatat",
-PasteFromWord : "Enganxa com a Word",
-
-DlgPasteMsg2 : "Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.",
-DlgPasteSec : "A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.",
-DlgPasteIgnoreFont : "Ignora definicions de font",
-DlgPasteRemoveStyles : "Elimina definicions d'estil",
-
-// Color Picker
-ColorAutomatic : "Automàtic",
-ColorMoreColors : "Més colors...",
-
-// Document Properties
-DocProps : "Propietats del document",
-
-// Anchor Dialog
-DlgAnchorTitle : "Propietats de l'àncora",
-DlgAnchorName : "Nom de l'àncora",
-DlgAnchorErrorName : "Si us plau, escriviu el nom de l'ancora",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "No és al diccionari",
-DlgSpellChangeTo : "Reemplaça amb",
-DlgSpellBtnIgnore : "Ignora",
-DlgSpellBtnIgnoreAll : "Ignora-les totes",
-DlgSpellBtnReplace : "Canvia",
-DlgSpellBtnReplaceAll : "Canvia-les totes",
-DlgSpellBtnUndo : "Desfés",
-DlgSpellNoSuggestions : "Cap suggeriment",
-DlgSpellProgress : "Verificació ortogràfica en curs...",
-DlgSpellNoMispell : "Verificació ortogràfica acabada: no hi ha cap paraula mal escrita",
-DlgSpellNoChanges : "Verificació ortogràfica: no s'ha canviat cap paraula",
-DlgSpellOneChange : "Verificació ortogràfica: s'ha canviat una paraula",
-DlgSpellManyChanges : "Verificació ortogràfica: s'han canviat %1 paraules",
-
-IeSpellDownload : "Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?",
-
-// Button Dialog
-DlgButtonText : "Text (Valor)",
-DlgButtonType : "Tipus",
-DlgButtonTypeBtn : "Botó",
-DlgButtonTypeSbm : "Transmet formulari",
-DlgButtonTypeRst : "Reinicia formulari",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nom",
-DlgCheckboxValue : "Valor",
-DlgCheckboxSelected : "Seleccionat",
-
-// Form Dialog
-DlgFormName : "Nom",
-DlgFormAction : "Acció",
-DlgFormMethod : "Mètode",
-
-// Select Field Dialog
-DlgSelectName : "Nom",
-DlgSelectValue : "Valor",
-DlgSelectSize : "Mida",
-DlgSelectLines : "Línies",
-DlgSelectChkMulti : "Permet múltiples seleccions",
-DlgSelectOpAvail : "Opcions disponibles",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Valor",
-DlgSelectBtnAdd : "Afegeix",
-DlgSelectBtnModify : "Modifica",
-DlgSelectBtnUp : "Amunt",
-DlgSelectBtnDown : "Avall",
-DlgSelectBtnSetValue : "Selecciona per defecte",
-DlgSelectBtnDelete : "Elimina",
-
-// Textarea Dialog
-DlgTextareaName : "Nom",
-DlgTextareaCols : "Columnes",
-DlgTextareaRows : "Files",
-
-// Text Field Dialog
-DlgTextName : "Nom",
-DlgTextValue : "Valor",
-DlgTextCharWidth : "Amplada",
-DlgTextMaxChars : "Nombre màxim de caràcters",
-DlgTextType : "Tipus",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Contrasenya",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nom",
-DlgHiddenValue : "Valor",
-
-// Bulleted List Dialog
-BulletedListProp : "Propietats de la llista de pics",
-NumberedListProp : "Propietats de llista numerada",
-DlgLstStart : "Inici",
-DlgLstType : "Tipus",
-DlgLstTypeCircle : "Cercle",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "Quadrat",
-DlgLstTypeNumbers : "Números (1, 2, 3)",
-DlgLstTypeLCase : "Lletres minúscules (a, b, c)",
-DlgLstTypeUCase : "Lletres majúscules (A, B, C)",
-DlgLstTypeSRoman : "Números romans en minúscules (i, ii, iii)",
-DlgLstTypeLRoman : "Números romans en majúscules (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Fons",
-DlgDocColorsTab : "Colors i marges",
-DlgDocMetaTab : "Metadades",
-
-DlgDocPageTitle : "Títol de la pàgina",
-DlgDocLangDir : "Direcció idioma",
-DlgDocLangDirLTR : "Esquerra a dreta (LTR)",
-DlgDocLangDirRTL : "Dreta a esquerra (RTL)",
-DlgDocLangCode : "Codi d'idioma",
-DlgDocCharSet : "Codificació de conjunt de caràcters",
-DlgDocCharSetCE : "Centreeuropeu",
-DlgDocCharSetCT : "Xinès tradicional (Big5)",
-DlgDocCharSetCR : "Ciríl·lic",
-DlgDocCharSetGR : "Grec",
-DlgDocCharSetJP : "Japonès",
-DlgDocCharSetKR : "Coreà",
-DlgDocCharSetTR : "Turc",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Europeu occidental",
-DlgDocCharSetOther : "Una altra codificació de caràcters",
-
-DlgDocDocType : "Capçalera de tipus de document",
-DlgDocDocTypeOther : "Un altra capçalera de tipus de document",
-DlgDocIncXHTML : "Incloure declaracions XHTML",
-DlgDocBgColor : "Color de fons",
-DlgDocBgImage : "URL de la imatge de fons",
-DlgDocBgNoScroll : "Fons fixe",
-DlgDocCText : "Text",
-DlgDocCLink : "Enllaç",
-DlgDocCVisited : "Enllaç visitat",
-DlgDocCActive : "Enllaç actiu",
-DlgDocMargins : "Marges de pàgina",
-DlgDocMaTop : "Cap",
-DlgDocMaLeft : "Esquerra",
-DlgDocMaRight : "Dreta",
-DlgDocMaBottom : "Peu",
-DlgDocMeIndex : "Mots clau per a indexació (separats per coma)",
-DlgDocMeDescr : "Descripció del document",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Vista prèvia",
-
-// Templates Dialog
-Templates : "Plantilles",
-DlgTemplatesTitle : "Contingut plantilles",
-DlgTemplatesSelMsg : "Si us plau, seleccioneu la plantilla per obrir a l'editor<br>(el contingut actual no serà enregistrat):",
-DlgTemplatesLoading : "Carregant la llista de plantilles. Si us plau, espereu...",
-DlgTemplatesNoTpl : "(No hi ha plantilles definides)",
-DlgTemplatesReplace : "Reemplaça el contingut actual",
-
-// About Dialog
-DlgAboutAboutTab : "Quant a",
-DlgAboutBrowserInfoTab : "Informació del navegador",
-DlgAboutLicenseTab : "Llicència",
-DlgAboutVersion : "versió",
-DlgAboutInfo : "Per a més informació aneu a",
-
-// Div Dialog
-DlgDivGeneralTab : "General",
-DlgDivAdvancedTab : "Avançat",
-DlgDivStyle : "Estil",
-DlgDivInlineStyle : "Estil en línia"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/cs.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/cs.js
deleted file mode 100644
index 1f3181a0b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/cs.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Czech language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Skrýt panel nástrojů",
-ToolbarExpand : "Zobrazit panel nástrojů",
-
-// Toolbar Items and Context Menu
-Save : "Uložit",
-NewPage : "Nová stránka",
-Preview : "Náhled",
-Cut : "Vyjmout",
-Copy : "Kopírovat",
-Paste : "Vložit",
-PasteText : "Vložit jako Äistý text",
-PasteWord : "Vložit z Wordu",
-Print : "Tisk",
-SelectAll : "Vybrat vše",
-RemoveFormat : "Odstranit formátování",
-InsertLinkLbl : "Odkaz",
-InsertLink : "Vložit/změnit odkaz",
-RemoveLink : "Odstranit odkaz",
-VisitLink : "Otevřít odkaz",
-Anchor : "Vložít/změnit záložku",
-AnchorDelete : "Odstranit kotvu",
-InsertImageLbl : "Obrázek",
-InsertImage : "Vložit/změnit obrázek",
-InsertFlashLbl : "Flash",
-InsertFlash : "Vložit/Upravit Flash",
-InsertTableLbl : "Tabulka",
-InsertTable : "Vložit/změnit tabulku",
-InsertLineLbl : "Linka",
-InsertLine : "Vložit vodorovnou linku",
-InsertSpecialCharLbl: "Speciální znaky",
-InsertSpecialChar : "Vložit speciální znaky",
-InsertSmileyLbl : "Smajlíky",
-InsertSmiley : "Vložit smajlík",
-About : "O aplikaci FCKeditor",
-Bold : "TuÄné",
-Italic : "Kurzíva",
-Underline : "Podtržené",
-StrikeThrough : "Přeškrtnuté",
-Subscript : "Dolní index",
-Superscript : "Horní index",
-LeftJustify : "Zarovnat vlevo",
-CenterJustify : "Zarovnat na střed",
-RightJustify : "Zarovnat vpravo",
-BlockJustify : "Zarovnat do bloku",
-DecreaseIndent : "Zmenšit odsazení",
-IncreaseIndent : "Zvětšit odsazení",
-Blockquote : "Citace",
-CreateDiv : "Vytvořit Div kontejner",
-EditDiv : "Upravit Div kontejner",
-DeleteDiv : "Odstranit Div kontejner",
-Undo : "Zpět",
-Redo : "Znovu",
-NumberedListLbl : "Číslování",
-NumberedList : "Vložit/odstranit Äíslovaný seznam",
-BulletedListLbl : "Odrážky",
-BulletedList : "Vložit/odstranit odrážky",
-ShowTableBorders : "Zobrazit okraje tabulek",
-ShowDetails : "Zobrazit podrobnosti",
-Style : "Styl",
-FontFormat : "Formát",
-Font : "Písmo",
-FontSize : "Velikost",
-TextColor : "Barva textu",
-BGColor : "Barva pozadí",
-Source : "Zdroj",
-Find : "Hledat",
-Replace : "Nahradit",
-SpellCheck : "Zkontrolovat pravopis",
-UniversalKeyboard : "Univerzální klávesnice",
-PageBreakLbl : "Konec stránky",
-PageBreak : "Vložit konec stránky",
-
-Form : "Formulář",
-Checkbox : "ZaÅ¡krtávací políÄko",
-RadioButton : "PÅ™epínaÄ",
-TextField : "Textové pole",
-Textarea : "Textová oblast",
-HiddenField : "Skryté pole",
-Button : "TlaÄítko",
-SelectionField : "Seznam",
-ImageButton : "Obrázkové tlaÄítko",
-
-FitWindow : "Maximalizovat velikost editoru",
-ShowBlocks : "Ukázat bloky",
-
-// Context Menu
-EditLink : "Změnit odkaz",
-CellCM : "Buňka",
-RowCM : "Řádek",
-ColumnCM : "Sloupec",
-InsertRowAfter : "Vložit řádek za",
-InsertRowBefore : "Vložit řádek před",
-DeleteRows : "Smazat řádky",
-InsertColumnAfter : "Vložit sloupec za",
-InsertColumnBefore : "Vložit sloupec před",
-DeleteColumns : "Smazat sloupec",
-InsertCellAfter : "Vložit buňku za",
-InsertCellBefore : "Vložit buňku před",
-DeleteCells : "Smazat buňky",
-MergeCells : "SlouÄit buňky",
-MergeRight : "SlouÄit doprava",
-MergeDown : "SlouÄit dolů",
-HorizontalSplitCell : "Rozdělit buňky vodorovně",
-VerticalSplitCell : "Rozdělit buňky svisle",
-TableDelete : "Smazat tabulku",
-CellProperties : "Vlastnosti buňky",
-TableProperties : "Vlastnosti tabulky",
-ImageProperties : "Vlastnosti obrázku",
-FlashProperties : "Vlastnosti Flashe",
-
-AnchorProp : "Vlastnosti záložky",
-ButtonProp : "Vlastnosti tlaÄítka",
-CheckboxProp : "Vlastnosti zaÅ¡krtávacího políÄka",
-HiddenFieldProp : "Vlastnosti skrytého pole",
-RadioButtonProp : "Vlastnosti pÅ™epínaÄe",
-ImageButtonProp : "Vlastností obrázkového tlaÄítka",
-TextFieldProp : "Vlastnosti textového pole",
-SelectionFieldProp : "Vlastnosti seznamu",
-TextareaProp : "Vlastnosti textové oblasti",
-FormProp : "Vlastnosti formuláře",
-
-FontFormats : "Normální;Naformátováno;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Normální (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Probíhá zpracování XHTML. Prosím Äekejte...",
-Done : "Hotovo",
-PasteWordConfirm : "Jak je vidÄ›t, vkládaný text je kopírován z Wordu. Chcete jej pÅ™ed vložením vyÄistit?",
-NotCompatiblePaste : "Tento příkaz je dostupný pouze v Internet Exploreru verze 5.5 nebo vyšší. Chcete vložit text bez vyÄiÅ¡tÄ›ní?",
-UnknownToolbarItem : "Neznámá položka panelu nástrojů \"%1\"",
-UnknownCommand : "Neznámý příkaz \"%1\"",
-NotImplemented : "Příkaz není implementován",
-UnknownToolbarSet : "Panel nástrojů \"%1\" neexistuje",
-NoActiveX : "Nastavení bezpeÄnosti VaÅ¡eho prohlížeÄe omezuje funkÄnost nÄ›kterých jeho možností. Je tÅ™eba zapnout volbu \"SpouÅ¡tÄ›t ovládáací prvky ActiveX a moduly plug-in\", jinak nebude možné využívat vÅ¡echny dosputné schopnosti editoru.",
-BrowseServerBlocked : "Průzkumník zdrojů nelze otevřít. Prověřte, zda nemáte aktivováno blokování popup oken.",
-DialogBlocked : "Nelze otevřít dialogové okno. Prověřte, zda nemáte aktivováno blokování popup oken.",
-VisitLinkBlocked : "Není možné otevřít nové okno. Prověřte, zda všechny nástroje pro blokování vyskakovacích oken jsou vypnuty.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Storno",
-DlgBtnClose : "Zavřít",
-DlgBtnBrowseServer : "Vybrat na serveru",
-DlgAdvancedTag : "Rozšířené",
-DlgOpOther : "<Ostatní>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Prosím vložte URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nenastaveno>",
-DlgGenId : "Id",
-DlgGenLangDir : "Orientace jazyka",
-DlgGenLangDirLtr : "Zleva do prava (LTR)",
-DlgGenLangDirRtl : "Zprava do leva (RTL)",
-DlgGenLangCode : "Kód jazyka",
-DlgGenAccessKey : "Přístupový klíÄ",
-DlgGenName : "Jméno",
-DlgGenTabIndex : "Pořadí prvku",
-DlgGenLongDescr : "Dlouhý popis URL",
-DlgGenClass : "Třída stylu",
-DlgGenTitle : "Pomocný titulek",
-DlgGenContType : "Pomocný typ obsahu",
-DlgGenLinkCharset : "Přiřazená znaková sada",
-DlgGenStyle : "Styl",
-
-// Image Dialog
-DlgImgTitle : "Vlastnosti obrázku",
-DlgImgInfoTab : "Informace o obrázku",
-DlgImgBtnUpload : "Odeslat na server",
-DlgImgURL : "URL",
-DlgImgUpload : "Odeslat",
-DlgImgAlt : "Alternativní text",
-DlgImgWidth : "Šířka",
-DlgImgHeight : "Výška",
-DlgImgLockRatio : "Zámek",
-DlgBtnResetSize : "Původní velikost",
-DlgImgBorder : "Okraje",
-DlgImgHSpace : "H-mezera",
-DlgImgVSpace : "V-mezera",
-DlgImgAlign : "Zarovnání",
-DlgImgAlignLeft : "Vlevo",
-DlgImgAlignAbsBottom: "Zcela dolů",
-DlgImgAlignAbsMiddle: "Doprostřed",
-DlgImgAlignBaseline : "Na úÄaří",
-DlgImgAlignBottom : "Dolů",
-DlgImgAlignMiddle : "Na střed",
-DlgImgAlignRight : "Vpravo",
-DlgImgAlignTextTop : "Na horní okraj textu",
-DlgImgAlignTop : "Nahoru",
-DlgImgPreview : "Náhled",
-DlgImgAlertUrl : "Zadejte prosím URL obrázku",
-DlgImgLinkTab : "Odkaz",
-
-// Flash Dialog
-DlgFlashTitle : "Vlastnosti Flashe",
-DlgFlashChkPlay : "Automatické spuštění",
-DlgFlashChkLoop : "Opakování",
-DlgFlashChkMenu : "Nabídka Flash",
-DlgFlashScale : "Zobrazit",
-DlgFlashScaleAll : "Zobrazit vše",
-DlgFlashScaleNoBorder : "Bez okraje",
-DlgFlashScaleFit : "Přizpůsobit",
-
-// Link Dialog
-DlgLnkWindowTitle : "Odkaz",
-DlgLnkInfoTab : "Informace o odkazu",
-DlgLnkTargetTab : "Cíl",
-
-DlgLnkType : "Typ odkazu",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Kotva v této stránce",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<jiný>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Vybrat kotvu",
-DlgLnkAnchorByName : "Podle jména kotvy",
-DlgLnkAnchorById : "Podle Id objektu",
-DlgLnkNoAnchors : "(Ve stránce není definována žádná kotva!)",
-DlgLnkEMail : "E-Mailová adresa",
-DlgLnkEMailSubject : "Předmět zprávy",
-DlgLnkEMailBody : "Tělo zprávy",
-DlgLnkUpload : "Odeslat",
-DlgLnkBtnUpload : "Odeslat na Server",
-
-DlgLnkTarget : "Cíl",
-DlgLnkTargetFrame : "<rámec>",
-DlgLnkTargetPopup : "<vyskakovací okno>",
-DlgLnkTargetBlank : "Nové okno (_blank)",
-DlgLnkTargetParent : "RodiÄovské okno (_parent)",
-DlgLnkTargetSelf : "Stejné okno (_self)",
-DlgLnkTargetTop : "Hlavní okno (_top)",
-DlgLnkTargetFrameName : "Název cílového rámu",
-DlgLnkPopWinName : "Název vyskakovacího okna",
-DlgLnkPopWinFeat : "Vlastnosti vyskakovacího okna",
-DlgLnkPopResize : "Měnitelná velikost",
-DlgLnkPopLocation : "Panel umístění",
-DlgLnkPopMenu : "Panel nabídky",
-DlgLnkPopScroll : "Posuvníky",
-DlgLnkPopStatus : "Stavový řádek",
-DlgLnkPopToolbar : "Panel nástrojů",
-DlgLnkPopFullScrn : "Celá obrazovka (IE)",
-DlgLnkPopDependent : "Závislost (Netscape)",
-DlgLnkPopWidth : "Šířka",
-DlgLnkPopHeight : "Výška",
-DlgLnkPopLeft : "Levý okraj",
-DlgLnkPopTop : "Horní okraj",
-
-DlnLnkMsgNoUrl : "Zadejte prosím URL odkazu",
-DlnLnkMsgNoEMail : "Zadejte prosím e-mailovou adresu",
-DlnLnkMsgNoAnchor : "Vyberte prosím kotvu",
-DlnLnkMsgInvPopName : "Název vyskakovacího okna musí zaÄínat písmenem a nesmí obsahovat mezery",
-
-// Color Dialog
-DlgColorTitle : "Výběr barvy",
-DlgColorBtnClear : "Vymazat",
-DlgColorHighlight : "Zvýrazněná",
-DlgColorSelected : "Vybraná",
-
-// Smiley Dialog
-DlgSmileyTitle : "Vkládání smajlíků",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Výběr speciálního znaku",
-
-// Table Dialog
-DlgTableTitle : "Vlastnosti tabulky",
-DlgTableRows : "Řádky",
-DlgTableColumns : "Sloupce",
-DlgTableBorder : "OhraniÄení",
-DlgTableAlign : "Zarovnání",
-DlgTableAlignNotSet : "<nenastaveno>",
-DlgTableAlignLeft : "Vlevo",
-DlgTableAlignCenter : "Na střed",
-DlgTableAlignRight : "Vpravo",
-DlgTableWidth : "Šířka",
-DlgTableWidthPx : "bodů",
-DlgTableWidthPc : "procent",
-DlgTableHeight : "Výška",
-DlgTableCellSpace : "Vzdálenost buněk",
-DlgTableCellPad : "Odsazení obsahu",
-DlgTableCaption : "Popis",
-DlgTableSummary : "Souhrn",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Vlastnosti buňky",
-DlgCellWidth : "Šířka",
-DlgCellWidthPx : "bodů",
-DlgCellWidthPc : "procent",
-DlgCellHeight : "Výška",
-DlgCellWordWrap : "Zalamování",
-DlgCellWordWrapNotSet : "<nenanstaveno>",
-DlgCellWordWrapYes : "Ano",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Vodorovné zarovnání",
-DlgCellHorAlignNotSet : "<nenastaveno>",
-DlgCellHorAlignLeft : "Vlevo",
-DlgCellHorAlignCenter : "Na střed",
-DlgCellHorAlignRight: "Vpravo",
-DlgCellVerAlign : "Svislé zarovnání",
-DlgCellVerAlignNotSet : "<nenastaveno>",
-DlgCellVerAlignTop : "Nahoru",
-DlgCellVerAlignMiddle : "Doprostřed",
-DlgCellVerAlignBottom : "Dolů",
-DlgCellVerAlignBaseline : "Na úÄaří",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "SlouÄené řádky",
-DlgCellCollSpan : "SlouÄené sloupce",
-DlgCellBackColor : "Barva pozadí",
-DlgCellBorderColor : "Barva ohraniÄení",
-DlgCellBtnSelect : "Výběr...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Najít a nahradit",
-
-// Find Dialog
-DlgFindTitle : "Hledat",
-DlgFindFindBtn : "Hledat",
-DlgFindNotFoundMsg : "Hledaný text nebyl nalezen.",
-
-// Replace Dialog
-DlgReplaceTitle : "Nahradit",
-DlgReplaceFindLbl : "Co hledat:",
-DlgReplaceReplaceLbl : "Čím nahradit:",
-DlgReplaceCaseChk : "Rozlišovat velikost písma",
-DlgReplaceReplaceBtn : "Nahradit",
-DlgReplaceReplAllBtn : "Nahradit vše",
-DlgReplaceWordChk : "Pouze celá slova",
-
-// Paste Operations / Dialog
-PasteErrorCut : "BezpeÄnostní nastavení VaÅ¡eho prohlížeÄe nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjmÄ›te zvolený text do schránky pomocí klávesnice (Ctrl+X).",
-PasteErrorCopy : "BezpeÄnostní nastavení VaÅ¡eho prohlížeÄe nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).",
-
-PasteAsText : "Vložit jako Äistý text",
-PasteFromWord : "Vložit text z Wordu",
-
-DlgPasteMsg2 : "Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.",
-DlgPasteSec : "Z důvodů nastavení bezpeÄnosti VaÅ¡eho prohlížeÄe nemůže editor pÅ™istupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.",
-DlgPasteIgnoreFont : "Ignorovat písmo",
-DlgPasteRemoveStyles : "Odstranit styly",
-
-// Color Picker
-ColorAutomatic : "Automaticky",
-ColorMoreColors : "Více barev...",
-
-// Document Properties
-DocProps : "Vlastnosti dokumentu",
-
-// Anchor Dialog
-DlgAnchorTitle : "Vlastnosti záložky",
-DlgAnchorName : "Název záložky",
-DlgAnchorErrorName : "Zadejte prosím název záložky",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Není ve slovníku",
-DlgSpellChangeTo : "Změnit na",
-DlgSpellBtnIgnore : "PÅ™eskoÄit",
-DlgSpellBtnIgnoreAll : "Přeskakovat vše",
-DlgSpellBtnReplace : "Zaměnit",
-DlgSpellBtnReplaceAll : "Zaměňovat vše",
-DlgSpellBtnUndo : "Zpět",
-DlgSpellNoSuggestions : "- žádné návrhy -",
-DlgSpellProgress : "Probíhá kontrola pravopisu...",
-DlgSpellNoMispell : "Kontrola pravopisu dokonÄena: Žádné pravopisné chyby nenalezeny",
-DlgSpellNoChanges : "Kontrola pravopisu dokonÄena: Beze zmÄ›n",
-DlgSpellOneChange : "Kontrola pravopisu dokonÄena: Jedno slovo zmÄ›nÄ›no",
-DlgSpellManyChanges : "Kontrola pravopisu dokonÄena: %1 slov zmÄ›nÄ›no",
-
-IeSpellDownload : "Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?",
-
-// Button Dialog
-DlgButtonText : "Popisek",
-DlgButtonType : "Typ",
-DlgButtonTypeBtn : "TlaÄítko",
-DlgButtonTypeSbm : "Odeslat",
-DlgButtonTypeRst : "Obnovit",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Název",
-DlgCheckboxValue : "Hodnota",
-DlgCheckboxSelected : "Zaškrtnuto",
-
-// Form Dialog
-DlgFormName : "Název",
-DlgFormAction : "Akce",
-DlgFormMethod : "Metoda",
-
-// Select Field Dialog
-DlgSelectName : "Název",
-DlgSelectValue : "Hodnota",
-DlgSelectSize : "Velikost",
-DlgSelectLines : "Řádků",
-DlgSelectChkMulti : "Povolit mnohonásobné výběry",
-DlgSelectOpAvail : "Dostupná nastavení",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Hodnota",
-DlgSelectBtnAdd : "Přidat",
-DlgSelectBtnModify : "Změnit",
-DlgSelectBtnUp : "Nahoru",
-DlgSelectBtnDown : "Dolů",
-DlgSelectBtnSetValue : "Nastavit jako vybranou hodnotu",
-DlgSelectBtnDelete : "Smazat",
-
-// Textarea Dialog
-DlgTextareaName : "Název",
-DlgTextareaCols : "Sloupců",
-DlgTextareaRows : "Řádků",
-
-// Text Field Dialog
-DlgTextName : "Název",
-DlgTextValue : "Hodnota",
-DlgTextCharWidth : "Šířka ve znacích",
-DlgTextMaxChars : "Maximální poÄet znaků",
-DlgTextType : "Typ",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Heslo",
-
-// Hidden Field Dialog
-DlgHiddenName : "Název",
-DlgHiddenValue : "Hodnota",
-
-// Bulleted List Dialog
-BulletedListProp : "Vlastnosti odrážek",
-NumberedListProp : "Vlastnosti Äíslovaného seznamu",
-DlgLstStart : "ZaÄátek",
-DlgLstType : "Typ",
-DlgLstTypeCircle : "Kružnice",
-DlgLstTypeDisc : "Kruh",
-DlgLstTypeSquare : "ÄŒtverec",
-DlgLstTypeNumbers : "Čísla (1, 2, 3)",
-DlgLstTypeLCase : "Malá písmena (a, b, c)",
-DlgLstTypeUCase : "Velká písmena (A, B, C)",
-DlgLstTypeSRoman : "Malé římská Äíslice (i, ii, iii)",
-DlgLstTypeLRoman : "Velké římské Äíslice (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Obecné",
-DlgDocBackTab : "Pozadí",
-DlgDocColorsTab : "Barvy a okraje",
-DlgDocMetaTab : "Metadata",
-
-DlgDocPageTitle : "Titulek stránky",
-DlgDocLangDir : "Směr jazyku",
-DlgDocLangDirLTR : "Zleva do prava ",
-DlgDocLangDirRTL : "Zprava doleva",
-DlgDocLangCode : "Kód jazyku",
-DlgDocCharSet : "Znaková sada",
-DlgDocCharSetCE : "Středoevropské jazyky",
-DlgDocCharSetCT : "TradiÄní ÄínÅ¡tina (Big5)",
-DlgDocCharSetCR : "Cyrilice",
-DlgDocCharSetGR : "ŘeÄtina",
-DlgDocCharSetJP : "Japonština",
-DlgDocCharSetKR : "Korejština",
-DlgDocCharSetTR : "TureÄtina",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Západoevropské jazyky",
-DlgDocCharSetOther : "Další znaková sada",
-
-DlgDocDocType : "Typ dokumentu",
-DlgDocDocTypeOther : "Jiný typ dokumetu",
-DlgDocIncXHTML : "Zahrnou deklarace XHTML",
-DlgDocBgColor : "Barva pozadí",
-DlgDocBgImage : "URL obrázku na pozadí",
-DlgDocBgNoScroll : "Nerolovatelné pozadí",
-DlgDocCText : "Text",
-DlgDocCLink : "Odkaz",
-DlgDocCVisited : "Navštívený odkaz",
-DlgDocCActive : "Vybraný odkaz",
-DlgDocMargins : "Okraje stránky",
-DlgDocMaTop : "Horní",
-DlgDocMaLeft : "Levý",
-DlgDocMaRight : "Pravý",
-DlgDocMaBottom : "Dolní",
-DlgDocMeIndex : "KlíÄová slova (oddÄ›lená Äárkou)",
-DlgDocMeDescr : "Popis dokumentu",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Autorská práva",
-DlgDocPreview : "Náhled",
-
-// Templates Dialog
-Templates : "Å ablony",
-DlgTemplatesTitle : "Å ablony obsahu",
-DlgTemplatesSelMsg : "Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):",
-DlgTemplatesLoading : "Nahrávám pÅ™eheld Å¡ablon. Prosím Äekejte...",
-DlgTemplatesNoTpl : "(Není definována žádná šablona)",
-DlgTemplatesReplace : "Nahradit aktuální obsah",
-
-// About Dialog
-DlgAboutAboutTab : "O aplikaci",
-DlgAboutBrowserInfoTab : "Informace o prohlížeÄi",
-DlgAboutLicenseTab : "Licence",
-DlgAboutVersion : "verze",
-DlgAboutInfo : "Více informací získáte na",
-
-// Div Dialog
-DlgDivGeneralTab : "Obecné",
-DlgDivAdvancedTab : "Rozšířené",
-DlgDivStyle : "Styl",
-DlgDivInlineStyle : "Vložený styl"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/da.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/da.js
deleted file mode 100644
index 9f33e5e98..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/da.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Danish language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Skjul værktøjslinier",
-ToolbarExpand : "Vis værktøjslinier",
-
-// Toolbar Items and Context Menu
-Save : "Gem",
-NewPage : "Ny side",
-Preview : "Vis eksempel",
-Cut : "Klip",
-Copy : "Kopier",
-Paste : "Indsæt",
-PasteText : "Indsæt som ikke-formateret tekst",
-PasteWord : "Indsæt fra Word",
-Print : "Udskriv",
-SelectAll : "Vælg alt",
-RemoveFormat : "Fjern formatering",
-InsertLinkLbl : "Hyperlink",
-InsertLink : "Indsæt/rediger hyperlink",
-RemoveLink : "Fjern hyperlink",
-VisitLink : "Ã…bn hyperlink",
-Anchor : "Indsæt/rediger bogmærke",
-AnchorDelete : "Fjern bogmærke",
-InsertImageLbl : "Indsæt billede",
-InsertImage : "Indsæt/rediger billede",
-InsertFlashLbl : "Flash",
-InsertFlash : "Indsæt/rediger Flash",
-InsertTableLbl : "Table",
-InsertTable : "Indsæt/rediger tabel",
-InsertLineLbl : "Linie",
-InsertLine : "Indsæt vandret linie",
-InsertSpecialCharLbl: "Symbol",
-InsertSpecialChar : "Indsæt symbol",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Indsæt smiley",
-About : "Om FCKeditor",
-Bold : "Fed",
-Italic : "Kursiv",
-Underline : "Understreget",
-StrikeThrough : "Overstreget",
-Subscript : "Sænket skrift",
-Superscript : "Hævet skrift",
-LeftJustify : "Venstrestillet",
-CenterJustify : "Centreret",
-RightJustify : "Højrestillet",
-BlockJustify : "Lige margener",
-DecreaseIndent : "Formindsk indrykning",
-IncreaseIndent : "Forøg indrykning",
-Blockquote : "Blokcitat",
-CreateDiv : "Opret div container",
-EditDiv : "Rediger div container",
-DeleteDiv : "Fjern div container",
-Undo : "Fortryd",
-Redo : "Annuller fortryd",
-NumberedListLbl : "Talopstilling",
-NumberedList : "Indsæt/fjern talopstilling",
-BulletedListLbl : "Punktopstilling",
-BulletedList : "Indsæt/fjern punktopstilling",
-ShowTableBorders : "Vis tabelkanter",
-ShowDetails : "Vis detaljer",
-Style : "Typografi",
-FontFormat : "Formatering",
-Font : "Skrifttype",
-FontSize : "Skriftstørrelse",
-TextColor : "Tekstfarve",
-BGColor : "Baggrundsfarve",
-Source : "Kilde",
-Find : "Søg",
-Replace : "Erstat",
-SpellCheck : "Stavekontrol",
-UniversalKeyboard : "Universaltastatur",
-PageBreakLbl : "Sidskift",
-PageBreak : "Indsæt sideskift",
-
-Form : "Indsæt formular",
-Checkbox : "Indsæt afkrydsningsfelt",
-RadioButton : "Indsæt alternativknap",
-TextField : "Indsæt tekstfelt",
-Textarea : "Indsæt tekstboks",
-HiddenField : "Indsæt skjult felt",
-Button : "Indsæt knap",
-SelectionField : "Indsæt liste",
-ImageButton : "Indsæt billedknap",
-
-FitWindow : "Maksimer editor vinduet",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Rediger hyperlink",
-CellCM : "Celle",
-RowCM : "Række",
-ColumnCM : "Kolonne",
-InsertRowAfter : "Indsæt række efter",
-InsertRowBefore : "Indsæt række før",
-DeleteRows : "Slet række",
-InsertColumnAfter : "Indsæt kolonne efter",
-InsertColumnBefore : "Indsæt kolonne før",
-DeleteColumns : "Slet kolonne",
-InsertCellAfter : "Indsæt celle efter",
-InsertCellBefore : "Indsæt celle før",
-DeleteCells : "Slet celle",
-MergeCells : "Flet celler",
-MergeRight : "Flet til højre",
-MergeDown : "Flet nedad",
-HorizontalSplitCell : "Del celle vandret",
-VerticalSplitCell : "Del celle lodret",
-TableDelete : "Slet tabel",
-CellProperties : "Egenskaber for celle",
-TableProperties : "Egenskaber for tabel",
-ImageProperties : "Egenskaber for billede",
-FlashProperties : "Egenskaber for Flash",
-
-AnchorProp : "Egenskaber for bogmærke",
-ButtonProp : "Egenskaber for knap",
-CheckboxProp : "Egenskaber for afkrydsningsfelt",
-HiddenFieldProp : "Egenskaber for skjult felt",
-RadioButtonProp : "Egenskaber for alternativknap",
-ImageButtonProp : "Egenskaber for billedknap",
-TextFieldProp : "Egenskaber for tekstfelt",
-SelectionFieldProp : "Egenskaber for liste",
-TextareaProp : "Egenskaber for tekstboks",
-FormProp : "Egenskaber for formular",
-
-FontFormats : "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Behandler XHTML...",
-Done : "Færdig",
-PasteWordConfirm : "Den tekst du forsøger at indsætte ser ud til at komme fra Word.<br>Vil du rense teksten før den indsættes?",
-NotCompatiblePaste : "Denne kommando er tilgændelig i Internet Explorer 5.5 eller senere.<br>Vil du indsætte teksten uden at rense den ?",
-UnknownToolbarItem : "Ukendt værktøjslinjeobjekt \"%1\"!",
-UnknownCommand : "Ukendt kommandonavn \"%1\"!",
-NotImplemented : "Kommandoen er ikke implementeret!",
-UnknownToolbarSet : "Værktøjslinjen \"%1\" eksisterer ikke!",
-NoActiveX : "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.<br>Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.",
-BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!<br>Slå pop-up blokering fra.",
-DialogBlocked : "Dialogvinduet kunne ikke åbnes!<br>Slå pop-up blokering fra.",
-VisitLinkBlocked : "Det var ikke muligt at åbne et nyt vindue. Tjek, at ingen popup-blokkere er aktive.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Annuller",
-DlgBtnClose : "Luk",
-DlgBtnBrowseServer : "Gennemse...",
-DlgAdvancedTag : "Avanceret",
-DlgOpOther : "<Andet>",
-DlgInfoTab : "Generelt",
-DlgAlertUrl : "Indtast URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<intet valgt>",
-DlgGenId : "Id",
-DlgGenLangDir : "Tekstretning",
-DlgGenLangDirLtr : "Fra venstre mod højre (LTR)",
-DlgGenLangDirRtl : "Fra højre mod venstre (RTL)",
-DlgGenLangCode : "Sprogkode",
-DlgGenAccessKey : "Genvejstast",
-DlgGenName : "Navn",
-DlgGenTabIndex : "Tabulator indeks",
-DlgGenLongDescr : "Udvidet beskrivelse",
-DlgGenClass : "Typografiark",
-DlgGenTitle : "Titel",
-DlgGenContType : "Indholdstype",
-DlgGenLinkCharset : "Tegnsæt",
-DlgGenStyle : "Typografi",
-
-// Image Dialog
-DlgImgTitle : "Egenskaber for billede",
-DlgImgInfoTab : "Generelt",
-DlgImgBtnUpload : "Upload",
-DlgImgURL : "URL",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternativ tekst",
-DlgImgWidth : "Bredde",
-DlgImgHeight : "Højde",
-DlgImgLockRatio : "Lås størrelsesforhold",
-DlgBtnResetSize : "Nulstil størrelse",
-DlgImgBorder : "Ramme",
-DlgImgHSpace : "HMargen",
-DlgImgVSpace : "VMargen",
-DlgImgAlign : "Justering",
-DlgImgAlignLeft : "Venstre",
-DlgImgAlignAbsBottom: "Absolut nederst",
-DlgImgAlignAbsMiddle: "Absolut centreret",
-DlgImgAlignBaseline : "Grundlinje",
-DlgImgAlignBottom : "Nederst",
-DlgImgAlignMiddle : "Centreret",
-DlgImgAlignRight : "Højre",
-DlgImgAlignTextTop : "Toppen af teksten",
-DlgImgAlignTop : "Øverst",
-DlgImgPreview : "Vis eksempel",
-DlgImgAlertUrl : "Indtast stien til billedet",
-DlgImgLinkTab : "Hyperlink",
-
-// Flash Dialog
-DlgFlashTitle : "Egenskaber for Flash",
-DlgFlashChkPlay : "Automatisk afspilning",
-DlgFlashChkLoop : "Gentagelse",
-DlgFlashChkMenu : "Vis Flash menu",
-DlgFlashScale : "Skalér",
-DlgFlashScaleAll : "Vis alt",
-DlgFlashScaleNoBorder : "Ingen ramme",
-DlgFlashScaleFit : "Tilpas størrelse",
-
-// Link Dialog
-DlgLnkWindowTitle : "Egenskaber for hyperlink",
-DlgLnkInfoTab : "Generelt",
-DlgLnkTargetTab : "MÃ¥l",
-
-DlgLnkType : "Hyperlink type",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Bogmærke på denne side",
-DlgLnkTypeEMail : "E-mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<anden>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Vælg et anker",
-DlgLnkAnchorByName : "Efter anker navn",
-DlgLnkAnchorById : "Efter element Id",
-DlgLnkNoAnchors : "(Ingen bogmærker dokumentet)",
-DlgLnkEMail : "E-mailadresse",
-DlgLnkEMailSubject : "Emne",
-DlgLnkEMailBody : "Brødtekst",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Upload",
-
-DlgLnkTarget : "MÃ¥l",
-DlgLnkTargetFrame : "<ramme>",
-DlgLnkTargetPopup : "<popup vindue>",
-DlgLnkTargetBlank : "Nyt vindue (_blank)",
-DlgLnkTargetParent : "Overordnet ramme (_parent)",
-DlgLnkTargetSelf : "Samme vindue (_self)",
-DlgLnkTargetTop : "Hele vinduet (_top)",
-DlgLnkTargetFrameName : "Destinationsvinduets navn",
-DlgLnkPopWinName : "Pop-up vinduets navn",
-DlgLnkPopWinFeat : "Egenskaber for pop-up",
-DlgLnkPopResize : "Skalering",
-DlgLnkPopLocation : "Adresselinje",
-DlgLnkPopMenu : "Menulinje",
-DlgLnkPopScroll : "Scrollbars",
-DlgLnkPopStatus : "Statuslinje",
-DlgLnkPopToolbar : "Værktøjslinje",
-DlgLnkPopFullScrn : "Fuld skærm (IE)",
-DlgLnkPopDependent : "Koblet/dependent (Netscape)",
-DlgLnkPopWidth : "Bredde",
-DlgLnkPopHeight : "Højde",
-DlgLnkPopLeft : "Position fra venstre",
-DlgLnkPopTop : "Position fra toppen",
-
-DlnLnkMsgNoUrl : "Indtast hyperlink URL!",
-DlnLnkMsgNoEMail : "Indtast e-mailaddresse!",
-DlnLnkMsgNoAnchor : "Vælg bogmærke!",
-DlnLnkMsgInvPopName : "Navnet på popup'en skal starte med et bogstav og må ikke indeholde mellemrum",
-
-// Color Dialog
-DlgColorTitle : "Vælg farve",
-DlgColorBtnClear : "Nulstil",
-DlgColorHighlight : "Markeret",
-DlgColorSelected : "Valgt",
-
-// Smiley Dialog
-DlgSmileyTitle : "Vælg smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Vælg symbol",
-
-// Table Dialog
-DlgTableTitle : "Egenskaber for tabel",
-DlgTableRows : "Rækker",
-DlgTableColumns : "Kolonner",
-DlgTableBorder : "Rammebredde",
-DlgTableAlign : "Justering",
-DlgTableAlignNotSet : "<intet valgt>",
-DlgTableAlignLeft : "Venstrestillet",
-DlgTableAlignCenter : "Centreret",
-DlgTableAlignRight : "Højrestillet",
-DlgTableWidth : "Bredde",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "procent",
-DlgTableHeight : "Højde",
-DlgTableCellSpace : "Celleafstand",
-DlgTableCellPad : "Cellemargen",
-DlgTableCaption : "Titel",
-DlgTableSummary : "Resume",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Egenskaber for celle",
-DlgCellWidth : "Bredde",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "procent",
-DlgCellHeight : "Højde",
-DlgCellWordWrap : "Orddeling",
-DlgCellWordWrapNotSet : "<intet valgt>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nej",
-DlgCellHorAlign : "Vandret justering",
-DlgCellHorAlignNotSet : "<intet valgt>",
-DlgCellHorAlignLeft : "Venstrestillet",
-DlgCellHorAlignCenter : "Centreret",
-DlgCellHorAlignRight: "Højrestillet",
-DlgCellVerAlign : "Lodret justering",
-DlgCellVerAlignNotSet : "<intet valgt>",
-DlgCellVerAlignTop : "Øverst",
-DlgCellVerAlignMiddle : "Centreret",
-DlgCellVerAlignBottom : "Nederst",
-DlgCellVerAlignBaseline : "Grundlinje",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Højde i antal rækker",
-DlgCellCollSpan : "Bredde i antal kolonner",
-DlgCellBackColor : "Baggrundsfarve",
-DlgCellBorderColor : "Rammefarve",
-DlgCellBtnSelect : "Vælg...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Søg og erstat",
-
-// Find Dialog
-DlgFindTitle : "Find",
-DlgFindFindBtn : "Find",
-DlgFindNotFoundMsg : "Søgeteksten blev ikke fundet!",
-
-// Replace Dialog
-DlgReplaceTitle : "Erstat",
-DlgReplaceFindLbl : "Søg efter:",
-DlgReplaceReplaceLbl : "Erstat med:",
-DlgReplaceCaseChk : "Forskel på store og små bogstaver",
-DlgReplaceReplaceBtn : "Erstat",
-DlgReplaceReplAllBtn : "Erstat alle",
-DlgReplaceWordChk : "Kun hele ord",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk!<br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).",
-PasteErrorCopy : "Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk!<br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).",
-
-PasteAsText : "Indsæt som ikke-formateret tekst",
-PasteFromWord : "Indsæt fra Word",
-
-DlgPasteMsg2 : "Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.",
-DlgPasteSec : "På grund af browserens sikkerhedsindstillinger kan editoren ikke tilgå udklipsholderen direkte. Du skal indsætte udklipsholderens indhold i dette vindue igen.",
-DlgPasteIgnoreFont : "Ignorer font definitioner",
-DlgPasteRemoveStyles : "Ignorer typografi",
-
-// Color Picker
-ColorAutomatic : "Automatisk",
-ColorMoreColors : "Flere farver...",
-
-// Document Properties
-DocProps : "Egenskaber for dokument",
-
-// Anchor Dialog
-DlgAnchorTitle : "Egenskaber for bogmærke",
-DlgAnchorName : "Bogmærke navn",
-DlgAnchorErrorName : "Indtast bogmærke navn!",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ikke i ordbogen",
-DlgSpellChangeTo : "Forslag",
-DlgSpellBtnIgnore : "Ignorer",
-DlgSpellBtnIgnoreAll : "Ignorer alle",
-DlgSpellBtnReplace : "Erstat",
-DlgSpellBtnReplaceAll : "Erstat alle",
-DlgSpellBtnUndo : "Tilbage",
-DlgSpellNoSuggestions : "- ingen forslag -",
-DlgSpellProgress : "Stavekontrolen arbejder...",
-DlgSpellNoMispell : "Stavekontrol færdig: Ingen fejl fundet",
-DlgSpellNoChanges : "Stavekontrol færdig: Ingen ord ændret",
-DlgSpellOneChange : "Stavekontrol færdig: Et ord ændret",
-DlgSpellManyChanges : "Stavekontrol færdig: %1 ord ændret",
-
-IeSpellDownload : "Stavekontrol ikke installeret.<br>Vil du hente den nu?",
-
-// Button Dialog
-DlgButtonText : "Tekst",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Knap",
-DlgButtonTypeSbm : "Send",
-DlgButtonTypeRst : "Nulstil",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Navn",
-DlgCheckboxValue : "Værdi",
-DlgCheckboxSelected : "Valgt",
-
-// Form Dialog
-DlgFormName : "Navn",
-DlgFormAction : "Handling",
-DlgFormMethod : "Metod",
-
-// Select Field Dialog
-DlgSelectName : "Navn",
-DlgSelectValue : "Værdi",
-DlgSelectSize : "Størrelse",
-DlgSelectLines : "linier",
-DlgSelectChkMulti : "Tillad flere valg",
-DlgSelectOpAvail : "Valgmuligheder",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Værdi",
-DlgSelectBtnAdd : "Tilføj",
-DlgSelectBtnModify : "Rediger",
-DlgSelectBtnUp : "Op",
-DlgSelectBtnDown : "Ned",
-DlgSelectBtnSetValue : "Sæt som valgt",
-DlgSelectBtnDelete : "Slet",
-
-// Textarea Dialog
-DlgTextareaName : "Navn",
-DlgTextareaCols : "Kolonner",
-DlgTextareaRows : "Rækker",
-
-// Text Field Dialog
-DlgTextName : "Navn",
-DlgTextValue : "Værdi",
-DlgTextCharWidth : "Bredde (tegn)",
-DlgTextMaxChars : "Max antal tegn",
-DlgTextType : "Type",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Adgangskode",
-
-// Hidden Field Dialog
-DlgHiddenName : "Navn",
-DlgHiddenValue : "Værdi",
-
-// Bulleted List Dialog
-BulletedListProp : "Egenskaber for punktopstilling",
-NumberedListProp : "Egenskaber for talopstilling",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Cirkel",
-DlgLstTypeDisc : "Udfyldt cirkel",
-DlgLstTypeSquare : "Firkant",
-DlgLstTypeNumbers : "Nummereret (1, 2, 3)",
-DlgLstTypeLCase : "Små bogstaver (a, b, c)",
-DlgLstTypeUCase : "Store bogstaver (A, B, C)",
-DlgLstTypeSRoman : "Små romertal (i, ii, iii)",
-DlgLstTypeLRoman : "Store romertal (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Generelt",
-DlgDocBackTab : "Baggrund",
-DlgDocColorsTab : "Farver og margen",
-DlgDocMetaTab : "Metadata",
-
-DlgDocPageTitle : "Sidetitel",
-DlgDocLangDir : "Sprog",
-DlgDocLangDirLTR : "Fra venstre mod højre (LTR)",
-DlgDocLangDirRTL : "Fra højre mod venstre (RTL)",
-DlgDocLangCode : "Landekode",
-DlgDocCharSet : "Tegnsæt kode",
-DlgDocCharSetCE : "Centraleuropæisk",
-DlgDocCharSetCT : "Traditionel kinesisk (Big5)",
-DlgDocCharSetCR : "Kyrillisk",
-DlgDocCharSetGR : "Græsk",
-DlgDocCharSetJP : "Japansk",
-DlgDocCharSetKR : "Koreansk",
-DlgDocCharSetTR : "Tyrkisk",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Vesteuropæisk",
-DlgDocCharSetOther : "Anden tegnsæt kode",
-
-DlgDocDocType : "Dokumenttype kategori",
-DlgDocDocTypeOther : "Anden dokumenttype kategori",
-DlgDocIncXHTML : "Inkludere XHTML deklartion",
-DlgDocBgColor : "Baggrundsfarve",
-DlgDocBgImage : "Baggrundsbillede URL",
-DlgDocBgNoScroll : "Fastlåst baggrund",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Hyperlink",
-DlgDocCVisited : "Besøgt hyperlink",
-DlgDocCActive : "Aktivt hyperlink",
-DlgDocMargins : "Sidemargen",
-DlgDocMaTop : "Øverst",
-DlgDocMaLeft : "Venstre",
-DlgDocMaRight : "Højre",
-DlgDocMaBottom : "Nederst",
-DlgDocMeIndex : "Dokument index nøgleord (kommasepareret)",
-DlgDocMeDescr : "Dokument beskrivelse",
-DlgDocMeAuthor : "Forfatter",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Vis",
-
-// Templates Dialog
-Templates : "Skabeloner",
-DlgTemplatesTitle : "Indholdsskabeloner",
-DlgTemplatesSelMsg : "Vælg den skabelon, som skal åbnes i editoren.<br>(Nuværende indhold vil blive overskrevet!):",
-DlgTemplatesLoading : "Henter liste over skabeloner...",
-DlgTemplatesNoTpl : "(Der er ikke defineret nogen skabelon!)",
-DlgTemplatesReplace : "Erstat det faktiske indhold",
-
-// About Dialog
-DlgAboutAboutTab : "Om",
-DlgAboutBrowserInfoTab : "Generelt",
-DlgAboutLicenseTab : "Licens",
-DlgAboutVersion : "version",
-DlgAboutInfo : "For yderlig information gå til",
-
-// Div Dialog
-DlgDivGeneralTab : "Generelt",
-DlgDivAdvancedTab : "Avanceret",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/de.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/de.js
deleted file mode 100644
index b2724e306..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/de.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * German language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Symbolleiste einklappen",
-ToolbarExpand : "Symbolleiste ausklappen",
-
-// Toolbar Items and Context Menu
-Save : "Speichern",
-NewPage : "Neue Seite",
-Preview : "Vorschau",
-Cut : "Ausschneiden",
-Copy : "Kopieren",
-Paste : "Einfügen",
-PasteText : "aus Textdatei einfügen",
-PasteWord : "aus MS-Word einfügen",
-Print : "Drucken",
-SelectAll : "Alles auswählen",
-RemoveFormat : "Formatierungen entfernen",
-InsertLinkLbl : "Link",
-InsertLink : "Link einfügen/editieren",
-RemoveLink : "Link entfernen",
-VisitLink : "Link aufrufen",
-Anchor : "Anker einfügen/editieren",
-AnchorDelete : "Anker entfernen",
-InsertImageLbl : "Bild",
-InsertImage : "Bild einfügen/editieren",
-InsertFlashLbl : "Flash",
-InsertFlash : "Flash einfügen/editieren",
-InsertTableLbl : "Tabelle",
-InsertTable : "Tabelle einfügen/editieren",
-InsertLineLbl : "Linie",
-InsertLine : "Horizontale Linie einfügen",
-InsertSpecialCharLbl: "Sonderzeichen",
-InsertSpecialChar : "Sonderzeichen einfügen/editieren",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Smiley einfügen",
-About : "Über FCKeditor",
-Bold : "Fett",
-Italic : "Kursiv",
-Underline : "Unterstrichen",
-StrikeThrough : "Durchgestrichen",
-Subscript : "Tiefgestellt",
-Superscript : "Hochgestellt",
-LeftJustify : "Linksbündig",
-CenterJustify : "Zentriert",
-RightJustify : "Rechtsbündig",
-BlockJustify : "Blocksatz",
-DecreaseIndent : "Einzug verringern",
-IncreaseIndent : "Einzug erhöhen",
-Blockquote : "Zitatblock",
-CreateDiv : "Erzeuge Div Block",
-EditDiv : "Bearbeite Div Block",
-DeleteDiv : "Entferne Div Block",
-Undo : "Rückgängig",
-Redo : "Wiederherstellen",
-NumberedListLbl : "Nummerierte Liste",
-NumberedList : "Nummerierte Liste einfügen/entfernen",
-BulletedListLbl : "Liste",
-BulletedList : "Liste einfügen/entfernen",
-ShowTableBorders : "Zeige Tabellenrahmen",
-ShowDetails : "Zeige Details",
-Style : "Stil",
-FontFormat : "Format",
-Font : "Schriftart",
-FontSize : "Größe",
-TextColor : "Textfarbe",
-BGColor : "Hintergrundfarbe",
-Source : "Quellcode",
-Find : "Suchen",
-Replace : "Ersetzen",
-SpellCheck : "Rechtschreibprüfung",
-UniversalKeyboard : "Universal-Tastatur",
-PageBreakLbl : "Seitenumbruch",
-PageBreak : "Seitenumbruch einfügen",
-
-Form : "Formular",
-Checkbox : "Checkbox",
-RadioButton : "Radiobutton",
-TextField : "Textfeld einzeilig",
-Textarea : "Textfeld mehrzeilig",
-HiddenField : "verstecktes Feld",
-Button : "Klickbutton",
-SelectionField : "Auswahlfeld",
-ImageButton : "Bildbutton",
-
-FitWindow : "Editor maximieren",
-ShowBlocks : "Blöcke anzeigen",
-
-// Context Menu
-EditLink : "Link editieren",
-CellCM : "Zelle",
-RowCM : "Zeile",
-ColumnCM : "Spalte",
-InsertRowAfter : "Zeile unterhalb einfügen",
-InsertRowBefore : "Zeile oberhalb einfügen",
-DeleteRows : "Zeile entfernen",
-InsertColumnAfter : "Spalte rechts danach einfügen",
-InsertColumnBefore : "Spalte links davor einfügen",
-DeleteColumns : "Spalte löschen",
-InsertCellAfter : "Zelle danach einfügen",
-InsertCellBefore : "Zelle davor einfügen",
-DeleteCells : "Zelle löschen",
-MergeCells : "Zellen verbinden",
-MergeRight : "nach rechts verbinden",
-MergeDown : "nach unten verbinden",
-HorizontalSplitCell : "Zelle horizontal teilen",
-VerticalSplitCell : "Zelle vertikal teilen",
-TableDelete : "Tabelle löschen",
-CellProperties : "Zellen-Eigenschaften",
-TableProperties : "Tabellen-Eigenschaften",
-ImageProperties : "Bild-Eigenschaften",
-FlashProperties : "Flash-Eigenschaften",
-
-AnchorProp : "Anker-Eigenschaften",
-ButtonProp : "Button-Eigenschaften",
-CheckboxProp : "Checkbox-Eigenschaften",
-HiddenFieldProp : "Verstecktes Feld-Eigenschaften",
-RadioButtonProp : "Optionsfeld-Eigenschaften",
-ImageButtonProp : "Bildbutton-Eigenschaften",
-TextFieldProp : "Textfeld (einzeilig) Eigenschaften",
-SelectionFieldProp : "Auswahlfeld-Eigenschaften",
-TextareaProp : "Textfeld (mehrzeilig) Eigenschaften",
-FormProp : "Formular-Eigenschaften",
-
-FontFormats : "Normal;Formatiert;Addresse;Überschrift 1;Überschrift 2;Überschrift 3;Überschrift 4;Überschrift 5;Überschrift 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Bearbeite XHTML. Bitte warten...",
-Done : "Fertig",
-PasteWordConfirm : "Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?",
-NotCompatiblePaste : "Diese Funktion steht nur im Internet Explorer ab Version 5.5 zur Verfügung. Möchten Sie den Text unbereinigt einfügen?",
-UnknownToolbarItem : "Unbekanntes Menüleisten-Objekt \"%1\"",
-UnknownCommand : "Unbekannter Befehl \"%1\"",
-NotImplemented : "Befehl nicht implementiert",
-UnknownToolbarSet : "Menüleiste \"%1\" existiert nicht",
-NoActiveX : "Die Sicherheitseinstellungen Ihres Browsers beschränken evtl. einige Funktionen des Editors. Aktivieren Sie die Option \"ActiveX-Steuerelemente und Plugins ausführen\" in den Sicherheitseinstellungen, um diese Funktionen nutzen zu können",
-BrowseServerBlocked : "Ein Auswahlfenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
-DialogBlocked : "Das Dialog-Fenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
-VisitLinkBlocked : "Es war leider nicht möglich ein neues Fenster zu öffnen. Bitte versichern Sie sich das der Popup-Blocker ausgeschaltet ist.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Abbrechen",
-DlgBtnClose : "Schließen",
-DlgBtnBrowseServer : "Server durchsuchen",
-DlgAdvancedTag : "Erweitert",
-DlgOpOther : "<andere>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Bitte tragen Sie die URL ein",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nichts>",
-DlgGenId : "ID",
-DlgGenLangDir : "Schreibrichtung",
-DlgGenLangDirLtr : "Links nach Rechts (LTR)",
-DlgGenLangDirRtl : "Rechts nach Links (RTL)",
-DlgGenLangCode : "Sprachenkürzel",
-DlgGenAccessKey : "Zugriffstaste",
-DlgGenName : "Name",
-DlgGenTabIndex : "Tab-Index",
-DlgGenLongDescr : "Langform URL",
-DlgGenClass : "Stylesheet Klasse",
-DlgGenTitle : "Titel Beschreibung",
-DlgGenContType : "Inhaltstyp",
-DlgGenLinkCharset : "Ziel-Zeichensatz",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Bild-Eigenschaften",
-DlgImgInfoTab : "Bild-Info",
-DlgImgBtnUpload : "Zum Server senden",
-DlgImgURL : "Bildauswahl",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternativer Text",
-DlgImgWidth : "Breite",
-DlgImgHeight : "Höhe",
-DlgImgLockRatio : "Größenverhältniss beibehalten",
-DlgBtnResetSize : "Größe zurücksetzen",
-DlgImgBorder : "Rahmen",
-DlgImgHSpace : "Horizontal-Abstand",
-DlgImgVSpace : "Vertikal-Abstand",
-DlgImgAlign : "Ausrichtung",
-DlgImgAlignLeft : "Links",
-DlgImgAlignAbsBottom: "Abs Unten",
-DlgImgAlignAbsMiddle: "Abs Mitte",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Unten",
-DlgImgAlignMiddle : "Mitte",
-DlgImgAlignRight : "Rechts",
-DlgImgAlignTextTop : "Text Oben",
-DlgImgAlignTop : "Oben",
-DlgImgPreview : "Vorschau",
-DlgImgAlertUrl : "Bitte geben Sie die Bild-URL an",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash-Eigenschaften",
-DlgFlashChkPlay : "autom. Abspielen",
-DlgFlashChkLoop : "Endlosschleife",
-DlgFlashChkMenu : "Flash-Menü aktivieren",
-DlgFlashScale : "Skalierung",
-DlgFlashScaleAll : "Alles anzeigen",
-DlgFlashScaleNoBorder : "ohne Rand",
-DlgFlashScaleFit : "Passgenau",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link-Info",
-DlgLnkTargetTab : "Zielseite",
-
-DlgLnkType : "Link-Typ",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Anker in dieser Seite",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<anderes>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Anker auswählen",
-DlgLnkAnchorByName : "nach Anker Name",
-DlgLnkAnchorById : "nach Element Id",
-DlgLnkNoAnchors : "(keine Anker im Dokument vorhanden)",
-DlgLnkEMail : "E-Mail Addresse",
-DlgLnkEMailSubject : "Betreffzeile",
-DlgLnkEMailBody : "Nachrichtentext",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Zum Server senden",
-
-DlgLnkTarget : "Zielseite",
-DlgLnkTargetFrame : "<Frame>",
-DlgLnkTargetPopup : "<Pop-up Fenster>",
-DlgLnkTargetBlank : "Neues Fenster (_blank)",
-DlgLnkTargetParent : "Oberes Fenster (_parent)",
-DlgLnkTargetSelf : "Gleiches Fenster (_self)",
-DlgLnkTargetTop : "Oberstes Fenster (_top)",
-DlgLnkTargetFrameName : "Ziel-Fenster-Name",
-DlgLnkPopWinName : "Pop-up Fenster-Name",
-DlgLnkPopWinFeat : "Pop-up Fenster-Eigenschaften",
-DlgLnkPopResize : "Vergrößerbar",
-DlgLnkPopLocation : "Adress-Leiste",
-DlgLnkPopMenu : "Menü-Leiste",
-DlgLnkPopScroll : "Rollbalken",
-DlgLnkPopStatus : "Statusleiste",
-DlgLnkPopToolbar : "Werkzeugleiste",
-DlgLnkPopFullScrn : "Vollbild (IE)",
-DlgLnkPopDependent : "Abhängig (Netscape)",
-DlgLnkPopWidth : "Breite",
-DlgLnkPopHeight : "Höhe",
-DlgLnkPopLeft : "Linke Position",
-DlgLnkPopTop : "Obere Position",
-
-DlnLnkMsgNoUrl : "Bitte geben Sie die Link-URL an",
-DlnLnkMsgNoEMail : "Bitte geben Sie e-Mail Adresse an",
-DlnLnkMsgNoAnchor : "Bitte wählen Sie einen Anker aus",
-DlnLnkMsgInvPopName : "Der Name des Popups muss mit einem Buchstaben beginnen und darf keine Leerzeichen enthalten",
-
-// Color Dialog
-DlgColorTitle : "Farbauswahl",
-DlgColorBtnClear : "Keine Farbe",
-DlgColorHighlight : "Vorschau",
-DlgColorSelected : "Ausgewählt",
-
-// Smiley Dialog
-DlgSmileyTitle : "Smiley auswählen",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Sonderzeichen auswählen",
-
-// Table Dialog
-DlgTableTitle : "Tabellen-Eigenschaften",
-DlgTableRows : "Zeile",
-DlgTableColumns : "Spalte",
-DlgTableBorder : "Rahmen",
-DlgTableAlign : "Ausrichtung",
-DlgTableAlignNotSet : "<keine>",
-DlgTableAlignLeft : "Links",
-DlgTableAlignCenter : "Zentriert",
-DlgTableAlignRight : "Rechts",
-DlgTableWidth : "Breite",
-DlgTableWidthPx : "Pixel",
-DlgTableWidthPc : "%",
-DlgTableHeight : "Höhe",
-DlgTableCellSpace : "Zellenabstand außen",
-DlgTableCellPad : "Zellenabstand innen",
-DlgTableCaption : "Überschrift",
-DlgTableSummary : "Inhaltsübersicht",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Zellen-Eigenschaften",
-DlgCellWidth : "Breite",
-DlgCellWidthPx : "Pixel",
-DlgCellWidthPc : "%",
-DlgCellHeight : "Höhe",
-DlgCellWordWrap : "Umbruch",
-DlgCellWordWrapNotSet : "<keiner>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nein",
-DlgCellHorAlign : "Horizontale Ausrichtung",
-DlgCellHorAlignNotSet : "<keine>",
-DlgCellHorAlignLeft : "Links",
-DlgCellHorAlignCenter : "Zentriert",
-DlgCellHorAlignRight: "Rechts",
-DlgCellVerAlign : "Vertikale Ausrichtung",
-DlgCellVerAlignNotSet : "<keine>",
-DlgCellVerAlignTop : "Oben",
-DlgCellVerAlignMiddle : "Mitte",
-DlgCellVerAlignBottom : "Unten",
-DlgCellVerAlignBaseline : "Grundlinie",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Zeilen zusammenfassen",
-DlgCellCollSpan : "Spalten zusammenfassen",
-DlgCellBackColor : "Hintergrundfarbe",
-DlgCellBorderColor : "Rahmenfarbe",
-DlgCellBtnSelect : "Auswahl...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Suchen und Ersetzen",
-
-// Find Dialog
-DlgFindTitle : "Finden",
-DlgFindFindBtn : "Finden",
-DlgFindNotFoundMsg : "Der gesuchte Text wurde nicht gefunden.",
-
-// Replace Dialog
-DlgReplaceTitle : "Ersetzen",
-DlgReplaceFindLbl : "Suche nach:",
-DlgReplaceReplaceLbl : "Ersetze mit:",
-DlgReplaceCaseChk : "Groß-Kleinschreibung beachten",
-DlgReplaceReplaceBtn : "Ersetzen",
-DlgReplaceReplAllBtn : "Alle Ersetzen",
-DlgReplaceWordChk : "Nur ganze Worte suchen",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).",
-PasteErrorCopy : "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).",
-
-PasteAsText : "Als Text einfügen",
-PasteFromWord : "Aus Word einfügen",
-
-DlgPasteMsg2 : "Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.",
-DlgPasteSec : "Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.",
-DlgPasteIgnoreFont : "Ignoriere Schriftart-Definitionen",
-DlgPasteRemoveStyles : "Entferne Style-Definitionen",
-
-// Color Picker
-ColorAutomatic : "Automatisch",
-ColorMoreColors : "Weitere Farben...",
-
-// Document Properties
-DocProps : "Dokument-Eigenschaften",
-
-// Anchor Dialog
-DlgAnchorTitle : "Anker-Eigenschaften",
-DlgAnchorName : "Anker Name",
-DlgAnchorErrorName : "Bitte geben Sie den Namen des Ankers ein",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nicht im Wörterbuch",
-DlgSpellChangeTo : "Ändern in",
-DlgSpellBtnIgnore : "Ignorieren",
-DlgSpellBtnIgnoreAll : "Alle Ignorieren",
-DlgSpellBtnReplace : "Ersetzen",
-DlgSpellBtnReplaceAll : "Alle Ersetzen",
-DlgSpellBtnUndo : "Rückgängig",
-DlgSpellNoSuggestions : " - keine Vorschläge - ",
-DlgSpellProgress : "Rechtschreibprüfung läuft...",
-DlgSpellNoMispell : "Rechtschreibprüfung abgeschlossen - keine Fehler gefunden",
-DlgSpellNoChanges : "Rechtschreibprüfung abgeschlossen - keine Worte geändert",
-DlgSpellOneChange : "Rechtschreibprüfung abgeschlossen - ein Wort geändert",
-DlgSpellManyChanges : "Rechtschreibprüfung abgeschlossen - %1 Wörter geändert",
-
-IeSpellDownload : "Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?",
-
-// Button Dialog
-DlgButtonText : "Text (Wert)",
-DlgButtonType : "Typ",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Absenden",
-DlgButtonTypeRst : "Zurücksetzen",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Name",
-DlgCheckboxValue : "Wert",
-DlgCheckboxSelected : "ausgewählt",
-
-// Form Dialog
-DlgFormName : "Name",
-DlgFormAction : "Action",
-DlgFormMethod : "Method",
-
-// Select Field Dialog
-DlgSelectName : "Name",
-DlgSelectValue : "Wert",
-DlgSelectSize : "Größe",
-DlgSelectLines : "Linien",
-DlgSelectChkMulti : "Erlaube Mehrfachauswahl",
-DlgSelectOpAvail : "Mögliche Optionen",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Wert",
-DlgSelectBtnAdd : "Hinzufügen",
-DlgSelectBtnModify : "Ändern",
-DlgSelectBtnUp : "Hoch",
-DlgSelectBtnDown : "Runter",
-DlgSelectBtnSetValue : "Setze als Standardwert",
-DlgSelectBtnDelete : "Entfernen",
-
-// Textarea Dialog
-DlgTextareaName : "Name",
-DlgTextareaCols : "Spalten",
-DlgTextareaRows : "Reihen",
-
-// Text Field Dialog
-DlgTextName : "Name",
-DlgTextValue : "Wert",
-DlgTextCharWidth : "Zeichenbreite",
-DlgTextMaxChars : "Max. Zeichen",
-DlgTextType : "Typ",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Passwort",
-
-// Hidden Field Dialog
-DlgHiddenName : "Name",
-DlgHiddenValue : "Wert",
-
-// Bulleted List Dialog
-BulletedListProp : "Listen-Eigenschaften",
-NumberedListProp : "Nummerierte Listen-Eigenschaften",
-DlgLstStart : "Start",
-DlgLstType : "Typ",
-DlgLstTypeCircle : "Ring",
-DlgLstTypeDisc : "Kreis",
-DlgLstTypeSquare : "Quadrat",
-DlgLstTypeNumbers : "Nummern (1, 2, 3)",
-DlgLstTypeLCase : "Kleinbuchstaben (a, b, c)",
-DlgLstTypeUCase : "Großbuchstaben (A, B, C)",
-DlgLstTypeSRoman : "Kleine römische Zahlen (i, ii, iii)",
-DlgLstTypeLRoman : "Große römische Zahlen (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Allgemein",
-DlgDocBackTab : "Hintergrund",
-DlgDocColorsTab : "Farben und Abstände",
-DlgDocMetaTab : "Metadaten",
-
-DlgDocPageTitle : "Seitentitel",
-DlgDocLangDir : "Schriftrichtung",
-DlgDocLangDirLTR : "Links nach Rechts",
-DlgDocLangDirRTL : "Rechts nach Links",
-DlgDocLangCode : "Sprachkürzel",
-DlgDocCharSet : "Zeichenkodierung",
-DlgDocCharSetCE : "Zentraleuropäisch",
-DlgDocCharSetCT : "traditionell Chinesisch (Big5)",
-DlgDocCharSetCR : "Kyrillisch",
-DlgDocCharSetGR : "Griechisch",
-DlgDocCharSetJP : "Japanisch",
-DlgDocCharSetKR : "Koreanisch",
-DlgDocCharSetTR : "Türkisch",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Westeuropäisch",
-DlgDocCharSetOther : "Andere Zeichenkodierung",
-
-DlgDocDocType : "Dokumententyp",
-DlgDocDocTypeOther : "Anderer Dokumententyp",
-DlgDocIncXHTML : "Beziehe XHTML Deklarationen ein",
-DlgDocBgColor : "Hintergrundfarbe",
-DlgDocBgImage : "Hintergrundbild URL",
-DlgDocBgNoScroll : "feststehender Hintergrund",
-DlgDocCText : "Text",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Besuchter Link",
-DlgDocCActive : "Aktiver Link",
-DlgDocMargins : "Seitenränder",
-DlgDocMaTop : "Oben",
-DlgDocMaLeft : "Links",
-DlgDocMaRight : "Rechts",
-DlgDocMaBottom : "Unten",
-DlgDocMeIndex : "Schlüsselwörter (durch Komma getrennt)",
-DlgDocMeDescr : "Dokument-Beschreibung",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Vorschau",
-
-// Templates Dialog
-Templates : "Vorlagen",
-DlgTemplatesTitle : "Vorlagen",
-DlgTemplatesSelMsg : "Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):",
-DlgTemplatesLoading : "Liste der Vorlagen wird geladen. Bitte warten...",
-DlgTemplatesNoTpl : "(keine Vorlagen definiert)",
-DlgTemplatesReplace : "Aktuellen Inhalt ersetzen",
-
-// About Dialog
-DlgAboutAboutTab : "Über",
-DlgAboutBrowserInfoTab : "Browser-Info",
-DlgAboutLicenseTab : "Lizenz",
-DlgAboutVersion : "Version",
-DlgAboutInfo : "Für weitere Informationen siehe",
-
-// Div Dialog
-DlgDivGeneralTab : "Allgemein",
-DlgDivAdvancedTab : "Erweitert",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/el.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/el.js
deleted file mode 100644
index fe4bc46a3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/el.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Greek language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "ΑπόκÏυψη ΜπάÏας ΕÏγαλείων",
-ToolbarExpand : "Εμφάνιση ΜπάÏας ΕÏγαλείων",
-
-// Toolbar Items and Context Menu
-Save : "Αποθήκευση",
-NewPage : "Îέα Σελίδα",
-Preview : "ΠÏοεπισκόπιση",
-Cut : "Αποκοπή",
-Copy : "ΑντιγÏαφή",
-Paste : "Επικόλληση",
-PasteText : "Επικόλληση (απλό κείμενο)",
-PasteWord : "Επικόλληση από το Word",
-Print : "ΕκτÏπωση",
-SelectAll : "Επιλογή όλων",
-RemoveFormat : "ΑφαίÏεση ΜοÏφοποίησης",
-InsertLinkLbl : "ΣÏνδεσμος (Link)",
-InsertLink : "Εισαγωγή/Μεταβολή Συνδέσμου (Link)",
-RemoveLink : "ΑφαίÏεση Συνδέσμου (Link)",
-VisitLink : "Open Link", //MISSING
-Anchor : "Εισαγωγή/επεξεÏγασία Anchor",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Εικόνα",
-InsertImage : "Εισαγωγή/Μεταβολή Εικόνας",
-InsertFlashLbl : "Εισαγωγή Flash",
-InsertFlash : "Εισαγωγή/επεξεÏγασία Flash",
-InsertTableLbl : "Πίνακας",
-InsertTable : "Εισαγωγή/Μεταβολή Πίνακα",
-InsertLineLbl : "ΓÏαμμή",
-InsertLine : "Εισαγωγή ΟÏιζόντιας ΓÏαμμής",
-InsertSpecialCharLbl: "Ειδικό ΣÏμβολο",
-InsertSpecialChar : "Εισαγωγή Î•Î¹Î´Î¹ÎºÎ¿Ï Î£Ï…Î¼Î²ÏŒÎ»Î¿Ï…",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Εισαγωγή Smiley",
-About : "ΠεÏί του FCKeditor",
-Bold : "Έντονα",
-Italic : "Πλάγια",
-Underline : "ΥπογÏάμμιση",
-StrikeThrough : "ΔιαγÏάμμιση",
-Subscript : "Δείκτης",
-Superscript : "Εκθέτης",
-LeftJustify : "Στοίχιση ΑÏιστεÏά",
-CenterJustify : "Στοίχιση στο ΚέντÏο",
-RightJustify : "Στοίχιση Δεξιά",
-BlockJustify : "ΠλήÏης Στοίχιση (Block)",
-DecreaseIndent : "Μείωση Εσοχής",
-IncreaseIndent : "ΑÏξηση Εσοχής",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "ΑναίÏεση",
-Redo : "ΕπαναφοÏά",
-NumberedListLbl : "Λίστα με ΑÏιθμοÏÏ‚",
-NumberedList : "Εισαγωγή/ΔιαγÏαφή Λίστας με ΑÏιθμοÏÏ‚",
-BulletedListLbl : "Λίστα με Bullets",
-BulletedList : "Εισαγωγή/ΔιαγÏαφή Λίστας με Bullets",
-ShowTableBorders : "ΠÏοβολή ΟÏίων Πίνακα",
-ShowDetails : "ΠÏοβολή ΛεπτομεÏειών",
-Style : "Στυλ",
-FontFormat : "ΜοÏφή ΓÏαμματοσειÏάς",
-Font : "ΓÏαμματοσειÏά",
-FontSize : "Μέγεθος",
-TextColor : "ΧÏώμα ΓÏαμμάτων",
-BGColor : "ΧÏώμα ΥποβάθÏου",
-Source : "HTML κώδικας",
-Find : "Αναζήτηση",
-Replace : "Αντικατάσταση",
-SpellCheck : "ΟÏθογÏαφικός έλεγχος",
-UniversalKeyboard : "Διεθνής πληκτÏολόγιο",
-PageBreakLbl : "Τέλος σελίδας",
-PageBreak : "Εισαγωγή τέλους σελίδας",
-
-Form : "ΦόÏμα",
-Checkbox : "Κουτί επιλογής",
-RadioButton : "Κουμπί Radio",
-TextField : "Πεδίο κειμένου",
-Textarea : "ΠεÏιοχή κειμένου",
-HiddenField : "ΚÏυφό πεδίο",
-Button : "Κουμπί",
-SelectionField : "Πεδίο επιλογής",
-ImageButton : "Κουμπί εικόνας",
-
-FitWindow : "Μεγιστοποίηση Ï€ÏογÏάμματος",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Μεταβολή Συνδέσμου (Link)",
-CellCM : "Κελί",
-RowCM : "ΣειÏά",
-ColumnCM : "Στήλη",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "ΔιαγÏαφή ΓÏαμμών",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "ΔιαγÏαφή Κολωνών",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "ΔιαγÏαφή Κελιών",
-MergeCells : "Ενοποίηση Κελιών",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "ΔιαγÏαφή πίνακα",
-CellProperties : "Ιδιότητες ΚελιοÏ",
-TableProperties : "Ιδιότητες Πίνακα",
-ImageProperties : "Ιδιότητες Εικόνας",
-FlashProperties : "Ιδιότητες Flash",
-
-AnchorProp : "Ιδιότητες άγκυÏας",
-ButtonProp : "Ιδιότητες κουμπιοÏ",
-CheckboxProp : "Ιδιότητες ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÏ€Î¹Î»Î¿Î³Î®Ï‚",
-HiddenFieldProp : "Ιδιότητες κÏÏ…Ï†Î¿Ï Ï€ÎµÎ´Î¯Î¿Ï…",
-RadioButtonProp : "Ιδιότητες ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï radio",
-ImageButtonProp : "Ιδιότητες ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÎ¹ÎºÏŒÎ½Î±Ï‚",
-TextFieldProp : "Ιδιότητες πεδίου κειμένου",
-SelectionFieldProp : "Ιδιότητες πεδίου επιλογής",
-TextareaProp : "Ιδιότητες πεÏιοχής κειμένου",
-FormProp : "Ιδιότητες φόÏμας",
-
-FontFormats : "Κανονικό;ΜοÏφοποιημένο;ΔιεÏθυνση;Επικεφαλίδα 1;Επικεφαλίδα 2;Επικεφαλίδα 3;Επικεφαλίδα 4;Επικεφαλίδα 5;Επικεφαλίδα 6",
-
-// Alerts and Messages
-ProcessingXHTML : "ΕπεξεÏγασία XHTML. ΠαÏακαλώ πεÏιμένετε...",
-Done : "Έτοιμο",
-PasteWordConfirm : "Το κείμενο που θέλετε να επικολήσετε, φαίνεται πως Ï€ÏοέÏχεται από το Word. Θέλετε να καθαÏιστεί Ï€Ïιν επικοληθεί;",
-NotCompatiblePaste : "Αυτή η επιλογή είναι διαθέσιμη στον Internet Explorer έκδοση 5.5+. Θέλετε να γίνει η επικόλληση χωÏίς καθαÏισμό;",
-UnknownToolbarItem : "Άγνωστο αντικείμενο της μπάÏας εÏγαλείων \"%1\"",
-UnknownCommand : "Άγνωστή εντολή \"%1\"",
-NotImplemented : "Η εντολή δεν έχει ενεÏγοποιηθεί",
-UnknownToolbarSet : "Η μπάÏα εÏγαλείων \"%1\" δεν υπάÏχει",
-NoActiveX : "Οι Ïυθμίσεις ασφαλείας του browser σας μποÏεί να πεÏιοÏίσουν κάποιες Ïυθμίσεις του Ï€ÏογÏάμματος. ΧÏειάζεται να ενεÏγοποιήσετε την επιλογή \"Run ActiveX controls and plug-ins\". Ίσως παÏουσιαστοÏν λάθη και παÏατηÏήσετε ελειπείς λειτουÏγίες.",
-BrowseServerBlocked : "Οι πόÏοι του browser σας δεν είναι Ï€Ïοσπελάσιμοι. ΣιγουÏευτείτε ότι δεν υπάÏχουν ενεÏγοί popup blockers.",
-DialogBlocked : "Δεν ήταν δυνατό να ανοίξει το παÏάθυÏο διαλόγου. ΣιγουÏευτείτε ότι δεν υπάÏχουν ενεÏγοί popup blockers.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "ΑκÏÏωση",
-DlgBtnClose : "Κλείσιμο",
-DlgBtnBrowseServer : "ΕξεÏεÏνηση διακομιστή",
-DlgAdvancedTag : "Για Ï€ÏοχωÏημένους",
-DlgOpOther : "<Άλλα>",
-DlgInfoTab : "ΠληÏοφοÏίες",
-DlgAlertUrl : "ΠαÏακαλώ εισάγετε URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<χωÏίς>",
-DlgGenId : "Id",
-DlgGenLangDir : "ΚατεÏθυνση κειμένου",
-DlgGenLangDirLtr : "ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)",
-DlgGenLangDirRtl : "Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)",
-DlgGenLangCode : "Κωδικός Γλώσσας",
-DlgGenAccessKey : "Συντόμευση (Access Key)",
-DlgGenName : "Όνομα",
-DlgGenTabIndex : "Tab Index",
-DlgGenLongDescr : "Αναλυτική πεÏιγÏαφή URL",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "Συμβουλευτικός τίτλος",
-DlgGenContType : "Συμβουλευτικός τίτλος πεÏιεχομένου",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "ΣτÏλ",
-
-// Image Dialog
-DlgImgTitle : "Ιδιότητες Εικόνας",
-DlgImgInfoTab : "ΠληÏοφοÏίες Εικόνας",
-DlgImgBtnUpload : "Αποστολή στον Διακομιστή",
-DlgImgURL : "URL",
-DlgImgUpload : "Αποστολή",
-DlgImgAlt : "Εναλλακτικό Κείμενο (ALT)",
-DlgImgWidth : "Πλάτος",
-DlgImgHeight : "Ύψος",
-DlgImgLockRatio : "Κλείδωμα Αναλογίας",
-DlgBtnResetSize : "ΕπαναφοÏά ΑÏÏ‡Î¹ÎºÎ¿Ï ÎœÎµÎ³Î­Î¸Î¿Ï…Ï‚",
-DlgImgBorder : "ΠεÏιθώÏιο",
-DlgImgHSpace : "ΟÏιζόντιος ΧώÏος (HSpace)",
-DlgImgVSpace : "Κάθετος ΧώÏος (VSpace)",
-DlgImgAlign : "ΕυθυγÏάμμιση (Align)",
-DlgImgAlignLeft : "ΑÏιστεÏά",
-DlgImgAlignAbsBottom: "Απόλυτα Κάτω (Abs Bottom)",
-DlgImgAlignAbsMiddle: "Απόλυτα στη Μέση (Abs Middle)",
-DlgImgAlignBaseline : "ΓÏαμμή Βάσης (Baseline)",
-DlgImgAlignBottom : "Κάτω (Bottom)",
-DlgImgAlignMiddle : "Μέση (Middle)",
-DlgImgAlignRight : "Δεξιά (Right)",
-DlgImgAlignTextTop : "ΚοÏυφή Κειμένου (Text Top)",
-DlgImgAlignTop : "Πάνω (Top)",
-DlgImgPreview : "ΠÏοεπισκόπιση",
-DlgImgAlertUrl : "Εισάγετε την τοποθεσία (URL) της εικόνας",
-DlgImgLinkTab : "ΣÏνδεσμος",
-
-// Flash Dialog
-DlgFlashTitle : "Ιδιότητες flash",
-DlgFlashChkPlay : "Αυτόματη έναÏξη",
-DlgFlashChkLoop : "Επανάληψη",
-DlgFlashChkMenu : "ΕνεÏγοποίηση Flash Menu",
-DlgFlashScale : "Κλίμακα",
-DlgFlashScaleAll : "Εμφάνιση όλων",
-DlgFlashScaleNoBorder : "ΧωÏίς ÏŒÏια",
-DlgFlashScaleFit : "ΑκÏιβής εφαÏμογή",
-
-// Link Dialog
-DlgLnkWindowTitle : "ΣÏνδεσμος (Link)",
-DlgLnkInfoTab : "Link",
-DlgLnkTargetTab : "ΠαÏάθυÏο Στόχος (Target)",
-
-DlgLnkType : "ΤÏπος συνδέσμου (Link)",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "ΆγκυÏα σε αυτή τη σελίδα",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "ΠÏοτόκολο",
-DlgLnkProtoOther : "<άλλο>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Επιλέξτε μια άγκυÏα",
-DlgLnkAnchorByName : "Βάσει του Ονόματος (Name) της άγκυÏας",
-DlgLnkAnchorById : "Βάσει του Element Id",
-DlgLnkNoAnchors : "(Δεν υπάÏχουν άγκυÏες στο κείμενο)",
-DlgLnkEMail : "ΔιεÏθυνση ΗλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Î¤Î±Ï‡Ï…Î´Ïομείου",
-DlgLnkEMailSubject : "Θέμα ΜηνÏματος",
-DlgLnkEMailBody : "Κείμενο ΜηνÏματος",
-DlgLnkUpload : "Αποστολή",
-DlgLnkBtnUpload : "Αποστολή στον Διακομιστή",
-
-DlgLnkTarget : "ΠαÏάθυÏο Στόχος (Target)",
-DlgLnkTargetFrame : "<πλαίσιο>",
-DlgLnkTargetPopup : "<παÏάθυÏο popup>",
-DlgLnkTargetBlank : "Îέο ΠαÏάθυÏο (_blank)",
-DlgLnkTargetParent : "Γονικό ΠαÏάθυÏο (_parent)",
-DlgLnkTargetSelf : "Ίδιο ΠαÏάθυÏο (_self)",
-DlgLnkTargetTop : "Ανώτατο ΠαÏάθυÏο (_top)",
-DlgLnkTargetFrameName : "Όνομα πλαισίου στόχου",
-DlgLnkPopWinName : "Όνομα Popup Window",
-DlgLnkPopWinFeat : "Επιλογές Popup Window",
-DlgLnkPopResize : "Με αλλαγή Μεγέθους",
-DlgLnkPopLocation : "ΜπάÏα Τοποθεσίας",
-DlgLnkPopMenu : "ΜπάÏα Menu",
-DlgLnkPopScroll : "ΜπάÏες ΚÏλισης",
-DlgLnkPopStatus : "ΜπάÏα Status",
-DlgLnkPopToolbar : "ΜπάÏα ΕÏγαλείων",
-DlgLnkPopFullScrn : "ΟλόκληÏη η Οθόνη (IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "Πλάτος",
-DlgLnkPopHeight : "Ύψος",
-DlgLnkPopLeft : "Τοποθεσία ΑÏιστεÏής ΆκÏης",
-DlgLnkPopTop : "Τοποθεσία Πάνω ΆκÏης",
-
-DlnLnkMsgNoUrl : "Εισάγετε την τοποθεσία (URL) του υπεÏσυνδέσμου (Link)",
-DlnLnkMsgNoEMail : "Εισάγετε την διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου",
-DlnLnkMsgNoAnchor : "Επιλέξτε ένα Anchor",
-DlnLnkMsgInvPopName : "Το όνομα του popup Ï€Ïέπει να αÏχίζει με χαÏακτήÏα της αλφαβήτου και να μην πεÏιέχει κενά",
-
-// Color Dialog
-DlgColorTitle : "Επιλογή χÏώματος",
-DlgColorBtnClear : "ΚαθαÏισμός",
-DlgColorHighlight : "ΠÏοεπισκόπιση",
-DlgColorSelected : "Επιλεγμένο",
-
-// Smiley Dialog
-DlgSmileyTitle : "Επιλέξτε ένα Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Επιλέξτε ένα Ειδικό ΣÏμβολο",
-
-// Table Dialog
-DlgTableTitle : "Ιδιότητες Πίνακα",
-DlgTableRows : "ΓÏαμμές",
-DlgTableColumns : "Κολώνες",
-DlgTableBorder : "Μέγεθος ΠεÏιθωÏίου",
-DlgTableAlign : "Στοίχιση",
-DlgTableAlignNotSet : "<χωÏίς>",
-DlgTableAlignLeft : "ΑÏιστεÏά",
-DlgTableAlignCenter : "ΚέντÏο",
-DlgTableAlignRight : "Δεξιά",
-DlgTableWidth : "Πλάτος",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "\%",
-DlgTableHeight : "Ύψος",
-DlgTableCellSpace : "Απόσταση κελιών",
-DlgTableCellPad : "Γέμισμα κελιών",
-DlgTableCaption : "ΥπέÏτιτλος",
-DlgTableSummary : "ΠεÏίληψη",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Ιδιότητες ΚελιοÏ",
-DlgCellWidth : "Πλάτος",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "\%",
-DlgCellHeight : "Ύψος",
-DlgCellWordWrap : "Με αλλαγή γÏαμμής",
-DlgCellWordWrapNotSet : "<χωÏίς>",
-DlgCellWordWrapYes : "Îαι",
-DlgCellWordWrapNo : "Όχι",
-DlgCellHorAlign : "ΟÏιζόντια Στοίχιση",
-DlgCellHorAlignNotSet : "<χωÏίς>",
-DlgCellHorAlignLeft : "ΑÏιστεÏά",
-DlgCellHorAlignCenter : "ΚέντÏο",
-DlgCellHorAlignRight: "Δεξιά",
-DlgCellVerAlign : "Κάθετη Στοίχιση",
-DlgCellVerAlignNotSet : "<χωÏίς>",
-DlgCellVerAlignTop : "Πάνω (Top)",
-DlgCellVerAlignMiddle : "Μέση (Middle)",
-DlgCellVerAlignBottom : "Κάτω (Bottom)",
-DlgCellVerAlignBaseline : "ΓÏαμμή Βάσης (Baseline)",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "ΑÏιθμός ΓÏαμμών (Rows Span)",
-DlgCellCollSpan : "ΑÏιθμός Κολωνών (Columns Span)",
-DlgCellBackColor : "ΧÏώμα ΥποβάθÏου",
-DlgCellBorderColor : "ΧÏώμα ΠεÏιθωÏίου",
-DlgCellBtnSelect : "Επιλογή...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Αναζήτηση",
-DlgFindFindBtn : "Αναζήτηση",
-DlgFindNotFoundMsg : "Το κείμενο δεν βÏέθηκε.",
-
-// Replace Dialog
-DlgReplaceTitle : "Αντικατάσταση",
-DlgReplaceFindLbl : "Αναζήτηση:",
-DlgReplaceReplaceLbl : "Αντικατάσταση με:",
-DlgReplaceCaseChk : "Έλεγχος πεζών/κεφαλαίων",
-DlgReplaceReplaceBtn : "Αντικατάσταση",
-DlgReplaceReplAllBtn : "Αντικατάσταση Όλων",
-DlgReplaceWordChk : "ΕÏÏεση πλήÏους λέξης",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Οι Ïυθμίσεις ασφαλείας του φυλλομετÏητή σας δεν επιτÏέπουν την επιλεγμένη εÏγασία αποκοπής. ΧÏησιμοποιείστε το πληκτÏολόγιο (Ctrl+X).",
-PasteErrorCopy : "Οι Ïυθμίσεις ασφαλείας του φυλλομετÏητή σας δεν επιτÏέπουν την επιλεγμένη εÏγασία αντιγÏαφής. ΧÏησιμοποιείστε το πληκτÏολόγιο (Ctrl+C).",
-
-PasteAsText : "Επικόλληση ως Απλό Κείμενο",
-PasteFromWord : "Επικόλληση από το Word",
-
-DlgPasteMsg2 : "ΠαÏακαλώ επικολήστε στο ακόλουθο κουτί χÏησιμοποιόντας το πληκτÏολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Αγνόηση Ï€ÏοδιαγÏαφών γÏαμματοσειÏάς",
-DlgPasteRemoveStyles : "ΑφαίÏεση Ï€ÏοδιαγÏαφών στÏλ",
-
-// Color Picker
-ColorAutomatic : "Αυτόματο",
-ColorMoreColors : "ΠεÏισσότεÏα χÏώματα...",
-
-// Document Properties
-DocProps : "Ιδιότητες εγγÏάφου",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ιδιότητες άγκυÏας",
-DlgAnchorName : "Όνομα άγκυÏας",
-DlgAnchorErrorName : "ΠαÏακαλοÏμε εισάγετε όνομα άγκυÏας",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Δεν υπάÏχει στο λεξικό",
-DlgSpellChangeTo : "Αλλαγή σε",
-DlgSpellBtnIgnore : "Αγνόηση",
-DlgSpellBtnIgnoreAll : "Αγνόηση όλων",
-DlgSpellBtnReplace : "Αντικατάσταση",
-DlgSpellBtnReplaceAll : "Αντικατάσταση όλων",
-DlgSpellBtnUndo : "ΑναίÏεση",
-DlgSpellNoSuggestions : "- Δεν υπάÏχουν Ï€Ïοτάσεις -",
-DlgSpellProgress : "ΟÏθογÏαφικός έλεγχος σε εξέλιξη...",
-DlgSpellNoMispell : "Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: Δεν βÏέθηκαν λάθη",
-DlgSpellNoChanges : "Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: Δεν άλλαξαν λέξεις",
-DlgSpellOneChange : "Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: Μια λέξη άλλαξε",
-DlgSpellManyChanges : "Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: %1 λέξεις άλλαξαν",
-
-IeSpellDownload : "Δεν υπάÏχει εγκατεστημένος οÏθογÏάφος. Θέλετε να τον κατεβάσετε τώÏα;",
-
-// Button Dialog
-DlgButtonText : "Κείμενο (Τιμή)",
-DlgButtonType : "ΤÏπος",
-DlgButtonTypeBtn : "Κουμπί",
-DlgButtonTypeSbm : "ΚαταχώÏηση",
-DlgButtonTypeRst : "ΕπαναφοÏά",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Όνομα",
-DlgCheckboxValue : "Τιμή",
-DlgCheckboxSelected : "Επιλεγμένο",
-
-// Form Dialog
-DlgFormName : "Όνομα",
-DlgFormAction : "ΔÏάση",
-DlgFormMethod : "Μάθοδος",
-
-// Select Field Dialog
-DlgSelectName : "Όνομα",
-DlgSelectValue : "Τιμή",
-DlgSelectSize : "Μέγεθος",
-DlgSelectLines : "γÏαμμές",
-DlgSelectChkMulti : "Πολλαπλές επιλογές",
-DlgSelectOpAvail : "Διαθέσιμες επιλογές",
-DlgSelectOpText : "Κείμενο",
-DlgSelectOpValue : "Τιμή",
-DlgSelectBtnAdd : "ΠÏοσθήκη",
-DlgSelectBtnModify : "Αλλαγή",
-DlgSelectBtnUp : "Πάνω",
-DlgSelectBtnDown : "Κάτω",
-DlgSelectBtnSetValue : "ΠÏοεπιλεγμένη επιλογή",
-DlgSelectBtnDelete : "ΔιαγÏαφή",
-
-// Textarea Dialog
-DlgTextareaName : "Όνομα",
-DlgTextareaCols : "Στήλες",
-DlgTextareaRows : "ΣειÏές",
-
-// Text Field Dialog
-DlgTextName : "Όνομα",
-DlgTextValue : "Τιμή",
-DlgTextCharWidth : "Μήκος χαÏακτήÏων",
-DlgTextMaxChars : "Μέγιστοι χαÏακτήÏες",
-DlgTextType : "ΤÏπος",
-DlgTextTypeText : "Κείμενο",
-DlgTextTypePass : "Κωδικός",
-
-// Hidden Field Dialog
-DlgHiddenName : "Όνομα",
-DlgHiddenValue : "Τιμή",
-
-// Bulleted List Dialog
-BulletedListProp : "Ιδιότητες λίστας Bulleted",
-NumberedListProp : "Ιδιότητες αÏιθμημένης λίστας ",
-DlgLstStart : "ΑÏχή",
-DlgLstType : "ΤÏπος",
-DlgLstTypeCircle : "ΚÏκλος",
-DlgLstTypeDisc : "Δίσκος",
-DlgLstTypeSquare : "ΤετÏάγωνο",
-DlgLstTypeNumbers : "ΑÏιθμοί (1, 2, 3)",
-DlgLstTypeLCase : "Πεζά γÏάμματα (a, b, c)",
-DlgLstTypeUCase : "Κεφαλαία γÏάμματα (A, B, C)",
-DlgLstTypeSRoman : "ΜικÏά λατινικά αÏιθμητικά (i, ii, iii)",
-DlgLstTypeLRoman : "Μεγάλα λατινικά αÏιθμητικά (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Γενικά",
-DlgDocBackTab : "Φόντο",
-DlgDocColorsTab : "ΧÏώματα και πεÏιθώÏια",
-DlgDocMetaTab : "Δεδομένα Meta",
-
-DlgDocPageTitle : "Τίτλος σελίδας",
-DlgDocLangDir : "ΚατεÏθυνση γÏαφής",
-DlgDocLangDirLTR : "αÏιστεÏά Ï€Ïος δεξιά (LTR)",
-DlgDocLangDirRTL : "δεξιά Ï€Ïος αÏιστεÏά (RTL)",
-DlgDocLangCode : "Κωδικός γλώσσας",
-DlgDocCharSet : "Κωδικοποίηση χαÏακτήÏων",
-DlgDocCharSetCE : "ΚεντÏικής ΕυÏώπης",
-DlgDocCharSetCT : "ΠαÏαδοσιακά κινέζικα (Big5)",
-DlgDocCharSetCR : "ΚυÏιλλική",
-DlgDocCharSetGR : "Ελληνική",
-DlgDocCharSetJP : "Ιαπωνική",
-DlgDocCharSetKR : "ΚοÏεάτικη",
-DlgDocCharSetTR : "ΤουÏκική",
-DlgDocCharSetUN : "Διεθνής (UTF-8)",
-DlgDocCharSetWE : "Δυτικής ΕυÏώπης",
-DlgDocCharSetOther : "Άλλη κωδικοποίηση χαÏακτήÏων",
-
-DlgDocDocType : "Επικεφαλίδα Ï„Ïπου εγγÏάφου",
-DlgDocDocTypeOther : "Άλλη επικεφαλίδα Ï„Ïπου εγγÏάφου",
-DlgDocIncXHTML : "Îα συμπεÏιληφθοÏν οι δηλώσεις XHTML",
-DlgDocBgColor : "ΧÏώμα φόντου",
-DlgDocBgImage : "ΔιεÏθυνση εικόνας φόντου",
-DlgDocBgNoScroll : "Φόντο χωÏίς κÏλιση",
-DlgDocCText : "Κείμενο",
-DlgDocCLink : "ΣÏνδεσμος",
-DlgDocCVisited : "ΣÏνδεσμος που έχει επισκευθεί",
-DlgDocCActive : "ΕνεÏγός σÏνδεσμος",
-DlgDocMargins : "ΠεÏιθώÏια σελίδας",
-DlgDocMaTop : "ΚοÏυφή",
-DlgDocMaLeft : "ΑÏιστεÏά",
-DlgDocMaRight : "Δεξιά",
-DlgDocMaBottom : "Κάτω",
-DlgDocMeIndex : "Λέξεις κλειδιά δείκτες εγγÏάφου (διαχωÏισμός με κόμμα)",
-DlgDocMeDescr : "ΠεÏιγÏαφή εγγÏάφου",
-DlgDocMeAuthor : "ΣυγγÏαφέας",
-DlgDocMeCopy : "Πνευματικά δικαιώματα",
-DlgDocPreview : "ΠÏοεπισκόπηση",
-
-// Templates Dialog
-Templates : "ΠÏότυπα",
-DlgTemplatesTitle : "ΠÏότυπα πεÏιεχομένου",
-DlgTemplatesSelMsg : "ΠαÏακαλώ επιλέξτε Ï€Ïότυπο για εισαγωγή στο Ï€ÏόγÏαμμα<br>(τα υπάÏχοντα πεÏιεχόμενα θα χαθοÏν):",
-DlgTemplatesLoading : "ΦόÏτωση καταλόγου Ï€ÏοτÏπων. ΠαÏακαλώ πεÏιμένετε...",
-DlgTemplatesNoTpl : "(Δεν έχουν καθοÏιστεί Ï€Ïότυπα)",
-DlgTemplatesReplace : "Αντικατάσταση υπάÏχοντων πεÏιεχομένων",
-
-// About Dialog
-DlgAboutAboutTab : "Σχετικά",
-DlgAboutBrowserInfoTab : "ΠληÏοφοÏίες Browser",
-DlgAboutLicenseTab : "Άδεια",
-DlgAboutVersion : "έκδοση",
-DlgAboutInfo : "Για πεÏισσότεÏες πληÏοφοÏίες",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-au.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-au.js
deleted file mode 100644
index 9d68d70ca..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-au.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * English (Australia) language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Collapse Toolbar",
-ToolbarExpand : "Expand Toolbar",
-
-// Toolbar Items and Context Menu
-Save : "Save",
-NewPage : "New Page",
-Preview : "Preview",
-Cut : "Cut",
-Copy : "Copy",
-Paste : "Paste",
-PasteText : "Paste as plain text",
-PasteWord : "Paste from Word",
-Print : "Print",
-SelectAll : "Select All",
-RemoveFormat : "Remove Format",
-InsertLinkLbl : "Link",
-InsertLink : "Insert/Edit Link",
-RemoveLink : "Remove Link",
-VisitLink : "Open Link",
-Anchor : "Insert/Edit Anchor",
-AnchorDelete : "Remove Anchor",
-InsertImageLbl : "Image",
-InsertImage : "Insert/Edit Image",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insert/Edit Flash",
-InsertTableLbl : "Table",
-InsertTable : "Insert/Edit Table",
-InsertLineLbl : "Line",
-InsertLine : "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Character",
-InsertSpecialChar : "Insert Special Character",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Insert Smiley",
-About : "About FCKeditor",
-Bold : "Bold",
-Italic : "Italic",
-Underline : "Underline",
-StrikeThrough : "Strike Through",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Left Justify",
-CenterJustify : "Centre Justify",
-RightJustify : "Right Justify",
-BlockJustify : "Block Justify",
-DecreaseIndent : "Decrease Indent",
-IncreaseIndent : "Increase Indent",
-Blockquote : "Blockquote",
-CreateDiv : "Create Div Container",
-EditDiv : "Edit Div Container",
-DeleteDiv : "Remove Div Container",
-Undo : "Undo",
-Redo : "Redo",
-NumberedListLbl : "Numbered List",
-NumberedList : "Insert/Remove Numbered List",
-BulletedListLbl : "Bulleted List",
-BulletedList : "Insert/Remove Bulleted List",
-ShowTableBorders : "Show Table Borders",
-ShowDetails : "Show Details",
-Style : "Style",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "Size",
-TextColor : "Text Colour",
-BGColor : "Background Colour",
-Source : "Source",
-Find : "Find",
-Replace : "Replace",
-SpellCheck : "Check Spelling",
-UniversalKeyboard : "Universal Keyboard",
-PageBreakLbl : "Page Break",
-PageBreak : "Insert Page Break",
-
-Form : "Form",
-Checkbox : "Checkbox",
-RadioButton : "Radio Button",
-TextField : "Text Field",
-Textarea : "Textarea",
-HiddenField : "Hidden Field",
-Button : "Button",
-SelectionField : "Selection Field",
-ImageButton : "Image Button",
-
-FitWindow : "Maximize the editor size",
-ShowBlocks : "Show Blocks",
-
-// Context Menu
-EditLink : "Edit Link",
-CellCM : "Cell",
-RowCM : "Row",
-ColumnCM : "Column",
-InsertRowAfter : "Insert Row After",
-InsertRowBefore : "Insert Row Before",
-DeleteRows : "Delete Rows",
-InsertColumnAfter : "Insert Column After",
-InsertColumnBefore : "Insert Column Before",
-DeleteColumns : "Delete Columns",
-InsertCellAfter : "Insert Cell After",
-InsertCellBefore : "Insert Cell Before",
-DeleteCells : "Delete Cells",
-MergeCells : "Merge Cells",
-MergeRight : "Merge Right",
-MergeDown : "Merge Down",
-HorizontalSplitCell : "Split Cell Horizontally",
-VerticalSplitCell : "Split Cell Vertically",
-TableDelete : "Delete Table",
-CellProperties : "Cell Properties",
-TableProperties : "Table Properties",
-ImageProperties : "Image Properties",
-FlashProperties : "Flash Properties",
-
-AnchorProp : "Anchor Properties",
-ButtonProp : "Button Properties",
-CheckboxProp : "Checkbox Properties",
-HiddenFieldProp : "Hidden Field Properties",
-RadioButtonProp : "Radio Button Properties",
-ImageButtonProp : "Image Button Properties",
-TextFieldProp : "Text Field Properties",
-SelectionFieldProp : "Selection Field Properties",
-TextareaProp : "Textarea Properties",
-FormProp : "Form Properties",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Processing XHTML. Please wait...",
-Done : "Done",
-PasteWordConfirm : "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
-NotCompatiblePaste : "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
-UnknownToolbarItem : "Unknown toolbar item \"%1\"",
-UnknownCommand : "Unknown command name \"%1\"",
-NotImplemented : "Command not implemented",
-UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancel",
-DlgBtnClose : "Close",
-DlgBtnBrowseServer : "Browse Server",
-DlgAdvancedTag : "Advanced",
-DlgOpOther : "<Other>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Please insert the URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<not set>",
-DlgGenId : "Id",
-DlgGenLangDir : "Language Direction",
-DlgGenLangDirLtr : "Left to Right (LTR)",
-DlgGenLangDirRtl : "Right to Left (RTL)",
-DlgGenLangCode : "Language Code",
-DlgGenAccessKey : "Access Key",
-DlgGenName : "Name",
-DlgGenTabIndex : "Tab Index",
-DlgGenLongDescr : "Long Description URL",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "Advisory Title",
-DlgGenContType : "Advisory Content Type",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Image Properties",
-DlgImgInfoTab : "Image Info",
-DlgImgBtnUpload : "Send it to the Server",
-DlgImgURL : "URL",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternative Text",
-DlgImgWidth : "Width",
-DlgImgHeight : "Height",
-DlgImgLockRatio : "Lock Ratio",
-DlgBtnResetSize : "Reset Size",
-DlgImgBorder : "Border",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Align",
-DlgImgAlignLeft : "Left",
-DlgImgAlignAbsBottom: "Abs Bottom",
-DlgImgAlignAbsMiddle: "Abs Middle",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Bottom",
-DlgImgAlignMiddle : "Middle",
-DlgImgAlignRight : "Right",
-DlgImgAlignTextTop : "Text Top",
-DlgImgAlignTop : "Top",
-DlgImgPreview : "Preview",
-DlgImgAlertUrl : "Please type the image URL",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties",
-DlgFlashChkPlay : "Auto Play",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Enable Flash Menu",
-DlgFlashScale : "Scale",
-DlgFlashScaleAll : "Show all",
-DlgFlashScaleNoBorder : "No Border",
-DlgFlashScaleFit : "Exact Fit",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link Info",
-DlgLnkTargetTab : "Target",
-
-DlgLnkType : "Link Type",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Link to anchor in the text",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<other>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Select an Anchor",
-DlgLnkAnchorByName : "By Anchor Name",
-DlgLnkAnchorById : "By Element Id",
-DlgLnkNoAnchors : "(No anchors available in the document)",
-DlgLnkEMail : "E-Mail Address",
-DlgLnkEMailSubject : "Message Subject",
-DlgLnkEMailBody : "Message Body",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Send it to the Server",
-
-DlgLnkTarget : "Target",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<popup window>",
-DlgLnkTargetBlank : "New Window (_blank)",
-DlgLnkTargetParent : "Parent Window (_parent)",
-DlgLnkTargetSelf : "Same Window (_self)",
-DlgLnkTargetTop : "Topmost Window (_top)",
-DlgLnkTargetFrameName : "Target Frame Name",
-DlgLnkPopWinName : "Popup Window Name",
-DlgLnkPopWinFeat : "Popup Window Features",
-DlgLnkPopResize : "Resizable",
-DlgLnkPopLocation : "Location Bar",
-DlgLnkPopMenu : "Menu Bar",
-DlgLnkPopScroll : "Scroll Bars",
-DlgLnkPopStatus : "Status Bar",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Full Screen (IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "Width",
-DlgLnkPopHeight : "Height",
-DlgLnkPopLeft : "Left Position",
-DlgLnkPopTop : "Top Position",
-
-DlnLnkMsgNoUrl : "Please type the link URL",
-DlnLnkMsgNoEMail : "Please type the e-mail address",
-DlnLnkMsgNoAnchor : "Please select an anchor",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces",
-
-// Color Dialog
-DlgColorTitle : "Select Colour",
-DlgColorBtnClear : "Clear",
-DlgColorHighlight : "Highlight",
-DlgColorSelected : "Selected",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insert a Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Select Special Character",
-
-// Table Dialog
-DlgTableTitle : "Table Properties",
-DlgTableRows : "Rows",
-DlgTableColumns : "Columns",
-DlgTableBorder : "Border size",
-DlgTableAlign : "Alignment",
-DlgTableAlignNotSet : "<Not set>",
-DlgTableAlignLeft : "Left",
-DlgTableAlignCenter : "Centre",
-DlgTableAlignRight : "Right",
-DlgTableWidth : "Width",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Height",
-DlgTableCellSpace : "Cell spacing",
-DlgTableCellPad : "Cell padding",
-DlgTableCaption : "Caption",
-DlgTableSummary : "Summary",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Cell Properties",
-DlgCellWidth : "Width",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Height",
-DlgCellWordWrap : "Word Wrap",
-DlgCellWordWrapNotSet : "<Not set>",
-DlgCellWordWrapYes : "Yes",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Horizontal Alignment",
-DlgCellHorAlignNotSet : "<Not set>",
-DlgCellHorAlignLeft : "Left",
-DlgCellHorAlignCenter : "Centre",
-DlgCellHorAlignRight: "Right",
-DlgCellVerAlign : "Vertical Alignment",
-DlgCellVerAlignNotSet : "<Not set>",
-DlgCellVerAlignTop : "Top",
-DlgCellVerAlignMiddle : "Middle",
-DlgCellVerAlignBottom : "Bottom",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type",
-DlgCellTypeData : "Data",
-DlgCellTypeHeader : "Header",
-DlgCellRowSpan : "Rows Span",
-DlgCellCollSpan : "Columns Span",
-DlgCellBackColor : "Background Colour",
-DlgCellBorderColor : "Border Colour",
-DlgCellBtnSelect : "Select...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace",
-
-// Find Dialog
-DlgFindTitle : "Find",
-DlgFindFindBtn : "Find",
-DlgFindNotFoundMsg : "The specified text was not found.",
-
-// Replace Dialog
-DlgReplaceTitle : "Replace",
-DlgReplaceFindLbl : "Find what:",
-DlgReplaceReplaceLbl : "Replace with:",
-DlgReplaceCaseChk : "Match case",
-DlgReplaceReplaceBtn : "Replace",
-DlgReplaceReplAllBtn : "Replace All",
-DlgReplaceWordChk : "Match whole word",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
-PasteErrorCopy : "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
-
-PasteAsText : "Paste as Plain Text",
-PasteFromWord : "Paste from Word",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
-DlgPasteIgnoreFont : "Ignore Font Face definitions",
-DlgPasteRemoveStyles : "Remove Styles definitions",
-
-// Color Picker
-ColorAutomatic : "Automatic",
-ColorMoreColors : "More Colours...",
-
-// Document Properties
-DocProps : "Document Properties",
-
-// Anchor Dialog
-DlgAnchorTitle : "Anchor Properties",
-DlgAnchorName : "Anchor Name",
-DlgAnchorErrorName : "Please type the anchor name",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Not in dictionary",
-DlgSpellChangeTo : "Change to",
-DlgSpellBtnIgnore : "Ignore",
-DlgSpellBtnIgnoreAll : "Ignore All",
-DlgSpellBtnReplace : "Replace",
-DlgSpellBtnReplaceAll : "Replace All",
-DlgSpellBtnUndo : "Undo",
-DlgSpellNoSuggestions : "- No suggestions -",
-DlgSpellProgress : "Spell check in progress...",
-DlgSpellNoMispell : "Spell check complete: No misspellings found",
-DlgSpellNoChanges : "Spell check complete: No words changed",
-DlgSpellOneChange : "Spell check complete: One word changed",
-DlgSpellManyChanges : "Spell check complete: %1 words changed",
-
-IeSpellDownload : "Spell checker not installed. Do you want to download it now?",
-
-// Button Dialog
-DlgButtonText : "Text (Value)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Name",
-DlgCheckboxValue : "Value",
-DlgCheckboxSelected : "Selected",
-
-// Form Dialog
-DlgFormName : "Name",
-DlgFormAction : "Action",
-DlgFormMethod : "Method",
-
-// Select Field Dialog
-DlgSelectName : "Name",
-DlgSelectValue : "Value",
-DlgSelectSize : "Size",
-DlgSelectLines : "lines",
-DlgSelectChkMulti : "Allow multiple selections",
-DlgSelectOpAvail : "Available Options",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Value",
-DlgSelectBtnAdd : "Add",
-DlgSelectBtnModify : "Modify",
-DlgSelectBtnUp : "Up",
-DlgSelectBtnDown : "Down",
-DlgSelectBtnSetValue : "Set as selected value",
-DlgSelectBtnDelete : "Delete",
-
-// Textarea Dialog
-DlgTextareaName : "Name",
-DlgTextareaCols : "Columns",
-DlgTextareaRows : "Rows",
-
-// Text Field Dialog
-DlgTextName : "Name",
-DlgTextValue : "Value",
-DlgTextCharWidth : "Character Width",
-DlgTextMaxChars : "Maximum Characters",
-DlgTextType : "Type",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Password",
-
-// Hidden Field Dialog
-DlgHiddenName : "Name",
-DlgHiddenValue : "Value",
-
-// Bulleted List Dialog
-BulletedListProp : "Bulleted List Properties",
-NumberedListProp : "Numbered List Properties",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Circle",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "Square",
-DlgLstTypeNumbers : "Numbers (1, 2, 3)",
-DlgLstTypeLCase : "Lowercase Letters (a, b, c)",
-DlgLstTypeUCase : "Uppercase Letters (A, B, C)",
-DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)",
-DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Background",
-DlgDocColorsTab : "Colours and Margins",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Page Title",
-DlgDocLangDir : "Language Direction",
-DlgDocLangDirLTR : "Left to Right (LTR)",
-DlgDocLangDirRTL : "Right to Left (RTL)",
-DlgDocLangCode : "Language Code",
-DlgDocCharSet : "Character Set Encoding",
-DlgDocCharSetCE : "Central European",
-DlgDocCharSetCT : "Chinese Traditional (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Greek",
-DlgDocCharSetJP : "Japanese",
-DlgDocCharSetKR : "Korean",
-DlgDocCharSetTR : "Turkish",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "Other Character Set Encoding",
-
-DlgDocDocType : "Document Type Heading",
-DlgDocDocTypeOther : "Other Document Type Heading",
-DlgDocIncXHTML : "Include XHTML Declarations",
-DlgDocBgColor : "Background Colour",
-DlgDocBgImage : "Background Image URL",
-DlgDocBgNoScroll : "Nonscrolling Background",
-DlgDocCText : "Text",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Visited Link",
-DlgDocCActive : "Active Link",
-DlgDocMargins : "Page Margins",
-DlgDocMaTop : "Top",
-DlgDocMaLeft : "Left",
-DlgDocMaRight : "Right",
-DlgDocMaBottom : "Bottom",
-DlgDocMeIndex : "Document Indexing Keywords (comma separated)",
-DlgDocMeDescr : "Document Description",
-DlgDocMeAuthor : "Author",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Preview",
-
-// Templates Dialog
-Templates : "Templates",
-DlgTemplatesTitle : "Content Templates",
-DlgTemplatesSelMsg : "Please select the template to open in the editor<br />(the actual contents will be lost):",
-DlgTemplatesLoading : "Loading templates list. Please wait...",
-DlgTemplatesNoTpl : "(No templates defined)",
-DlgTemplatesReplace : "Replace actual contents",
-
-// About Dialog
-DlgAboutAboutTab : "About",
-DlgAboutBrowserInfoTab : "Browser Info",
-DlgAboutLicenseTab : "License",
-DlgAboutVersion : "version",
-DlgAboutInfo : "For further information go to",
-
-// Div Dialog
-DlgDivGeneralTab : "General",
-DlgDivAdvancedTab : "Advanced",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-ca.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-ca.js
deleted file mode 100644
index f34d87aa9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-ca.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * English (Canadian) language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Collapse Toolbar",
-ToolbarExpand : "Expand Toolbar",
-
-// Toolbar Items and Context Menu
-Save : "Save",
-NewPage : "New Page",
-Preview : "Preview",
-Cut : "Cut",
-Copy : "Copy",
-Paste : "Paste",
-PasteText : "Paste as plain text",
-PasteWord : "Paste from Word",
-Print : "Print",
-SelectAll : "Select All",
-RemoveFormat : "Remove Format",
-InsertLinkLbl : "Link",
-InsertLink : "Insert/Edit Link",
-RemoveLink : "Remove Link",
-VisitLink : "Open Link",
-Anchor : "Insert/Edit Anchor",
-AnchorDelete : "Remove Anchor",
-InsertImageLbl : "Image",
-InsertImage : "Insert/Edit Image",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insert/Edit Flash",
-InsertTableLbl : "Table",
-InsertTable : "Insert/Edit Table",
-InsertLineLbl : "Line",
-InsertLine : "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Character",
-InsertSpecialChar : "Insert Special Character",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Insert Smiley",
-About : "About FCKeditor",
-Bold : "Bold",
-Italic : "Italic",
-Underline : "Underline",
-StrikeThrough : "Strike Through",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Left Justify",
-CenterJustify : "Centre Justify",
-RightJustify : "Right Justify",
-BlockJustify : "Block Justify",
-DecreaseIndent : "Decrease Indent",
-IncreaseIndent : "Increase Indent",
-Blockquote : "Blockquote",
-CreateDiv : "Create Div Container",
-EditDiv : "Edit Div Container",
-DeleteDiv : "Remove Div Container",
-Undo : "Undo",
-Redo : "Redo",
-NumberedListLbl : "Numbered List",
-NumberedList : "Insert/Remove Numbered List",
-BulletedListLbl : "Bulleted List",
-BulletedList : "Insert/Remove Bulleted List",
-ShowTableBorders : "Show Table Borders",
-ShowDetails : "Show Details",
-Style : "Style",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "Size",
-TextColor : "Text Colour",
-BGColor : "Background Colour",
-Source : "Source",
-Find : "Find",
-Replace : "Replace",
-SpellCheck : "Check Spelling",
-UniversalKeyboard : "Universal Keyboard",
-PageBreakLbl : "Page Break",
-PageBreak : "Insert Page Break",
-
-Form : "Form",
-Checkbox : "Checkbox",
-RadioButton : "Radio Button",
-TextField : "Text Field",
-Textarea : "Textarea",
-HiddenField : "Hidden Field",
-Button : "Button",
-SelectionField : "Selection Field",
-ImageButton : "Image Button",
-
-FitWindow : "Maximize the editor size",
-ShowBlocks : "Show Blocks",
-
-// Context Menu
-EditLink : "Edit Link",
-CellCM : "Cell",
-RowCM : "Row",
-ColumnCM : "Column",
-InsertRowAfter : "Insert Row After",
-InsertRowBefore : "Insert Row Before",
-DeleteRows : "Delete Rows",
-InsertColumnAfter : "Insert Column After",
-InsertColumnBefore : "Insert Column Before",
-DeleteColumns : "Delete Columns",
-InsertCellAfter : "Insert Cell After",
-InsertCellBefore : "Insert Cell Before",
-DeleteCells : "Delete Cells",
-MergeCells : "Merge Cells",
-MergeRight : "Merge Right",
-MergeDown : "Merge Down",
-HorizontalSplitCell : "Split Cell Horizontally",
-VerticalSplitCell : "Split Cell Vertically",
-TableDelete : "Delete Table",
-CellProperties : "Cell Properties",
-TableProperties : "Table Properties",
-ImageProperties : "Image Properties",
-FlashProperties : "Flash Properties",
-
-AnchorProp : "Anchor Properties",
-ButtonProp : "Button Properties",
-CheckboxProp : "Checkbox Properties",
-HiddenFieldProp : "Hidden Field Properties",
-RadioButtonProp : "Radio Button Properties",
-ImageButtonProp : "Image Button Properties",
-TextFieldProp : "Text Field Properties",
-SelectionFieldProp : "Selection Field Properties",
-TextareaProp : "Textarea Properties",
-FormProp : "Form Properties",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Processing XHTML. Please wait...",
-Done : "Done",
-PasteWordConfirm : "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
-NotCompatiblePaste : "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
-UnknownToolbarItem : "Unknown toolbar item \"%1\"",
-UnknownCommand : "Unknown command name \"%1\"",
-NotImplemented : "Command not implemented",
-UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancel",
-DlgBtnClose : "Close",
-DlgBtnBrowseServer : "Browse Server",
-DlgAdvancedTag : "Advanced",
-DlgOpOther : "<Other>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Please insert the URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<not set>",
-DlgGenId : "Id",
-DlgGenLangDir : "Language Direction",
-DlgGenLangDirLtr : "Left to Right (LTR)",
-DlgGenLangDirRtl : "Right to Left (RTL)",
-DlgGenLangCode : "Language Code",
-DlgGenAccessKey : "Access Key",
-DlgGenName : "Name",
-DlgGenTabIndex : "Tab Index",
-DlgGenLongDescr : "Long Description URL",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "Advisory Title",
-DlgGenContType : "Advisory Content Type",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Image Properties",
-DlgImgInfoTab : "Image Info",
-DlgImgBtnUpload : "Send it to the Server",
-DlgImgURL : "URL",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternative Text",
-DlgImgWidth : "Width",
-DlgImgHeight : "Height",
-DlgImgLockRatio : "Lock Ratio",
-DlgBtnResetSize : "Reset Size",
-DlgImgBorder : "Border",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Align",
-DlgImgAlignLeft : "Left",
-DlgImgAlignAbsBottom: "Abs Bottom",
-DlgImgAlignAbsMiddle: "Abs Middle",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Bottom",
-DlgImgAlignMiddle : "Middle",
-DlgImgAlignRight : "Right",
-DlgImgAlignTextTop : "Text Top",
-DlgImgAlignTop : "Top",
-DlgImgPreview : "Preview",
-DlgImgAlertUrl : "Please type the image URL",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties",
-DlgFlashChkPlay : "Auto Play",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Enable Flash Menu",
-DlgFlashScale : "Scale",
-DlgFlashScaleAll : "Show all",
-DlgFlashScaleNoBorder : "No Border",
-DlgFlashScaleFit : "Exact Fit",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link Info",
-DlgLnkTargetTab : "Target",
-
-DlgLnkType : "Link Type",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Link to anchor in the text",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<other>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Select an Anchor",
-DlgLnkAnchorByName : "By Anchor Name",
-DlgLnkAnchorById : "By Element Id",
-DlgLnkNoAnchors : "(No anchors available in the document)",
-DlgLnkEMail : "E-Mail Address",
-DlgLnkEMailSubject : "Message Subject",
-DlgLnkEMailBody : "Message Body",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Send it to the Server",
-
-DlgLnkTarget : "Target",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<popup window>",
-DlgLnkTargetBlank : "New Window (_blank)",
-DlgLnkTargetParent : "Parent Window (_parent)",
-DlgLnkTargetSelf : "Same Window (_self)",
-DlgLnkTargetTop : "Topmost Window (_top)",
-DlgLnkTargetFrameName : "Target Frame Name",
-DlgLnkPopWinName : "Popup Window Name",
-DlgLnkPopWinFeat : "Popup Window Features",
-DlgLnkPopResize : "Resizable",
-DlgLnkPopLocation : "Location Bar",
-DlgLnkPopMenu : "Menu Bar",
-DlgLnkPopScroll : "Scroll Bars",
-DlgLnkPopStatus : "Status Bar",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Full Screen (IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "Width",
-DlgLnkPopHeight : "Height",
-DlgLnkPopLeft : "Left Position",
-DlgLnkPopTop : "Top Position",
-
-DlnLnkMsgNoUrl : "Please type the link URL",
-DlnLnkMsgNoEMail : "Please type the e-mail address",
-DlnLnkMsgNoAnchor : "Please select an anchor",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces",
-
-// Color Dialog
-DlgColorTitle : "Select Colour",
-DlgColorBtnClear : "Clear",
-DlgColorHighlight : "Highlight",
-DlgColorSelected : "Selected",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insert a Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Select Special Character",
-
-// Table Dialog
-DlgTableTitle : "Table Properties",
-DlgTableRows : "Rows",
-DlgTableColumns : "Columns",
-DlgTableBorder : "Border size",
-DlgTableAlign : "Alignment",
-DlgTableAlignNotSet : "<Not set>",
-DlgTableAlignLeft : "Left",
-DlgTableAlignCenter : "Centre",
-DlgTableAlignRight : "Right",
-DlgTableWidth : "Width",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Height",
-DlgTableCellSpace : "Cell spacing",
-DlgTableCellPad : "Cell padding",
-DlgTableCaption : "Caption",
-DlgTableSummary : "Summary",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Cell Properties",
-DlgCellWidth : "Width",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Height",
-DlgCellWordWrap : "Word Wrap",
-DlgCellWordWrapNotSet : "<Not set>",
-DlgCellWordWrapYes : "Yes",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Horizontal Alignment",
-DlgCellHorAlignNotSet : "<Not set>",
-DlgCellHorAlignLeft : "Left",
-DlgCellHorAlignCenter : "Centre",
-DlgCellHorAlignRight: "Right",
-DlgCellVerAlign : "Vertical Alignment",
-DlgCellVerAlignNotSet : "<Not set>",
-DlgCellVerAlignTop : "Top",
-DlgCellVerAlignMiddle : "Middle",
-DlgCellVerAlignBottom : "Bottom",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type",
-DlgCellTypeData : "Data",
-DlgCellTypeHeader : "Header",
-DlgCellRowSpan : "Rows Span",
-DlgCellCollSpan : "Columns Span",
-DlgCellBackColor : "Background Colour",
-DlgCellBorderColor : "Border Colour",
-DlgCellBtnSelect : "Select...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace",
-
-// Find Dialog
-DlgFindTitle : "Find",
-DlgFindFindBtn : "Find",
-DlgFindNotFoundMsg : "The specified text was not found.",
-
-// Replace Dialog
-DlgReplaceTitle : "Replace",
-DlgReplaceFindLbl : "Find what:",
-DlgReplaceReplaceLbl : "Replace with:",
-DlgReplaceCaseChk : "Match case",
-DlgReplaceReplaceBtn : "Replace",
-DlgReplaceReplAllBtn : "Replace All",
-DlgReplaceWordChk : "Match whole word",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
-PasteErrorCopy : "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
-
-PasteAsText : "Paste as Plain Text",
-PasteFromWord : "Paste from Word",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
-DlgPasteIgnoreFont : "Ignore Font Face definitions",
-DlgPasteRemoveStyles : "Remove Styles definitions",
-
-// Color Picker
-ColorAutomatic : "Automatic",
-ColorMoreColors : "More Colours...",
-
-// Document Properties
-DocProps : "Document Properties",
-
-// Anchor Dialog
-DlgAnchorTitle : "Anchor Properties",
-DlgAnchorName : "Anchor Name",
-DlgAnchorErrorName : "Please type the anchor name",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Not in dictionary",
-DlgSpellChangeTo : "Change to",
-DlgSpellBtnIgnore : "Ignore",
-DlgSpellBtnIgnoreAll : "Ignore All",
-DlgSpellBtnReplace : "Replace",
-DlgSpellBtnReplaceAll : "Replace All",
-DlgSpellBtnUndo : "Undo",
-DlgSpellNoSuggestions : "- No suggestions -",
-DlgSpellProgress : "Spell check in progress...",
-DlgSpellNoMispell : "Spell check complete: No misspellings found",
-DlgSpellNoChanges : "Spell check complete: No words changed",
-DlgSpellOneChange : "Spell check complete: One word changed",
-DlgSpellManyChanges : "Spell check complete: %1 words changed",
-
-IeSpellDownload : "Spell checker not installed. Do you want to download it now?",
-
-// Button Dialog
-DlgButtonText : "Text (Value)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Name",
-DlgCheckboxValue : "Value",
-DlgCheckboxSelected : "Selected",
-
-// Form Dialog
-DlgFormName : "Name",
-DlgFormAction : "Action",
-DlgFormMethod : "Method",
-
-// Select Field Dialog
-DlgSelectName : "Name",
-DlgSelectValue : "Value",
-DlgSelectSize : "Size",
-DlgSelectLines : "lines",
-DlgSelectChkMulti : "Allow multiple selections",
-DlgSelectOpAvail : "Available Options",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Value",
-DlgSelectBtnAdd : "Add",
-DlgSelectBtnModify : "Modify",
-DlgSelectBtnUp : "Up",
-DlgSelectBtnDown : "Down",
-DlgSelectBtnSetValue : "Set as selected value",
-DlgSelectBtnDelete : "Delete",
-
-// Textarea Dialog
-DlgTextareaName : "Name",
-DlgTextareaCols : "Columns",
-DlgTextareaRows : "Rows",
-
-// Text Field Dialog
-DlgTextName : "Name",
-DlgTextValue : "Value",
-DlgTextCharWidth : "Character Width",
-DlgTextMaxChars : "Maximum Characters",
-DlgTextType : "Type",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Password",
-
-// Hidden Field Dialog
-DlgHiddenName : "Name",
-DlgHiddenValue : "Value",
-
-// Bulleted List Dialog
-BulletedListProp : "Bulleted List Properties",
-NumberedListProp : "Numbered List Properties",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Circle",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "Square",
-DlgLstTypeNumbers : "Numbers (1, 2, 3)",
-DlgLstTypeLCase : "Lowercase Letters (a, b, c)",
-DlgLstTypeUCase : "Uppercase Letters (A, B, C)",
-DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)",
-DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Background",
-DlgDocColorsTab : "Colours and Margins",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Page Title",
-DlgDocLangDir : "Language Direction",
-DlgDocLangDirLTR : "Left to Right (LTR)",
-DlgDocLangDirRTL : "Right to Left (RTL)",
-DlgDocLangCode : "Language Code",
-DlgDocCharSet : "Character Set Encoding",
-DlgDocCharSetCE : "Central European",
-DlgDocCharSetCT : "Chinese Traditional (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Greek",
-DlgDocCharSetJP : "Japanese",
-DlgDocCharSetKR : "Korean",
-DlgDocCharSetTR : "Turkish",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "Other Character Set Encoding",
-
-DlgDocDocType : "Document Type Heading",
-DlgDocDocTypeOther : "Other Document Type Heading",
-DlgDocIncXHTML : "Include XHTML Declarations",
-DlgDocBgColor : "Background Colour",
-DlgDocBgImage : "Background Image URL",
-DlgDocBgNoScroll : "Nonscrolling Background",
-DlgDocCText : "Text",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Visited Link",
-DlgDocCActive : "Active Link",
-DlgDocMargins : "Page Margins",
-DlgDocMaTop : "Top",
-DlgDocMaLeft : "Left",
-DlgDocMaRight : "Right",
-DlgDocMaBottom : "Bottom",
-DlgDocMeIndex : "Document Indexing Keywords (comma separated)",
-DlgDocMeDescr : "Document Description",
-DlgDocMeAuthor : "Author",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Preview",
-
-// Templates Dialog
-Templates : "Templates",
-DlgTemplatesTitle : "Content Templates",
-DlgTemplatesSelMsg : "Please select the template to open in the editor<br />(the actual contents will be lost):",
-DlgTemplatesLoading : "Loading templates list. Please wait...",
-DlgTemplatesNoTpl : "(No templates defined)",
-DlgTemplatesReplace : "Replace actual contents",
-
-// About Dialog
-DlgAboutAboutTab : "About",
-DlgAboutBrowserInfoTab : "Browser Info",
-DlgAboutLicenseTab : "License",
-DlgAboutVersion : "version",
-DlgAboutInfo : "For further information go to",
-
-// Div Dialog
-DlgDivGeneralTab : "General",
-DlgDivAdvancedTab : "Advanced",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-uk.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-uk.js
deleted file mode 100644
index 0093c75ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en-uk.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * English (United Kingdom) language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Collapse Toolbar",
-ToolbarExpand : "Expand Toolbar",
-
-// Toolbar Items and Context Menu
-Save : "Save",
-NewPage : "New Page",
-Preview : "Preview",
-Cut : "Cut",
-Copy : "Copy",
-Paste : "Paste",
-PasteText : "Paste as plain text",
-PasteWord : "Paste from Word",
-Print : "Print",
-SelectAll : "Select All",
-RemoveFormat : "Remove Format",
-InsertLinkLbl : "Link",
-InsertLink : "Insert/Edit Link",
-RemoveLink : "Remove Link",
-VisitLink : "Open Link",
-Anchor : "Insert/Edit Anchor",
-AnchorDelete : "Remove Anchor",
-InsertImageLbl : "Image",
-InsertImage : "Insert/Edit Image",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insert/Edit Flash",
-InsertTableLbl : "Table",
-InsertTable : "Insert/Edit Table",
-InsertLineLbl : "Line",
-InsertLine : "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Character",
-InsertSpecialChar : "Insert Special Character",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Insert Smiley",
-About : "About FCKeditor",
-Bold : "Bold",
-Italic : "Italic",
-Underline : "Underline",
-StrikeThrough : "Strike Through",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Left Justify",
-CenterJustify : "Centre Justify",
-RightJustify : "Right Justify",
-BlockJustify : "Block Justify",
-DecreaseIndent : "Decrease Indent",
-IncreaseIndent : "Increase Indent",
-Blockquote : "Blockquote",
-CreateDiv : "Create Div Container",
-EditDiv : "Edit Div Container",
-DeleteDiv : "Remove Div Container",
-Undo : "Undo",
-Redo : "Redo",
-NumberedListLbl : "Numbered List",
-NumberedList : "Insert/Remove Numbered List",
-BulletedListLbl : "Bulleted List",
-BulletedList : "Insert/Remove Bulleted List",
-ShowTableBorders : "Show Table Borders",
-ShowDetails : "Show Details",
-Style : "Style",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "Size",
-TextColor : "Text Colour",
-BGColor : "Background Colour",
-Source : "Source",
-Find : "Find",
-Replace : "Replace",
-SpellCheck : "Check Spelling",
-UniversalKeyboard : "Universal Keyboard",
-PageBreakLbl : "Page Break",
-PageBreak : "Insert Page Break",
-
-Form : "Form",
-Checkbox : "Checkbox",
-RadioButton : "Radio Button",
-TextField : "Text Field",
-Textarea : "Textarea",
-HiddenField : "Hidden Field",
-Button : "Button",
-SelectionField : "Selection Field",
-ImageButton : "Image Button",
-
-FitWindow : "Maximize the editor size",
-ShowBlocks : "Show Blocks",
-
-// Context Menu
-EditLink : "Edit Link",
-CellCM : "Cell",
-RowCM : "Row",
-ColumnCM : "Column",
-InsertRowAfter : "Insert Row After",
-InsertRowBefore : "Insert Row Before",
-DeleteRows : "Delete Rows",
-InsertColumnAfter : "Insert Column After",
-InsertColumnBefore : "Insert Column Before",
-DeleteColumns : "Delete Columns",
-InsertCellAfter : "Insert Cell After",
-InsertCellBefore : "Insert Cell Before",
-DeleteCells : "Delete Cells",
-MergeCells : "Merge Cells",
-MergeRight : "Merge Right",
-MergeDown : "Merge Down",
-HorizontalSplitCell : "Split Cell Horizontally",
-VerticalSplitCell : "Split Cell Vertically",
-TableDelete : "Delete Table",
-CellProperties : "Cell Properties",
-TableProperties : "Table Properties",
-ImageProperties : "Image Properties",
-FlashProperties : "Flash Properties",
-
-AnchorProp : "Anchor Properties",
-ButtonProp : "Button Properties",
-CheckboxProp : "Checkbox Properties",
-HiddenFieldProp : "Hidden Field Properties",
-RadioButtonProp : "Radio Button Properties",
-ImageButtonProp : "Image Button Properties",
-TextFieldProp : "Text Field Properties",
-SelectionFieldProp : "Selection Field Properties",
-TextareaProp : "Textarea Properties",
-FormProp : "Form Properties",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Processing XHTML. Please wait...",
-Done : "Done",
-PasteWordConfirm : "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
-NotCompatiblePaste : "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
-UnknownToolbarItem : "Unknown toolbar item \"%1\"",
-UnknownCommand : "Unknown command name \"%1\"",
-NotImplemented : "Command not implemented",
-UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancel",
-DlgBtnClose : "Close",
-DlgBtnBrowseServer : "Browse Server",
-DlgAdvancedTag : "Advanced",
-DlgOpOther : "<Other>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Please insert the URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<not set>",
-DlgGenId : "Id",
-DlgGenLangDir : "Language Direction",
-DlgGenLangDirLtr : "Left to Right (LTR)",
-DlgGenLangDirRtl : "Right to Left (RTL)",
-DlgGenLangCode : "Language Code",
-DlgGenAccessKey : "Access Key",
-DlgGenName : "Name",
-DlgGenTabIndex : "Tab Index",
-DlgGenLongDescr : "Long Description URL",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "Advisory Title",
-DlgGenContType : "Advisory Content Type",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Image Properties",
-DlgImgInfoTab : "Image Info",
-DlgImgBtnUpload : "Send it to the Server",
-DlgImgURL : "URL",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternative Text",
-DlgImgWidth : "Width",
-DlgImgHeight : "Height",
-DlgImgLockRatio : "Lock Ratio",
-DlgBtnResetSize : "Reset Size",
-DlgImgBorder : "Border",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Align",
-DlgImgAlignLeft : "Left",
-DlgImgAlignAbsBottom: "Abs Bottom",
-DlgImgAlignAbsMiddle: "Abs Middle",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Bottom",
-DlgImgAlignMiddle : "Middle",
-DlgImgAlignRight : "Right",
-DlgImgAlignTextTop : "Text Top",
-DlgImgAlignTop : "Top",
-DlgImgPreview : "Preview",
-DlgImgAlertUrl : "Please type the image URL",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties",
-DlgFlashChkPlay : "Auto Play",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Enable Flash Menu",
-DlgFlashScale : "Scale",
-DlgFlashScaleAll : "Show all",
-DlgFlashScaleNoBorder : "No Border",
-DlgFlashScaleFit : "Exact Fit",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link Info",
-DlgLnkTargetTab : "Target",
-
-DlgLnkType : "Link Type",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Link to anchor in the text",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<other>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Select an Anchor",
-DlgLnkAnchorByName : "By Anchor Name",
-DlgLnkAnchorById : "By Element Id",
-DlgLnkNoAnchors : "(No anchors available in the document)",
-DlgLnkEMail : "E-Mail Address",
-DlgLnkEMailSubject : "Message Subject",
-DlgLnkEMailBody : "Message Body",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Send it to the Server",
-
-DlgLnkTarget : "Target",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<popup window>",
-DlgLnkTargetBlank : "New Window (_blank)",
-DlgLnkTargetParent : "Parent Window (_parent)",
-DlgLnkTargetSelf : "Same Window (_self)",
-DlgLnkTargetTop : "Topmost Window (_top)",
-DlgLnkTargetFrameName : "Target Frame Name",
-DlgLnkPopWinName : "Popup Window Name",
-DlgLnkPopWinFeat : "Popup Window Features",
-DlgLnkPopResize : "Resizable",
-DlgLnkPopLocation : "Location Bar",
-DlgLnkPopMenu : "Menu Bar",
-DlgLnkPopScroll : "Scroll Bars",
-DlgLnkPopStatus : "Status Bar",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Full Screen (IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "Width",
-DlgLnkPopHeight : "Height",
-DlgLnkPopLeft : "Left Position",
-DlgLnkPopTop : "Top Position",
-
-DlnLnkMsgNoUrl : "Please type the link URL",
-DlnLnkMsgNoEMail : "Please type the e-mail address",
-DlnLnkMsgNoAnchor : "Please select an anchor",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces",
-
-// Color Dialog
-DlgColorTitle : "Select Colour",
-DlgColorBtnClear : "Clear",
-DlgColorHighlight : "Highlight",
-DlgColorSelected : "Selected",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insert a Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Select Special Character",
-
-// Table Dialog
-DlgTableTitle : "Table Properties",
-DlgTableRows : "Rows",
-DlgTableColumns : "Columns",
-DlgTableBorder : "Border size",
-DlgTableAlign : "Alignment",
-DlgTableAlignNotSet : "<Not set>",
-DlgTableAlignLeft : "Left",
-DlgTableAlignCenter : "Centre",
-DlgTableAlignRight : "Right",
-DlgTableWidth : "Width",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Height",
-DlgTableCellSpace : "Cell spacing",
-DlgTableCellPad : "Cell padding",
-DlgTableCaption : "Caption",
-DlgTableSummary : "Summary",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Cell Properties",
-DlgCellWidth : "Width",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Height",
-DlgCellWordWrap : "Word Wrap",
-DlgCellWordWrapNotSet : "<Not set>",
-DlgCellWordWrapYes : "Yes",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Horizontal Alignment",
-DlgCellHorAlignNotSet : "<Not set>",
-DlgCellHorAlignLeft : "Left",
-DlgCellHorAlignCenter : "Centre",
-DlgCellHorAlignRight: "Right",
-DlgCellVerAlign : "Vertical Alignment",
-DlgCellVerAlignNotSet : "<Not set>",
-DlgCellVerAlignTop : "Top",
-DlgCellVerAlignMiddle : "Middle",
-DlgCellVerAlignBottom : "Bottom",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type",
-DlgCellTypeData : "Data",
-DlgCellTypeHeader : "Header",
-DlgCellRowSpan : "Rows Span",
-DlgCellCollSpan : "Columns Span",
-DlgCellBackColor : "Background Colour",
-DlgCellBorderColor : "Border Colour",
-DlgCellBtnSelect : "Select...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace",
-
-// Find Dialog
-DlgFindTitle : "Find",
-DlgFindFindBtn : "Find",
-DlgFindNotFoundMsg : "The specified text was not found.",
-
-// Replace Dialog
-DlgReplaceTitle : "Replace",
-DlgReplaceFindLbl : "Find what:",
-DlgReplaceReplaceLbl : "Replace with:",
-DlgReplaceCaseChk : "Match case",
-DlgReplaceReplaceBtn : "Replace",
-DlgReplaceReplAllBtn : "Replace All",
-DlgReplaceWordChk : "Match whole word",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
-PasteErrorCopy : "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
-
-PasteAsText : "Paste as Plain Text",
-PasteFromWord : "Paste from Word",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
-DlgPasteIgnoreFont : "Ignore Font Face definitions",
-DlgPasteRemoveStyles : "Remove Styles definitions",
-
-// Color Picker
-ColorAutomatic : "Automatic",
-ColorMoreColors : "More Colours...",
-
-// Document Properties
-DocProps : "Document Properties",
-
-// Anchor Dialog
-DlgAnchorTitle : "Anchor Properties",
-DlgAnchorName : "Anchor Name",
-DlgAnchorErrorName : "Please type the anchor name",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Not in dictionary",
-DlgSpellChangeTo : "Change to",
-DlgSpellBtnIgnore : "Ignore",
-DlgSpellBtnIgnoreAll : "Ignore All",
-DlgSpellBtnReplace : "Replace",
-DlgSpellBtnReplaceAll : "Replace All",
-DlgSpellBtnUndo : "Undo",
-DlgSpellNoSuggestions : "- No suggestions -",
-DlgSpellProgress : "Spell check in progress...",
-DlgSpellNoMispell : "Spell check complete: No misspellings found",
-DlgSpellNoChanges : "Spell check complete: No words changed",
-DlgSpellOneChange : "Spell check complete: One word changed",
-DlgSpellManyChanges : "Spell check complete: %1 words changed",
-
-IeSpellDownload : "Spell checker not installed. Do you want to download it now?",
-
-// Button Dialog
-DlgButtonText : "Text (Value)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Name",
-DlgCheckboxValue : "Value",
-DlgCheckboxSelected : "Selected",
-
-// Form Dialog
-DlgFormName : "Name",
-DlgFormAction : "Action",
-DlgFormMethod : "Method",
-
-// Select Field Dialog
-DlgSelectName : "Name",
-DlgSelectValue : "Value",
-DlgSelectSize : "Size",
-DlgSelectLines : "lines",
-DlgSelectChkMulti : "Allow multiple selections",
-DlgSelectOpAvail : "Available Options",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Value",
-DlgSelectBtnAdd : "Add",
-DlgSelectBtnModify : "Modify",
-DlgSelectBtnUp : "Up",
-DlgSelectBtnDown : "Down",
-DlgSelectBtnSetValue : "Set as selected value",
-DlgSelectBtnDelete : "Delete",
-
-// Textarea Dialog
-DlgTextareaName : "Name",
-DlgTextareaCols : "Columns",
-DlgTextareaRows : "Rows",
-
-// Text Field Dialog
-DlgTextName : "Name",
-DlgTextValue : "Value",
-DlgTextCharWidth : "Character Width",
-DlgTextMaxChars : "Maximum Characters",
-DlgTextType : "Type",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Password",
-
-// Hidden Field Dialog
-DlgHiddenName : "Name",
-DlgHiddenValue : "Value",
-
-// Bulleted List Dialog
-BulletedListProp : "Bulleted List Properties",
-NumberedListProp : "Numbered List Properties",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Circle",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "Square",
-DlgLstTypeNumbers : "Numbers (1, 2, 3)",
-DlgLstTypeLCase : "Lowercase Letters (a, b, c)",
-DlgLstTypeUCase : "Uppercase Letters (A, B, C)",
-DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)",
-DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Background",
-DlgDocColorsTab : "Colours and Margins",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Page Title",
-DlgDocLangDir : "Language Direction",
-DlgDocLangDirLTR : "Left to Right (LTR)",
-DlgDocLangDirRTL : "Right to Left (RTL)",
-DlgDocLangCode : "Language Code",
-DlgDocCharSet : "Character Set Encoding",
-DlgDocCharSetCE : "Central European",
-DlgDocCharSetCT : "Chinese Traditional (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Greek",
-DlgDocCharSetJP : "Japanese",
-DlgDocCharSetKR : "Korean",
-DlgDocCharSetTR : "Turkish",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "Other Character Set Encoding",
-
-DlgDocDocType : "Document Type Heading",
-DlgDocDocTypeOther : "Other Document Type Heading",
-DlgDocIncXHTML : "Include XHTML Declarations",
-DlgDocBgColor : "Background Colour",
-DlgDocBgImage : "Background Image URL",
-DlgDocBgNoScroll : "Nonscrolling Background",
-DlgDocCText : "Text",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Visited Link",
-DlgDocCActive : "Active Link",
-DlgDocMargins : "Page Margins",
-DlgDocMaTop : "Top",
-DlgDocMaLeft : "Left",
-DlgDocMaRight : "Right",
-DlgDocMaBottom : "Bottom",
-DlgDocMeIndex : "Document Indexing Keywords (comma separated)",
-DlgDocMeDescr : "Document Description",
-DlgDocMeAuthor : "Author",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Preview",
-
-// Templates Dialog
-Templates : "Templates",
-DlgTemplatesTitle : "Content Templates",
-DlgTemplatesSelMsg : "Please select the template to open in the editor<br />(the actual contents will be lost):",
-DlgTemplatesLoading : "Loading templates list. Please wait...",
-DlgTemplatesNoTpl : "(No templates defined)",
-DlgTemplatesReplace : "Replace actual contents",
-
-// About Dialog
-DlgAboutAboutTab : "About",
-DlgAboutBrowserInfoTab : "Browser Info",
-DlgAboutLicenseTab : "License",
-DlgAboutVersion : "version",
-DlgAboutInfo : "For further information go to",
-
-// Div Dialog
-DlgDivGeneralTab : "General",
-DlgDivAdvancedTab : "Advanced",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en.js
deleted file mode 100644
index 5e26de2f0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/en.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * English language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Collapse Toolbar",
-ToolbarExpand : "Expand Toolbar",
-
-// Toolbar Items and Context Menu
-Save : "Save",
-NewPage : "New Page",
-Preview : "Preview",
-Cut : "Cut",
-Copy : "Copy",
-Paste : "Paste",
-PasteText : "Paste as plain text",
-PasteWord : "Paste from Word",
-Print : "Print",
-SelectAll : "Select All",
-RemoveFormat : "Remove Format",
-InsertLinkLbl : "Link",
-InsertLink : "Insert/Edit Link",
-RemoveLink : "Remove Link",
-VisitLink : "Open Link",
-Anchor : "Insert/Edit Anchor",
-AnchorDelete : "Remove Anchor",
-InsertImageLbl : "Image",
-InsertImage : "Insert/Edit Image",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insert/Edit Flash",
-InsertTableLbl : "Table",
-InsertTable : "Insert/Edit Table",
-InsertLineLbl : "Line",
-InsertLine : "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Character",
-InsertSpecialChar : "Insert Special Character",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Insert Smiley",
-About : "About FCKeditor",
-Bold : "Bold",
-Italic : "Italic",
-Underline : "Underline",
-StrikeThrough : "Strike Through",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Left Justify",
-CenterJustify : "Center Justify",
-RightJustify : "Right Justify",
-BlockJustify : "Block Justify",
-DecreaseIndent : "Decrease Indent",
-IncreaseIndent : "Increase Indent",
-Blockquote : "Blockquote",
-CreateDiv : "Create Div Container",
-EditDiv : "Edit Div Container",
-DeleteDiv : "Remove Div Container",
-Undo : "Undo",
-Redo : "Redo",
-NumberedListLbl : "Numbered List",
-NumberedList : "Insert/Remove Numbered List",
-BulletedListLbl : "Bulleted List",
-BulletedList : "Insert/Remove Bulleted List",
-ShowTableBorders : "Show Table Borders",
-ShowDetails : "Show Details",
-Style : "Style",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "Size",
-TextColor : "Text Color",
-BGColor : "Background Color",
-Source : "Source",
-Find : "Find",
-Replace : "Replace",
-SpellCheck : "Check Spelling",
-UniversalKeyboard : "Universal Keyboard",
-PageBreakLbl : "Page Break",
-PageBreak : "Insert Page Break",
-
-Form : "Form",
-Checkbox : "Checkbox",
-RadioButton : "Radio Button",
-TextField : "Text Field",
-Textarea : "Textarea",
-HiddenField : "Hidden Field",
-Button : "Button",
-SelectionField : "Selection Field",
-ImageButton : "Image Button",
-
-FitWindow : "Maximize the editor size",
-ShowBlocks : "Show Blocks",
-
-// Context Menu
-EditLink : "Edit Link",
-CellCM : "Cell",
-RowCM : "Row",
-ColumnCM : "Column",
-InsertRowAfter : "Insert Row After",
-InsertRowBefore : "Insert Row Before",
-DeleteRows : "Delete Rows",
-InsertColumnAfter : "Insert Column After",
-InsertColumnBefore : "Insert Column Before",
-DeleteColumns : "Delete Columns",
-InsertCellAfter : "Insert Cell After",
-InsertCellBefore : "Insert Cell Before",
-DeleteCells : "Delete Cells",
-MergeCells : "Merge Cells",
-MergeRight : "Merge Right",
-MergeDown : "Merge Down",
-HorizontalSplitCell : "Split Cell Horizontally",
-VerticalSplitCell : "Split Cell Vertically",
-TableDelete : "Delete Table",
-CellProperties : "Cell Properties",
-TableProperties : "Table Properties",
-ImageProperties : "Image Properties",
-FlashProperties : "Flash Properties",
-
-AnchorProp : "Anchor Properties",
-ButtonProp : "Button Properties",
-CheckboxProp : "Checkbox Properties",
-HiddenFieldProp : "Hidden Field Properties",
-RadioButtonProp : "Radio Button Properties",
-ImageButtonProp : "Image Button Properties",
-TextFieldProp : "Text Field Properties",
-SelectionFieldProp : "Selection Field Properties",
-TextareaProp : "Textarea Properties",
-FormProp : "Form Properties",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Processing XHTML. Please wait...",
-Done : "Done",
-PasteWordConfirm : "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
-NotCompatiblePaste : "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
-UnknownToolbarItem : "Unknown toolbar item \"%1\"",
-UnknownCommand : "Unknown command name \"%1\"",
-NotImplemented : "Command not implemented",
-UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancel",
-DlgBtnClose : "Close",
-DlgBtnBrowseServer : "Browse Server",
-DlgAdvancedTag : "Advanced",
-DlgOpOther : "<Other>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Please insert the URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<not set>",
-DlgGenId : "Id",
-DlgGenLangDir : "Language Direction",
-DlgGenLangDirLtr : "Left to Right (LTR)",
-DlgGenLangDirRtl : "Right to Left (RTL)",
-DlgGenLangCode : "Language Code",
-DlgGenAccessKey : "Access Key",
-DlgGenName : "Name",
-DlgGenTabIndex : "Tab Index",
-DlgGenLongDescr : "Long Description URL",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "Advisory Title",
-DlgGenContType : "Advisory Content Type",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Image Properties",
-DlgImgInfoTab : "Image Info",
-DlgImgBtnUpload : "Send it to the Server",
-DlgImgURL : "URL",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternative Text",
-DlgImgWidth : "Width",
-DlgImgHeight : "Height",
-DlgImgLockRatio : "Lock Ratio",
-DlgBtnResetSize : "Reset Size",
-DlgImgBorder : "Border",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Align",
-DlgImgAlignLeft : "Left",
-DlgImgAlignAbsBottom: "Abs Bottom",
-DlgImgAlignAbsMiddle: "Abs Middle",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Bottom",
-DlgImgAlignMiddle : "Middle",
-DlgImgAlignRight : "Right",
-DlgImgAlignTextTop : "Text Top",
-DlgImgAlignTop : "Top",
-DlgImgPreview : "Preview",
-DlgImgAlertUrl : "Please type the image URL",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties",
-DlgFlashChkPlay : "Auto Play",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Enable Flash Menu",
-DlgFlashScale : "Scale",
-DlgFlashScaleAll : "Show all",
-DlgFlashScaleNoBorder : "No Border",
-DlgFlashScaleFit : "Exact Fit",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link Info",
-DlgLnkTargetTab : "Target",
-
-DlgLnkType : "Link Type",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Link to anchor in the text",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<other>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Select an Anchor",
-DlgLnkAnchorByName : "By Anchor Name",
-DlgLnkAnchorById : "By Element Id",
-DlgLnkNoAnchors : "(No anchors available in the document)",
-DlgLnkEMail : "E-Mail Address",
-DlgLnkEMailSubject : "Message Subject",
-DlgLnkEMailBody : "Message Body",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Send it to the Server",
-
-DlgLnkTarget : "Target",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<popup window>",
-DlgLnkTargetBlank : "New Window (_blank)",
-DlgLnkTargetParent : "Parent Window (_parent)",
-DlgLnkTargetSelf : "Same Window (_self)",
-DlgLnkTargetTop : "Topmost Window (_top)",
-DlgLnkTargetFrameName : "Target Frame Name",
-DlgLnkPopWinName : "Popup Window Name",
-DlgLnkPopWinFeat : "Popup Window Features",
-DlgLnkPopResize : "Resizable",
-DlgLnkPopLocation : "Location Bar",
-DlgLnkPopMenu : "Menu Bar",
-DlgLnkPopScroll : "Scroll Bars",
-DlgLnkPopStatus : "Status Bar",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Full Screen (IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "Width",
-DlgLnkPopHeight : "Height",
-DlgLnkPopLeft : "Left Position",
-DlgLnkPopTop : "Top Position",
-
-DlnLnkMsgNoUrl : "Please type the link URL",
-DlnLnkMsgNoEMail : "Please type the e-mail address",
-DlnLnkMsgNoAnchor : "Please select an anchor",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces",
-
-// Color Dialog
-DlgColorTitle : "Select Color",
-DlgColorBtnClear : "Clear",
-DlgColorHighlight : "Highlight",
-DlgColorSelected : "Selected",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insert a Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Select Special Character",
-
-// Table Dialog
-DlgTableTitle : "Table Properties",
-DlgTableRows : "Rows",
-DlgTableColumns : "Columns",
-DlgTableBorder : "Border size",
-DlgTableAlign : "Alignment",
-DlgTableAlignNotSet : "<Not set>",
-DlgTableAlignLeft : "Left",
-DlgTableAlignCenter : "Center",
-DlgTableAlignRight : "Right",
-DlgTableWidth : "Width",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Height",
-DlgTableCellSpace : "Cell spacing",
-DlgTableCellPad : "Cell padding",
-DlgTableCaption : "Caption",
-DlgTableSummary : "Summary",
-DlgTableHeaders : "Headers",
-DlgTableHeadersNone : "None",
-DlgTableHeadersColumn : "First column",
-DlgTableHeadersRow : "First Row",
-DlgTableHeadersBoth : "Both",
-
-// Table Cell Dialog
-DlgCellTitle : "Cell Properties",
-DlgCellWidth : "Width",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Height",
-DlgCellWordWrap : "Word Wrap",
-DlgCellWordWrapNotSet : "<Not set>",
-DlgCellWordWrapYes : "Yes",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Horizontal Alignment",
-DlgCellHorAlignNotSet : "<Not set>",
-DlgCellHorAlignLeft : "Left",
-DlgCellHorAlignCenter : "Center",
-DlgCellHorAlignRight: "Right",
-DlgCellVerAlign : "Vertical Alignment",
-DlgCellVerAlignNotSet : "<Not set>",
-DlgCellVerAlignTop : "Top",
-DlgCellVerAlignMiddle : "Middle",
-DlgCellVerAlignBottom : "Bottom",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type",
-DlgCellTypeData : "Data",
-DlgCellTypeHeader : "Header",
-DlgCellRowSpan : "Rows Span",
-DlgCellCollSpan : "Columns Span",
-DlgCellBackColor : "Background Color",
-DlgCellBorderColor : "Border Color",
-DlgCellBtnSelect : "Select...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace",
-
-// Find Dialog
-DlgFindTitle : "Find",
-DlgFindFindBtn : "Find",
-DlgFindNotFoundMsg : "The specified text was not found.",
-
-// Replace Dialog
-DlgReplaceTitle : "Replace",
-DlgReplaceFindLbl : "Find what:",
-DlgReplaceReplaceLbl : "Replace with:",
-DlgReplaceCaseChk : "Match case",
-DlgReplaceReplaceBtn : "Replace",
-DlgReplaceReplAllBtn : "Replace All",
-DlgReplaceWordChk : "Match whole word",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
-PasteErrorCopy : "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
-
-PasteAsText : "Paste as Plain Text",
-PasteFromWord : "Paste from Word",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.",
-DlgPasteIgnoreFont : "Ignore Font Face definitions",
-DlgPasteRemoveStyles : "Remove Styles definitions",
-
-// Color Picker
-ColorAutomatic : "Automatic",
-ColorMoreColors : "More Colors...",
-
-// Document Properties
-DocProps : "Document Properties",
-
-// Anchor Dialog
-DlgAnchorTitle : "Anchor Properties",
-DlgAnchorName : "Anchor Name",
-DlgAnchorErrorName : "Please type the anchor name",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Not in dictionary",
-DlgSpellChangeTo : "Change to",
-DlgSpellBtnIgnore : "Ignore",
-DlgSpellBtnIgnoreAll : "Ignore All",
-DlgSpellBtnReplace : "Replace",
-DlgSpellBtnReplaceAll : "Replace All",
-DlgSpellBtnUndo : "Undo",
-DlgSpellNoSuggestions : "- No suggestions -",
-DlgSpellProgress : "Spell check in progress...",
-DlgSpellNoMispell : "Spell check complete: No misspellings found",
-DlgSpellNoChanges : "Spell check complete: No words changed",
-DlgSpellOneChange : "Spell check complete: One word changed",
-DlgSpellManyChanges : "Spell check complete: %1 words changed",
-
-IeSpellDownload : "Spell checker not installed. Do you want to download it now?",
-
-// Button Dialog
-DlgButtonText : "Text (Value)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Name",
-DlgCheckboxValue : "Value",
-DlgCheckboxSelected : "Selected",
-
-// Form Dialog
-DlgFormName : "Name",
-DlgFormAction : "Action",
-DlgFormMethod : "Method",
-
-// Select Field Dialog
-DlgSelectName : "Name",
-DlgSelectValue : "Value",
-DlgSelectSize : "Size",
-DlgSelectLines : "lines",
-DlgSelectChkMulti : "Allow multiple selections",
-DlgSelectOpAvail : "Available Options",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Value",
-DlgSelectBtnAdd : "Add",
-DlgSelectBtnModify : "Modify",
-DlgSelectBtnUp : "Up",
-DlgSelectBtnDown : "Down",
-DlgSelectBtnSetValue : "Set as selected value",
-DlgSelectBtnDelete : "Delete",
-
-// Textarea Dialog
-DlgTextareaName : "Name",
-DlgTextareaCols : "Columns",
-DlgTextareaRows : "Rows",
-
-// Text Field Dialog
-DlgTextName : "Name",
-DlgTextValue : "Value",
-DlgTextCharWidth : "Character Width",
-DlgTextMaxChars : "Maximum Characters",
-DlgTextType : "Type",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Password",
-
-// Hidden Field Dialog
-DlgHiddenName : "Name",
-DlgHiddenValue : "Value",
-
-// Bulleted List Dialog
-BulletedListProp : "Bulleted List Properties",
-NumberedListProp : "Numbered List Properties",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Circle",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "Square",
-DlgLstTypeNumbers : "Numbers (1, 2, 3)",
-DlgLstTypeLCase : "Lowercase Letters (a, b, c)",
-DlgLstTypeUCase : "Uppercase Letters (A, B, C)",
-DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)",
-DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Background",
-DlgDocColorsTab : "Colors and Margins",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Page Title",
-DlgDocLangDir : "Language Direction",
-DlgDocLangDirLTR : "Left to Right (LTR)",
-DlgDocLangDirRTL : "Right to Left (RTL)",
-DlgDocLangCode : "Language Code",
-DlgDocCharSet : "Character Set Encoding",
-DlgDocCharSetCE : "Central European",
-DlgDocCharSetCT : "Chinese Traditional (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Greek",
-DlgDocCharSetJP : "Japanese",
-DlgDocCharSetKR : "Korean",
-DlgDocCharSetTR : "Turkish",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "Other Character Set Encoding",
-
-DlgDocDocType : "Document Type Heading",
-DlgDocDocTypeOther : "Other Document Type Heading",
-DlgDocIncXHTML : "Include XHTML Declarations",
-DlgDocBgColor : "Background Color",
-DlgDocBgImage : "Background Image URL",
-DlgDocBgNoScroll : "Nonscrolling Background",
-DlgDocCText : "Text",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Visited Link",
-DlgDocCActive : "Active Link",
-DlgDocMargins : "Page Margins",
-DlgDocMaTop : "Top",
-DlgDocMaLeft : "Left",
-DlgDocMaRight : "Right",
-DlgDocMaBottom : "Bottom",
-DlgDocMeIndex : "Document Indexing Keywords (comma separated)",
-DlgDocMeDescr : "Document Description",
-DlgDocMeAuthor : "Author",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Preview",
-
-// Templates Dialog
-Templates : "Templates",
-DlgTemplatesTitle : "Content Templates",
-DlgTemplatesSelMsg : "Please select the template to open in the editor<br />(the actual contents will be lost):",
-DlgTemplatesLoading : "Loading templates list. Please wait...",
-DlgTemplatesNoTpl : "(No templates defined)",
-DlgTemplatesReplace : "Replace actual contents",
-
-// About Dialog
-DlgAboutAboutTab : "About",
-DlgAboutBrowserInfoTab : "Browser Info",
-DlgAboutLicenseTab : "License",
-DlgAboutVersion : "version",
-DlgAboutInfo : "For further information go to",
-
-// Div Dialog
-DlgDivGeneralTab : "General",
-DlgDivAdvancedTab : "Advanced",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eo.js
deleted file mode 100644
index f2e6c67ca..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eo.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Esperanto language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "KaÅi Ilobreton",
-ToolbarExpand : "Vidigi Ilojn",
-
-// Toolbar Items and Context Menu
-Save : "Sekurigi",
-NewPage : "Nova PaÄo",
-Preview : "Vidigi Aspekton",
-Cut : "Eltondi",
-Copy : "Kopii",
-Paste : "Interglui",
-PasteText : "Interglui kiel Tekston",
-PasteWord : "Interglui el Word",
-Print : "Presi",
-SelectAll : "Elekti ĉion",
-RemoveFormat : "Forigi Formaton",
-InsertLinkLbl : "Ligilo",
-InsertLink : "Enmeti/ÅœanÄi Ligilon",
-RemoveLink : "Forigi Ligilon",
-VisitLink : "Open Link", //MISSING
-Anchor : "Enmeti/ÅœanÄi Ankron",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Bildo",
-InsertImage : "Enmeti/ÅœanÄi Bildon",
-InsertFlashLbl : "Flash", //MISSING
-InsertFlash : "Insert/Edit Flash", //MISSING
-InsertTableLbl : "Tabelo",
-InsertTable : "Enmeti/ÅœanÄi Tabelon",
-InsertLineLbl : "Horizonta Linio",
-InsertLine : "Enmeti Horizonta Linio",
-InsertSpecialCharLbl: "Speciala Signo",
-InsertSpecialChar : "Enmeti Specialan Signon",
-InsertSmileyLbl : "Mienvinjeto",
-InsertSmiley : "Enmeti Mienvinjeton",
-About : "Pri FCKeditor",
-Bold : "Grasa",
-Italic : "Kursiva",
-Underline : "Substreko",
-StrikeThrough : "Trastreko",
-Subscript : "Subskribo",
-Superscript : "Superskribo",
-LeftJustify : "Maldekstrigi",
-CenterJustify : "Centrigi",
-RightJustify : "Dekstrigi",
-BlockJustify : "Äœisrandigi AmbaÅ­flanke",
-DecreaseIndent : "Malpligrandigi KrommarÄenon",
-IncreaseIndent : "Pligrandigi KrommarÄenon",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Malfari",
-Redo : "Refari",
-NumberedListLbl : "Numera Listo",
-NumberedList : "Enmeti/Forigi Numeran Liston",
-BulletedListLbl : "Bula Listo",
-BulletedList : "Enmeti/Forigi Bulan Liston",
-ShowTableBorders : "Vidigi Borderojn de Tabelo",
-ShowDetails : "Vidigi Detalojn",
-Style : "Stilo",
-FontFormat : "Formato",
-Font : "Tiparo",
-FontSize : "Grando",
-TextColor : "Teksta Koloro",
-BGColor : "Fona Koloro",
-Source : "Fonto",
-Find : "Serĉi",
-Replace : "AnstataÅ­igi",
-SpellCheck : "Literumada Kontrolilo",
-UniversalKeyboard : "Universala Klavaro",
-PageBreakLbl : "Page Break", //MISSING
-PageBreak : "Insert Page Break", //MISSING
-
-Form : "Formularo",
-Checkbox : "Markobutono",
-RadioButton : "Radiobutono",
-TextField : "Teksta kampo",
-Textarea : "Teksta Areo",
-HiddenField : "KaÅita Kampo",
-Button : "Butono",
-SelectionField : "Elekta Kampo",
-ImageButton : "Bildbutono",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Modifier Ligilon",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Forigi Liniojn",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Forigi Kolumnojn",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Forigi Ĉelojn",
-MergeCells : "Kunfandi Ĉelojn",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Delete Table", //MISSING
-CellProperties : "Atributoj de Ĉelo",
-TableProperties : "Atributoj de Tabelo",
-ImageProperties : "Atributoj de Bildo",
-FlashProperties : "Flash Properties", //MISSING
-
-AnchorProp : "Ankraj Atributoj",
-ButtonProp : "Butonaj Atributoj",
-CheckboxProp : "Markobutonaj Atributoj",
-HiddenFieldProp : "Atributoj de KaÅita Kampo",
-RadioButtonProp : "Radiobutonaj Atributoj",
-ImageButtonProp : "Bildbutonaj Atributoj",
-TextFieldProp : "Atributoj de Teksta Kampo",
-SelectionFieldProp : "Atributoj de Elekta Kampo",
-TextareaProp : "Atributoj de Teksta Areo",
-FormProp : "Formularaj Atributoj",
-
-FontFormats : "Normala;Formatita;Adreso;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Traktado de XHTML. Bonvolu pacienci...",
-Done : "Finita",
-PasteWordConfirm : "La algluota teksto Åajnas esti Word-devena. Ĉu vi volas purigi Äin antaÅ­ ol interglui?",
-NotCompatiblePaste : "Tiu ĉi komando bezonas almenaŭ Internet Explorer 5.5. Ĉu vi volas daŭrigi sen purigado?",
-UnknownToolbarItem : "Ilobretero nekonata \"%1\"",
-UnknownCommand : "Komandonomo nekonata \"%1\"",
-NotImplemented : "Komando ne ankoraÅ­ realigita",
-UnknownToolbarSet : "La ilobreto \"%1\" ne ekzistas",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "Akcepti",
-DlgBtnCancel : "Rezigni",
-DlgBtnClose : "Fermi",
-DlgBtnBrowseServer : "Foliumi en la Servilo",
-DlgAdvancedTag : "Speciala",
-DlgOpOther : "<Alia>",
-DlgInfoTab : "Info", //MISSING
-DlgAlertUrl : "Please insert the URL", //MISSING
-
-// General Dialogs Labels
-DlgGenNotSet : "<DefaÅ­lta>",
-DlgGenId : "Id",
-DlgGenLangDir : "Skribdirekto",
-DlgGenLangDirLtr : "De maldekstro dekstren (LTR)",
-DlgGenLangDirRtl : "De dekstro maldekstren (RTL)",
-DlgGenLangCode : "Lingva Kodo",
-DlgGenAccessKey : "Fulmoklavo",
-DlgGenName : "Nomo",
-DlgGenTabIndex : "Taba Ordo",
-DlgGenLongDescr : "URL de Longa Priskribo",
-DlgGenClass : "Klasoj de Stilfolioj",
-DlgGenTitle : "Indika Titolo",
-DlgGenContType : "Indika Enhavotipo",
-DlgGenLinkCharset : "Signaro de la Ligita Rimedo",
-DlgGenStyle : "Stilo",
-
-// Image Dialog
-DlgImgTitle : "Atributoj de Bildo",
-DlgImgInfoTab : "Informoj pri Bildo",
-DlgImgBtnUpload : "Sendu al Servilo",
-DlgImgURL : "URL",
-DlgImgUpload : "AlÅuti",
-DlgImgAlt : "AnstataÅ­iga Teksto",
-DlgImgWidth : "LarÄo",
-DlgImgHeight : "Alto",
-DlgImgLockRatio : "Konservi Proporcion",
-DlgBtnResetSize : "Origina Grando",
-DlgImgBorder : "Bordero",
-DlgImgHSpace : "HSpaco",
-DlgImgVSpace : "VSpaco",
-DlgImgAlign : "Äœisrandigo",
-DlgImgAlignLeft : "Maldekstre",
-DlgImgAlignAbsBottom: "Abs Malsupre",
-DlgImgAlignAbsMiddle: "Abs Centre",
-DlgImgAlignBaseline : "Je Malsupro de Teksto",
-DlgImgAlignBottom : "Malsupre",
-DlgImgAlignMiddle : "Centre",
-DlgImgAlignRight : "Dekstre",
-DlgImgAlignTextTop : "Je Supro de Teksto",
-DlgImgAlignTop : "Supre",
-DlgImgPreview : "Vidigi Aspekton",
-DlgImgAlertUrl : "Bonvolu tajpi la URL de la bildo",
-DlgImgLinkTab : "Link", //MISSING
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties", //MISSING
-DlgFlashChkPlay : "Auto Play", //MISSING
-DlgFlashChkLoop : "Loop", //MISSING
-DlgFlashChkMenu : "Enable Flash Menu", //MISSING
-DlgFlashScale : "Scale", //MISSING
-DlgFlashScaleAll : "Show all", //MISSING
-DlgFlashScaleNoBorder : "No Border", //MISSING
-DlgFlashScaleFit : "Exact Fit", //MISSING
-
-// Link Dialog
-DlgLnkWindowTitle : "Ligilo",
-DlgLnkInfoTab : "Informoj pri la Ligilo",
-DlgLnkTargetTab : "Celo",
-
-DlgLnkType : "Tipo de Ligilo",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ankri en tiu ĉi paÄo",
-DlgLnkTypeEMail : "RetpoÅto",
-DlgLnkProto : "Protokolo",
-DlgLnkProtoOther : "<alia>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Elekti Ankron",
-DlgLnkAnchorByName : "Per Ankronomo",
-DlgLnkAnchorById : "Per Elementidentigilo",
-DlgLnkNoAnchors : "<Ne disponeblas ankroj en la dokumento>",
-DlgLnkEMail : "Retadreso",
-DlgLnkEMailSubject : "Temlinio",
-DlgLnkEMailBody : "MesaÄa korpo",
-DlgLnkUpload : "AlÅuti",
-DlgLnkBtnUpload : "Sendi al Servilo",
-
-DlgLnkTarget : "Celo",
-DlgLnkTargetFrame : "<kadro>",
-DlgLnkTargetPopup : "<Åprucfenestro>",
-DlgLnkTargetBlank : "Nova Fenestro (_blank)",
-DlgLnkTargetParent : "Gepatra Fenestro (_parent)",
-DlgLnkTargetSelf : "Sama Fenestro (_self)",
-DlgLnkTargetTop : "Plej Supra Fenestro (_top)",
-DlgLnkTargetFrameName : "Nomo de Kadro",
-DlgLnkPopWinName : "Nomo de Åœprucfenestro",
-DlgLnkPopWinFeat : "Atributoj de la Åœprucfenestro",
-DlgLnkPopResize : "Grando ÅœanÄebla",
-DlgLnkPopLocation : "Adresobreto",
-DlgLnkPopMenu : "Menubreto",
-DlgLnkPopScroll : "Rulumlisteloj",
-DlgLnkPopStatus : "Statobreto",
-DlgLnkPopToolbar : "Ilobreto",
-DlgLnkPopFullScrn : "Tutekrane (IE)",
-DlgLnkPopDependent : "Dependa (Netscape)",
-DlgLnkPopWidth : "LarÄo",
-DlgLnkPopHeight : "Alto",
-DlgLnkPopLeft : "Pozicio de Maldekstro",
-DlgLnkPopTop : "Pozicio de Supro",
-
-DlnLnkMsgNoUrl : "Bonvolu entajpi la URL-on",
-DlnLnkMsgNoEMail : "Bonvolu entajpi la retadreson",
-DlnLnkMsgNoAnchor : "Bonvolu elekti ankron",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Elekti",
-DlgColorBtnClear : "Forigi",
-DlgColorHighlight : "Emfazi",
-DlgColorSelected : "Elektita",
-
-// Smiley Dialog
-DlgSmileyTitle : "Enmeti Mienvinjeton",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Enmeti Specialan Signon",
-
-// Table Dialog
-DlgTableTitle : "Atributoj de Tabelo",
-DlgTableRows : "Linioj",
-DlgTableColumns : "Kolumnoj",
-DlgTableBorder : "Bordero",
-DlgTableAlign : "Äœisrandigo",
-DlgTableAlignNotSet : "<DefaÅ­lte>",
-DlgTableAlignLeft : "Maldekstre",
-DlgTableAlignCenter : "Centre",
-DlgTableAlignRight : "Dekstre",
-DlgTableWidth : "LarÄo",
-DlgTableWidthPx : "Bitbilderoj",
-DlgTableWidthPc : "elcentoj",
-DlgTableHeight : "Alto",
-DlgTableCellSpace : "Interspacigo de Ĉeloj",
-DlgTableCellPad : "Ĉirkaŭenhava Plenigado",
-DlgTableCaption : "Titolo",
-DlgTableSummary : "Summary", //MISSING
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Atributoj de Celo",
-DlgCellWidth : "LarÄo",
-DlgCellWidthPx : "bitbilderoj",
-DlgCellWidthPc : "elcentoj",
-DlgCellHeight : "Alto",
-DlgCellWordWrap : "Linifaldo",
-DlgCellWordWrapNotSet : "<DefaÅ­lte>",
-DlgCellWordWrapYes : "Jes",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Horizonta Äœisrandigo",
-DlgCellHorAlignNotSet : "<DefaÅ­lte>",
-DlgCellHorAlignLeft : "Maldekstre",
-DlgCellHorAlignCenter : "Centre",
-DlgCellHorAlignRight: "Dekstre",
-DlgCellVerAlign : "Vertikala Äœisrandigo",
-DlgCellVerAlignNotSet : "<DefaÅ­lte>",
-DlgCellVerAlignTop : "Supre",
-DlgCellVerAlignMiddle : "Centre",
-DlgCellVerAlignBottom : "Malsupre",
-DlgCellVerAlignBaseline : "Je Malsupro de Teksto",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Linioj Kunfanditaj",
-DlgCellCollSpan : "Kolumnoj Kunfanditaj",
-DlgCellBackColor : "Fono",
-DlgCellBorderColor : "Bordero",
-DlgCellBtnSelect : "Elekti...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Serĉi",
-DlgFindFindBtn : "Serĉi",
-DlgFindNotFoundMsg : "La celteksto ne estas trovita.",
-
-// Replace Dialog
-DlgReplaceTitle : "AnstataÅ­igi",
-DlgReplaceFindLbl : "Serĉi:",
-DlgReplaceReplaceLbl : "AnstataÅ­igi per:",
-DlgReplaceCaseChk : "Kongruigi Usklecon",
-DlgReplaceReplaceBtn : "AnstataÅ­igi",
-DlgReplaceReplAllBtn : "Anstataŭigi Ĉiun",
-DlgReplaceWordChk : "Tuta Vorto",
-
-// Paste Operations / Dialog
-PasteErrorCut : "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).",
-PasteErrorCopy : "La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).",
-
-PasteAsText : "Interglui kiel Tekston",
-PasteFromWord : "Interglui el Word",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.", //MISSING
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignore Font Face definitions", //MISSING
-DlgPasteRemoveStyles : "Remove Styles definitions", //MISSING
-
-// Color Picker
-ColorAutomatic : "AÅ­tomata",
-ColorMoreColors : "Pli da Koloroj...",
-
-// Document Properties
-DocProps : "Dokumentaj Atributoj",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ankraj Atributoj",
-DlgAnchorName : "Ankra Nomo",
-DlgAnchorErrorName : "Bv tajpi la ankran nomon",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ne trovita en la vortaro",
-DlgSpellChangeTo : "ÅœanÄi al",
-DlgSpellBtnIgnore : "Malatenti",
-DlgSpellBtnIgnoreAll : "Malatenti Ĉiun",
-DlgSpellBtnReplace : "AnstataÅ­igi",
-DlgSpellBtnReplaceAll : "Anstataŭigi Ĉiun",
-DlgSpellBtnUndo : "Malfari",
-DlgSpellNoSuggestions : "- Neniu propono -",
-DlgSpellProgress : "Literumkontrolado daÅ­ras...",
-DlgSpellNoMispell : "Literumkontrolado finita: neniu fuÅo trovita",
-DlgSpellNoChanges : "Literumkontrolado finita: neniu vorto ÅanÄita",
-DlgSpellOneChange : "Literumkontrolado finita: unu vorto ÅanÄita",
-DlgSpellManyChanges : "Literumkontrolado finita: %1 vortoj ÅanÄitaj",
-
-IeSpellDownload : "Literumada Kontrolilo ne instalita. Ĉu vi volas elÅuti Äin nun?",
-
-// Button Dialog
-DlgButtonText : "Teksto (Valoro)",
-DlgButtonType : "Tipo",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nomo",
-DlgCheckboxValue : "Valoro",
-DlgCheckboxSelected : "Elektita",
-
-// Form Dialog
-DlgFormName : "Nomo",
-DlgFormAction : "Ago",
-DlgFormMethod : "Metodo",
-
-// Select Field Dialog
-DlgSelectName : "Nomo",
-DlgSelectValue : "Valoro",
-DlgSelectSize : "Grando",
-DlgSelectLines : "Linioj",
-DlgSelectChkMulti : "Permesi Plurajn Elektojn",
-DlgSelectOpAvail : "Elektoj Disponeblaj",
-DlgSelectOpText : "Teksto",
-DlgSelectOpValue : "Valoro",
-DlgSelectBtnAdd : "Aldoni",
-DlgSelectBtnModify : "Modifi",
-DlgSelectBtnUp : "Supren",
-DlgSelectBtnDown : "Malsupren",
-DlgSelectBtnSetValue : "Agordi kiel Elektitan Valoron",
-DlgSelectBtnDelete : "Forigi",
-
-// Textarea Dialog
-DlgTextareaName : "Nomo",
-DlgTextareaCols : "Kolumnoj",
-DlgTextareaRows : "Vicoj",
-
-// Text Field Dialog
-DlgTextName : "Nomo",
-DlgTextValue : "Valoro",
-DlgTextCharWidth : "SignolarÄo",
-DlgTextMaxChars : "Maksimuma Nombro da Signoj",
-DlgTextType : "Tipo",
-DlgTextTypeText : "Teksto",
-DlgTextTypePass : "Pasvorto",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nomo",
-DlgHiddenValue : "Valoro",
-
-// Bulleted List Dialog
-BulletedListProp : "Atributoj de Bula Listo",
-NumberedListProp : "Atributoj de Numera Listo",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Tipo",
-DlgLstTypeCircle : "Cirklo",
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "Kvadrato",
-DlgLstTypeNumbers : "Ciferoj (1, 2, 3)",
-DlgLstTypeLCase : "Minusklaj Literoj (a, b, c)",
-DlgLstTypeUCase : "Majusklaj Literoj (A, B, C)",
-DlgLstTypeSRoman : "Malgrandaj Romanaj Ciferoj (i, ii, iii)",
-DlgLstTypeLRoman : "Grandaj Romanaj Ciferoj (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Ĝeneralaĵoj",
-DlgDocBackTab : "Fono",
-DlgDocColorsTab : "Koloroj kaj MarÄenoj",
-DlgDocMetaTab : "Metadatumoj",
-
-DlgDocPageTitle : "PaÄotitolo",
-DlgDocLangDir : "Skribdirekto de la Lingvo",
-DlgDocLangDirLTR : "De maldekstro dekstren (LTR)",
-DlgDocLangDirRTL : "De dekstro maldekstren (LTR)",
-DlgDocLangCode : "Lingvokodo",
-DlgDocCharSet : "Signara Kodo",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Alia Signara Kodo",
-
-DlgDocDocType : "Dokumenta Tipo",
-DlgDocDocTypeOther : "Alia Dokumenta Tipo",
-DlgDocIncXHTML : "Inkluzivi XHTML Deklaroj",
-DlgDocBgColor : "Fona Koloro",
-DlgDocBgImage : "URL de Fona Bildo",
-DlgDocBgNoScroll : "Neruluma Fono",
-DlgDocCText : "Teksto",
-DlgDocCLink : "Ligilo",
-DlgDocCVisited : "Vizitita Ligilo",
-DlgDocCActive : "Aktiva Ligilo",
-DlgDocMargins : "PaÄaj MarÄenoj",
-DlgDocMaTop : "Supra",
-DlgDocMaLeft : "Maldekstra",
-DlgDocMaRight : "Dekstra",
-DlgDocMaBottom : "Malsupra",
-DlgDocMeIndex : "Åœlosilvortoj de la Dokumento (apartigita de komoj)",
-DlgDocMeDescr : "Dokumenta Priskribo",
-DlgDocMeAuthor : "Verkinto",
-DlgDocMeCopy : "Kopirajto",
-DlgDocPreview : "Aspekto",
-
-// Templates Dialog
-Templates : "Templates", //MISSING
-DlgTemplatesTitle : "Content Templates", //MISSING
-DlgTemplatesSelMsg : "Please select the template to open in the editor<br />(the actual contents will be lost):", //MISSING
-DlgTemplatesLoading : "Loading templates list. Please wait...", //MISSING
-DlgTemplatesNoTpl : "(No templates defined)", //MISSING
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "Pri",
-DlgAboutBrowserInfoTab : "Informoj pri TTT-legilo",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "versio",
-DlgAboutInfo : "Por pli da informoj, vizitu",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/es.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/es.js
deleted file mode 100644
index 4b2043db4..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/es.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Spanish language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Contraer Barra",
-ToolbarExpand : "Expandir Barra",
-
-// Toolbar Items and Context Menu
-Save : "Guardar",
-NewPage : "Nueva Página",
-Preview : "Vista Previa",
-Cut : "Cortar",
-Copy : "Copiar",
-Paste : "Pegar",
-PasteText : "Pegar como texto plano",
-PasteWord : "Pegar desde Word",
-Print : "Imprimir",
-SelectAll : "Seleccionar Todo",
-RemoveFormat : "Eliminar Formato",
-InsertLinkLbl : "Vínculo",
-InsertLink : "Insertar/Editar Vínculo",
-RemoveLink : "Eliminar Vínculo",
-VisitLink : "Abrir enlace",
-Anchor : "Referencia",
-AnchorDelete : "Eliminar Referencia",
-InsertImageLbl : "Imagen",
-InsertImage : "Insertar/Editar Imagen",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insertar/Editar Flash",
-InsertTableLbl : "Tabla",
-InsertTable : "Insertar/Editar Tabla",
-InsertLineLbl : "Línea",
-InsertLine : "Insertar Línea Horizontal",
-InsertSpecialCharLbl: "Caracter Especial",
-InsertSpecialChar : "Insertar Caracter Especial",
-InsertSmileyLbl : "Emoticons",
-InsertSmiley : "Insertar Emoticons",
-About : "Acerca de FCKeditor",
-Bold : "Negrita",
-Italic : "Cursiva",
-Underline : "Subrayado",
-StrikeThrough : "Tachado",
-Subscript : "Subíndice",
-Superscript : "Superíndice",
-LeftJustify : "Alinear a Izquierda",
-CenterJustify : "Centrar",
-RightJustify : "Alinear a Derecha",
-BlockJustify : "Justificado",
-DecreaseIndent : "Disminuir Sangría",
-IncreaseIndent : "Aumentar Sangría",
-Blockquote : "Cita",
-CreateDiv : "Crear contenedor (div)",
-EditDiv : "Editar contenedor (div)",
-DeleteDiv : "Eliminar contenedor (div)",
-Undo : "Deshacer",
-Redo : "Rehacer",
-NumberedListLbl : "Numeración",
-NumberedList : "Insertar/Eliminar Numeración",
-BulletedListLbl : "Viñetas",
-BulletedList : "Insertar/Eliminar Viñetas",
-ShowTableBorders : "Mostrar Bordes de Tablas",
-ShowDetails : "Mostrar saltos de Párrafo",
-Style : "Estilo",
-FontFormat : "Formato",
-Font : "Fuente",
-FontSize : "Tamaño",
-TextColor : "Color de Texto",
-BGColor : "Color de Fondo",
-Source : "Fuente HTML",
-Find : "Buscar",
-Replace : "Reemplazar",
-SpellCheck : "Ortografía",
-UniversalKeyboard : "Teclado Universal",
-PageBreakLbl : "Salto de Página",
-PageBreak : "Insertar Salto de Página",
-
-Form : "Formulario",
-Checkbox : "Casilla de Verificación",
-RadioButton : "Botones de Radio",
-TextField : "Campo de Texto",
-Textarea : "Area de Texto",
-HiddenField : "Campo Oculto",
-Button : "Botón",
-SelectionField : "Campo de Selección",
-ImageButton : "Botón Imagen",
-
-FitWindow : "Maximizar el tamaño del editor",
-ShowBlocks : "Mostrar bloques",
-
-// Context Menu
-EditLink : "Editar Vínculo",
-CellCM : "Celda",
-RowCM : "Fila",
-ColumnCM : "Columna",
-InsertRowAfter : "Insertar fila en la parte inferior",
-InsertRowBefore : "Insertar fila en la parte superior",
-DeleteRows : "Eliminar Filas",
-InsertColumnAfter : "Insertar columna a la derecha",
-InsertColumnBefore : "Insertar columna a la izquierda",
-DeleteColumns : "Eliminar Columnas",
-InsertCellAfter : "Insertar celda a la derecha",
-InsertCellBefore : "Insertar celda a la izquierda",
-DeleteCells : "Eliminar Celdas",
-MergeCells : "Combinar Celdas",
-MergeRight : "Combinar a la derecha",
-MergeDown : "Combinar hacia abajo",
-HorizontalSplitCell : "Dividir la celda horizontalmente",
-VerticalSplitCell : "Dividir la celda verticalmente",
-TableDelete : "Eliminar Tabla",
-CellProperties : "Propiedades de Celda",
-TableProperties : "Propiedades de Tabla",
-ImageProperties : "Propiedades de Imagen",
-FlashProperties : "Propiedades de Flash",
-
-AnchorProp : "Propiedades de Referencia",
-ButtonProp : "Propiedades de Botón",
-CheckboxProp : "Propiedades de Casilla",
-HiddenFieldProp : "Propiedades de Campo Oculto",
-RadioButtonProp : "Propiedades de Botón de Radio",
-ImageButtonProp : "Propiedades de Botón de Imagen",
-TextFieldProp : "Propiedades de Campo de Texto",
-SelectionFieldProp : "Propiedades de Campo de Selección",
-TextareaProp : "Propiedades de Area de Texto",
-FormProp : "Propiedades de Formulario",
-
-FontFormats : "Normal;Con formato;Dirección;Encabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Procesando XHTML. Por favor, espere...",
-Done : "Hecho",
-PasteWordConfirm : "El texto que desea parece provenir de Word. Desea depurarlo antes de pegarlo?",
-NotCompatiblePaste : "Este comando está disponible sólo para Internet Explorer version 5.5 or superior. Desea pegar sin depurar?",
-UnknownToolbarItem : "Item de barra desconocido \"%1\"",
-UnknownCommand : "Nombre de comando desconocido \"%1\"",
-NotImplemented : "Comando no implementado",
-UnknownToolbarSet : "Nombre de barra \"%1\" no definido",
-NoActiveX : "La configuración de las opciones de seguridad de su navegador puede estar limitando algunas características del editor. Por favor active la opción \"Ejecutar controles y complementos de ActiveX \", de lo contrario puede experimentar errores o ausencia de funcionalidades.",
-BrowseServerBlocked : "La ventana de visualización del servidor no pudo ser abierta. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
-DialogBlocked : "No se ha podido abrir la ventana de diálogo. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
-VisitLinkBlocked : "Nose ha podido abrir la ventana. Asegurese de que todos los bloqueadores de popups están deshabilitados.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancelar",
-DlgBtnClose : "Cerrar",
-DlgBtnBrowseServer : "Ver Servidor",
-DlgAdvancedTag : "Avanzado",
-DlgOpOther : "<Otro>",
-DlgInfoTab : "Información",
-DlgAlertUrl : "Inserte el URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<No definido>",
-DlgGenId : "Id",
-DlgGenLangDir : "Orientación",
-DlgGenLangDirLtr : "Izquierda a Derecha (LTR)",
-DlgGenLangDirRtl : "Derecha a Izquierda (RTL)",
-DlgGenLangCode : "Cód. de idioma",
-DlgGenAccessKey : "Clave de Acceso",
-DlgGenName : "Nombre",
-DlgGenTabIndex : "Indice de tabulación",
-DlgGenLongDescr : "Descripción larga URL",
-DlgGenClass : "Clases de hojas de estilo",
-DlgGenTitle : "Título",
-DlgGenContType : "Tipo de Contenido",
-DlgGenLinkCharset : "Fuente de caracteres vinculado",
-DlgGenStyle : "Estilo",
-
-// Image Dialog
-DlgImgTitle : "Propiedades de Imagen",
-DlgImgInfoTab : "Información de Imagen",
-DlgImgBtnUpload : "Enviar al Servidor",
-DlgImgURL : "URL",
-DlgImgUpload : "Cargar",
-DlgImgAlt : "Texto Alternativo",
-DlgImgWidth : "Anchura",
-DlgImgHeight : "Altura",
-DlgImgLockRatio : "Proporcional",
-DlgBtnResetSize : "Tamaño Original",
-DlgImgBorder : "Borde",
-DlgImgHSpace : "Esp.Horiz",
-DlgImgVSpace : "Esp.Vert",
-DlgImgAlign : "Alineación",
-DlgImgAlignLeft : "Izquierda",
-DlgImgAlignAbsBottom: "Abs inferior",
-DlgImgAlignAbsMiddle: "Abs centro",
-DlgImgAlignBaseline : "Línea de base",
-DlgImgAlignBottom : "Pie",
-DlgImgAlignMiddle : "Centro",
-DlgImgAlignRight : "Derecha",
-DlgImgAlignTextTop : "Tope del texto",
-DlgImgAlignTop : "Tope",
-DlgImgPreview : "Vista Previa",
-DlgImgAlertUrl : "Por favor escriba la URL de la imagen",
-DlgImgLinkTab : "Vínculo",
-
-// Flash Dialog
-DlgFlashTitle : "Propiedades de Flash",
-DlgFlashChkPlay : "Autoejecución",
-DlgFlashChkLoop : "Repetir",
-DlgFlashChkMenu : "Activar Menú Flash",
-DlgFlashScale : "Escala",
-DlgFlashScaleAll : "Mostrar todo",
-DlgFlashScaleNoBorder : "Sin Borde",
-DlgFlashScaleFit : "Ajustado",
-
-// Link Dialog
-DlgLnkWindowTitle : "Vínculo",
-DlgLnkInfoTab : "Información de Vínculo",
-DlgLnkTargetTab : "Destino",
-
-DlgLnkType : "Tipo de vínculo",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Referencia en esta página",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocolo",
-DlgLnkProtoOther : "<otro>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Seleccionar una referencia",
-DlgLnkAnchorByName : "Por Nombre de Referencia",
-DlgLnkAnchorById : "Por ID de elemento",
-DlgLnkNoAnchors : "(No hay referencias disponibles en el documento)",
-DlgLnkEMail : "Dirección de E-Mail",
-DlgLnkEMailSubject : "Título del Mensaje",
-DlgLnkEMailBody : "Cuerpo del Mensaje",
-DlgLnkUpload : "Cargar",
-DlgLnkBtnUpload : "Enviar al Servidor",
-
-DlgLnkTarget : "Destino",
-DlgLnkTargetFrame : "<marco>",
-DlgLnkTargetPopup : "<ventana emergente>",
-DlgLnkTargetBlank : "Nueva Ventana(_blank)",
-DlgLnkTargetParent : "Ventana Padre (_parent)",
-DlgLnkTargetSelf : "Misma Ventana (_self)",
-DlgLnkTargetTop : "Ventana primaria (_top)",
-DlgLnkTargetFrameName : "Nombre del Marco Destino",
-DlgLnkPopWinName : "Nombre de Ventana Emergente",
-DlgLnkPopWinFeat : "Características de Ventana Emergente",
-DlgLnkPopResize : "Ajustable",
-DlgLnkPopLocation : "Barra de ubicación",
-DlgLnkPopMenu : "Barra de Menú",
-DlgLnkPopScroll : "Barras de desplazamiento",
-DlgLnkPopStatus : "Barra de Estado",
-DlgLnkPopToolbar : "Barra de Herramientas",
-DlgLnkPopFullScrn : "Pantalla Completa (IE)",
-DlgLnkPopDependent : "Dependiente (Netscape)",
-DlgLnkPopWidth : "Anchura",
-DlgLnkPopHeight : "Altura",
-DlgLnkPopLeft : "Posición Izquierda",
-DlgLnkPopTop : "Posición Derecha",
-
-DlnLnkMsgNoUrl : "Por favor tipee el vínculo URL",
-DlnLnkMsgNoEMail : "Por favor tipee la dirección de e-mail",
-DlnLnkMsgNoAnchor : "Por favor seleccione una referencia",
-DlnLnkMsgInvPopName : "El nombre debe empezar con un caracter alfanumérico y no debe contener espacios",
-
-// Color Dialog
-DlgColorTitle : "Seleccionar Color",
-DlgColorBtnClear : "Ninguno",
-DlgColorHighlight : "Resaltado",
-DlgColorSelected : "Seleccionado",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insertar un Emoticon",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Seleccione un caracter especial",
-
-// Table Dialog
-DlgTableTitle : "Propiedades de Tabla",
-DlgTableRows : "Filas",
-DlgTableColumns : "Columnas",
-DlgTableBorder : "Tamaño de Borde",
-DlgTableAlign : "Alineación",
-DlgTableAlignNotSet : "<No establecido>",
-DlgTableAlignLeft : "Izquierda",
-DlgTableAlignCenter : "Centrado",
-DlgTableAlignRight : "Derecha",
-DlgTableWidth : "Anchura",
-DlgTableWidthPx : "pixeles",
-DlgTableWidthPc : "porcentaje",
-DlgTableHeight : "Altura",
-DlgTableCellSpace : "Esp. e/celdas",
-DlgTableCellPad : "Esp. interior",
-DlgTableCaption : "Título",
-DlgTableSummary : "Síntesis",
-DlgTableHeaders : "Encabezados",
-DlgTableHeadersNone : "Ninguno",
-DlgTableHeadersColumn : "Primera columna",
-DlgTableHeadersRow : "Primera fila",
-DlgTableHeadersBoth : "Ambas",
-
-// Table Cell Dialog
-DlgCellTitle : "Propiedades de Celda",
-DlgCellWidth : "Anchura",
-DlgCellWidthPx : "pixeles",
-DlgCellWidthPc : "porcentaje",
-DlgCellHeight : "Altura",
-DlgCellWordWrap : "Cortar Línea",
-DlgCellWordWrapNotSet : "<No establecido>",
-DlgCellWordWrapYes : "Si",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Alineación Horizontal",
-DlgCellHorAlignNotSet : "<No establecido>",
-DlgCellHorAlignLeft : "Izquierda",
-DlgCellHorAlignCenter : "Centrado",
-DlgCellHorAlignRight: "Derecha",
-DlgCellVerAlign : "Alineación Vertical",
-DlgCellVerAlignNotSet : "<Not establecido>",
-DlgCellVerAlignTop : "Tope",
-DlgCellVerAlignMiddle : "Medio",
-DlgCellVerAlignBottom : "ie",
-DlgCellVerAlignBaseline : "Línea de Base",
-DlgCellType : "Tipo de celda",
-DlgCellTypeData : "Datos",
-DlgCellTypeHeader : "Encabezado",
-DlgCellRowSpan : "Abarcar Filas",
-DlgCellCollSpan : "Abarcar Columnas",
-DlgCellBackColor : "Color de Fondo",
-DlgCellBorderColor : "Color de Borde",
-DlgCellBtnSelect : "Seleccione...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Buscar y Reemplazar",
-
-// Find Dialog
-DlgFindTitle : "Buscar",
-DlgFindFindBtn : "Buscar",
-DlgFindNotFoundMsg : "El texto especificado no ha sido encontrado.",
-
-// Replace Dialog
-DlgReplaceTitle : "Reemplazar",
-DlgReplaceFindLbl : "Texto a buscar:",
-DlgReplaceReplaceLbl : "Reemplazar con:",
-DlgReplaceCaseChk : "Coincidir may/min",
-DlgReplaceReplaceBtn : "Reemplazar",
-DlgReplaceReplAllBtn : "Reemplazar Todo",
-DlgReplaceWordChk : "Coincidir toda la palabra",
-
-// Paste Operations / Dialog
-PasteErrorCut : "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado. Por favor use el teclado (Ctrl+X).",
-PasteErrorCopy : "La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado. Por favor use el teclado (Ctrl+C).",
-
-PasteAsText : "Pegar como Texto Plano",
-PasteFromWord : "Pegar desde Word",
-
-DlgPasteMsg2 : "Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.",
-DlgPasteSec : "Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles. Es necesario que lo pegue de nuevo en esta ventana.",
-DlgPasteIgnoreFont : "Ignorar definiciones de fuentes",
-DlgPasteRemoveStyles : "Remover definiciones de estilo",
-
-// Color Picker
-ColorAutomatic : "Automático",
-ColorMoreColors : "Más Colores...",
-
-// Document Properties
-DocProps : "Propiedades del Documento",
-
-// Anchor Dialog
-DlgAnchorTitle : "Propiedades de la Referencia",
-DlgAnchorName : "Nombre de la Referencia",
-DlgAnchorErrorName : "Por favor, complete el nombre de la Referencia",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "No se encuentra en el Diccionario",
-DlgSpellChangeTo : "Cambiar a",
-DlgSpellBtnIgnore : "Ignorar",
-DlgSpellBtnIgnoreAll : "Ignorar Todo",
-DlgSpellBtnReplace : "Reemplazar",
-DlgSpellBtnReplaceAll : "Reemplazar Todo",
-DlgSpellBtnUndo : "Deshacer",
-DlgSpellNoSuggestions : "- No hay sugerencias -",
-DlgSpellProgress : "Control de Ortografía en progreso...",
-DlgSpellNoMispell : "Control finalizado: no se encontraron errores",
-DlgSpellNoChanges : "Control finalizado: no se ha cambiado ninguna palabra",
-DlgSpellOneChange : "Control finalizado: se ha cambiado una palabra",
-DlgSpellManyChanges : "Control finalizado: se ha cambiado %1 palabras",
-
-IeSpellDownload : "Módulo de Control de Ortografía no instalado. ¿Desea descargarlo ahora?",
-
-// Button Dialog
-DlgButtonText : "Texto (Valor)",
-DlgButtonType : "Tipo",
-DlgButtonTypeBtn : "Boton",
-DlgButtonTypeSbm : "Enviar",
-DlgButtonTypeRst : "Reestablecer",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nombre",
-DlgCheckboxValue : "Valor",
-DlgCheckboxSelected : "Seleccionado",
-
-// Form Dialog
-DlgFormName : "Nombre",
-DlgFormAction : "Acción",
-DlgFormMethod : "Método",
-
-// Select Field Dialog
-DlgSelectName : "Nombre",
-DlgSelectValue : "Valor",
-DlgSelectSize : "Tamaño",
-DlgSelectLines : "Lineas",
-DlgSelectChkMulti : "Permitir múltiple selección",
-DlgSelectOpAvail : "Opciones disponibles",
-DlgSelectOpText : "Texto",
-DlgSelectOpValue : "Valor",
-DlgSelectBtnAdd : "Agregar",
-DlgSelectBtnModify : "Modificar",
-DlgSelectBtnUp : "Subir",
-DlgSelectBtnDown : "Bajar",
-DlgSelectBtnSetValue : "Establecer como predeterminado",
-DlgSelectBtnDelete : "Eliminar",
-
-// Textarea Dialog
-DlgTextareaName : "Nombre",
-DlgTextareaCols : "Columnas",
-DlgTextareaRows : "Filas",
-
-// Text Field Dialog
-DlgTextName : "Nombre",
-DlgTextValue : "Valor",
-DlgTextCharWidth : "Caracteres de ancho",
-DlgTextMaxChars : "Máximo caracteres",
-DlgTextType : "Tipo",
-DlgTextTypeText : "Texto",
-DlgTextTypePass : "Contraseña",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nombre",
-DlgHiddenValue : "Valor",
-
-// Bulleted List Dialog
-BulletedListProp : "Propiedades de Viñetas",
-NumberedListProp : "Propiedades de Numeraciones",
-DlgLstStart : "Inicio",
-DlgLstType : "Tipo",
-DlgLstTypeCircle : "Círculo",
-DlgLstTypeDisc : "Disco",
-DlgLstTypeSquare : "Cuadrado",
-DlgLstTypeNumbers : "Números (1, 2, 3)",
-DlgLstTypeLCase : "letras en minúsculas (a, b, c)",
-DlgLstTypeUCase : "letras en mayúsculas (A, B, C)",
-DlgLstTypeSRoman : "Números Romanos (i, ii, iii)",
-DlgLstTypeLRoman : "Números Romanos (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Fondo",
-DlgDocColorsTab : "Colores y Márgenes",
-DlgDocMetaTab : "Meta Información",
-
-DlgDocPageTitle : "Título de Página",
-DlgDocLangDir : "Orientación de idioma",
-DlgDocLangDirLTR : "Izq. a Derecha (LTR)",
-DlgDocLangDirRTL : "Der. a Izquierda (RTL)",
-DlgDocLangCode : "Código de Idioma",
-DlgDocCharSet : "Codif. de Conjunto de Caracteres",
-DlgDocCharSetCE : "Centro Europeo",
-DlgDocCharSetCT : "Chino Tradicional (Big5)",
-DlgDocCharSetCR : "Cirílico",
-DlgDocCharSetGR : "Griego",
-DlgDocCharSetJP : "Japonés",
-DlgDocCharSetKR : "Coreano",
-DlgDocCharSetTR : "Turco",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Europeo occidental",
-DlgDocCharSetOther : "Otra Codificación",
-
-DlgDocDocType : "Encabezado de Tipo de Documento",
-DlgDocDocTypeOther : "Otro Encabezado",
-DlgDocIncXHTML : "Incluir Declaraciones XHTML",
-DlgDocBgColor : "Color de Fondo",
-DlgDocBgImage : "URL de Imagen de Fondo",
-DlgDocBgNoScroll : "Fondo sin rolido",
-DlgDocCText : "Texto",
-DlgDocCLink : "Vínculo",
-DlgDocCVisited : "Vínculo Visitado",
-DlgDocCActive : "Vínculo Activo",
-DlgDocMargins : "Márgenes de Página",
-DlgDocMaTop : "Tope",
-DlgDocMaLeft : "Izquierda",
-DlgDocMaRight : "Derecha",
-DlgDocMaBottom : "Pie",
-DlgDocMeIndex : "Claves de indexación del Documento (separados por comas)",
-DlgDocMeDescr : "Descripción del Documento",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Vista Previa",
-
-// Templates Dialog
-Templates : "Plantillas",
-DlgTemplatesTitle : "Contenido de Plantillas",
-DlgTemplatesSelMsg : "Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):",
-DlgTemplatesLoading : "Cargando lista de Plantillas. Por favor, aguarde...",
-DlgTemplatesNoTpl : "(No hay plantillas definidas)",
-DlgTemplatesReplace : "Reemplazar el contenido actual",
-
-// About Dialog
-DlgAboutAboutTab : "Acerca de",
-DlgAboutBrowserInfoTab : "Información de Navegador",
-DlgAboutLicenseTab : "Licencia",
-DlgAboutVersion : "versión",
-DlgAboutInfo : "Para mayor información por favor dirigirse a",
-
-// Div Dialog
-DlgDivGeneralTab : "General",
-DlgDivAdvancedTab : "Avanzado",
-DlgDivStyle : "Estilo",
-DlgDivInlineStyle : "Estilos CSS"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/et.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/et.js
deleted file mode 100644
index 290957ac3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/et.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Estonian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Voldi tööriistariba",
-ToolbarExpand : "Laienda tööriistariba",
-
-// Toolbar Items and Context Menu
-Save : "Salvesta",
-NewPage : "Uus leht",
-Preview : "Eelvaade",
-Cut : "Lõika",
-Copy : "Kopeeri",
-Paste : "Kleebi",
-PasteText : "Kleebi tavalise tekstina",
-PasteWord : "Kleebi Wordist",
-Print : "Prindi",
-SelectAll : "Vali kõik",
-RemoveFormat : "Eemalda vorming",
-InsertLinkLbl : "Link",
-InsertLink : "Sisesta link / Muuda linki",
-RemoveLink : "Eemalda link",
-VisitLink : "Open Link", //MISSING
-Anchor : "Sisesta ankur / Muuda ankrut",
-AnchorDelete : "Eemalda ankur",
-InsertImageLbl : "Pilt",
-InsertImage : "Sisesta pilt / Muuda pilti",
-InsertFlashLbl : "Flash",
-InsertFlash : "Sisesta flash / Muuda flashi",
-InsertTableLbl : "Tabel",
-InsertTable : "Sisesta tabel / Muuda tabelit",
-InsertLineLbl : "Joon",
-InsertLine : "Sisesta horisontaaljoon",
-InsertSpecialCharLbl: "Erimärgid",
-InsertSpecialChar : "Sisesta erimärk",
-InsertSmileyLbl : "Emotikon",
-InsertSmiley : "Sisesta emotikon",
-About : "FCKeditor teave",
-Bold : "Paks",
-Italic : "Kursiiv",
-Underline : "Allajoonitud",
-StrikeThrough : "Läbijoonitud",
-Subscript : "Allindeks",
-Superscript : "Ülaindeks",
-LeftJustify : "Vasakjoondus",
-CenterJustify : "Keskjoondus",
-RightJustify : "Paremjoondus",
-BlockJustify : "Rööpjoondus",
-DecreaseIndent : "Vähenda taanet",
-IncreaseIndent : "Suurenda taanet",
-Blockquote : "Blokktsitaat",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Võta tagasi",
-Redo : "Korda toimingut",
-NumberedListLbl : "Nummerdatud loetelu",
-NumberedList : "Sisesta/Eemalda nummerdatud loetelu",
-BulletedListLbl : "Punktiseeritud loetelu",
-BulletedList : "Sisesta/Eemalda punktiseeritud loetelu",
-ShowTableBorders : "Näita tabeli jooni",
-ShowDetails : "Näita üksikasju",
-Style : "Laad",
-FontFormat : "Vorming",
-Font : "Kiri",
-FontSize : "Suurus",
-TextColor : "Teksti värv",
-BGColor : "Tausta värv",
-Source : "Lähtekood",
-Find : "Otsi",
-Replace : "Asenda",
-SpellCheck : "Kontrolli õigekirja",
-UniversalKeyboard : "Universaalne klaviatuur",
-PageBreakLbl : "Lehepiir",
-PageBreak : "Sisesta lehevahetuskoht",
-
-Form : "Vorm",
-Checkbox : "Märkeruut",
-RadioButton : "Raadionupp",
-TextField : "Tekstilahter",
-Textarea : "Tekstiala",
-HiddenField : "Varjatud lahter",
-Button : "Nupp",
-SelectionField : "Valiklahter",
-ImageButton : "Piltnupp",
-
-FitWindow : "Maksimeeri redaktori mõõtmed",
-ShowBlocks : "Näita blokke",
-
-// Context Menu
-EditLink : "Muuda linki",
-CellCM : "Lahter",
-RowCM : "Rida",
-ColumnCM : "Veerg",
-InsertRowAfter : "Sisesta rida peale",
-InsertRowBefore : "Sisesta rida enne",
-DeleteRows : "Eemalda read",
-InsertColumnAfter : "Sisesta veerg peale",
-InsertColumnBefore : "Sisesta veerg enne",
-DeleteColumns : "Eemalda veerud",
-InsertCellAfter : "Sisesta lahter peale",
-InsertCellBefore : "Sisesta lahter enne",
-DeleteCells : "Eemalda lahtrid",
-MergeCells : "Ühenda lahtrid",
-MergeRight : "Ühenda paremale",
-MergeDown : "Ühenda alla",
-HorizontalSplitCell : "Poolita lahter horisontaalselt",
-VerticalSplitCell : "Poolita lahter vertikaalselt",
-TableDelete : "Kustuta tabel",
-CellProperties : "Lahtri atribuudid",
-TableProperties : "Tabeli atribuudid",
-ImageProperties : "Pildi atribuudid",
-FlashProperties : "Flash omadused",
-
-AnchorProp : "Ankru omadused",
-ButtonProp : "Nupu omadused",
-CheckboxProp : "Märkeruudu omadused",
-HiddenFieldProp : "Varjatud lahtri omadused",
-RadioButtonProp : "Raadionupu omadused",
-ImageButtonProp : "Piltnupu omadused",
-TextFieldProp : "Tekstilahtri omadused",
-SelectionFieldProp : "Valiklahtri omadused",
-TextareaProp : "Tekstiala omadused",
-FormProp : "Vormi omadused",
-
-FontFormats : "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6;Tavaline (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Töötlen XHTML'i. Palun oota...",
-Done : "Tehtud",
-PasteWordConfirm : "Tekst, mida soovid lisada paistab pärinevat Word'ist. Kas soovid seda enne kleepimist puhastada?",
-NotCompatiblePaste : "See käsk on saadaval ainult Internet Explorer versioon 5.5 või uuema puhul. Kas soovid kleepida ilma puhastamata?",
-UnknownToolbarItem : "Tundmatu tööriistarea üksus \"%1\"",
-UnknownCommand : "Tundmatu käsunimi \"%1\"",
-NotImplemented : "Käsku ei täidetud",
-UnknownToolbarSet : "Tööriistariba \"%1\" ei eksisteeri",
-NoActiveX : "Sinu veebisirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutusvõimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma veebisirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
-BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.",
-DialogBlocked : "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Loobu",
-DlgBtnClose : "Sulge",
-DlgBtnBrowseServer : "Sirvi serverit",
-DlgAdvancedTag : "Täpsemalt",
-DlgOpOther : "<Teine>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Palun sisesta URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<määramata>",
-DlgGenId : "Id",
-DlgGenLangDir : "Keele suund",
-DlgGenLangDirLtr : "Vasakult paremale (LTR)",
-DlgGenLangDirRtl : "Paremalt vasakule (RTL)",
-DlgGenLangCode : "Keele kood",
-DlgGenAccessKey : "Juurdepääsu võti",
-DlgGenName : "Nimi",
-DlgGenTabIndex : "Tab indeks",
-DlgGenLongDescr : "Pikk kirjeldus URL",
-DlgGenClass : "Stiilistiku klassid",
-DlgGenTitle : "Juhendav tiitel",
-DlgGenContType : "Juhendava sisu tüüp",
-DlgGenLinkCharset : "Lingitud ressurssi märgistik",
-DlgGenStyle : "Laad",
-
-// Image Dialog
-DlgImgTitle : "Pildi atribuudid",
-DlgImgInfoTab : "Pildi info",
-DlgImgBtnUpload : "Saada serverissee",
-DlgImgURL : "URL",
-DlgImgUpload : "Lae üles",
-DlgImgAlt : "Alternatiivne tekst",
-DlgImgWidth : "Laius",
-DlgImgHeight : "Kõrgus",
-DlgImgLockRatio : "Lukusta kuvasuhe",
-DlgBtnResetSize : "Lähtesta suurus",
-DlgImgBorder : "Joon",
-DlgImgHSpace : "H. vaheruum",
-DlgImgVSpace : "V. vaheruum",
-DlgImgAlign : "Joondus",
-DlgImgAlignLeft : "Vasak",
-DlgImgAlignAbsBottom: "Abs alla",
-DlgImgAlignAbsMiddle: "Abs keskele",
-DlgImgAlignBaseline : "Baasjoonele",
-DlgImgAlignBottom : "Alla",
-DlgImgAlignMiddle : "Keskele",
-DlgImgAlignRight : "Paremale",
-DlgImgAlignTextTop : "Tekstit üles",
-DlgImgAlignTop : "Üles",
-DlgImgPreview : "Eelvaade",
-DlgImgAlertUrl : "Palun kirjuta pildi URL",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash omadused",
-DlgFlashChkPlay : "Automaatne start ",
-DlgFlashChkLoop : "Korduv",
-DlgFlashChkMenu : "Võimalda flash menüü",
-DlgFlashScale : "Mastaap",
-DlgFlashScaleAll : "Näita kõike",
-DlgFlashScaleNoBorder : "Äärist ei ole",
-DlgFlashScaleFit : "Täpne sobivus",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Lingi info",
-DlgLnkTargetTab : "Sihtkoht",
-
-DlgLnkType : "Lingi tüüp",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ankur sellel lehel",
-DlgLnkTypeEMail : "E-post",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<muu>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Vali ankur",
-DlgLnkAnchorByName : "Ankru nime järgi",
-DlgLnkAnchorById : "Elemendi id järgi",
-DlgLnkNoAnchors : "(Selles dokumendis ei ole ankruid)",
-DlgLnkEMail : "E-posti aadress",
-DlgLnkEMailSubject : "Sõnumi teema",
-DlgLnkEMailBody : "Sõnumi tekst",
-DlgLnkUpload : "Lae üles",
-DlgLnkBtnUpload : "Saada serverisse",
-
-DlgLnkTarget : "Sihtkoht",
-DlgLnkTargetFrame : "<raam>",
-DlgLnkTargetPopup : "<hüpikaken>",
-DlgLnkTargetBlank : "Uus aken (_blank)",
-DlgLnkTargetParent : "Esivanem aken (_parent)",
-DlgLnkTargetSelf : "Sama aken (_self)",
-DlgLnkTargetTop : "Pealmine aken (_top)",
-DlgLnkTargetFrameName : "Sihtmärk raami nimi",
-DlgLnkPopWinName : "Hüpikakna nimi",
-DlgLnkPopWinFeat : "Hüpikakna omadused",
-DlgLnkPopResize : "Suurendatav",
-DlgLnkPopLocation : "Aadressiriba",
-DlgLnkPopMenu : "Menüüriba",
-DlgLnkPopScroll : "Kerimisribad",
-DlgLnkPopStatus : "Olekuriba",
-DlgLnkPopToolbar : "Tööriistariba",
-DlgLnkPopFullScrn : "Täisekraan (IE)",
-DlgLnkPopDependent : "Sõltuv (Netscape)",
-DlgLnkPopWidth : "Laius",
-DlgLnkPopHeight : "Kõrgus",
-DlgLnkPopLeft : "Vasak asukoht",
-DlgLnkPopTop : "Ülemine asukoht",
-
-DlnLnkMsgNoUrl : "Palun kirjuta lingi URL",
-DlnLnkMsgNoEMail : "Palun kirjuta E-Posti aadress",
-DlnLnkMsgNoAnchor : "Palun vali ankur",
-DlnLnkMsgInvPopName : "Hüpikakna nimi peab algama alfabeetilise tähega ja ei tohi sisaldada tühikuid",
-
-// Color Dialog
-DlgColorTitle : "Vali värv",
-DlgColorBtnClear : "Tühjenda",
-DlgColorHighlight : "Märgi",
-DlgColorSelected : "Valitud",
-
-// Smiley Dialog
-DlgSmileyTitle : "Sisesta emotikon",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Vali erimärk",
-
-// Table Dialog
-DlgTableTitle : "Tabeli atribuudid",
-DlgTableRows : "Read",
-DlgTableColumns : "Veerud",
-DlgTableBorder : "Joone suurus",
-DlgTableAlign : "Joondus",
-DlgTableAlignNotSet : "<Määramata>",
-DlgTableAlignLeft : "Vasak",
-DlgTableAlignCenter : "Kesk",
-DlgTableAlignRight : "Parem",
-DlgTableWidth : "Laius",
-DlgTableWidthPx : "pikslit",
-DlgTableWidthPc : "protsenti",
-DlgTableHeight : "Kõrgus",
-DlgTableCellSpace : "Lahtri vahe",
-DlgTableCellPad : "Lahtri täidis",
-DlgTableCaption : "Tabeli tiitel",
-DlgTableSummary : "Kokkuvõte",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Lahtri atribuudid",
-DlgCellWidth : "Laius",
-DlgCellWidthPx : "pikslit",
-DlgCellWidthPc : "protsenti",
-DlgCellHeight : "Kõrgus",
-DlgCellWordWrap : "Sõna ülekanne",
-DlgCellWordWrapNotSet : "<Määramata>",
-DlgCellWordWrapYes : "Jah",
-DlgCellWordWrapNo : "Ei",
-DlgCellHorAlign : "Horisontaaljoondus",
-DlgCellHorAlignNotSet : "<Määramata>",
-DlgCellHorAlignLeft : "Vasak",
-DlgCellHorAlignCenter : "Kesk",
-DlgCellHorAlignRight: "Parem",
-DlgCellVerAlign : "Vertikaaljoondus",
-DlgCellVerAlignNotSet : "<Määramata>",
-DlgCellVerAlignTop : "Üles",
-DlgCellVerAlignMiddle : "Keskele",
-DlgCellVerAlignBottom : "Alla",
-DlgCellVerAlignBaseline : "Baasjoonele",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Reaulatus",
-DlgCellCollSpan : "Veeruulatus",
-DlgCellBackColor : "Tausta värv",
-DlgCellBorderColor : "Joone värv",
-DlgCellBtnSelect : "Vali...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Otsi ja asenda",
-
-// Find Dialog
-DlgFindTitle : "Otsi",
-DlgFindFindBtn : "Otsi",
-DlgFindNotFoundMsg : "Valitud teksti ei leitud.",
-
-// Replace Dialog
-DlgReplaceTitle : "Asenda",
-DlgReplaceFindLbl : "Leia mida:",
-DlgReplaceReplaceLbl : "Asenda millega:",
-DlgReplaceCaseChk : "Erista suur- ja väiketähti",
-DlgReplaceReplaceBtn : "Asenda",
-DlgReplaceReplAllBtn : "Asenda kõik",
-DlgReplaceWordChk : "Otsi terviklike sõnu",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).",
-PasteErrorCopy : "Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).",
-
-PasteAsText : "Kleebi tavalise tekstina",
-PasteFromWord : "Kleebi Wordist",
-
-DlgPasteMsg2 : "Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.",
-DlgPasteSec : "Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.",
-DlgPasteIgnoreFont : "Ignoreeri kirja definitsioone",
-DlgPasteRemoveStyles : "Eemalda stiilide definitsioonid",
-
-// Color Picker
-ColorAutomatic : "Automaatne",
-ColorMoreColors : "Rohkem värve...",
-
-// Document Properties
-DocProps : "Dokumendi omadused",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ankru omadused",
-DlgAnchorName : "Ankru nimi",
-DlgAnchorErrorName : "Palun sisest ankru nimi",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Puudub sõnastikust",
-DlgSpellChangeTo : "Muuda",
-DlgSpellBtnIgnore : "Ignoreeri",
-DlgSpellBtnIgnoreAll : "Ignoreeri kõiki",
-DlgSpellBtnReplace : "Asenda",
-DlgSpellBtnReplaceAll : "Asenda kõik",
-DlgSpellBtnUndo : "Võta tagasi",
-DlgSpellNoSuggestions : "- Soovitused puuduvad -",
-DlgSpellProgress : "Toimub õigekirja kontroll...",
-DlgSpellNoMispell : "Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud",
-DlgSpellNoChanges : "Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud",
-DlgSpellOneChange : "Õigekirja kontroll sooritatud: üks sõna muudeti",
-DlgSpellManyChanges : "Õigekirja kontroll sooritatud: %1 sõna muudetud",
-
-IeSpellDownload : "Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?",
-
-// Button Dialog
-DlgButtonText : "Tekst (väärtus)",
-DlgButtonType : "Tüüp",
-DlgButtonTypeBtn : "Nupp",
-DlgButtonTypeSbm : "Saada",
-DlgButtonTypeRst : "Lähtesta",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nimi",
-DlgCheckboxValue : "Väärtus",
-DlgCheckboxSelected : "Valitud",
-
-// Form Dialog
-DlgFormName : "Nimi",
-DlgFormAction : "Toiming",
-DlgFormMethod : "Meetod",
-
-// Select Field Dialog
-DlgSelectName : "Nimi",
-DlgSelectValue : "Väärtus",
-DlgSelectSize : "Suurus",
-DlgSelectLines : "ridu",
-DlgSelectChkMulti : "Võimalda mitu valikut",
-DlgSelectOpAvail : "Võimalikud valikud",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Väärtus",
-DlgSelectBtnAdd : "Lisa",
-DlgSelectBtnModify : "Muuda",
-DlgSelectBtnUp : "Üles",
-DlgSelectBtnDown : "Alla",
-DlgSelectBtnSetValue : "Sea valitud olekuna",
-DlgSelectBtnDelete : "Kustuta",
-
-// Textarea Dialog
-DlgTextareaName : "Nimi",
-DlgTextareaCols : "Veerge",
-DlgTextareaRows : "Ridu",
-
-// Text Field Dialog
-DlgTextName : "Nimi",
-DlgTextValue : "Väärtus",
-DlgTextCharWidth : "Laius (tähemärkides)",
-DlgTextMaxChars : "Maksimaalselt tähemärke",
-DlgTextType : "Tüüp",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Parool",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nimi",
-DlgHiddenValue : "Väärtus",
-
-// Bulleted List Dialog
-BulletedListProp : "Täpitud loetelu omadused",
-NumberedListProp : "Nummerdatud loetelu omadused",
-DlgLstStart : "Alusta",
-DlgLstType : "Tüüp",
-DlgLstTypeCircle : "Ring",
-DlgLstTypeDisc : "Ketas",
-DlgLstTypeSquare : "Ruut",
-DlgLstTypeNumbers : "Numbrid (1, 2, 3)",
-DlgLstTypeLCase : "Väiketähed (a, b, c)",
-DlgLstTypeUCase : "Suurtähed (A, B, C)",
-DlgLstTypeSRoman : "Väiksed Rooma numbrid (i, ii, iii)",
-DlgLstTypeLRoman : "Suured Rooma numbrid (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Üldine",
-DlgDocBackTab : "Taust",
-DlgDocColorsTab : "Värvid ja veerised",
-DlgDocMetaTab : "Meta andmed",
-
-DlgDocPageTitle : "Lehekülje tiitel",
-DlgDocLangDir : "Kirja suund",
-DlgDocLangDirLTR : "Vasakult paremale (LTR)",
-DlgDocLangDirRTL : "Paremalt vasakule (RTL)",
-DlgDocLangCode : "Keele kood",
-DlgDocCharSet : "Märgistiku kodeering",
-DlgDocCharSetCE : "Kesk-Euroopa",
-DlgDocCharSetCT : "Hiina traditsiooniline (Big5)",
-DlgDocCharSetCR : "Kirillisa",
-DlgDocCharSetGR : "Kreeka",
-DlgDocCharSetJP : "Jaapani",
-DlgDocCharSetKR : "Korea",
-DlgDocCharSetTR : "Türgi",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Lääne-Euroopa",
-DlgDocCharSetOther : "Ülejäänud märgistike kodeeringud",
-
-DlgDocDocType : "Dokumendi tüüppäis",
-DlgDocDocTypeOther : "Teised dokumendi tüüppäised",
-DlgDocIncXHTML : "Arva kaasa XHTML deklaratsioonid",
-DlgDocBgColor : "Taustavärv",
-DlgDocBgImage : "Taustapildi URL",
-DlgDocBgNoScroll : "Mittekeritav tagataust",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Külastatud link",
-DlgDocCActive : "Aktiivne link",
-DlgDocMargins : "Lehekülje äärised",
-DlgDocMaTop : "Ülaserv",
-DlgDocMaLeft : "Vasakserv",
-DlgDocMaRight : "Paremserv",
-DlgDocMaBottom : "Alaserv",
-DlgDocMeIndex : "Dokumendi võtmesõnad (eraldatud komadega)",
-DlgDocMeDescr : "Dokumendi kirjeldus",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Autoriõigus",
-DlgDocPreview : "Eelvaade",
-
-// Templates Dialog
-Templates : "Å abloon",
-DlgTemplatesTitle : "Sisu šabloonid",
-DlgTemplatesSelMsg : "Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):",
-DlgTemplatesLoading : "Laen šabloonide nimekirja. Palun oota...",
-DlgTemplatesNoTpl : "(Ühtegi šablooni ei ole defineeritud)",
-DlgTemplatesReplace : "Asenda tegelik sisu",
-
-// About Dialog
-DlgAboutAboutTab : "Teave",
-DlgAboutBrowserInfoTab : "Veebisirvija info",
-DlgAboutLicenseTab : "Litsents",
-DlgAboutVersion : "versioon",
-DlgAboutInfo : "Täpsema info saamiseks mine",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eu.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eu.js
deleted file mode 100644
index e335a20f4..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/eu.js
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Basque language file.
- * Euskara hizkuntza fitxategia.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Estutu Tresna Barra",
-ToolbarExpand : "Hedatu Tresna Barra",
-
-// Toolbar Items and Context Menu
-Save : "Gorde",
-NewPage : "Orrialde Berria",
-Preview : "Aurrebista",
-Cut : "Ebaki",
-Copy : "Kopiatu",
-Paste : "Itsatsi",
-PasteText : "Itsatsi testu bezala",
-PasteWord : "Itsatsi Word-etik",
-Print : "Inprimatu",
-SelectAll : "Hautatu dena",
-RemoveFormat : "Kendu Formatua",
-InsertLinkLbl : "Esteka",
-InsertLink : "Txertatu/Editatu Esteka",
-RemoveLink : "Kendu Esteka",
-VisitLink : "Ireki Esteka",
-Anchor : "Aingura",
-AnchorDelete : "Ezabatu Aingura",
-InsertImageLbl : "Irudia",
-InsertImage : "Txertatu/Editatu Irudia",
-InsertFlashLbl : "Flasha",
-InsertFlash : "Txertatu/Editatu Flasha",
-InsertTableLbl : "Taula",
-InsertTable : "Txertatu/Editatu Taula",
-InsertLineLbl : "Lerroa",
-InsertLine : "Txertatu Marra Horizontala",
-InsertSpecialCharLbl: "Karaktere Berezia",
-InsertSpecialChar : "Txertatu Karaktere Berezia",
-InsertSmileyLbl : "Aurpegierak",
-InsertSmiley : "Txertatu Aurpegierak",
-About : "FCKeditor-ri buruz",
-Bold : "Lodia",
-Italic : "Etzana",
-Underline : "Azpimarratu",
-StrikeThrough : "Marratua",
-Subscript : "Azpi-indize",
-Superscript : "Goi-indize",
-LeftJustify : "Lerrokatu Ezkerrean",
-CenterJustify : "Lerrokatu Erdian",
-RightJustify : "Lerrokatu Eskuman",
-BlockJustify : "Justifikatu",
-DecreaseIndent : "Txikitu Koska",
-IncreaseIndent : "Handitu Koska",
-Blockquote : "Aipamen blokea",
-CreateDiv : "Sortu Div Edukitzailea",
-EditDiv : "Editatu Div Edukitzailea",
-DeleteDiv : "Ezabatu Div Edukitzailea",
-Undo : "Desegin",
-Redo : "Berregin",
-NumberedListLbl : "Zenbakidun Zerrenda",
-NumberedList : "Txertatu/Kendu Zenbakidun zerrenda",
-BulletedListLbl : "Buletdun Zerrenda",
-BulletedList : "Txertatu/Kendu Buletdun zerrenda",
-ShowTableBorders : "Erakutsi Taularen Ertzak",
-ShowDetails : "Erakutsi Xehetasunak",
-Style : "Estiloa",
-FontFormat : "Formatua",
-Font : "Letra-tipoa",
-FontSize : "Tamaina",
-TextColor : "Testu Kolorea",
-BGColor : "Atzeko kolorea",
-Source : "HTML Iturburua",
-Find : "Bilatu",
-Replace : "Ordezkatu",
-SpellCheck : "Ortografia",
-UniversalKeyboard : "Teklatu Unibertsala",
-PageBreakLbl : "Orrialde-jauzia",
-PageBreak : "Txertatu Orrialde-jauzia",
-
-Form : "Formularioa",
-Checkbox : "Kontrol-laukia",
-RadioButton : "Aukera-botoia",
-TextField : "Testu Eremua",
-Textarea : "Testu-area",
-HiddenField : "Ezkutuko Eremua",
-Button : "Botoia",
-SelectionField : "Hautespen Eremua",
-ImageButton : "Irudi Botoia",
-
-FitWindow : "Maximizatu editorearen tamaina",
-ShowBlocks : "Blokeak erakutsi",
-
-// Context Menu
-EditLink : "Aldatu Esteka",
-CellCM : "Gelaxka",
-RowCM : "Errenkada",
-ColumnCM : "Zutabea",
-InsertRowAfter : "Txertatu Lerroa Ostean",
-InsertRowBefore : "Txertatu Lerroa Aurretik",
-DeleteRows : "Ezabatu Errenkadak",
-InsertColumnAfter : "Txertatu Zutabea Ostean",
-InsertColumnBefore : "Txertatu Zutabea Aurretik",
-DeleteColumns : "Ezabatu Zutabeak",
-InsertCellAfter : "Txertatu Gelaxka Ostean",
-InsertCellBefore : "Txertatu Gelaxka Aurretik",
-DeleteCells : "Kendu Gelaxkak",
-MergeCells : "Batu Gelaxkak",
-MergeRight : "Elkartu Eskumara",
-MergeDown : "Elkartu Behera",
-HorizontalSplitCell : "Banatu Gelaxkak Horizontalki",
-VerticalSplitCell : "Banatu Gelaxkak Bertikalki",
-TableDelete : "Ezabatu Taula",
-CellProperties : "Gelaxkaren Ezaugarriak",
-TableProperties : "Taularen Ezaugarriak",
-ImageProperties : "Irudiaren Ezaugarriak",
-FlashProperties : "Flasharen Ezaugarriak",
-
-AnchorProp : "Ainguraren Ezaugarriak",
-ButtonProp : "Botoiaren Ezaugarriak",
-CheckboxProp : "Kontrol-laukiko Ezaugarriak",
-HiddenFieldProp : "Ezkutuko Eremuaren Ezaugarriak",
-RadioButtonProp : "Aukera-botoiaren Ezaugarriak",
-ImageButtonProp : "Irudi Botoiaren Ezaugarriak",
-TextFieldProp : "Testu Eremuaren Ezaugarriak",
-SelectionFieldProp : "Hautespen Eremuaren Ezaugarriak",
-TextareaProp : "Testu-arearen Ezaugarriak",
-FormProp : "Formularioaren Ezaugarriak",
-
-FontFormats : "Arrunta;Formateatua;Helbidea;Izenburua 1;Izenburua 2;Izenburua 3;Izenburua 4;Izenburua 5;Izenburua 6;Paragrafoa (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML Prozesatzen. Itxaron mesedez...",
-Done : "Eginda",
-PasteWordConfirm : "Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?",
-NotCompatiblePaste : "Komando hau Internet Explorer 5.5 bertsiorako edo ondorengoentzako erabilgarria dago. Garbitu gabe itsatsi nahi duzu?",
-UnknownToolbarItem : "Ataza barrako elementu ezezaguna \"%1\"",
-UnknownCommand : "Komando izen ezezaguna \"%1\"",
-NotImplemented : "Komando ez inplementatua",
-UnknownToolbarSet : "Ataza barra \"%1\" taldea ez da existitzen",
-NoActiveX : "Zure nabigatzailearen segurtasun hobespenak editore honen zenbait ezaugarri mugatu ditzake. \"ActiveX kontrolak eta pluginak\" aktibatu beharko zenituzke, bestela erroreak eta ezaugarrietan mugak egon daitezke.",
-BrowseServerBlocked : "Baliabideen arakatzailea ezin da ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
-DialogBlocked : "Ezin da elkarrizketa-leihoa ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
-VisitLinkBlocked : "Ezin da leiho berri bat ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
-
-// Dialogs
-DlgBtnOK : "Ados",
-DlgBtnCancel : "Utzi",
-DlgBtnClose : "Itxi",
-DlgBtnBrowseServer : "Zerbitzaria arakatu",
-DlgAdvancedTag : "Aurreratua",
-DlgOpOther : "<Bestelakoak>",
-DlgInfoTab : "Informazioa",
-DlgAlertUrl : "Mesedez URLa idatzi ezazu",
-
-// General Dialogs Labels
-DlgGenNotSet : "<Ezarri gabe>",
-DlgGenId : "Id",
-DlgGenLangDir : "Hizkuntzaren Norabidea",
-DlgGenLangDirLtr : "Ezkerretik Eskumara(LTR)",
-DlgGenLangDirRtl : "Eskumatik Ezkerrera (RTL)",
-DlgGenLangCode : "Hizkuntza Kodea",
-DlgGenAccessKey : "Sarbide-gakoa",
-DlgGenName : "Izena",
-DlgGenTabIndex : "Tabulazio Indizea",
-DlgGenLongDescr : "URL Deskribapen Luzea",
-DlgGenClass : "Estilo-orriko Klaseak",
-DlgGenTitle : "Izenburua",
-DlgGenContType : "Eduki Mota (Content Type)",
-DlgGenLinkCharset : "Estekatutako Karaktere Multzoa",
-DlgGenStyle : "Estiloa",
-
-// Image Dialog
-DlgImgTitle : "Irudi Ezaugarriak",
-DlgImgInfoTab : "Irudi informazioa",
-DlgImgBtnUpload : "Zerbitzarira bidalia",
-DlgImgURL : "URL",
-DlgImgUpload : "Gora Kargatu",
-DlgImgAlt : "Ordezko Testua",
-DlgImgWidth : "Zabalera",
-DlgImgHeight : "Altuera",
-DlgImgLockRatio : "Erlazioa Blokeatu",
-DlgBtnResetSize : "Tamaina Berrezarri",
-DlgImgBorder : "Ertza",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Lerrokatu",
-DlgImgAlignLeft : "Ezkerrera",
-DlgImgAlignAbsBottom: "Abs Behean",
-DlgImgAlignAbsMiddle: "Abs Erdian",
-DlgImgAlignBaseline : "Oinan",
-DlgImgAlignBottom : "Behean",
-DlgImgAlignMiddle : "Erdian",
-DlgImgAlignRight : "Eskuman",
-DlgImgAlignTextTop : "Testua Goian",
-DlgImgAlignTop : "Goian",
-DlgImgPreview : "Aurrebista",
-DlgImgAlertUrl : "Mesedez Irudiaren URLa idatzi",
-DlgImgLinkTab : "Esteka",
-
-// Flash Dialog
-DlgFlashTitle : "Flasharen Ezaugarriak",
-DlgFlashChkPlay : "Automatikoki Erreproduzitu",
-DlgFlashChkLoop : "Begizta",
-DlgFlashChkMenu : "Flasharen Menua Gaitu",
-DlgFlashScale : "Eskalatu",
-DlgFlashScaleAll : "Dena erakutsi",
-DlgFlashScaleNoBorder : "Ertzik gabe",
-DlgFlashScaleFit : "Doitu",
-
-// Link Dialog
-DlgLnkWindowTitle : "Esteka",
-DlgLnkInfoTab : "Estekaren Informazioa",
-DlgLnkTargetTab : "Helburua",
-
-DlgLnkType : "Esteka Mota",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Aingura orrialde honetan",
-DlgLnkTypeEMail : "ePosta",
-DlgLnkProto : "Protokoloa",
-DlgLnkProtoOther : "<Beste batzuk>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Aingura bat hautatu",
-DlgLnkAnchorByName : "Aingura izenagatik",
-DlgLnkAnchorById : "Elementuaren ID-gatik",
-DlgLnkNoAnchors : "(Ez daude aingurak eskuragarri dokumentuan)",
-DlgLnkEMail : "ePosta Helbidea",
-DlgLnkEMailSubject : "Mezuaren Gaia",
-DlgLnkEMailBody : "Mezuaren Gorputza",
-DlgLnkUpload : "Gora kargatu",
-DlgLnkBtnUpload : "Zerbitzarira bidali",
-
-DlgLnkTarget : "Target (Helburua)",
-DlgLnkTargetFrame : "<marko>",
-DlgLnkTargetPopup : "<popup leihoa>",
-DlgLnkTargetBlank : "Leiho Berria (_blank)",
-DlgLnkTargetParent : "Leiho Gurasoa (_parent)",
-DlgLnkTargetSelf : "Leiho Berdina (_self)",
-DlgLnkTargetTop : "Goiko Leihoa (_top)",
-DlgLnkTargetFrameName : "Marko Helburuaren Izena",
-DlgLnkPopWinName : "Popup Leihoaren Izena",
-DlgLnkPopWinFeat : "Popup Leihoaren Ezaugarriak",
-DlgLnkPopResize : "Tamaina Aldakorra",
-DlgLnkPopLocation : "Kokaleku Barra",
-DlgLnkPopMenu : "Menu Barra",
-DlgLnkPopScroll : "Korritze Barrak",
-DlgLnkPopStatus : "Egoera Barra",
-DlgLnkPopToolbar : "Tresna Barra",
-DlgLnkPopFullScrn : "Pantaila Osoa (IE)",
-DlgLnkPopDependent : "Menpekoa (Netscape)",
-DlgLnkPopWidth : "Zabalera",
-DlgLnkPopHeight : "Altuera",
-DlgLnkPopLeft : "Ezkerreko Posizioa",
-DlgLnkPopTop : "Goiko Posizioa",
-
-DlnLnkMsgNoUrl : "Mesedez URL esteka idatzi",
-DlnLnkMsgNoEMail : "Mesedez ePosta helbidea idatzi",
-DlnLnkMsgNoAnchor : "Mesedez aingura bat aukeratu",
-DlnLnkMsgInvPopName : "Popup leihoaren izenak karaktere alfabetiko batekin hasi behar du eta eta ezin du zuriunerik izan",
-
-// Color Dialog
-DlgColorTitle : "Kolore Aukeraketa",
-DlgColorBtnClear : "Garbitu",
-DlgColorHighlight : "Nabarmendu",
-DlgColorSelected : "Aukeratuta",
-
-// Smiley Dialog
-DlgSmileyTitle : "Aurpegiera Sartu",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Karaktere Berezia Aukeratu",
-
-// Table Dialog
-DlgTableTitle : "Taularen Ezaugarriak",
-DlgTableRows : "Lerroak",
-DlgTableColumns : "Zutabeak",
-DlgTableBorder : "Ertzaren Zabalera",
-DlgTableAlign : "Lerrokatu",
-DlgTableAlignNotSet : "<Ezarri gabe>",
-DlgTableAlignLeft : "Ezkerrean",
-DlgTableAlignCenter : "Erdian",
-DlgTableAlignRight : "Eskuman",
-DlgTableWidth : "Zabalera",
-DlgTableWidthPx : "pixel",
-DlgTableWidthPc : "ehuneko",
-DlgTableHeight : "Altuera",
-DlgTableCellSpace : "Gelaxka arteko tartea",
-DlgTableCellPad : "Gelaxken betegarria",
-DlgTableCaption : "Epigrafea",
-DlgTableSummary : "Laburpena",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Gelaxken Ezaugarriak",
-DlgCellWidth : "Zabalera",
-DlgCellWidthPx : "pixel",
-DlgCellWidthPc : "ehuneko",
-DlgCellHeight : "Altuera",
-DlgCellWordWrap : "Itzulbira",
-DlgCellWordWrapNotSet : "<Ezarri gabe>",
-DlgCellWordWrapYes : "Bai",
-DlgCellWordWrapNo : "Ez",
-DlgCellHorAlign : "Lerrokatu Horizontalki",
-DlgCellHorAlignNotSet : "<Ezarri gabe>",
-DlgCellHorAlignLeft : "Ezkerrean",
-DlgCellHorAlignCenter : "Erdian",
-DlgCellHorAlignRight: "Eskuman",
-DlgCellVerAlign : "Lerrokatu Bertikalki",
-DlgCellVerAlignNotSet : "<Ezarri gabe>",
-DlgCellVerAlignTop : "Goian",
-DlgCellVerAlignMiddle : "Erdian",
-DlgCellVerAlignBottom : "Behean",
-DlgCellVerAlignBaseline : "Oinean",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Lerroak Hedatu",
-DlgCellCollSpan : "Zutabeak Hedatu",
-DlgCellBackColor : "Atzeko Kolorea",
-DlgCellBorderColor : "Ertzako Kolorea",
-DlgCellBtnSelect : "Aukeratu...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Bilatu eta Ordeztu",
-
-// Find Dialog
-DlgFindTitle : "Bilaketa",
-DlgFindFindBtn : "Bilatu",
-DlgFindNotFoundMsg : "Idatzitako testua ez da topatu.",
-
-// Replace Dialog
-DlgReplaceTitle : "Ordeztu",
-DlgReplaceFindLbl : "Zer bilatu:",
-DlgReplaceReplaceLbl : "Zerekin ordeztu:",
-DlgReplaceCaseChk : "Maiuskula/minuskula",
-DlgReplaceReplaceBtn : "Ordeztu",
-DlgReplaceReplAllBtn : "Ordeztu Guztiak",
-DlgReplaceWordChk : "Esaldi osoa bilatu",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).",
-PasteErrorCopy : "Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).",
-
-PasteAsText : "Testu Arrunta bezala Itsatsi",
-PasteFromWord : "Word-etik itsatsi",
-
-DlgPasteMsg2 : "Mesedez teklatua erabilita (<STRONG>Ctrl+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.",
-DlgPasteSec : "Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.",
-DlgPasteIgnoreFont : "Letra Motaren definizioa ezikusi",
-DlgPasteRemoveStyles : "Estilo definizioak kendu",
-
-// Color Picker
-ColorAutomatic : "Automatikoa",
-ColorMoreColors : "Kolore gehiago...",
-
-// Document Properties
-DocProps : "Dokumentuaren Ezarpenak",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ainguraren Ezaugarriak",
-DlgAnchorName : "Ainguraren Izena",
-DlgAnchorErrorName : "Idatzi ainguraren izena",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ez dago hiztegian",
-DlgSpellChangeTo : "Honekin ordezkatu",
-DlgSpellBtnIgnore : "Ezikusi",
-DlgSpellBtnIgnoreAll : "Denak Ezikusi",
-DlgSpellBtnReplace : "Ordezkatu",
-DlgSpellBtnReplaceAll : "Denak Ordezkatu",
-DlgSpellBtnUndo : "Desegin",
-DlgSpellNoSuggestions : "- Iradokizunik ez -",
-DlgSpellProgress : "Zuzenketa ortografikoa martxan...",
-DlgSpellNoMispell : "Zuzenketa ortografikoa bukatuta: Akatsik ez",
-DlgSpellNoChanges : "Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu",
-DlgSpellOneChange : "Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da",
-DlgSpellManyChanges : "Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira",
-
-IeSpellDownload : "Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?",
-
-// Button Dialog
-DlgButtonText : "Testua (Balorea)",
-DlgButtonType : "Mota",
-DlgButtonTypeBtn : "Botoia",
-DlgButtonTypeSbm : "Bidali",
-DlgButtonTypeRst : "Garbitu",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Izena",
-DlgCheckboxValue : "Balorea",
-DlgCheckboxSelected : "Hautatuta",
-
-// Form Dialog
-DlgFormName : "Izena",
-DlgFormAction : "Ekintza",
-DlgFormMethod : "Metodoa",
-
-// Select Field Dialog
-DlgSelectName : "Izena",
-DlgSelectValue : "Balorea",
-DlgSelectSize : "Tamaina",
-DlgSelectLines : "lerro kopurura",
-DlgSelectChkMulti : "Hautaketa anitzak baimendu",
-DlgSelectOpAvail : "Aukera Eskuragarriak",
-DlgSelectOpText : "Testua",
-DlgSelectOpValue : "Balorea",
-DlgSelectBtnAdd : "Gehitu",
-DlgSelectBtnModify : "Aldatu",
-DlgSelectBtnUp : "Gora",
-DlgSelectBtnDown : "Behera",
-DlgSelectBtnSetValue : "Aukeratutako balorea ezarri",
-DlgSelectBtnDelete : "Ezabatu",
-
-// Textarea Dialog
-DlgTextareaName : "Izena",
-DlgTextareaCols : "Zutabeak",
-DlgTextareaRows : "Lerroak",
-
-// Text Field Dialog
-DlgTextName : "Izena",
-DlgTextValue : "Balorea",
-DlgTextCharWidth : "Zabalera",
-DlgTextMaxChars : "Zenbat karaktere gehienez",
-DlgTextType : "Mota",
-DlgTextTypeText : "Testua",
-DlgTextTypePass : "Pasahitza",
-
-// Hidden Field Dialog
-DlgHiddenName : "Izena",
-DlgHiddenValue : "Balorea",
-
-// Bulleted List Dialog
-BulletedListProp : "Buletdun Zerrendaren Ezarpenak",
-NumberedListProp : "Zenbakidun Zerrendaren Ezarpenak",
-DlgLstStart : "Hasiera",
-DlgLstType : "Mota",
-DlgLstTypeCircle : "Zirkulua",
-DlgLstTypeDisc : "Diskoa",
-DlgLstTypeSquare : "Karratua",
-DlgLstTypeNumbers : "Zenbakiak (1, 2, 3)",
-DlgLstTypeLCase : "Letra xeheak (a, b, c)",
-DlgLstTypeUCase : "Letra larriak (A, B, C)",
-DlgLstTypeSRoman : "Erromatar zenbaki zeheak (i, ii, iii)",
-DlgLstTypeLRoman : "Erromatar zenbaki larriak (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Orokorra",
-DlgDocBackTab : "Atzealdea",
-DlgDocColorsTab : "Koloreak eta Marjinak",
-DlgDocMetaTab : "Meta Informazioa",
-
-DlgDocPageTitle : "Orriaren Izenburua",
-DlgDocLangDir : "Hizkuntzaren Norabidea",
-DlgDocLangDirLTR : "Ezkerretik eskumara (LTR)",
-DlgDocLangDirRTL : "Eskumatik ezkerrera (RTL)",
-DlgDocLangCode : "Hizkuntzaren Kodea",
-DlgDocCharSet : "Karaktere Multzoaren Kodeketa",
-DlgDocCharSetCE : "Erdialdeko Europakoa",
-DlgDocCharSetCT : "Txinatar Tradizionala (Big5)",
-DlgDocCharSetCR : "Zirilikoa",
-DlgDocCharSetGR : "Grekoa",
-DlgDocCharSetJP : "Japoniarra",
-DlgDocCharSetKR : "Korearra",
-DlgDocCharSetTR : "Turkiarra",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Mendebaldeko Europakoa",
-DlgDocCharSetOther : "Beste Karaktere Multzoko Kodeketa",
-
-DlgDocDocType : "Document Type Goiburua",
-DlgDocDocTypeOther : "Beste Document Type Goiburua",
-DlgDocIncXHTML : "XHTML Ezarpenak",
-DlgDocBgColor : "Atzeko Kolorea",
-DlgDocBgImage : "Atzeko Irudiaren URL-a",
-DlgDocBgNoScroll : "Korritze gabeko Atzealdea",
-DlgDocCText : "Testua",
-DlgDocCLink : "Estekak",
-DlgDocCVisited : "Bisitatutako Estekak",
-DlgDocCActive : "Esteka Aktiboa",
-DlgDocMargins : "Orrialdearen marjinak",
-DlgDocMaTop : "Goian",
-DlgDocMaLeft : "Ezkerrean",
-DlgDocMaRight : "Eskuman",
-DlgDocMaBottom : "Behean",
-DlgDocMeIndex : "Dokumentuaren Gako-hitzak (komarekin bananduta)",
-DlgDocMeDescr : "Dokumentuaren Deskribapena",
-DlgDocMeAuthor : "Egilea",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Aurrebista",
-
-// Templates Dialog
-Templates : "Txantiloiak",
-DlgTemplatesTitle : "Eduki Txantiloiak",
-DlgTemplatesSelMsg : "Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):",
-DlgTemplatesLoading : "Txantiloiak kargatzen. Itxaron mesedez...",
-DlgTemplatesNoTpl : "(Ez dago definitutako txantiloirik)",
-DlgTemplatesReplace : "Ordeztu oraingo edukiak",
-
-// About Dialog
-DlgAboutAboutTab : "Honi buruz",
-DlgAboutBrowserInfoTab : "Nabigatzailearen Informazioa",
-DlgAboutLicenseTab : "Lizentzia",
-DlgAboutVersion : "bertsioa",
-DlgAboutInfo : "Informazio gehiago eskuratzeko hona joan",
-
-// Div Dialog
-DlgDivGeneralTab : "Orokorra",
-DlgDivAdvancedTab : "Aurreratua",
-DlgDivStyle : "Estiloa",
-DlgDivInlineStyle : "Inline Estiloa"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fa.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fa.js
deleted file mode 100644
index d529f257a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fa.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Persian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "rtl",
-
-ToolbarCollapse : "برچیدن نوارابزار",
-ToolbarExpand : "گستردن نوارابزار",
-
-// Toolbar Items and Context Menu
-Save : "ذخیره",
-NewPage : "برگهٴ تازه",
-Preview : "پیش‌نمایش",
-Cut : "برش",
-Copy : "کپی",
-Paste : "چسباندن",
-PasteText : "چسباندن به عنوان متن ÙØ³Ø§Ø¯Ù‡",
-PasteWord : "چسباندن از Word",
-Print : "چاپ",
-SelectAll : "گزینش همه",
-RemoveFormat : "برداشتن ÙØ±Ù…ت",
-InsertLinkLbl : "پیوند",
-InsertLink : "گنجاندن/ویرایش Ùپیوند",
-RemoveLink : "برداشتن پیوند",
-VisitLink : "باز کردن پیوند",
-Anchor : "گنجاندن/ویرایش Ùلنگر",
-AnchorDelete : "برداشتن لنگر",
-InsertImageLbl : "تصویر",
-InsertImage : "گنجاندن/ویرایش ÙØªØµÙˆÛŒØ±",
-InsertFlashLbl : "Flash",
-InsertFlash : "گنجاندن/ویرایش ÙFlash",
-InsertTableLbl : "جدول",
-InsertTable : "گنجاندن/ویرایش ÙØ¬Ø¯ÙˆÙ„",
-InsertLineLbl : "خط",
-InsertLine : "گنجاندن خط ÙØ§ÙÙ‚ÛŒ",
-InsertSpecialCharLbl: "نویسهٴ ویژه",
-InsertSpecialChar : "گنجاندن نویسهٴ ویژه",
-InsertSmileyLbl : "خندانک",
-InsertSmiley : "گنجاندن خندانک",
-About : "دربارهٴ FCKeditor",
-Bold : "درشت",
-Italic : "خمیده",
-Underline : "خط‌زیردار",
-StrikeThrough : "میان‌خط",
-Subscript : "زیرنویس",
-Superscript : "بالانویس",
-LeftJustify : "چپ‌چین",
-CenterJustify : "میان‌چین",
-RightJustify : "راست‌چین",
-BlockJustify : "بلوک‌چین",
-DecreaseIndent : "کاهش ØªÙˆØ±ÙØªÚ¯ÛŒ",
-IncreaseIndent : "Ø§ÙØ²Ø§ÛŒØ´ ØªÙˆØ±ÙØªÚ¯ÛŒ",
-Blockquote : "بلوک نقل قول",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "واچیدن",
-Redo : "بازچیدن",
-NumberedListLbl : "Ùهرست شماره‌دار",
-NumberedList : "گنجاندن/برداشتن Ùهرست شماره‌دار",
-BulletedListLbl : "Ùهرست نقطه‌ای",
-BulletedList : "گنجاندن/برداشتن Ùهرست نقطه‌ای",
-ShowTableBorders : "نمایش لبهٴ جدول",
-ShowDetails : "نمایش جزئیات",
-Style : "سبک",
-FontFormat : "ÙØ±Ù…ت",
-Font : "قلم",
-FontSize : "اندازه",
-TextColor : "رنگ متن",
-BGColor : "رنگ پس‌زمینه",
-Source : "منبع",
-Find : "جستجو",
-Replace : "جایگزینی",
-SpellCheck : "بررسی املا",
-UniversalKeyboard : "ØµÙØ­Ù‡â€ŒÚ©Ù„ید جهانی",
-PageBreakLbl : "شکستگی Ùپایان ÙØ¨Ø±Ú¯Ù‡",
-PageBreak : "گنجاندن شکستگی Ùپایان ÙØ¨Ø±Ú¯Ù‡",
-
-Form : "ÙØ±Ù…",
-Checkbox : "خانهٴ گزینه‌ای",
-RadioButton : "دکمهٴ رادیویی",
-TextField : "Ùیلد متنی",
-Textarea : "ناحیهٴ متنی",
-HiddenField : "Ùیلد پنهان",
-Button : "دکمه",
-SelectionField : "Ùیلد چندگزینه‌ای",
-ImageButton : "دکمهٴ تصویری",
-
-FitWindow : "بیشینه‌سازی ÙØ§Ù†Ø¯Ø§Ø²Ù‡Ù´ ویرایشگر",
-ShowBlocks : "نمایش بلوک‌ها",
-
-// Context Menu
-EditLink : "ویرایش پیوند",
-CellCM : "سلول",
-RowCM : "سطر",
-ColumnCM : "ستون",
-InsertRowAfter : "Ø§ÙØ²ÙˆØ¯Ù† سطر بعد از",
-InsertRowBefore : "Ø§ÙØ²ÙˆØ¯Ù† سطر قبل از",
-DeleteRows : "حذ٠سطرها",
-InsertColumnAfter : "Ø§ÙØ²ÙˆØ¯Ù† ستون بعد از",
-InsertColumnBefore : "Ø§ÙØ²ÙˆØ¯Ù† ستون قبل از",
-DeleteColumns : "حذ٠ستونها",
-InsertCellAfter : "Ø§ÙØ²ÙˆØ¯Ù† سلول بعد از",
-InsertCellBefore : "Ø§ÙØ²ÙˆØ¯Ù† سلول قبل از",
-DeleteCells : "حذ٠سلولها",
-MergeCells : "ادغام سلولها",
-MergeRight : "ادغام به راست",
-MergeDown : "ادغام به پایین",
-HorizontalSplitCell : "جدا کردن اÙÙ‚ÛŒ سلول",
-VerticalSplitCell : "جدا کردن عمودی سلول",
-TableDelete : "پاک‌کردن جدول",
-CellProperties : "ویژگیهای سلول",
-TableProperties : "ویژگیهای جدول",
-ImageProperties : "ویژگیهای تصویر",
-FlashProperties : "ویژگیهای Flash",
-
-AnchorProp : "ویژگیهای لنگر",
-ButtonProp : "ویژگیهای دکمه",
-CheckboxProp : "ویژگیهای خانهٴ گزینه‌ای",
-HiddenFieldProp : "ویژگیهای Ùیلد پنهان",
-RadioButtonProp : "ویژگیهای دکمهٴ رادیویی",
-ImageButtonProp : "ویژگیهای دکمهٴ تصویری",
-TextFieldProp : "ویژگیهای Ùیلد متنی",
-SelectionFieldProp : "ویژگیهای Ùیلد چندگزینه‌ای",
-TextareaProp : "ویژگیهای ناحیهٴ متنی",
-FormProp : "ویژگیهای ÙØ±Ù…",
-
-FontFormats : "نرمال;ÙØ±Ù…ت‌شده;آدرس;سرنویس 1;سرنویس 2;سرنویس 3;سرنویس 4;سرنویس 5;سرنویس 6;بند;(DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "پردازش XHTML. Ù„Ø·ÙØ§ صبر کنید...",
-Done : "انجام شد",
-PasteWordConfirm : "متنی که می‌خواهید بچسبانید به نظر می‌رسد از Word کپی شده است. آیا می‌خواهید قبل از چسباندن آن را پاک‌سازی کنید؟",
-NotCompatiblePaste : "این ÙØ±Ù…ان برای مرورگر Internet Explorer از نگارش 5.5 یا بالاتر در دسترس است. آیا می‌خواهید بدون پاک‌سازی، متن را بچسبانید؟",
-UnknownToolbarItem : "Ùقرهٴ نوارابزار ناشناخته \"%1\"",
-UnknownCommand : "نام دستور ناشناخته \"%1\"",
-NotImplemented : "دستور پیاده‌سازی‌نشده",
-UnknownToolbarSet : "مجموعهٴ نوارابزار \"%1\" وجود ندارد",
-NoActiveX : "تنظیمات امنیتی مرورگر شما ممکن است در بعضی از ویژگیهای مرورگر محدودیت ایجاد کند. شما باید گزینهٴ \"Run ActiveX controls and plug-ins\" را ÙØ¹Ø§Ù„ کنید. ممکن است شما با خطاهایی روبرو باشید Ùˆ متوجه کمبود ویژگیهایی شوید.",
-BrowseServerBlocked : "توانایی بازگشایی مرورگر منابع ÙØ±Ø§Ù‡Ù… نیست. اطمینان حاصل کنید Ú©Ù‡ تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
-DialogBlocked : "توانایی بازگشایی پنجرهٴ Ú©ÙˆÚ†Ú© ÙÚ¯ÙØªÚ¯Ùˆ ÙØ±Ø§Ù‡Ù… نیست. اطمینان حاصل کنید Ú©Ù‡ تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
-VisitLinkBlocked : "امکان بازکردن یک پنجره جدید نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.",
-
-// Dialogs
-DlgBtnOK : "پذیرش",
-DlgBtnCancel : "انصراÙ",
-DlgBtnClose : "بستن",
-DlgBtnBrowseServer : "Ùهرست‌نمایی سرور",
-DlgAdvancedTag : "Ù¾ÛŒØ´Ø±ÙØªÙ‡",
-DlgOpOther : "<غیره>",
-DlgInfoTab : "اطلاعات",
-DlgAlertUrl : "Ù„Ø·ÙØ§Ù‹ URL را بنویسید",
-
-// General Dialogs Labels
-DlgGenNotSet : "<تعین‌نشده>",
-DlgGenId : "شناسه",
-DlgGenLangDir : "جهت‌نمای زبان",
-DlgGenLangDirLtr : "چپ به راست (LTR)",
-DlgGenLangDirRtl : "راست به چپ (RTL)",
-DlgGenLangCode : "کد زبان",
-DlgGenAccessKey : "کلید دستیابی",
-DlgGenName : "نام",
-DlgGenTabIndex : "نمایهٴ دسترسی با Tab",
-DlgGenLongDescr : "URL توصی٠طولانی",
-DlgGenClass : "کلاسهای شیوه‌نامه(Stylesheet)",
-DlgGenTitle : "عنوان کمکی",
-DlgGenContType : "نوع محتوای کمکی",
-DlgGenLinkCharset : "نویسه‌گان منبع Ùپیوندشده",
-DlgGenStyle : "شیوه(style)",
-
-// Image Dialog
-DlgImgTitle : "ویژگیهای تصویر",
-DlgImgInfoTab : "اطلاعات تصویر",
-DlgImgBtnUpload : "به سرور Ø¨ÙØ±Ø³Øª",
-DlgImgURL : "URL",
-DlgImgUpload : "انتقال به سرور",
-DlgImgAlt : "متن جایگزین",
-DlgImgWidth : "پهنا",
-DlgImgHeight : "درازا",
-DlgImgLockRatio : "Ù‚Ùل‌کردن Ùنسبت",
-DlgBtnResetSize : "بازنشانی اندازه",
-DlgImgBorder : "لبه",
-DlgImgHSpace : "ÙØ§ØµÙ„هٴ اÙÙ‚ÛŒ",
-DlgImgVSpace : "ÙØ§ØµÙ„هٴ عمودی",
-DlgImgAlign : "چینش",
-DlgImgAlignLeft : "Ú†Ù¾",
-DlgImgAlignAbsBottom: "پائین مطلق",
-DlgImgAlignAbsMiddle: "وسط مطلق",
-DlgImgAlignBaseline : "خط‌پایه",
-DlgImgAlignBottom : "پائین",
-DlgImgAlignMiddle : "وسط",
-DlgImgAlignRight : "راست",
-DlgImgAlignTextTop : "متن بالا",
-DlgImgAlignTop : "بالا",
-DlgImgPreview : "پیش‌نمایش",
-DlgImgAlertUrl : "Ù„Ø·ÙØ§ URL تصویر را بنویسید",
-DlgImgLinkTab : "پیوند",
-
-// Flash Dialog
-DlgFlashTitle : "ویژگیهای Flash",
-DlgFlashChkPlay : "آغاز ÙØ®ÙˆØ¯Ú©Ø§Ø±",
-DlgFlashChkLoop : "اجرای پیاپی",
-DlgFlashChkMenu : "دردسترس‌بودن منوی Flash",
-DlgFlashScale : "مقیاس",
-DlgFlashScaleAll : "نمایش همه",
-DlgFlashScaleNoBorder : "بدون کران",
-DlgFlashScaleFit : "جایگیری کامل",
-
-// Link Dialog
-DlgLnkWindowTitle : "پیوند",
-DlgLnkInfoTab : "اطلاعات پیوند",
-DlgLnkTargetTab : "مقصد",
-
-DlgLnkType : "نوع پیوند",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "لنگر در همین ØµÙØ­Ù‡",
-DlgLnkTypeEMail : "پست الکترونیکی",
-DlgLnkProto : "پروتکل",
-DlgLnkProtoOther : "<دیگر>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "یک لنگر برگزینید",
-DlgLnkAnchorByName : "با نام لنگر",
-DlgLnkAnchorById : "با شناسهٴ المان",
-DlgLnkNoAnchors : "(در این سند لنگری دردسترس نیست)",
-DlgLnkEMail : "نشانی پست الکترونیکی",
-DlgLnkEMailSubject : "موضوع پیام",
-DlgLnkEMailBody : "متن پیام",
-DlgLnkUpload : "انتقال به سرور",
-DlgLnkBtnUpload : "به سرور Ø¨ÙØ±Ø³Øª",
-
-DlgLnkTarget : "مقصد",
-DlgLnkTargetFrame : "<ÙØ±ÛŒÙ…>",
-DlgLnkTargetPopup : "<پنجرهٴ پاپاپ>",
-DlgLnkTargetBlank : "پنجرهٴ دیگر (_blank)",
-DlgLnkTargetParent : "پنجرهٴ والد (_parent)",
-DlgLnkTargetSelf : "همان پنجره (_self)",
-DlgLnkTargetTop : "بالاترین پنجره (_top)",
-DlgLnkTargetFrameName : "نام ÙØ±ÛŒÙ… مقصد",
-DlgLnkPopWinName : "نام پنجرهٴ پاپاپ",
-DlgLnkPopWinFeat : "ویژگیهای پنجرهٴ پاپاپ",
-DlgLnkPopResize : "قابل تغییر اندازه",
-DlgLnkPopLocation : "نوار موقعیت",
-DlgLnkPopMenu : "نوار منو",
-DlgLnkPopScroll : "میله‌های پیمایش",
-DlgLnkPopStatus : "نوار وضعیت",
-DlgLnkPopToolbar : "نوارابزار",
-DlgLnkPopFullScrn : "ØªÙ…Ø§Ù…â€ŒØµÙØ­Ù‡ (IE)",
-DlgLnkPopDependent : "وابسته (Netscape)",
-DlgLnkPopWidth : "پهنا",
-DlgLnkPopHeight : "درازا",
-DlgLnkPopLeft : "موقعیت ÙÚ†Ù¾",
-DlgLnkPopTop : "موقعیت ÙØ¨Ø§Ù„ا",
-
-DlnLnkMsgNoUrl : "Ù„Ø·ÙØ§ URL پیوند را بنویسید",
-DlnLnkMsgNoEMail : "Ù„Ø·ÙØ§ نشانی پست الکترونیکی را بنویسید",
-DlnLnkMsgNoAnchor : "Ù„Ø·ÙØ§ لنگری را برگزینید",
-DlnLnkMsgInvPopName : "نام پنجرهٴ پاپاپ باید با یک نویسهٴ Ø§Ù„ÙØ¨Ø§ÛŒÛŒ آغاز گردد Ùˆ نباید ÙØ§ØµÙ„ه‌های خالی در آن باشند",
-
-// Color Dialog
-DlgColorTitle : "گزینش رنگ",
-DlgColorBtnClear : "پاک‌کردن",
-DlgColorHighlight : "نمونه",
-DlgColorSelected : "برگزیده",
-
-// Smiley Dialog
-DlgSmileyTitle : "گنجاندن خندانک",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "گزینش نویسهٴ‌ویژه",
-
-// Table Dialog
-DlgTableTitle : "ویژگیهای جدول",
-DlgTableRows : "سطرها",
-DlgTableColumns : "ستونها",
-DlgTableBorder : "اندازهٴ لبه",
-DlgTableAlign : "چینش",
-DlgTableAlignNotSet : "<تعین‌نشده>",
-DlgTableAlignLeft : "Ú†Ù¾",
-DlgTableAlignCenter : "وسط",
-DlgTableAlignRight : "راست",
-DlgTableWidth : "پهنا",
-DlgTableWidthPx : "پیکسل",
-DlgTableWidthPc : "درصد",
-DlgTableHeight : "درازا",
-DlgTableCellSpace : "ÙØ§ØµÙ„هٴ میان سلولها",
-DlgTableCellPad : "ÙØ§ØµÙ„هٴ پرشده در سلول",
-DlgTableCaption : "عنوان",
-DlgTableSummary : "خلاصه",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "ویژگیهای سلول",
-DlgCellWidth : "پهنا",
-DlgCellWidthPx : "پیکسل",
-DlgCellWidthPc : "درصد",
-DlgCellHeight : "درازا",
-DlgCellWordWrap : "شکستن واژه‌ها",
-DlgCellWordWrapNotSet : "<تعین‌نشده>",
-DlgCellWordWrapYes : "بله",
-DlgCellWordWrapNo : "خیر",
-DlgCellHorAlign : "چینش ÙØ§ÙÙ‚ÛŒ",
-DlgCellHorAlignNotSet : "<تعین‌نشده>",
-DlgCellHorAlignLeft : "Ú†Ù¾",
-DlgCellHorAlignCenter : "وسط",
-DlgCellHorAlignRight: "راست",
-DlgCellVerAlign : "چینش ÙØ¹Ù…ودی",
-DlgCellVerAlignNotSet : "<تعین‌نشده>",
-DlgCellVerAlignTop : "بالا",
-DlgCellVerAlignMiddle : "میان",
-DlgCellVerAlignBottom : "پائین",
-DlgCellVerAlignBaseline : "خط‌پایه",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "گستردگی سطرها",
-DlgCellCollSpan : "گستردگی ستونها",
-DlgCellBackColor : "رنگ پس‌زمینه",
-DlgCellBorderColor : "رنگ لبه",
-DlgCellBtnSelect : "برگزینید...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "جستجو و جایگزینی",
-
-// Find Dialog
-DlgFindTitle : "ÛŒØ§ÙØªÙ†",
-DlgFindFindBtn : "ÛŒØ§ÙØªÙ†",
-DlgFindNotFoundMsg : "متن موردنظر ÛŒØ§ÙØª نشد.",
-
-// Replace Dialog
-DlgReplaceTitle : "جایگزینی",
-DlgReplaceFindLbl : "چه‌چیز را می‌یابید:",
-DlgReplaceReplaceLbl : "جایگزینی با:",
-DlgReplaceCaseChk : "همسانی در بزرگی و کوچکی نویسه‌ها",
-DlgReplaceReplaceBtn : "جایگزینی",
-DlgReplaceReplAllBtn : "جایگزینی همهٴ ÛŒØ§ÙØªÙ‡â€ŒÙ‡Ø§",
-DlgReplaceWordChk : "همسانی با واژهٴ کامل",
-
-// Paste Operations / Dialog
-PasteErrorCut : "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. Ù„Ø·ÙØ§ با دکمه‌های ØµÙØ­Ù‡â€ŒÚ©Ù„ید این کار را انجام دهید (Ctrl+X).",
-PasteErrorCopy : "تنظیمات امنیتی مرورگر شما اجازه نمی‌دهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای کپی‌کردن را انجام دهد. Ù„Ø·ÙØ§ با دکمه‌های ØµÙØ­Ù‡â€ŒÚ©Ù„ید این کار را انجام دهید (Ctrl+C).",
-
-PasteAsText : "چسباندن به عنوان متن ÙØ³Ø§Ø¯Ù‡",
-PasteFromWord : "چسباندن از Word",
-
-DlgPasteMsg2 : "Ù„Ø·ÙØ§ متن را با کلیدهای (<STRONG>Ctrl+V</STRONG>) در این جعبهٴ متنی بچسبانید Ùˆ <STRONG>پذیرش</STRONG> را بزنید.",
-DlgPasteSec : "به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمی‌تواند دسترسی مستقیم به داده‌های clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.",
-DlgPasteIgnoreFont : "چشم‌پوشی از تعاری٠نوع قلم",
-DlgPasteRemoveStyles : "چشم‌پوشی از تعاری٠سبک (style)",
-
-// Color Picker
-ColorAutomatic : "خودکار",
-ColorMoreColors : "رنگهای بیشتر...",
-
-// Document Properties
-DocProps : "ویژگیهای سند",
-
-// Anchor Dialog
-DlgAnchorTitle : "ویژگیهای لنگر",
-DlgAnchorName : "نام لنگر",
-DlgAnchorErrorName : "Ù„Ø·ÙØ§ نام لنگر را بنویسید",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "در واژه‌نامه ÛŒØ§ÙØª نشد",
-DlgSpellChangeTo : "تغییر به",
-DlgSpellBtnIgnore : "چشم‌پوشی",
-DlgSpellBtnIgnoreAll : "چشم‌پوشی همه",
-DlgSpellBtnReplace : "جایگزینی",
-DlgSpellBtnReplaceAll : "جایگزینی همه",
-DlgSpellBtnUndo : "واچینش",
-DlgSpellNoSuggestions : "- پیشنهادی نیست -",
-DlgSpellProgress : "بررسی املا در حال انجام...",
-DlgSpellNoMispell : "بررسی املا انجام شد. هیچ غلط‌املائی ÛŒØ§ÙØª نشد",
-DlgSpellNoChanges : "بررسی املا انجام شد. هیچ واژه‌ای تغییر Ù†ÛŒØ§ÙØª",
-DlgSpellOneChange : "بررسی املا انجام شد. یک واژه تغییر ÛŒØ§ÙØª",
-DlgSpellManyChanges : "بررسی املا انجام شد. %1 واژه تغییر ÛŒØ§ÙØª",
-
-IeSpellDownload : "بررسی‌کنندهٴ املا نصب نشده است. آیا می‌خواهید آن را هم‌اکنون Ø¯Ø±ÛŒØ§ÙØª کنید؟",
-
-// Button Dialog
-DlgButtonText : "متن (مقدار)",
-DlgButtonType : "نوع",
-DlgButtonTypeBtn : "دکمه",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "بازنشانی (Reset)",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "نام",
-DlgCheckboxValue : "مقدار",
-DlgCheckboxSelected : "برگزیده",
-
-// Form Dialog
-DlgFormName : "نام",
-DlgFormAction : "رویداد",
-DlgFormMethod : "متد",
-
-// Select Field Dialog
-DlgSelectName : "نام",
-DlgSelectValue : "مقدار",
-DlgSelectSize : "اندازه",
-DlgSelectLines : "خطوط",
-DlgSelectChkMulti : "گزینش چندگانه ÙØ±Ø§Ù‡Ù… باشد",
-DlgSelectOpAvail : "گزینه‌های دردسترس",
-DlgSelectOpText : "متن",
-DlgSelectOpValue : "مقدار",
-DlgSelectBtnAdd : "Ø§ÙØ²ÙˆØ¯Ù†",
-DlgSelectBtnModify : "ویرایش",
-DlgSelectBtnUp : "بالا",
-DlgSelectBtnDown : "پائین",
-DlgSelectBtnSetValue : "تنظیم به عنوان مقدار ÙØ¨Ø±Ú¯Ø²ÛŒØ¯Ù‡",
-DlgSelectBtnDelete : "پاک‌کردن",
-
-// Textarea Dialog
-DlgTextareaName : "نام",
-DlgTextareaCols : "ستونها",
-DlgTextareaRows : "سطرها",
-
-// Text Field Dialog
-DlgTextName : "نام",
-DlgTextValue : "مقدار",
-DlgTextCharWidth : "پهنای نویسه",
-DlgTextMaxChars : "بیشینهٴ نویسه‌ها",
-DlgTextType : "نوع",
-DlgTextTypeText : "متن",
-DlgTextTypePass : "گذرواژه",
-
-// Hidden Field Dialog
-DlgHiddenName : "نام",
-DlgHiddenValue : "مقدار",
-
-// Bulleted List Dialog
-BulletedListProp : "ویژگیهای Ùهرست نقطه‌ای",
-NumberedListProp : "ویژگیهای Ùهرست شماره‌دار",
-DlgLstStart : "آغاز",
-DlgLstType : "نوع",
-DlgLstTypeCircle : "دایره",
-DlgLstTypeDisc : "قرص",
-DlgLstTypeSquare : "چهارگوش",
-DlgLstTypeNumbers : "شماره‌ها (1، 2، 3)",
-DlgLstTypeLCase : "نویسه‌های کوچک (a، b، c)",
-DlgLstTypeUCase : "نویسه‌های بزرگ (A، B، C)",
-DlgLstTypeSRoman : "شمارگان رومی کوچک (i، ii، iii)",
-DlgLstTypeLRoman : "شمارگان رومی بزرگ (I، II، III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "عمومی",
-DlgDocBackTab : "پس‌زمینه",
-DlgDocColorsTab : "رنگها و حاشیه‌ها",
-DlgDocMetaTab : "ÙØ±Ø§Ø¯Ø§Ø¯Ù‡",
-
-DlgDocPageTitle : "عنوان ØµÙØ­Ù‡",
-DlgDocLangDir : "جهت زبان",
-DlgDocLangDirLTR : "چپ به راست (LTR(",
-DlgDocLangDirRTL : "راست به چپ (RTL(",
-DlgDocLangCode : "کد زبان",
-DlgDocCharSet : "رمزگذاری نویسه‌گان",
-DlgDocCharSetCE : "اروپای مرکزی",
-DlgDocCharSetCT : "چینی رسمی (Big5)",
-DlgDocCharSetCR : "سیریلیک",
-DlgDocCharSetGR : "یونانی",
-DlgDocCharSetJP : "ژاپنی",
-DlgDocCharSetKR : "کره‌ای",
-DlgDocCharSetTR : "ترکی",
-DlgDocCharSetUN : "ÛŒÙˆÙ†ÛŒÚ©ÙØ¯ (UTF-8)",
-DlgDocCharSetWE : "اروپای غربی",
-DlgDocCharSetOther : "رمزگذاری نویسه‌گان دیگر",
-
-DlgDocDocType : "عنوان نوع سند",
-DlgDocDocTypeOther : "عنوان نوع سند دیگر",
-DlgDocIncXHTML : "شامل تعاری٠XHTML",
-DlgDocBgColor : "رنگ پس‌زمینه",
-DlgDocBgImage : "URL تصویر پس‌زمینه",
-DlgDocBgNoScroll : "پس‌زمینهٴ پیمایش‌ناپذیر",
-DlgDocCText : "متن",
-DlgDocCLink : "پیوند",
-DlgDocCVisited : "پیوند مشاهده‌شده",
-DlgDocCActive : "پیوند ÙØ¹Ø§Ù„",
-DlgDocMargins : "حاشیه‌های ØµÙØ­Ù‡",
-DlgDocMaTop : "بالا",
-DlgDocMaLeft : "Ú†Ù¾",
-DlgDocMaRight : "راست",
-DlgDocMaBottom : "پایین",
-DlgDocMeIndex : "کلیدواژگان نمایه‌گذاری سند (با کاما جدا شوند)",
-DlgDocMeDescr : "توصی٠سند",
-DlgDocMeAuthor : "نویسنده",
-DlgDocMeCopy : "کپی‌رایت",
-DlgDocPreview : "پیش‌نمایش",
-
-// Templates Dialog
-Templates : "الگوها",
-DlgTemplatesTitle : "الگوهای محتویات",
-DlgTemplatesSelMsg : "Ù„Ø·ÙØ§ الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند Ø±ÙØª):",
-DlgTemplatesLoading : "بارگذاری Ùهرست الگوها. Ù„Ø·ÙØ§ صبر کنید...",
-DlgTemplatesNoTpl : "(الگوئی تعری٠نشده است)",
-DlgTemplatesReplace : "محتویات کنونی جایگزین شوند",
-
-// About Dialog
-DlgAboutAboutTab : "درباره",
-DlgAboutBrowserInfoTab : "اطلاعات مرورگر",
-DlgAboutLicenseTab : "گواهینامه",
-DlgAboutVersion : "نگارش",
-DlgAboutInfo : "برای آگاهی بیشتر به این نشانی بروید",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fi.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fi.js
deleted file mode 100644
index f59fda22a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fi.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Finnish language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Piilota työkalurivi",
-ToolbarExpand : "Näytä työkalurivi",
-
-// Toolbar Items and Context Menu
-Save : "Tallenna",
-NewPage : "Tyhjennä",
-Preview : "Esikatsele",
-Cut : "Leikkaa",
-Copy : "Kopioi",
-Paste : "Liitä",
-PasteText : "Liitä tekstinä",
-PasteWord : "Liitä Wordista",
-Print : "Tulosta",
-SelectAll : "Valitse kaikki",
-RemoveFormat : "Poista muotoilu",
-InsertLinkLbl : "Linkki",
-InsertLink : "Lisää linkki/muokkaa linkkiä",
-RemoveLink : "Poista linkki",
-VisitLink : "Open Link", //MISSING
-Anchor : "Lisää ankkuri/muokkaa ankkuria",
-AnchorDelete : "Poista ankkuri",
-InsertImageLbl : "Kuva",
-InsertImage : "Lisää kuva/muokkaa kuvaa",
-InsertFlashLbl : "Flash",
-InsertFlash : "Lisää/muokkaa Flashia",
-InsertTableLbl : "Taulu",
-InsertTable : "Lisää taulu/muokkaa taulua",
-InsertLineLbl : "Murtoviiva",
-InsertLine : "Lisää murtoviiva",
-InsertSpecialCharLbl: "Erikoismerkki",
-InsertSpecialChar : "Lisää erikoismerkki",
-InsertSmileyLbl : "Hymiö",
-InsertSmiley : "Lisää hymiö",
-About : "FCKeditorista",
-Bold : "Lihavoitu",
-Italic : "Kursivoitu",
-Underline : "Alleviivattu",
-StrikeThrough : "Yliviivattu",
-Subscript : "Alaindeksi",
-Superscript : "Yläindeksi",
-LeftJustify : "Tasaa vasemmat reunat",
-CenterJustify : "Keskitä",
-RightJustify : "Tasaa oikeat reunat",
-BlockJustify : "Tasaa molemmat reunat",
-DecreaseIndent : "Pienennä sisennystä",
-IncreaseIndent : "Suurenna sisennystä",
-Blockquote : "Lainaus",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Kumoa",
-Redo : "Toista",
-NumberedListLbl : "Numerointi",
-NumberedList : "Lisää/poista numerointi",
-BulletedListLbl : "Luottelomerkit",
-BulletedList : "Lisää/poista luottelomerkit",
-ShowTableBorders : "Näytä taulun rajat",
-ShowDetails : "Näytä muotoilu",
-Style : "Tyyli",
-FontFormat : "Muotoilu",
-Font : "Fontti",
-FontSize : "Koko",
-TextColor : "Tekstiväri",
-BGColor : "Taustaväri",
-Source : "Koodi",
-Find : "Etsi",
-Replace : "Korvaa",
-SpellCheck : "Tarkista oikeinkirjoitus",
-UniversalKeyboard : "Universaali näppäimistö",
-PageBreakLbl : "Sivun vaihto",
-PageBreak : "Lisää sivun vaihto",
-
-Form : "Lomake",
-Checkbox : "Valintaruutu",
-RadioButton : "Radiopainike",
-TextField : "Tekstikenttä",
-Textarea : "Tekstilaatikko",
-HiddenField : "Piilokenttä",
-Button : "Painike",
-SelectionField : "Valintakenttä",
-ImageButton : "Kuvapainike",
-
-FitWindow : "Suurenna editori koko ikkunaan",
-ShowBlocks : "Näytä elementit",
-
-// Context Menu
-EditLink : "Muokkaa linkkiä",
-CellCM : "Solu",
-RowCM : "Rivi",
-ColumnCM : "Sarake",
-InsertRowAfter : "Lisää rivi alapuolelle",
-InsertRowBefore : "Lisää rivi yläpuolelle",
-DeleteRows : "Poista rivit",
-InsertColumnAfter : "Lisää sarake oikealle",
-InsertColumnBefore : "Lisää sarake vasemmalle",
-DeleteColumns : "Poista sarakkeet",
-InsertCellAfter : "Lisää solu perään",
-InsertCellBefore : "Lisää solu eteen",
-DeleteCells : "Poista solut",
-MergeCells : "Yhdistä solut",
-MergeRight : "Yhdistä oikealla olevan kanssa",
-MergeDown : "Yhdistä alla olevan kanssa",
-HorizontalSplitCell : "Jaa solu vaakasuunnassa",
-VerticalSplitCell : "Jaa solu pystysuunnassa",
-TableDelete : "Poista taulu",
-CellProperties : "Solun ominaisuudet",
-TableProperties : "Taulun ominaisuudet",
-ImageProperties : "Kuvan ominaisuudet",
-FlashProperties : "Flash ominaisuudet",
-
-AnchorProp : "Ankkurin ominaisuudet",
-ButtonProp : "Painikkeen ominaisuudet",
-CheckboxProp : "Valintaruudun ominaisuudet",
-HiddenFieldProp : "Piilokentän ominaisuudet",
-RadioButtonProp : "Radiopainikkeen ominaisuudet",
-ImageButtonProp : "Kuvapainikkeen ominaisuudet",
-TextFieldProp : "Tekstikentän ominaisuudet",
-SelectionFieldProp : "Valintakentän ominaisuudet",
-TextareaProp : "Tekstilaatikon ominaisuudet",
-FormProp : "Lomakkeen ominaisuudet",
-
-FontFormats : "Normaali;Muotoiltu;Osoite;Otsikko 1;Otsikko 2;Otsikko 3;Otsikko 4;Otsikko 5;Otsikko 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Prosessoidaan XHTML:ää. Odota hetki...",
-Done : "Valmis",
-PasteWordConfirm : "Teksti, jonka haluat liittää, näyttää olevan kopioitu Wordista. Haluatko puhdistaa sen ennen liittämistä?",
-NotCompatiblePaste : "Tämä komento toimii vain Internet Explorer 5.5:ssa tai uudemmassa. Haluatko liittää ilman puhdistusta?",
-UnknownToolbarItem : "Tuntemanton työkalu \"%1\"",
-UnknownCommand : "Tuntematon komento \"%1\"",
-NotImplemented : "Komentoa ei ole liitetty sovellukseen",
-UnknownToolbarSet : "Työkalukokonaisuus \"%1\" ei ole olemassa",
-NoActiveX : "Selaimesi turvallisuusasetukset voivat rajoittaa joitain editorin ominaisuuksia. Sinun pitää ottaa käyttöön asetuksista \"Suorita ActiveX komponentit ja -plugin-laajennukset\". Saatat kohdata virheitä ja huomata puuttuvia ominaisuuksia.",
-BrowseServerBlocked : "Resurssiselainta ei voitu avata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
-DialogBlocked : "Apuikkunaa ei voitu avaata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Peruuta",
-DlgBtnClose : "Sulje",
-DlgBtnBrowseServer : "Selaa palvelinta",
-DlgAdvancedTag : "Lisäominaisuudet",
-DlgOpOther : "Muut",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Lisää URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ei asetettu>",
-DlgGenId : "Tunniste",
-DlgGenLangDir : "Kielen suunta",
-DlgGenLangDirLtr : "Vasemmalta oikealle (LTR)",
-DlgGenLangDirRtl : "Oikealta vasemmalle (RTL)",
-DlgGenLangCode : "Kielikoodi",
-DlgGenAccessKey : "Pikanäppäin",
-DlgGenName : "Nimi",
-DlgGenTabIndex : "Tabulaattori indeksi",
-DlgGenLongDescr : "Pitkän kuvauksen URL",
-DlgGenClass : "Tyyliluokat",
-DlgGenTitle : "Avustava otsikko",
-DlgGenContType : "Avustava sisällön tyyppi",
-DlgGenLinkCharset : "Linkitetty kirjaimisto",
-DlgGenStyle : "Tyyli",
-
-// Image Dialog
-DlgImgTitle : "Kuvan ominaisuudet",
-DlgImgInfoTab : "Kuvan tiedot",
-DlgImgBtnUpload : "Lähetä palvelimelle",
-DlgImgURL : "Osoite",
-DlgImgUpload : "Lisää kuva",
-DlgImgAlt : "Vaihtoehtoinen teksti",
-DlgImgWidth : "Leveys",
-DlgImgHeight : "Korkeus",
-DlgImgLockRatio : "Lukitse suhteet",
-DlgBtnResetSize : "Alkuperäinen koko",
-DlgImgBorder : "Raja",
-DlgImgHSpace : "Vaakatila",
-DlgImgVSpace : "Pystytila",
-DlgImgAlign : "Kohdistus",
-DlgImgAlignLeft : "Vasemmalle",
-DlgImgAlignAbsBottom: "Aivan alas",
-DlgImgAlignAbsMiddle: "Aivan keskelle",
-DlgImgAlignBaseline : "Alas (teksti)",
-DlgImgAlignBottom : "Alas",
-DlgImgAlignMiddle : "Keskelle",
-DlgImgAlignRight : "Oikealle",
-DlgImgAlignTextTop : "Ylös (teksti)",
-DlgImgAlignTop : "Ylös",
-DlgImgPreview : "Esikatselu",
-DlgImgAlertUrl : "Kirjoita kuvan osoite (URL)",
-DlgImgLinkTab : "Linkki",
-
-// Flash Dialog
-DlgFlashTitle : "Flash ominaisuudet",
-DlgFlashChkPlay : "Automaattinen käynnistys",
-DlgFlashChkLoop : "Toisto",
-DlgFlashChkMenu : "Näytä Flash-valikko",
-DlgFlashScale : "Levitä",
-DlgFlashScaleAll : "Näytä kaikki",
-DlgFlashScaleNoBorder : "Ei rajaa",
-DlgFlashScaleFit : "Tarkka koko",
-
-// Link Dialog
-DlgLnkWindowTitle : "Linkki",
-DlgLnkInfoTab : "Linkin tiedot",
-DlgLnkTargetTab : "Kohde",
-
-DlgLnkType : "Linkkityyppi",
-DlgLnkTypeURL : "Osoite",
-DlgLnkTypeAnchor : "Ankkuri tässä sivussa",
-DlgLnkTypeEMail : "Sähköposti",
-DlgLnkProto : "Protokolla",
-DlgLnkProtoOther : "<muu>",
-DlgLnkURL : "Osoite",
-DlgLnkAnchorSel : "Valitse ankkuri",
-DlgLnkAnchorByName : "Ankkurin nimen mukaan",
-DlgLnkAnchorById : "Ankkurin ID:n mukaan",
-DlgLnkNoAnchors : "(Ei ankkureita tässä dokumentissa)",
-DlgLnkEMail : "Sähköpostiosoite",
-DlgLnkEMailSubject : "Aihe",
-DlgLnkEMailBody : "Viesti",
-DlgLnkUpload : "Lisää tiedosto",
-DlgLnkBtnUpload : "Lähetä palvelimelle",
-
-DlgLnkTarget : "Kohde",
-DlgLnkTargetFrame : "<kehys>",
-DlgLnkTargetPopup : "<popup ikkuna>",
-DlgLnkTargetBlank : "Uusi ikkuna (_blank)",
-DlgLnkTargetParent : "Emoikkuna (_parent)",
-DlgLnkTargetSelf : "Sama ikkuna (_self)",
-DlgLnkTargetTop : "Päällimmäisin ikkuna (_top)",
-DlgLnkTargetFrameName : "Kohdekehyksen nimi",
-DlgLnkPopWinName : "Popup ikkunan nimi",
-DlgLnkPopWinFeat : "Popup ikkunan ominaisuudet",
-DlgLnkPopResize : "Venytettävä",
-DlgLnkPopLocation : "Osoiterivi",
-DlgLnkPopMenu : "Valikkorivi",
-DlgLnkPopScroll : "Vierityspalkit",
-DlgLnkPopStatus : "Tilarivi",
-DlgLnkPopToolbar : "Vakiopainikkeet",
-DlgLnkPopFullScrn : "Täysi ikkuna (IE)",
-DlgLnkPopDependent : "Riippuva (Netscape)",
-DlgLnkPopWidth : "Leveys",
-DlgLnkPopHeight : "Korkeus",
-DlgLnkPopLeft : "Vasemmalta (px)",
-DlgLnkPopTop : "Ylhäältä (px)",
-
-DlnLnkMsgNoUrl : "Linkille on kirjoitettava URL",
-DlnLnkMsgNoEMail : "Kirjoita sähköpostiosoite",
-DlnLnkMsgNoAnchor : "Valitse ankkuri",
-DlnLnkMsgInvPopName : "Popup-ikkunan nimi pitää alkaa aakkosella ja ei saa sisältää välejä",
-
-// Color Dialog
-DlgColorTitle : "Valitse väri",
-DlgColorBtnClear : "Tyhjennä",
-DlgColorHighlight : "Kohdalla",
-DlgColorSelected : "Valittu",
-
-// Smiley Dialog
-DlgSmileyTitle : "Lisää hymiö",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Valitse erikoismerkki",
-
-// Table Dialog
-DlgTableTitle : "Taulun ominaisuudet",
-DlgTableRows : "Rivit",
-DlgTableColumns : "Sarakkeet",
-DlgTableBorder : "Rajan paksuus",
-DlgTableAlign : "Kohdistus",
-DlgTableAlignNotSet : "<ei asetettu>",
-DlgTableAlignLeft : "Vasemmalle",
-DlgTableAlignCenter : "Keskelle",
-DlgTableAlignRight : "Oikealle",
-DlgTableWidth : "Leveys",
-DlgTableWidthPx : "pikseliä",
-DlgTableWidthPc : "prosenttia",
-DlgTableHeight : "Korkeus",
-DlgTableCellSpace : "Solujen väli",
-DlgTableCellPad : "Solujen sisennys",
-DlgTableCaption : "Otsikko",
-DlgTableSummary : "Yhteenveto",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Solun ominaisuudet",
-DlgCellWidth : "Leveys",
-DlgCellWidthPx : "pikseliä",
-DlgCellWidthPc : "prosenttia",
-DlgCellHeight : "Korkeus",
-DlgCellWordWrap : "Tekstikierrätys",
-DlgCellWordWrapNotSet : "<Ei asetettu>",
-DlgCellWordWrapYes : "Kyllä",
-DlgCellWordWrapNo : "Ei",
-DlgCellHorAlign : "Vaakakohdistus",
-DlgCellHorAlignNotSet : "<Ei asetettu>",
-DlgCellHorAlignLeft : "Vasemmalle",
-DlgCellHorAlignCenter : "Keskelle",
-DlgCellHorAlignRight: "Oikealle",
-DlgCellVerAlign : "Pystykohdistus",
-DlgCellVerAlignNotSet : "<Ei asetettu>",
-DlgCellVerAlignTop : "Ylös",
-DlgCellVerAlignMiddle : "Keskelle",
-DlgCellVerAlignBottom : "Alas",
-DlgCellVerAlignBaseline : "Tekstin alas",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Rivin jatkuvuus",
-DlgCellCollSpan : "Sarakkeen jatkuvuus",
-DlgCellBackColor : "Taustaväri",
-DlgCellBorderColor : "Rajan väri",
-DlgCellBtnSelect : "Valitse...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Etsi ja korvaa",
-
-// Find Dialog
-DlgFindTitle : "Etsi",
-DlgFindFindBtn : "Etsi",
-DlgFindNotFoundMsg : "Etsittyä tekstiä ei löytynyt.",
-
-// Replace Dialog
-DlgReplaceTitle : "Korvaa",
-DlgReplaceFindLbl : "Etsi mitä:",
-DlgReplaceReplaceLbl : "Korvaa tällä:",
-DlgReplaceCaseChk : "Sama kirjainkoko",
-DlgReplaceReplaceBtn : "Korvaa",
-DlgReplaceReplAllBtn : "Korvaa kaikki",
-DlgReplaceWordChk : "Koko sana",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).",
-PasteErrorCopy : "Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).",
-
-PasteAsText : "Liitä tekstinä",
-PasteFromWord : "Liitä Wordista",
-
-DlgPasteMsg2 : "Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.",
-DlgPasteSec : "Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.",
-DlgPasteIgnoreFont : "Jätä huomioimatta fonttimääritykset",
-DlgPasteRemoveStyles : "Poista tyylimääritykset",
-
-// Color Picker
-ColorAutomatic : "Automaattinen",
-ColorMoreColors : "Lisää värejä...",
-
-// Document Properties
-DocProps : "Dokumentin ominaisuudet",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ankkurin ominaisuudet",
-DlgAnchorName : "Nimi",
-DlgAnchorErrorName : "Ankkurille on kirjoitettava nimi",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ei sanakirjassa",
-DlgSpellChangeTo : "Vaihda",
-DlgSpellBtnIgnore : "Jätä huomioimatta",
-DlgSpellBtnIgnoreAll : "Jätä kaikki huomioimatta",
-DlgSpellBtnReplace : "Korvaa",
-DlgSpellBtnReplaceAll : "Korvaa kaikki",
-DlgSpellBtnUndo : "Kumoa",
-DlgSpellNoSuggestions : "Ei ehdotuksia",
-DlgSpellProgress : "Tarkistus käynnissä...",
-DlgSpellNoMispell : "Tarkistus valmis: Ei virheitä",
-DlgSpellNoChanges : "Tarkistus valmis: Yhtään sanaa ei muutettu",
-DlgSpellOneChange : "Tarkistus valmis: Yksi sana muutettiin",
-DlgSpellManyChanges : "Tarkistus valmis: %1 sanaa muutettiin",
-
-IeSpellDownload : "Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?",
-
-// Button Dialog
-DlgButtonText : "Teksti (arvo)",
-DlgButtonType : "Tyyppi",
-DlgButtonTypeBtn : "Painike",
-DlgButtonTypeSbm : "Lähetä",
-DlgButtonTypeRst : "Tyhjennä",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nimi",
-DlgCheckboxValue : "Arvo",
-DlgCheckboxSelected : "Valittu",
-
-// Form Dialog
-DlgFormName : "Nimi",
-DlgFormAction : "Toiminto",
-DlgFormMethod : "Tapa",
-
-// Select Field Dialog
-DlgSelectName : "Nimi",
-DlgSelectValue : "Arvo",
-DlgSelectSize : "Koko",
-DlgSelectLines : "Rivit",
-DlgSelectChkMulti : "Salli usea valinta",
-DlgSelectOpAvail : "Ominaisuudet",
-DlgSelectOpText : "Teksti",
-DlgSelectOpValue : "Arvo",
-DlgSelectBtnAdd : "Lisää",
-DlgSelectBtnModify : "Muuta",
-DlgSelectBtnUp : "Ylös",
-DlgSelectBtnDown : "Alas",
-DlgSelectBtnSetValue : "Aseta valituksi",
-DlgSelectBtnDelete : "Poista",
-
-// Textarea Dialog
-DlgTextareaName : "Nimi",
-DlgTextareaCols : "Sarakkeita",
-DlgTextareaRows : "Rivejä",
-
-// Text Field Dialog
-DlgTextName : "Nimi",
-DlgTextValue : "Arvo",
-DlgTextCharWidth : "Leveys",
-DlgTextMaxChars : "Maksimi merkkimäärä",
-DlgTextType : "Tyyppi",
-DlgTextTypeText : "Teksti",
-DlgTextTypePass : "Salasana",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nimi",
-DlgHiddenValue : "Arvo",
-
-// Bulleted List Dialog
-BulletedListProp : "Luettelon ominaisuudet",
-NumberedListProp : "Numeroinnin ominaisuudet",
-DlgLstStart : "Alku",
-DlgLstType : "Tyyppi",
-DlgLstTypeCircle : "Kehä",
-DlgLstTypeDisc : "Ympyrä",
-DlgLstTypeSquare : "Neliö",
-DlgLstTypeNumbers : "Numerot (1, 2, 3)",
-DlgLstTypeLCase : "Pienet kirjaimet (a, b, c)",
-DlgLstTypeUCase : "Isot kirjaimet (A, B, C)",
-DlgLstTypeSRoman : "Pienet roomalaiset numerot (i, ii, iii)",
-DlgLstTypeLRoman : "Isot roomalaiset numerot (Ii, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Yleiset",
-DlgDocBackTab : "Tausta",
-DlgDocColorsTab : "Värit ja marginaalit",
-DlgDocMetaTab : "Meta-tieto",
-
-DlgDocPageTitle : "Sivun nimi",
-DlgDocLangDir : "Kielen suunta",
-DlgDocLangDirLTR : "Vasemmalta oikealle (LTR)",
-DlgDocLangDirRTL : "Oikealta vasemmalle (RTL)",
-DlgDocLangCode : "Kielikoodi",
-DlgDocCharSet : "Merkistökoodaus",
-DlgDocCharSetCE : "Keskieurooppalainen",
-DlgDocCharSetCT : "Kiina, perinteinen (Big5)",
-DlgDocCharSetCR : "Kyrillinen",
-DlgDocCharSetGR : "Kreikka",
-DlgDocCharSetJP : "Japani",
-DlgDocCharSetKR : "Korealainen",
-DlgDocCharSetTR : "Turkkilainen",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Länsieurooppalainen",
-DlgDocCharSetOther : "Muu merkistökoodaus",
-
-DlgDocDocType : "Dokumentin tyyppi",
-DlgDocDocTypeOther : "Muu dokumentin tyyppi",
-DlgDocIncXHTML : "Lisää XHTML julistukset",
-DlgDocBgColor : "Taustaväri",
-DlgDocBgImage : "Taustakuva",
-DlgDocBgNoScroll : "Paikallaanpysyvä tausta",
-DlgDocCText : "Teksti",
-DlgDocCLink : "Linkki",
-DlgDocCVisited : "Vierailtu linkki",
-DlgDocCActive : "Aktiivinen linkki",
-DlgDocMargins : "Sivun marginaalit",
-DlgDocMaTop : "Ylä",
-DlgDocMaLeft : "Vasen",
-DlgDocMaRight : "Oikea",
-DlgDocMaBottom : "Ala",
-DlgDocMeIndex : "Hakusanat (pilkulla erotettuna)",
-DlgDocMeDescr : "Kuvaus",
-DlgDocMeAuthor : "Tekijä",
-DlgDocMeCopy : "Tekijänoikeudet",
-DlgDocPreview : "Esikatselu",
-
-// Templates Dialog
-Templates : "Pohjat",
-DlgTemplatesTitle : "Sisältöpohjat",
-DlgTemplatesSelMsg : "Valitse pohja editoriin<br>(aiempi sisältö menetetään):",
-DlgTemplatesLoading : "Ladataan listaa pohjista. Hetkinen...",
-DlgTemplatesNoTpl : "(Ei määriteltyjä pohjia)",
-DlgTemplatesReplace : "Korvaa editorin koko sisältö",
-
-// About Dialog
-DlgAboutAboutTab : "Editorista",
-DlgAboutBrowserInfoTab : "Selaimen tiedot",
-DlgAboutLicenseTab : "Lisenssi",
-DlgAboutVersion : "versio",
-DlgAboutInfo : "Lisää tietoa osoitteesta",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fo.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fo.js
deleted file mode 100644
index 24e4c6feb..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fo.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Faroese language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Fjal amboðsbjálkan",
-ToolbarExpand : "Vís amboðsbjálkan",
-
-// Toolbar Items and Context Menu
-Save : "Goym",
-NewPage : "Nýggj síða",
-Preview : "Frumsýning",
-Cut : "Kvett",
-Copy : "Avrita",
-Paste : "Innrita",
-PasteText : "Innrita reinan tekst",
-PasteWord : "Innrita frá Word",
-Print : "Prenta",
-SelectAll : "Markera alt",
-RemoveFormat : "Strika sniðgeving",
-InsertLinkLbl : "Tilknýti",
-InsertLink : "Ger/broyt tilknýti",
-RemoveLink : "Strika tilknýti",
-VisitLink : "Opna tilknýti",
-Anchor : "Ger/broyt marknastein",
-AnchorDelete : "Strika marknastein",
-InsertImageLbl : "Myndir",
-InsertImage : "Set inn/broyt mynd",
-InsertFlashLbl : "Flash",
-InsertFlash : "Set inn/broyt Flash",
-InsertTableLbl : "Tabell",
-InsertTable : "Set inn/broyt tabell",
-InsertLineLbl : "Linja",
-InsertLine : "Ger vatnrætta linju",
-InsertSpecialCharLbl: "Sertekn",
-InsertSpecialChar : "Set inn sertekn",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Set inn Smiley",
-About : "Um FCKeditor",
-Bold : "Feit skrift",
-Italic : "Skráskrift",
-Underline : "Undirstrikað",
-StrikeThrough : "Yvirstrikað",
-Subscript : "Lækkað skrift",
-Superscript : "Hækkað skrift",
-LeftJustify : "Vinstrasett",
-CenterJustify : "Miðsett",
-RightJustify : "Høgrasett",
-BlockJustify : "Javnir tekstkantar",
-DecreaseIndent : "Minka reglubrotarinntriv",
-IncreaseIndent : "Økja reglubrotarinntriv",
-Blockquote : "Blockquote",
-CreateDiv : "Ger DIV øki",
-EditDiv : "Broyt DIV øki",
-DeleteDiv : "Strika DIV øki",
-Undo : "Angra",
-Redo : "Vend aftur",
-NumberedListLbl : "Talmerktur listi",
-NumberedList : "Ger/strika talmerktan lista",
-BulletedListLbl : "Punktmerktur listi",
-BulletedList : "Ger/strika punktmerktan lista",
-ShowTableBorders : "Vís tabellbordar",
-ShowDetails : "Vís í smálutum",
-Style : "Typografi",
-FontFormat : "Skriftsnið",
-Font : "Skrift",
-FontSize : "Skriftstødd",
-TextColor : "Tekstlitur",
-BGColor : "Bakgrundslitur",
-Source : "Kelda",
-Find : "Leita",
-Replace : "Yvirskriva",
-SpellCheck : "Kanna stavseting",
-UniversalKeyboard : "Knappaborð",
-PageBreakLbl : "Síðuskift",
-PageBreak : "Ger síðuskift",
-
-Form : "Formur",
-Checkbox : "Flugubein",
-RadioButton : "Radioknøttur",
-TextField : "Tekstteigur",
-Textarea : "Tekstumráði",
-HiddenField : "Fjaldur teigur",
-Button : "Knøttur",
-SelectionField : "Valskrá",
-ImageButton : "Myndaknøttur",
-
-FitWindow : "Set tekstviðgera til fulla stødd",
-ShowBlocks : "Vís blokkar",
-
-// Context Menu
-EditLink : "Broyt tilknýti",
-CellCM : "Meski",
-RowCM : "Rað",
-ColumnCM : "Kolonna",
-InsertRowAfter : "Set rað inn aftaná",
-InsertRowBefore : "Set rað inn áðrenn",
-DeleteRows : "Strika røðir",
-InsertColumnAfter : "Set kolonnu inn aftaná",
-InsertColumnBefore : "Set kolonnu inn áðrenn",
-DeleteColumns : "Strika kolonnur",
-InsertCellAfter : "Set meska inn aftaná",
-InsertCellBefore : "Set meska inn áðrenn",
-DeleteCells : "Strika meskar",
-MergeCells : "Flætta meskar",
-MergeRight : "Flætta meskar til høgru",
-MergeDown : "Flætta saman",
-HorizontalSplitCell : "Kloyv meska vatnrætt",
-VerticalSplitCell : "Kloyv meska loddrætt",
-TableDelete : "Strika tabell",
-CellProperties : "Meskueginleikar",
-TableProperties : "Tabelleginleikar",
-ImageProperties : "Myndaeginleikar",
-FlashProperties : "Flash eginleikar",
-
-AnchorProp : "Eginleikar fyri marknastein",
-ButtonProp : "Eginleikar fyri knøtt",
-CheckboxProp : "Eginleikar fyri flugubein",
-HiddenFieldProp : "Eginleikar fyri fjaldan teig",
-RadioButtonProp : "Eginleikar fyri radioknøtt",
-ImageButtonProp : "Eginleikar fyri myndaknøtt",
-TextFieldProp : "Eginleikar fyri tekstteig",
-SelectionFieldProp : "Eginleikar fyri valskrá",
-TextareaProp : "Eginleikar fyri tekstumráði",
-FormProp : "Eginleikar fyri Form",
-
-FontFormats : "Vanligt;Sniðgivið;Adressa;Yvirskrift 1;Yvirskrift 2;Yvirskrift 3;Yvirskrift 4;Yvirskrift 5;Yvirskrift 6",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML verður viðgjørt. Bíða við...",
-Done : "Liðugt",
-PasteWordConfirm : "Teksturin, royndur verður at seta inn, tykist at stava frá Word. Vilt tú reinsa tekstin, áðrenn hann verður settur inn?",
-NotCompatiblePaste : "Hetta er bert tøkt í Internet Explorer 5.5 og nýggjari. Vilt tú seta tekstin inn kortini - óreinsaðan?",
-UnknownToolbarItem : "Ókendur lutur í amboðsbjálkanum \"%1\"",
-UnknownCommand : "Ókend kommando \"%1\"",
-NotImplemented : "Hetta er ikki tøkt í hesi útgávuni",
-UnknownToolbarSet : "Amboðsbjálkin \"%1\" finst ikki",
-NoActiveX : "Trygdaruppsetingin í alnótskaganum kann sum er avmarka onkrar hentleikar í tekstviðgeranum. Tú mást loyva møguleikanum \"Run/Kør ActiveX controls and plug-ins\". Tú kanst uppliva feilir og ávaringar um tvørrandi hentleikar.",
-BrowseServerBlocked : "Ambætarakagin kundi ikki opnast. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
-DialogBlocked : "Tað eyðnaðist ikki at opna samskiftisrútin. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
-VisitLinkBlocked : "Tað eyðnaðist ikki at opna nýggjan rút. Tryggja tær, at allar pop-up forðingar eru óvirknar.",
-
-// Dialogs
-DlgBtnOK : "Góðkent",
-DlgBtnCancel : "Avlýst",
-DlgBtnClose : "Lat aftur",
-DlgBtnBrowseServer : "Ambætarakagi",
-DlgAdvancedTag : "Fjølbroytt",
-DlgOpOther : "<Annað>",
-DlgInfoTab : "Upplýsingar",
-DlgAlertUrl : "Vinarliga veit ein URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ikki sett>",
-DlgGenId : "Id",
-DlgGenLangDir : "Tekstkós",
-DlgGenLangDirLtr : "Frá vinstru til høgru (LTR)",
-DlgGenLangDirRtl : "Frá høgru til vinstru (RTL)",
-DlgGenLangCode : "Málkoda",
-DlgGenAccessKey : "Snarvegisknappur",
-DlgGenName : "Navn",
-DlgGenTabIndex : "Inntriv indeks",
-DlgGenLongDescr : "Víðkað URL frágreiðing",
-DlgGenClass : "Typografi klassar",
-DlgGenTitle : "Vegleiðandi heiti",
-DlgGenContType : "Vegleiðandi innihaldsslag",
-DlgGenLinkCharset : "Atknýtt teknsett",
-DlgGenStyle : "Typografi",
-
-// Image Dialog
-DlgImgTitle : "Myndaeginleikar",
-DlgImgInfoTab : "Myndaupplýsingar",
-DlgImgBtnUpload : "Send til ambætaran",
-DlgImgURL : "URL",
-DlgImgUpload : "Send",
-DlgImgAlt : "Alternativur tekstur",
-DlgImgWidth : "Breidd",
-DlgImgHeight : "Hædd",
-DlgImgLockRatio : "Læs lutfallið",
-DlgBtnResetSize : "Upprunastødd",
-DlgImgBorder : "Bordi",
-DlgImgHSpace : "Høgri breddi",
-DlgImgVSpace : "Vinstri breddi",
-DlgImgAlign : "Justering",
-DlgImgAlignLeft : "Vinstra",
-DlgImgAlignAbsBottom: "Abs botnur",
-DlgImgAlignAbsMiddle: "Abs miðja",
-DlgImgAlignBaseline : "Basislinja",
-DlgImgAlignBottom : "Botnur",
-DlgImgAlignMiddle : "Miðja",
-DlgImgAlignRight : "Høgra",
-DlgImgAlignTextTop : "Tekst toppur",
-DlgImgAlignTop : "Ovast",
-DlgImgPreview : "Frumsýning",
-DlgImgAlertUrl : "Rita slóðina til myndina",
-DlgImgLinkTab : "Tilknýti",
-
-// Flash Dialog
-DlgFlashTitle : "Flash eginleikar",
-DlgFlashChkPlay : "Avspælingin byrjar sjálv",
-DlgFlashChkLoop : "Endurspæl",
-DlgFlashChkMenu : "Ger Flash skrá virkna",
-DlgFlashScale : "Skalering",
-DlgFlashScaleAll : "Vís alt",
-DlgFlashScaleNoBorder : "Eingin bordi",
-DlgFlashScaleFit : "Neyv skalering",
-
-// Link Dialog
-DlgLnkWindowTitle : "Tilknýti",
-DlgLnkInfoTab : "Tilknýtis upplýsingar",
-DlgLnkTargetTab : "Mál",
-
-DlgLnkType : "Tilknýtisslag",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Tilknýti til marknastein í tekstinum",
-DlgLnkTypeEMail : "Teldupostur",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<Annað>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Vel ein marknastein",
-DlgLnkAnchorByName : "Eftir navni á marknasteini",
-DlgLnkAnchorById : "Eftir element Id",
-DlgLnkNoAnchors : "(Eingir marknasteinar eru í hesum dokumentið)",
-DlgLnkEMail : "Teldupost-adressa",
-DlgLnkEMailSubject : "Evni",
-DlgLnkEMailBody : "Breyðtekstur",
-DlgLnkUpload : "Send til ambætaran",
-DlgLnkBtnUpload : "Send til ambætaran",
-
-DlgLnkTarget : "Mál",
-DlgLnkTargetFrame : "<ramma>",
-DlgLnkTargetPopup : "<popup vindeyga>",
-DlgLnkTargetBlank : "Nýtt vindeyga (_blank)",
-DlgLnkTargetParent : "Upphavliga vindeygað (_parent)",
-DlgLnkTargetSelf : "Sama vindeygað (_self)",
-DlgLnkTargetTop : "Alt vindeygað (_top)",
-DlgLnkTargetFrameName : "Vís navn vindeygans",
-DlgLnkPopWinName : "Popup vindeygans navn",
-DlgLnkPopWinFeat : "Popup vindeygans víðkaðu eginleikar",
-DlgLnkPopResize : "Kann broyta stødd",
-DlgLnkPopLocation : "Adressulinja",
-DlgLnkPopMenu : "Skrábjálki",
-DlgLnkPopScroll : "Rullibjálki",
-DlgLnkPopStatus : "Støðufrágreiðingarbjálki",
-DlgLnkPopToolbar : "Amboðsbjálki",
-DlgLnkPopFullScrn : "Fullur skermur (IE)",
-DlgLnkPopDependent : "Bundið (Netscape)",
-DlgLnkPopWidth : "Breidd",
-DlgLnkPopHeight : "Hædd",
-DlgLnkPopLeft : "Frástøða frá vinstru",
-DlgLnkPopTop : "Frástøða frá íerva",
-
-DlnLnkMsgNoUrl : "Vinarliga skriva tilknýti (URL)",
-DlnLnkMsgNoEMail : "Vinarliga skriva teldupost-adressu",
-DlnLnkMsgNoAnchor : "Vinarliga vel marknastein",
-DlnLnkMsgInvPopName : "Popup navnið má byrja við bókstavi og má ikki hava millumrúm",
-
-// Color Dialog
-DlgColorTitle : "Vel lit",
-DlgColorBtnClear : "Strika alt",
-DlgColorHighlight : "Framhevja",
-DlgColorSelected : "Valt",
-
-// Smiley Dialog
-DlgSmileyTitle : "Vel Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Vel sertekn",
-
-// Table Dialog
-DlgTableTitle : "Eginleikar fyri tabell",
-DlgTableRows : "Røðir",
-DlgTableColumns : "Kolonnur",
-DlgTableBorder : "Bordabreidd",
-DlgTableAlign : "Justering",
-DlgTableAlignNotSet : "<Einki valt>",
-DlgTableAlignLeft : "Vinstrasett",
-DlgTableAlignCenter : "Miðsett",
-DlgTableAlignRight : "Høgrasett",
-DlgTableWidth : "Breidd",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "prosent",
-DlgTableHeight : "Hædd",
-DlgTableCellSpace : "Fjarstøða millum meskar",
-DlgTableCellPad : "Meskubreddi",
-DlgTableCaption : "Tabellfrágreiðing",
-DlgTableSummary : "Samandráttur",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Mesku eginleikar",
-DlgCellWidth : "Breidd",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "prosent",
-DlgCellHeight : "Hædd",
-DlgCellWordWrap : "Orðkloyving",
-DlgCellWordWrapNotSet : "<Einki valt>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nei",
-DlgCellHorAlign : "Vatnrøtt justering",
-DlgCellHorAlignNotSet : "<Einki valt>",
-DlgCellHorAlignLeft : "Vinstrasett",
-DlgCellHorAlignCenter : "Miðsett",
-DlgCellHorAlignRight: "Høgrasett",
-DlgCellVerAlign : "Lodrøtt justering",
-DlgCellVerAlignNotSet : "<Ikki sett>",
-DlgCellVerAlignTop : "Ovast",
-DlgCellVerAlignMiddle : "Miðjan",
-DlgCellVerAlignBottom : "Niðast",
-DlgCellVerAlignBaseline : "Basislinja",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Røðir, meskin fevnir um",
-DlgCellCollSpan : "Kolonnur, meskin fevnir um",
-DlgCellBackColor : "Bakgrundslitur",
-DlgCellBorderColor : "Litur á borda",
-DlgCellBtnSelect : "Vel...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Finn og broyt",
-
-// Find Dialog
-DlgFindTitle : "Finn",
-DlgFindFindBtn : "Finn",
-DlgFindNotFoundMsg : "Leititeksturin varð ikki funnin",
-
-// Replace Dialog
-DlgReplaceTitle : "Yvirskriva",
-DlgReplaceFindLbl : "Finn:",
-DlgReplaceReplaceLbl : "Yvirskriva við:",
-DlgReplaceCaseChk : "Munur á stórum og smáðum bókstavum",
-DlgReplaceReplaceBtn : "Yvirskriva",
-DlgReplaceReplAllBtn : "Yvirskriva alt",
-DlgReplaceWordChk : "Bert heil orð",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).",
-PasteErrorCopy : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).",
-
-PasteAsText : "Innrita som reinan tekst",
-PasteFromWord : "Innrita fra Word",
-
-DlgPasteMsg2 : "Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>CTRL+V</strong>) og klikk á <strong>Góðtak</strong>.",
-DlgPasteSec : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.",
-DlgPasteIgnoreFont : "Forfjóna Font definitiónirnar",
-DlgPasteRemoveStyles : "Strika typografi definitiónir",
-
-// Color Picker
-ColorAutomatic : "Automatiskt",
-ColorMoreColors : "Fleiri litir...",
-
-// Document Properties
-DocProps : "Eginleikar fyri dokument",
-
-// Anchor Dialog
-DlgAnchorTitle : "Eginleikar fyri marknastein",
-DlgAnchorName : "Heiti marknasteinsins",
-DlgAnchorErrorName : "Vinarliga rita marknasteinsins heiti",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Finst ikki í orðabókini",
-DlgSpellChangeTo : "Broyt til",
-DlgSpellBtnIgnore : "Forfjóna",
-DlgSpellBtnIgnoreAll : "Forfjóna alt",
-DlgSpellBtnReplace : "Yvirskriva",
-DlgSpellBtnReplaceAll : "Yvirskriva alt",
-DlgSpellBtnUndo : "Angra",
-DlgSpellNoSuggestions : "- Einki uppskot -",
-DlgSpellProgress : "Rættstavarin arbeiðir...",
-DlgSpellNoMispell : "Rættstavarain liðugur: Eingin feilur funnin",
-DlgSpellNoChanges : "Rættstavarain liðugur: Einki orð varð broytt",
-DlgSpellOneChange : "Rættstavarain liðugur: Eitt orð er broytt",
-DlgSpellManyChanges : "Rættstavarain liðugur: %1 orð broytt",
-
-IeSpellDownload : "Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?",
-
-// Button Dialog
-DlgButtonText : "Tekstur",
-DlgButtonType : "Slag",
-DlgButtonTypeBtn : "Knøttur",
-DlgButtonTypeSbm : "Send",
-DlgButtonTypeRst : "Nullstilla",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Navn",
-DlgCheckboxValue : "Virði",
-DlgCheckboxSelected : "Valt",
-
-// Form Dialog
-DlgFormName : "Navn",
-DlgFormAction : "Hending",
-DlgFormMethod : "Háttur",
-
-// Select Field Dialog
-DlgSelectName : "Navn",
-DlgSelectValue : "Virði",
-DlgSelectSize : "Stødd",
-DlgSelectLines : "Linjur",
-DlgSelectChkMulti : "Loyv fleiri valmøguleikum samstundis",
-DlgSelectOpAvail : "Tøkir møguleikar",
-DlgSelectOpText : "Tekstur",
-DlgSelectOpValue : "Virði",
-DlgSelectBtnAdd : "Legg afturat",
-DlgSelectBtnModify : "Broyt",
-DlgSelectBtnUp : "Upp",
-DlgSelectBtnDown : "Niður",
-DlgSelectBtnSetValue : "Set sum valt virði",
-DlgSelectBtnDelete : "Strika",
-
-// Textarea Dialog
-DlgTextareaName : "Navn",
-DlgTextareaCols : "kolonnur",
-DlgTextareaRows : "røðir",
-
-// Text Field Dialog
-DlgTextName : "Navn",
-DlgTextValue : "Virði",
-DlgTextCharWidth : "Breidd (sjónlig tekn)",
-DlgTextMaxChars : "Mest loyvdu tekn",
-DlgTextType : "Slag",
-DlgTextTypeText : "Tekstur",
-DlgTextTypePass : "Loyniorð",
-
-// Hidden Field Dialog
-DlgHiddenName : "Navn",
-DlgHiddenValue : "Virði",
-
-// Bulleted List Dialog
-BulletedListProp : "Eginleikar fyri punktmerktan lista",
-NumberedListProp : "Eginleikar fyri talmerktan lista",
-DlgLstStart : "Byrjan",
-DlgLstType : "Slag",
-DlgLstTypeCircle : "Sirkul",
-DlgLstTypeDisc : "Fyltur sirkul",
-DlgLstTypeSquare : "Fjórhyrningur",
-DlgLstTypeNumbers : "Talmerkt (1, 2, 3)",
-DlgLstTypeLCase : "Smáir bókstavir (a, b, c)",
-DlgLstTypeUCase : "Stórir bókstavir (A, B, C)",
-DlgLstTypeSRoman : "Smá rómaratøl (i, ii, iii)",
-DlgLstTypeLRoman : "Stór rómaratøl (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Generelt",
-DlgDocBackTab : "Bakgrund",
-DlgDocColorsTab : "Litir og breddar",
-DlgDocMetaTab : "META-upplýsingar",
-
-DlgDocPageTitle : "Síðuheiti",
-DlgDocLangDir : "Tekstkós",
-DlgDocLangDirLTR : "Frá vinstru móti høgru (LTR)",
-DlgDocLangDirRTL : "Frá høgru móti vinstru (RTL)",
-DlgDocLangCode : "Málkoda",
-DlgDocCharSet : "Teknsett koda",
-DlgDocCharSetCE : "Miðeuropa",
-DlgDocCharSetCT : "Kinesiskt traditionelt (Big5)",
-DlgDocCharSetCR : "Cyrilliskt",
-DlgDocCharSetGR : "Grikst",
-DlgDocCharSetJP : "Japanskt",
-DlgDocCharSetKR : "Koreanskt",
-DlgDocCharSetTR : "Turkiskt",
-DlgDocCharSetUN : "UNICODE (UTF-8)",
-DlgDocCharSetWE : "Vestureuropa",
-DlgDocCharSetOther : "Onnur teknsett koda",
-
-DlgDocDocType : "Dokumentslag yvirskrift",
-DlgDocDocTypeOther : "Annað dokumentslag yvirskrift",
-DlgDocIncXHTML : "Viðfest XHTML deklaratiónir",
-DlgDocBgColor : "Bakgrundslitur",
-DlgDocBgImage : "Leið til bakgrundsmynd (URL)",
-DlgDocBgNoScroll : "Læst bakgrund (rullar ikki)",
-DlgDocCText : "Tekstur",
-DlgDocCLink : "Tilknýti",
-DlgDocCVisited : "Vitjaði tilknýti",
-DlgDocCActive : "Virkin tilknýti",
-DlgDocMargins : "Síðubreddar",
-DlgDocMaTop : "Ovast",
-DlgDocMaLeft : "Vinstra",
-DlgDocMaRight : "Høgra",
-DlgDocMaBottom : "Niðast",
-DlgDocMeIndex : "Dokument index lyklaorð (sundurbýtt við komma)",
-DlgDocMeDescr : "Dokumentlýsing",
-DlgDocMeAuthor : "Høvundur",
-DlgDocMeCopy : "Upphavsrættindi",
-DlgDocPreview : "Frumsýning",
-
-// Templates Dialog
-Templates : "Skabelónir",
-DlgTemplatesTitle : "Innihaldsskabelónir",
-DlgTemplatesSelMsg : "Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):",
-DlgTemplatesLoading : "Heinti yvirlit yvir skabelónir. Vinarliga bíða við...",
-DlgTemplatesNoTpl : "(Ongar skabelónir tøkar)",
-DlgTemplatesReplace : "Yvirskriva núverandi innihald",
-
-// About Dialog
-DlgAboutAboutTab : "Um",
-DlgAboutBrowserInfoTab : "Upplýsingar um alnótskagan",
-DlgAboutLicenseTab : "License",
-DlgAboutVersion : "version",
-DlgAboutInfo : "Fyri fleiri upplýsingar, far til",
-
-// Div Dialog
-DlgDivGeneralTab : "Generelt",
-DlgDivAdvancedTab : "Fjølbroytt",
-DlgDivStyle : "Typografi",
-DlgDivInlineStyle : "Inline typografi"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr-ca.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr-ca.js
deleted file mode 100644
index 9521c67dc..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr-ca.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Canadian French language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Masquer Outils",
-ToolbarExpand : "Afficher Outils",
-
-// Toolbar Items and Context Menu
-Save : "Sauvegarder",
-NewPage : "Nouvelle page",
-Preview : "Previsualiser",
-Cut : "Couper",
-Copy : "Copier",
-Paste : "Coller",
-PasteText : "Coller en tant que texte",
-PasteWord : "Coller en tant que Word (formaté)",
-Print : "Imprimer",
-SelectAll : "Tout sélectionner",
-RemoveFormat : "Supprimer le formatage",
-InsertLinkLbl : "Lien",
-InsertLink : "Insérer/modifier le lien",
-RemoveLink : "Supprimer le lien",
-VisitLink : "Suivre le lien",
-Anchor : "Insérer/modifier l'ancre",
-AnchorDelete : "Supprimer l'ancre",
-InsertImageLbl : "Image",
-InsertImage : "Insérer/modifier l'image",
-InsertFlashLbl : "Animation Flash",
-InsertFlash : "Insérer/modifier l'animation Flash",
-InsertTableLbl : "Tableau",
-InsertTable : "Insérer/modifier le tableau",
-InsertLineLbl : "Séparateur",
-InsertLine : "Insérer un séparateur",
-InsertSpecialCharLbl: "Caractères spéciaux",
-InsertSpecialChar : "Insérer un caractère spécial",
-InsertSmileyLbl : "Emoticon",
-InsertSmiley : "Insérer un Emoticon",
-About : "A propos de FCKeditor",
-Bold : "Gras",
-Italic : "Italique",
-Underline : "Souligné",
-StrikeThrough : "Barrer",
-Subscript : "Indice",
-Superscript : "Exposant",
-LeftJustify : "Aligner à gauche",
-CenterJustify : "Centrer",
-RightJustify : "Aligner à Droite",
-BlockJustify : "Texte justifié",
-DecreaseIndent : "Diminuer le retrait",
-IncreaseIndent : "Augmenter le retrait",
-Blockquote : "Citation",
-CreateDiv : "Créer Balise Div",
-EditDiv : "Modifier Balise Div",
-DeleteDiv : "Supprimer Balise Div",
-Undo : "Annuler",
-Redo : "Refaire",
-NumberedListLbl : "Liste numérotée",
-NumberedList : "Insérer/supprimer la liste numérotée",
-BulletedListLbl : "Liste à puces",
-BulletedList : "Insérer/supprimer la liste à puces",
-ShowTableBorders : "Afficher les bordures du tableau",
-ShowDetails : "Afficher les caractères invisibles",
-Style : "Style",
-FontFormat : "Format",
-Font : "Police",
-FontSize : "Taille",
-TextColor : "Couleur de caractère",
-BGColor : "Couleur de fond",
-Source : "Source",
-Find : "Chercher",
-Replace : "Remplacer",
-SpellCheck : "Orthographe",
-UniversalKeyboard : "Clavier universel",
-PageBreakLbl : "Saut de page",
-PageBreak : "Insérer un saut de page",
-
-Form : "Formulaire",
-Checkbox : "Case à cocher",
-RadioButton : "Bouton radio",
-TextField : "Champ texte",
-Textarea : "Zone de texte",
-HiddenField : "Champ caché",
-Button : "Bouton",
-SelectionField : "Champ de sélection",
-ImageButton : "Bouton image",
-
-FitWindow : "Edition pleine page",
-ShowBlocks : "Afficher les blocs",
-
-// Context Menu
-EditLink : "Modifier le lien",
-CellCM : "Cellule",
-RowCM : "Ligne",
-ColumnCM : "Colonne",
-InsertRowAfter : "Insérer une ligne après",
-InsertRowBefore : "Insérer une ligne avant",
-DeleteRows : "Supprimer des lignes",
-InsertColumnAfter : "Insérer une colonne après",
-InsertColumnBefore : "Insérer une colonne avant",
-DeleteColumns : "Supprimer des colonnes",
-InsertCellAfter : "Insérer une cellule après",
-InsertCellBefore : "Insérer une cellule avant",
-DeleteCells : "Supprimer des cellules",
-MergeCells : "Fusionner les cellules",
-MergeRight : "Fusionner à droite",
-MergeDown : "Fusionner en bas",
-HorizontalSplitCell : "Scinder la cellule horizontalement",
-VerticalSplitCell : "Scinder la cellule verticalement",
-TableDelete : "Supprimer le tableau",
-CellProperties : "Propriétés de cellule",
-TableProperties : "Propriétés du tableau",
-ImageProperties : "Propriétés de l'image",
-FlashProperties : "Propriétés de l'animation Flash",
-
-AnchorProp : "Propriétés de l'ancre",
-ButtonProp : "Propriétés du bouton",
-CheckboxProp : "Propriétés de la case à cocher",
-HiddenFieldProp : "Propriétés du champ caché",
-RadioButtonProp : "Propriétés du bouton radio",
-ImageButtonProp : "Propriétés du bouton image",
-TextFieldProp : "Propriétés du champ texte",
-SelectionFieldProp : "Propriétés de la liste/du menu",
-TextareaProp : "Propriétés de la zone de texte",
-FormProp : "Propriétés du formulaire",
-
-FontFormats : "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Calcul XHTML. Veuillez patienter...",
-Done : "Terminé",
-PasteWordConfirm : "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?",
-NotCompatiblePaste : "Cette commande nécessite Internet Explorer version 5.5 et plus. Souhaitez-vous coller sans nettoyage?",
-UnknownToolbarItem : "Élément de barre d'outil inconnu \"%1\"",
-UnknownCommand : "Nom de commande inconnu \"%1\"",
-NotImplemented : "Commande indisponible",
-UnknownToolbarSet : "La barre d'outils \"%1\" n'existe pas",
-NoActiveX : "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
-BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
-DialogBlocked : "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Annuler",
-DlgBtnClose : "Fermer",
-DlgBtnBrowseServer : "Parcourir le serveur",
-DlgAdvancedTag : "Avancée",
-DlgOpOther : "<autre>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Veuillez saisir l'URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<Par défaut>",
-DlgGenId : "Id",
-DlgGenLangDir : "Sens d'écriture",
-DlgGenLangDirLtr : "De gauche à droite (LTR)",
-DlgGenLangDirRtl : "De droite à gauche (RTL)",
-DlgGenLangCode : "Code langue",
-DlgGenAccessKey : "Équivalent clavier",
-DlgGenName : "Nom",
-DlgGenTabIndex : "Ordre de tabulation",
-DlgGenLongDescr : "URL de description longue",
-DlgGenClass : "Classes de feuilles de style",
-DlgGenTitle : "Titre",
-DlgGenContType : "Type de contenu",
-DlgGenLinkCharset : "Encodage de caractère",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Propriétés de l'image",
-DlgImgInfoTab : "Informations sur l'image",
-DlgImgBtnUpload : "Envoyer sur le serveur",
-DlgImgURL : "URL",
-DlgImgUpload : "Télécharger",
-DlgImgAlt : "Texte de remplacement",
-DlgImgWidth : "Largeur",
-DlgImgHeight : "Hauteur",
-DlgImgLockRatio : "Garder les proportions",
-DlgBtnResetSize : "Taille originale",
-DlgImgBorder : "Bordure",
-DlgImgHSpace : "Espacement horizontal",
-DlgImgVSpace : "Espacement vertical",
-DlgImgAlign : "Alignement",
-DlgImgAlignLeft : "Gauche",
-DlgImgAlignAbsBottom: "Abs Bas",
-DlgImgAlignAbsMiddle: "Abs Milieu",
-DlgImgAlignBaseline : "Bas du texte",
-DlgImgAlignBottom : "Bas",
-DlgImgAlignMiddle : "Milieu",
-DlgImgAlignRight : "Droite",
-DlgImgAlignTextTop : "Haut du texte",
-DlgImgAlignTop : "Haut",
-DlgImgPreview : "Prévisualisation",
-DlgImgAlertUrl : "Veuillez saisir l'URL de l'image",
-DlgImgLinkTab : "Lien",
-
-// Flash Dialog
-DlgFlashTitle : "Propriétés de l'animation Flash",
-DlgFlashChkPlay : "Lecture automatique",
-DlgFlashChkLoop : "Boucle",
-DlgFlashChkMenu : "Activer le menu Flash",
-DlgFlashScale : "Affichage",
-DlgFlashScaleAll : "Par défaut (tout montrer)",
-DlgFlashScaleNoBorder : "Sans bordure",
-DlgFlashScaleFit : "Ajuster aux dimensions",
-
-// Link Dialog
-DlgLnkWindowTitle : "Propriétés du lien",
-DlgLnkInfoTab : "Informations sur le lien",
-DlgLnkTargetTab : "Destination",
-
-DlgLnkType : "Type de lien",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ancre dans cette page",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocole",
-DlgLnkProtoOther : "<autre>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Sélectionner une ancre",
-DlgLnkAnchorByName : "Par nom",
-DlgLnkAnchorById : "Par id",
-DlgLnkNoAnchors : "(Pas d'ancre disponible dans le document)",
-DlgLnkEMail : "Adresse E-Mail",
-DlgLnkEMailSubject : "Sujet du message",
-DlgLnkEMailBody : "Corps du message",
-DlgLnkUpload : "Télécharger",
-DlgLnkBtnUpload : "Envoyer sur le serveur",
-
-DlgLnkTarget : "Destination",
-DlgLnkTargetFrame : "<Cadre>",
-DlgLnkTargetPopup : "<fenêtre popup>",
-DlgLnkTargetBlank : "Nouvelle fenêtre (_blank)",
-DlgLnkTargetParent : "Fenêtre mère (_parent)",
-DlgLnkTargetSelf : "Même fenêtre (_self)",
-DlgLnkTargetTop : "Fenêtre supérieure (_top)",
-DlgLnkTargetFrameName : "Nom du cadre de destination",
-DlgLnkPopWinName : "Nom de la fenêtre popup",
-DlgLnkPopWinFeat : "Caractéristiques de la fenêtre popup",
-DlgLnkPopResize : "Taille modifiable",
-DlgLnkPopLocation : "Barre d'adresses",
-DlgLnkPopMenu : "Barre de menu",
-DlgLnkPopScroll : "Barres de défilement",
-DlgLnkPopStatus : "Barre d'état",
-DlgLnkPopToolbar : "Barre d'outils",
-DlgLnkPopFullScrn : "Plein écran (IE)",
-DlgLnkPopDependent : "Dépendante (Netscape)",
-DlgLnkPopWidth : "Largeur",
-DlgLnkPopHeight : "Hauteur",
-DlgLnkPopLeft : "Position à partir de la gauche",
-DlgLnkPopTop : "Position à partir du haut",
-
-DlnLnkMsgNoUrl : "Veuillez saisir l'URL",
-DlnLnkMsgNoEMail : "Veuillez saisir l'adresse e-mail",
-DlnLnkMsgNoAnchor : "Veuillez sélectionner une ancre",
-DlnLnkMsgInvPopName : "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace",
-
-// Color Dialog
-DlgColorTitle : "Sélectionner",
-DlgColorBtnClear : "Effacer",
-DlgColorHighlight : "Prévisualisation",
-DlgColorSelected : "Sélectionné",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insérer un Emoticon",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Insérer un caractère spécial",
-
-// Table Dialog
-DlgTableTitle : "Propriétés du tableau",
-DlgTableRows : "Lignes",
-DlgTableColumns : "Colonnes",
-DlgTableBorder : "Taille de la bordure",
-DlgTableAlign : "Alignement",
-DlgTableAlignNotSet : "<Par défaut>",
-DlgTableAlignLeft : "Gauche",
-DlgTableAlignCenter : "Centré",
-DlgTableAlignRight : "Droite",
-DlgTableWidth : "Largeur",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "pourcentage",
-DlgTableHeight : "Hauteur",
-DlgTableCellSpace : "Espacement",
-DlgTableCellPad : "Contour",
-DlgTableCaption : "Titre",
-DlgTableSummary : "Résumé",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Propriétés de la cellule",
-DlgCellWidth : "Largeur",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "pourcentage",
-DlgCellHeight : "Hauteur",
-DlgCellWordWrap : "Retour à la ligne",
-DlgCellWordWrapNotSet : "<Par défaut>",
-DlgCellWordWrapYes : "Oui",
-DlgCellWordWrapNo : "Non",
-DlgCellHorAlign : "Alignement horizontal",
-DlgCellHorAlignNotSet : "<Par défaut>",
-DlgCellHorAlignLeft : "Gauche",
-DlgCellHorAlignCenter : "Centré",
-DlgCellHorAlignRight: "Droite",
-DlgCellVerAlign : "Alignement vertical",
-DlgCellVerAlignNotSet : "<Par défaut>",
-DlgCellVerAlignTop : "Haut",
-DlgCellVerAlignMiddle : "Milieu",
-DlgCellVerAlignBottom : "Bas",
-DlgCellVerAlignBaseline : "Bas du texte",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Lignes fusionnées",
-DlgCellCollSpan : "Colonnes fusionnées",
-DlgCellBackColor : "Couleur de fond",
-DlgCellBorderColor : "Couleur de bordure",
-DlgCellBtnSelect : "Sélectionner...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Chercher et Remplacer",
-
-// Find Dialog
-DlgFindTitle : "Chercher",
-DlgFindFindBtn : "Chercher",
-DlgFindNotFoundMsg : "Le texte indiqué est introuvable.",
-
-// Replace Dialog
-DlgReplaceTitle : "Remplacer",
-DlgReplaceFindLbl : "Rechercher:",
-DlgReplaceReplaceLbl : "Remplacer par:",
-DlgReplaceCaseChk : "Respecter la casse",
-DlgReplaceReplaceBtn : "Remplacer",
-DlgReplaceReplAllBtn : "Tout remplacer",
-DlgReplaceWordChk : "Mot entier",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",
-PasteErrorCopy : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",
-
-PasteAsText : "Coller comme texte",
-PasteFromWord : "Coller à partir de Word",
-
-DlgPasteMsg2 : "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.",
-DlgPasteSec : "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",
-DlgPasteIgnoreFont : "Ignorer les polices de caractères",
-DlgPasteRemoveStyles : "Supprimer les styles",
-
-// Color Picker
-ColorAutomatic : "Automatique",
-ColorMoreColors : "Plus de couleurs...",
-
-// Document Properties
-DocProps : "Propriétés du document",
-
-// Anchor Dialog
-DlgAnchorTitle : "Propriétés de l'ancre",
-DlgAnchorName : "Nom de l'ancre",
-DlgAnchorErrorName : "Veuillez saisir le nom de l'ancre",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Pas dans le dictionnaire",
-DlgSpellChangeTo : "Changer en",
-DlgSpellBtnIgnore : "Ignorer",
-DlgSpellBtnIgnoreAll : "Ignorer tout",
-DlgSpellBtnReplace : "Remplacer",
-DlgSpellBtnReplaceAll : "Remplacer tout",
-DlgSpellBtnUndo : "Annuler",
-DlgSpellNoSuggestions : "- Pas de suggestion -",
-DlgSpellProgress : "Vérification d'orthographe en cours...",
-DlgSpellNoMispell : "Vérification d'orthographe terminée: pas d'erreur trouvée",
-DlgSpellNoChanges : "Vérification d'orthographe terminée: Pas de modifications",
-DlgSpellOneChange : "Vérification d'orthographe terminée: Un mot modifié",
-DlgSpellManyChanges : "Vérification d'orthographe terminée: %1 mots modifiés",
-
-IeSpellDownload : "Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?",
-
-// Button Dialog
-DlgButtonText : "Texte (Valeur)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Bouton",
-DlgButtonTypeSbm : "Soumettre",
-DlgButtonTypeRst : "Réinitialiser",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nom",
-DlgCheckboxValue : "Valeur",
-DlgCheckboxSelected : "Sélectionné",
-
-// Form Dialog
-DlgFormName : "Nom",
-DlgFormAction : "Action",
-DlgFormMethod : "Méthode",
-
-// Select Field Dialog
-DlgSelectName : "Nom",
-DlgSelectValue : "Valeur",
-DlgSelectSize : "Taille",
-DlgSelectLines : "lignes",
-DlgSelectChkMulti : "Sélection multiple",
-DlgSelectOpAvail : "Options disponibles",
-DlgSelectOpText : "Texte",
-DlgSelectOpValue : "Valeur",
-DlgSelectBtnAdd : "Ajouter",
-DlgSelectBtnModify : "Modifier",
-DlgSelectBtnUp : "Monter",
-DlgSelectBtnDown : "Descendre",
-DlgSelectBtnSetValue : "Valeur sélectionnée",
-DlgSelectBtnDelete : "Supprimer",
-
-// Textarea Dialog
-DlgTextareaName : "Nom",
-DlgTextareaCols : "Colonnes",
-DlgTextareaRows : "Lignes",
-
-// Text Field Dialog
-DlgTextName : "Nom",
-DlgTextValue : "Valeur",
-DlgTextCharWidth : "Largeur en caractères",
-DlgTextMaxChars : "Nombre maximum de caractères",
-DlgTextType : "Type",
-DlgTextTypeText : "Texte",
-DlgTextTypePass : "Mot de passe",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nom",
-DlgHiddenValue : "Valeur",
-
-// Bulleted List Dialog
-BulletedListProp : "Propriétés de liste à puces",
-NumberedListProp : "Propriétés de liste numérotée",
-DlgLstStart : "Début",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Cercle",
-DlgLstTypeDisc : "Disque",
-DlgLstTypeSquare : "Carré",
-DlgLstTypeNumbers : "Nombres (1, 2, 3)",
-DlgLstTypeLCase : "Lettres minuscules (a, b, c)",
-DlgLstTypeUCase : "Lettres majuscules (A, B, C)",
-DlgLstTypeSRoman : "Chiffres romains minuscules (i, ii, iii)",
-DlgLstTypeLRoman : "Chiffres romains majuscules (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Général",
-DlgDocBackTab : "Fond",
-DlgDocColorsTab : "Couleurs et Marges",
-DlgDocMetaTab : "Méta-Données",
-
-DlgDocPageTitle : "Titre de la page",
-DlgDocLangDir : "Sens d'écriture",
-DlgDocLangDirLTR : "De la gauche vers la droite (LTR)",
-DlgDocLangDirRTL : "De la droite vers la gauche (RTL)",
-DlgDocLangCode : "Code langue",
-DlgDocCharSet : "Encodage de caractère",
-DlgDocCharSetCE : "Europe Centrale",
-DlgDocCharSetCT : "Chinois Traditionnel (Big5)",
-DlgDocCharSetCR : "Cyrillique",
-DlgDocCharSetGR : "Grecque",
-DlgDocCharSetJP : "Japonais",
-DlgDocCharSetKR : "Coréen",
-DlgDocCharSetTR : "Turcque",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Occidental",
-DlgDocCharSetOther : "Autre encodage de caractère",
-
-DlgDocDocType : "Type de document",
-DlgDocDocTypeOther : "Autre type de document",
-DlgDocIncXHTML : "Inclure les déclarations XHTML",
-DlgDocBgColor : "Couleur de fond",
-DlgDocBgImage : "Image de fond",
-DlgDocBgNoScroll : "Image fixe sans défilement",
-DlgDocCText : "Texte",
-DlgDocCLink : "Lien",
-DlgDocCVisited : "Lien visité",
-DlgDocCActive : "Lien activé",
-DlgDocMargins : "Marges",
-DlgDocMaTop : "Haut",
-DlgDocMaLeft : "Gauche",
-DlgDocMaRight : "Droite",
-DlgDocMaBottom : "Bas",
-DlgDocMeIndex : "Mots-clés (séparés par des virgules)",
-DlgDocMeDescr : "Description",
-DlgDocMeAuthor : "Auteur",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Prévisualisation",
-
-// Templates Dialog
-Templates : "Modèles",
-DlgTemplatesTitle : "Modèles de contenu",
-DlgTemplatesSelMsg : "Sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
-DlgTemplatesLoading : "Chargement de la liste des modèles. Veuillez patienter...",
-DlgTemplatesNoTpl : "(Aucun modèle disponible)",
-DlgTemplatesReplace : "Remplacer tout le contenu actuel",
-
-// About Dialog
-DlgAboutAboutTab : "Ã propos de",
-DlgAboutBrowserInfoTab : "Navigateur",
-DlgAboutLicenseTab : "License",
-DlgAboutVersion : "Version",
-DlgAboutInfo : "Pour plus d'informations, visiter",
-
-// Div Dialog
-DlgDivGeneralTab : "Général",
-DlgDivAdvancedTab : "Avancé",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Attribut Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr.js
deleted file mode 100644
index 935f8f735..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/fr.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * French language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Masquer Outils",
-ToolbarExpand : "Afficher Outils",
-
-// Toolbar Items and Context Menu
-Save : "Enregistrer",
-NewPage : "Nouvelle page",
-Preview : "Prévisualisation",
-Cut : "Couper",
-Copy : "Copier",
-Paste : "Coller",
-PasteText : "Coller comme texte",
-PasteWord : "Coller de Word",
-Print : "Imprimer",
-SelectAll : "Tout sélectionner",
-RemoveFormat : "Supprimer le format",
-InsertLinkLbl : "Lien",
-InsertLink : "Insérer/modifier le lien",
-RemoveLink : "Supprimer le lien",
-VisitLink : "Suivre le lien",
-Anchor : "Insérer/modifier l'ancre",
-AnchorDelete : "Supprimer l'ancre",
-InsertImageLbl : "Image",
-InsertImage : "Insérer/modifier l'image",
-InsertFlashLbl : "Animation Flash",
-InsertFlash : "Insérer/modifier l'animation Flash",
-InsertTableLbl : "Tableau",
-InsertTable : "Insérer/modifier le tableau",
-InsertLineLbl : "Séparateur",
-InsertLine : "Insérer un séparateur",
-InsertSpecialCharLbl: "Caractères spéciaux",
-InsertSpecialChar : "Insérer un caractère spécial",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Insérer un Smiley",
-About : "A propos de FCKeditor",
-Bold : "Gras",
-Italic : "Italique",
-Underline : "Souligné",
-StrikeThrough : "Barré",
-Subscript : "Indice",
-Superscript : "Exposant",
-LeftJustify : "Aligné à gauche",
-CenterJustify : "Centré",
-RightJustify : "Aligné à Droite",
-BlockJustify : "Texte justifié",
-DecreaseIndent : "Diminuer le retrait",
-IncreaseIndent : "Augmenter le retrait",
-Blockquote : "Citation",
-CreateDiv : "Créer Balise Div",
-EditDiv : "Modifier Balise Div",
-DeleteDiv : "Supprimer Balise Div",
-Undo : "Annuler",
-Redo : "Refaire",
-NumberedListLbl : "Liste numérotée",
-NumberedList : "Insérer/supprimer la liste numérotée",
-BulletedListLbl : "Liste à puces",
-BulletedList : "Insérer/supprimer la liste à puces",
-ShowTableBorders : "Afficher les bordures du tableau",
-ShowDetails : "Afficher les caractères invisibles",
-Style : "Style",
-FontFormat : "Format",
-Font : "Police",
-FontSize : "Taille",
-TextColor : "Couleur de caractère",
-BGColor : "Couleur de fond",
-Source : "Source",
-Find : "Chercher",
-Replace : "Remplacer",
-SpellCheck : "Orthographe",
-UniversalKeyboard : "Clavier universel",
-PageBreakLbl : "Saut de page",
-PageBreak : "Insérer un saut de page",
-
-Form : "Formulaire",
-Checkbox : "Case à cocher",
-RadioButton : "Bouton radio",
-TextField : "Champ texte",
-Textarea : "Zone de texte",
-HiddenField : "Champ caché",
-Button : "Bouton",
-SelectionField : "Liste/menu",
-ImageButton : "Bouton image",
-
-FitWindow : "Edition pleine page",
-ShowBlocks : "Afficher les blocs",
-
-// Context Menu
-EditLink : "Modifier le lien",
-CellCM : "Cellule",
-RowCM : "Ligne",
-ColumnCM : "Colonne",
-InsertRowAfter : "Insérer une ligne après",
-InsertRowBefore : "Insérer une ligne avant",
-DeleteRows : "Supprimer des lignes",
-InsertColumnAfter : "Insérer une colonne après",
-InsertColumnBefore : "Insérer une colonne avant",
-DeleteColumns : "Supprimer des colonnes",
-InsertCellAfter : "Insérer une cellule après",
-InsertCellBefore : "Insérer une cellule avant",
-DeleteCells : "Supprimer des cellules",
-MergeCells : "Fusionner les cellules",
-MergeRight : "Fusionner à droite",
-MergeDown : "Fusionner en bas",
-HorizontalSplitCell : "Scinder la cellule horizontalement",
-VerticalSplitCell : "Scinder la cellule verticalement",
-TableDelete : "Supprimer le tableau",
-CellProperties : "Propriétés de cellule",
-TableProperties : "Propriétés du tableau",
-ImageProperties : "Propriétés de l'image",
-FlashProperties : "Propriétés de l'animation Flash",
-
-AnchorProp : "Propriétés de l'ancre",
-ButtonProp : "Propriétés du bouton",
-CheckboxProp : "Propriétés de la case à cocher",
-HiddenFieldProp : "Propriétés du champ caché",
-RadioButtonProp : "Propriétés du bouton radio",
-ImageButtonProp : "Propriétés du bouton image",
-TextFieldProp : "Propriétés du champ texte",
-SelectionFieldProp : "Propriétés de la liste/du menu",
-TextareaProp : "Propriétés de la zone de texte",
-FormProp : "Propriétés du formulaire",
-
-FontFormats : "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Calcul XHTML. Veuillez patienter...",
-Done : "Terminé",
-PasteWordConfirm : "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?",
-NotCompatiblePaste : "Cette commande nécessite Internet Explorer version 5.5 minimum. Souhaitez-vous coller sans nettoyage?",
-UnknownToolbarItem : "Elément de barre d'outil inconnu \"%1\"",
-UnknownCommand : "Nom de commande inconnu \"%1\"",
-NotImplemented : "Commande non encore écrite",
-UnknownToolbarSet : "La barre d'outils \"%1\" n'existe pas",
-NoActiveX : "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
-BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
-DialogBlocked : "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
-VisitLinkBlocked : "Impossible d'ouvrir une nouvelle fenêtre. Assurez-vous que les bloqueurs de popups soient désactivés.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Annuler",
-DlgBtnClose : "Fermer",
-DlgBtnBrowseServer : "Parcourir le serveur",
-DlgAdvancedTag : "Avancé",
-DlgOpOther : "<Autre>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Veuillez saisir l'URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<Par défaut>",
-DlgGenId : "Id",
-DlgGenLangDir : "Sens d'écriture",
-DlgGenLangDirLtr : "De gauche à droite (LTR)",
-DlgGenLangDirRtl : "De droite à gauche (RTL)",
-DlgGenLangCode : "Code langue",
-DlgGenAccessKey : "Equivalent clavier",
-DlgGenName : "Nom",
-DlgGenTabIndex : "Ordre de tabulation",
-DlgGenLongDescr : "URL de description longue",
-DlgGenClass : "Classes de feuilles de style",
-DlgGenTitle : "Titre",
-DlgGenContType : "Type de contenu",
-DlgGenLinkCharset : "Encodage de caractère",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Propriétés de l'image",
-DlgImgInfoTab : "Informations sur l'image",
-DlgImgBtnUpload : "Envoyer sur le serveur",
-DlgImgURL : "URL",
-DlgImgUpload : "Télécharger",
-DlgImgAlt : "Texte de remplacement",
-DlgImgWidth : "Largeur",
-DlgImgHeight : "Hauteur",
-DlgImgLockRatio : "Garder les proportions",
-DlgBtnResetSize : "Taille originale",
-DlgImgBorder : "Bordure",
-DlgImgHSpace : "Espacement horizontal",
-DlgImgVSpace : "Espacement vertical",
-DlgImgAlign : "Alignement",
-DlgImgAlignLeft : "Gauche",
-DlgImgAlignAbsBottom: "Abs Bas",
-DlgImgAlignAbsMiddle: "Abs Milieu",
-DlgImgAlignBaseline : "Bas du texte",
-DlgImgAlignBottom : "Bas",
-DlgImgAlignMiddle : "Milieu",
-DlgImgAlignRight : "Droite",
-DlgImgAlignTextTop : "Haut du texte",
-DlgImgAlignTop : "Haut",
-DlgImgPreview : "Prévisualisation",
-DlgImgAlertUrl : "Veuillez saisir l'URL de l'image",
-DlgImgLinkTab : "Lien",
-
-// Flash Dialog
-DlgFlashTitle : "Propriétés de l'animation Flash",
-DlgFlashChkPlay : "Lecture automatique",
-DlgFlashChkLoop : "Boucle",
-DlgFlashChkMenu : "Activer le menu Flash",
-DlgFlashScale : "Affichage",
-DlgFlashScaleAll : "Par défaut (tout montrer)",
-DlgFlashScaleNoBorder : "Sans bordure",
-DlgFlashScaleFit : "Ajuster aux dimensions",
-
-// Link Dialog
-DlgLnkWindowTitle : "Propriétés du lien",
-DlgLnkInfoTab : "Informations sur le lien",
-DlgLnkTargetTab : "Destination",
-
-DlgLnkType : "Type de lien",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ancre dans cette page",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocole",
-DlgLnkProtoOther : "<autre>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Sélectionner une ancre",
-DlgLnkAnchorByName : "Par nom",
-DlgLnkAnchorById : "Par id",
-DlgLnkNoAnchors : "(Pas d'ancre disponible dans le document)",
-DlgLnkEMail : "Adresse E-Mail",
-DlgLnkEMailSubject : "Sujet du message",
-DlgLnkEMailBody : "Corps du message",
-DlgLnkUpload : "Télécharger",
-DlgLnkBtnUpload : "Envoyer sur le serveur",
-
-DlgLnkTarget : "Destination",
-DlgLnkTargetFrame : "<Cadre>",
-DlgLnkTargetPopup : "<fenêtre popup>",
-DlgLnkTargetBlank : "Nouvelle fenêtre (_blank)",
-DlgLnkTargetParent : "Fenêtre mère (_parent)",
-DlgLnkTargetSelf : "Même fenêtre (_self)",
-DlgLnkTargetTop : "Fenêtre supérieure (_top)",
-DlgLnkTargetFrameName : "Nom du cadre de destination",
-DlgLnkPopWinName : "Nom de la fenêtre popup",
-DlgLnkPopWinFeat : "Caractéristiques de la fenêtre popup",
-DlgLnkPopResize : "Taille modifiable",
-DlgLnkPopLocation : "Barre d'adresses",
-DlgLnkPopMenu : "Barre de menu",
-DlgLnkPopScroll : "Barres de défilement",
-DlgLnkPopStatus : "Barre d'état",
-DlgLnkPopToolbar : "Barre d'outils",
-DlgLnkPopFullScrn : "Plein écran (IE)",
-DlgLnkPopDependent : "Dépendante (Netscape)",
-DlgLnkPopWidth : "Largeur",
-DlgLnkPopHeight : "Hauteur",
-DlgLnkPopLeft : "Position à partir de la gauche",
-DlgLnkPopTop : "Position à partir du haut",
-
-DlnLnkMsgNoUrl : "Veuillez saisir l'URL",
-DlnLnkMsgNoEMail : "Veuillez saisir l'adresse e-mail",
-DlnLnkMsgNoAnchor : "Veuillez sélectionner une ancre",
-DlnLnkMsgInvPopName : "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace",
-
-// Color Dialog
-DlgColorTitle : "Sélectionner",
-DlgColorBtnClear : "Effacer",
-DlgColorHighlight : "Prévisualisation",
-DlgColorSelected : "Sélectionné",
-
-// Smiley Dialog
-DlgSmileyTitle : "Insérer un Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Insérer un caractère spécial",
-
-// Table Dialog
-DlgTableTitle : "Propriétés du tableau",
-DlgTableRows : "Lignes",
-DlgTableColumns : "Colonnes",
-DlgTableBorder : "Bordure",
-DlgTableAlign : "Alignement",
-DlgTableAlignNotSet : "<Par défaut>",
-DlgTableAlignLeft : "Gauche",
-DlgTableAlignCenter : "Centré",
-DlgTableAlignRight : "Droite",
-DlgTableWidth : "Largeur",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "pourcentage",
-DlgTableHeight : "Hauteur",
-DlgTableCellSpace : "Espacement",
-DlgTableCellPad : "Contour",
-DlgTableCaption : "Titre",
-DlgTableSummary : "Résumé",
-DlgTableHeaders : "Entêtes",
-DlgTableHeadersNone : "Sans",
-DlgTableHeadersColumn : "Première colonne",
-DlgTableHeadersRow : "Première Ligne",
-DlgTableHeadersBoth : "Les 2",
-
-// Table Cell Dialog
-DlgCellTitle : "Propriétés de la cellule",
-DlgCellWidth : "Largeur",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "pourcentage",
-DlgCellHeight : "Hauteur",
-DlgCellWordWrap : "Retour à la ligne",
-DlgCellWordWrapNotSet : "<Par défaut>",
-DlgCellWordWrapYes : "Oui",
-DlgCellWordWrapNo : "Non",
-DlgCellHorAlign : "Alignement horizontal",
-DlgCellHorAlignNotSet : "<Par défaut>",
-DlgCellHorAlignLeft : "Gauche",
-DlgCellHorAlignCenter : "Centré",
-DlgCellHorAlignRight: "Droite",
-DlgCellVerAlign : "Alignement vertical",
-DlgCellVerAlignNotSet : "<Par défaut>",
-DlgCellVerAlignTop : "Haut",
-DlgCellVerAlignMiddle : "Milieu",
-DlgCellVerAlignBottom : "Bas",
-DlgCellVerAlignBaseline : "Bas du texte",
-DlgCellType : "Type de Cellule",
-DlgCellTypeData : "Données",
-DlgCellTypeHeader : "Entête",
-DlgCellRowSpan : "Lignes fusionnées",
-DlgCellCollSpan : "Colonnes fusionnées",
-DlgCellBackColor : "Fond",
-DlgCellBorderColor : "Bordure",
-DlgCellBtnSelect : "Choisir...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Chercher et Remplacer",
-
-// Find Dialog
-DlgFindTitle : "Chercher",
-DlgFindFindBtn : "Chercher",
-DlgFindNotFoundMsg : "Le texte indiqué est introuvable.",
-
-// Replace Dialog
-DlgReplaceTitle : "Remplacer",
-DlgReplaceFindLbl : "Rechercher:",
-DlgReplaceReplaceLbl : "Remplacer par:",
-DlgReplaceCaseChk : "Respecter la casse",
-DlgReplaceReplaceBtn : "Remplacer",
-DlgReplaceReplAllBtn : "Tout remplacer",
-DlgReplaceWordChk : "Mot entier",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).",
-PasteErrorCopy : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).",
-
-PasteAsText : "Coller comme texte",
-PasteFromWord : "Coller à partir de Word",
-
-DlgPasteMsg2 : "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et cliquez sur <STRONG>OK</STRONG>.",
-DlgPasteSec : "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",
-DlgPasteIgnoreFont : "Ignorer les polices de caractères",
-DlgPasteRemoveStyles : "Supprimer les styles",
-
-// Color Picker
-ColorAutomatic : "Automatique",
-ColorMoreColors : "Plus de couleurs...",
-
-// Document Properties
-DocProps : "Propriétés du document",
-
-// Anchor Dialog
-DlgAnchorTitle : "Propriétés de l'ancre",
-DlgAnchorName : "Nom de l'ancre",
-DlgAnchorErrorName : "Veuillez saisir le nom de l'ancre",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Pas dans le dictionnaire",
-DlgSpellChangeTo : "Changer en",
-DlgSpellBtnIgnore : "Ignorer",
-DlgSpellBtnIgnoreAll : "Ignorer tout",
-DlgSpellBtnReplace : "Remplacer",
-DlgSpellBtnReplaceAll : "Remplacer tout",
-DlgSpellBtnUndo : "Annuler",
-DlgSpellNoSuggestions : "- Aucune suggestion -",
-DlgSpellProgress : "Vérification d'orthographe en cours...",
-DlgSpellNoMispell : "Vérification d'orthographe terminée: Aucune erreur trouvée",
-DlgSpellNoChanges : "Vérification d'orthographe terminée: Pas de modifications",
-DlgSpellOneChange : "Vérification d'orthographe terminée: Un mot modifié",
-DlgSpellManyChanges : "Vérification d'orthographe terminée: %1 mots modifiés",
-
-IeSpellDownload : "Le Correcteur n'est pas installé. Souhaitez-vous le télécharger maintenant?",
-
-// Button Dialog
-DlgButtonText : "Texte (valeur)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Bouton",
-DlgButtonTypeSbm : "Envoyer",
-DlgButtonTypeRst : "Réinitialiser",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nom",
-DlgCheckboxValue : "Valeur",
-DlgCheckboxSelected : "Sélectionné",
-
-// Form Dialog
-DlgFormName : "Nom",
-DlgFormAction : "Action",
-DlgFormMethod : "Méthode",
-
-// Select Field Dialog
-DlgSelectName : "Nom",
-DlgSelectValue : "Valeur",
-DlgSelectSize : "Taille",
-DlgSelectLines : "lignes",
-DlgSelectChkMulti : "Sélection multiple",
-DlgSelectOpAvail : "Options disponibles",
-DlgSelectOpText : "Texte",
-DlgSelectOpValue : "Valeur",
-DlgSelectBtnAdd : "Ajouter",
-DlgSelectBtnModify : "Modifier",
-DlgSelectBtnUp : "Monter",
-DlgSelectBtnDown : "Descendre",
-DlgSelectBtnSetValue : "Valeur sélectionnée",
-DlgSelectBtnDelete : "Supprimer",
-
-// Textarea Dialog
-DlgTextareaName : "Nom",
-DlgTextareaCols : "Colonnes",
-DlgTextareaRows : "Lignes",
-
-// Text Field Dialog
-DlgTextName : "Nom",
-DlgTextValue : "Valeur",
-DlgTextCharWidth : "Largeur en caractères",
-DlgTextMaxChars : "Nombre maximum de caractères",
-DlgTextType : "Type",
-DlgTextTypeText : "Texte",
-DlgTextTypePass : "Mot de passe",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nom",
-DlgHiddenValue : "Valeur",
-
-// Bulleted List Dialog
-BulletedListProp : "Propriétés de liste à puces",
-NumberedListProp : "Propriétés de liste numérotée",
-DlgLstStart : "Début",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Cercle",
-DlgLstTypeDisc : "Disque",
-DlgLstTypeSquare : "Carré",
-DlgLstTypeNumbers : "Nombres (1, 2, 3)",
-DlgLstTypeLCase : "Lettres minuscules (a, b, c)",
-DlgLstTypeUCase : "Lettres majuscules (A, B, C)",
-DlgLstTypeSRoman : "Chiffres romains minuscules (i, ii, iii)",
-DlgLstTypeLRoman : "Chiffres romains majuscules (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Général",
-DlgDocBackTab : "Fond",
-DlgDocColorsTab : "Couleurs et marges",
-DlgDocMetaTab : "Métadonnées",
-
-DlgDocPageTitle : "Titre de la page",
-DlgDocLangDir : "Sens d'écriture",
-DlgDocLangDirLTR : "De la gauche vers la droite (LTR)",
-DlgDocLangDirRTL : "De la droite vers la gauche (RTL)",
-DlgDocLangCode : "Code langue",
-DlgDocCharSet : "Encodage de caractère",
-DlgDocCharSetCE : "Europe Centrale",
-DlgDocCharSetCT : "Chinois Traditionnel (Big5)",
-DlgDocCharSetCR : "Cyrillique",
-DlgDocCharSetGR : "Grec",
-DlgDocCharSetJP : "Japonais",
-DlgDocCharSetKR : "Coréen",
-DlgDocCharSetTR : "Turc",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Occidental",
-DlgDocCharSetOther : "Autre encodage de caractère",
-
-DlgDocDocType : "Type de document",
-DlgDocDocTypeOther : "Autre type de document",
-DlgDocIncXHTML : "Inclure les déclarations XHTML",
-DlgDocBgColor : "Couleur de fond",
-DlgDocBgImage : "Image de fond",
-DlgDocBgNoScroll : "Image fixe sans défilement",
-DlgDocCText : "Texte",
-DlgDocCLink : "Lien",
-DlgDocCVisited : "Lien visité",
-DlgDocCActive : "Lien activé",
-DlgDocMargins : "Marges",
-DlgDocMaTop : "Haut",
-DlgDocMaLeft : "Gauche",
-DlgDocMaRight : "Droite",
-DlgDocMaBottom : "Bas",
-DlgDocMeIndex : "Mots-clés (séparés par des virgules)",
-DlgDocMeDescr : "Description",
-DlgDocMeAuthor : "Auteur",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Prévisualisation",
-
-// Templates Dialog
-Templates : "Modèles",
-DlgTemplatesTitle : "Modèles de contenu",
-DlgTemplatesSelMsg : "Veuillez sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
-DlgTemplatesLoading : "Chargement de la liste des modèles. Veuillez patienter...",
-DlgTemplatesNoTpl : "(Aucun modèle disponible)",
-DlgTemplatesReplace : "Remplacer tout le contenu",
-
-// About Dialog
-DlgAboutAboutTab : "A propos de",
-DlgAboutBrowserInfoTab : "Navigateur",
-DlgAboutLicenseTab : "Licence",
-DlgAboutVersion : "Version",
-DlgAboutInfo : "Pour plus d'informations, aller à",
-
-// Div Dialog
-DlgDivGeneralTab : "Général",
-DlgDivAdvancedTab : "Avancé",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Attribut Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gl.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gl.js
deleted file mode 100644
index 06cba1783..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gl.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Galician language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Ocultar Ferramentas",
-ToolbarExpand : "Mostrar Ferramentas",
-
-// Toolbar Items and Context Menu
-Save : "Gardar",
-NewPage : "Nova Páxina",
-Preview : "Vista Previa",
-Cut : "Cortar",
-Copy : "Copiar",
-Paste : "Pegar",
-PasteText : "Pegar como texto plano",
-PasteWord : "Pegar dende Word",
-Print : "Imprimir",
-SelectAll : "Seleccionar todo",
-RemoveFormat : "Eliminar Formato",
-InsertLinkLbl : "Ligazón",
-InsertLink : "Inserir/Editar Ligazón",
-RemoveLink : "Eliminar Ligazón",
-VisitLink : "Open Link", //MISSING
-Anchor : "Inserir/Editar Referencia",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Imaxe",
-InsertImage : "Inserir/Editar Imaxe",
-InsertFlashLbl : "Flash",
-InsertFlash : "Inserir/Editar Flash",
-InsertTableLbl : "Tabla",
-InsertTable : "Inserir/Editar Tabla",
-InsertLineLbl : "Liña",
-InsertLine : "Inserir Liña Horizontal",
-InsertSpecialCharLbl: "Carácter Special",
-InsertSpecialChar : "Inserir Carácter Especial",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Inserir Smiley",
-About : "Acerca de FCKeditor",
-Bold : "Negrita",
-Italic : "Cursiva",
-Underline : "Sub-raiado",
-StrikeThrough : "Tachado",
-Subscript : "Subíndice",
-Superscript : "Superíndice",
-LeftJustify : "Aliñar á Esquerda",
-CenterJustify : "Centrado",
-RightJustify : "Aliñar á Dereita",
-BlockJustify : "Xustificado",
-DecreaseIndent : "Disminuir Sangría",
-IncreaseIndent : "Aumentar Sangría",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Desfacer",
-Redo : "Refacer",
-NumberedListLbl : "Lista Numerada",
-NumberedList : "Inserir/Eliminar Lista Numerada",
-BulletedListLbl : "Marcas",
-BulletedList : "Inserir/Eliminar Marcas",
-ShowTableBorders : "Mostrar Bordes das Táboas",
-ShowDetails : "Mostrar Marcas Parágrafo",
-Style : "Estilo",
-FontFormat : "Formato",
-Font : "Tipo",
-FontSize : "Tamaño",
-TextColor : "Cor do Texto",
-BGColor : "Cor do Fondo",
-Source : "Código Fonte",
-Find : "Procurar",
-Replace : "Substituir",
-SpellCheck : "Corrección Ortográfica",
-UniversalKeyboard : "Teclado Universal",
-PageBreakLbl : "Salto de Páxina",
-PageBreak : "Inserir Salto de Páxina",
-
-Form : "Formulario",
-Checkbox : "Cadro de Verificación",
-RadioButton : "Botón de Radio",
-TextField : "Campo de Texto",
-Textarea : "Ãrea de Texto",
-HiddenField : "Campo Oculto",
-Button : "Botón",
-SelectionField : "Campo de Selección",
-ImageButton : "Botón de Imaxe",
-
-FitWindow : "Maximizar o tamaño do editor",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Editar Ligazón",
-CellCM : "Cela",
-RowCM : "Fila",
-ColumnCM : "Columna",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Borrar Filas",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Borrar Columnas",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Borrar Cela",
-MergeCells : "Unir Celas",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Borrar Táboa",
-CellProperties : "Propriedades da Cela",
-TableProperties : "Propriedades da Táboa",
-ImageProperties : "Propriedades Imaxe",
-FlashProperties : "Propriedades Flash",
-
-AnchorProp : "Propriedades da Referencia",
-ButtonProp : "Propriedades do Botón",
-CheckboxProp : "Propriedades do Cadro de Verificación",
-HiddenFieldProp : "Propriedades do Campo Oculto",
-RadioButtonProp : "Propriedades do Botón de Radio",
-ImageButtonProp : "Propriedades do Botón de Imaxe",
-TextFieldProp : "Propriedades do Campo de Texto",
-SelectionFieldProp : "Propriedades do Campo de Selección",
-TextareaProp : "Propriedades da Ãrea de Texto",
-FormProp : "Propriedades do Formulario",
-
-FontFormats : "Normal;Formateado;Enderezo;Enacabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Paragraph (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Procesando XHTML. Por facor, agarde...",
-Done : "Feiro",
-PasteWordConfirm : "Parece que o texto que quere pegar está copiado do Word.¿Quere limpar o formato antes de pegalo?",
-NotCompatiblePaste : "Este comando está disponible para Internet Explorer versión 5.5 ou superior. ¿Quere pegalo sen limpar o formato?",
-UnknownToolbarItem : "Ãtem de ferramentas descoñecido \"%1\"",
-UnknownCommand : "Nome de comando descoñecido \"%1\"",
-NotImplemented : "Comando non implementado",
-UnknownToolbarSet : "O conxunto de ferramentas \"%1\" non existe",
-NoActiveX : "As opcións de seguridade do seu navegador poderían limitar algunha das características de editor. Debe activar a opción \"Executar controis ActiveX e plug-ins\". Pode notar que faltan características e experimentar erros",
-BrowseServerBlocked : "Non se poido abrir o navegador de recursos. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
-DialogBlocked : "Non foi posible abrir a xanela de diálogo. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancelar",
-DlgBtnClose : "Pechar",
-DlgBtnBrowseServer : "Navegar no Servidor",
-DlgAdvancedTag : "Advanzado",
-DlgOpOther : "<Outro>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Por favor, insira a URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<non definido>",
-DlgGenId : "Id",
-DlgGenLangDir : "Orientación do Idioma",
-DlgGenLangDirLtr : "Esquerda a Dereita (LTR)",
-DlgGenLangDirRtl : "Dereita a Esquerda (RTL)",
-DlgGenLangCode : "Código do Idioma",
-DlgGenAccessKey : "Chave de Acceso",
-DlgGenName : "Nome",
-DlgGenTabIndex : "Ãndice de Tabulación",
-DlgGenLongDescr : "Descrición Completa da URL",
-DlgGenClass : "Clases da Folla de Estilos",
-DlgGenTitle : "Título",
-DlgGenContType : "Tipo de Contido",
-DlgGenLinkCharset : "Fonte de Caracteres Vinculado",
-DlgGenStyle : "Estilo",
-
-// Image Dialog
-DlgImgTitle : "Propriedades da Imaxe",
-DlgImgInfoTab : "Información da Imaxe",
-DlgImgBtnUpload : "Enviar ó Servidor",
-DlgImgURL : "URL",
-DlgImgUpload : "Carregar",
-DlgImgAlt : "Texto Alternativo",
-DlgImgWidth : "Largura",
-DlgImgHeight : "Altura",
-DlgImgLockRatio : "Proporcional",
-DlgBtnResetSize : "Tamaño Orixinal",
-DlgImgBorder : "Límite",
-DlgImgHSpace : "Esp. Horiz.",
-DlgImgVSpace : "Esp. Vert.",
-DlgImgAlign : "Aliñamento",
-DlgImgAlignLeft : "Esquerda",
-DlgImgAlignAbsBottom: "Abs Inferior",
-DlgImgAlignAbsMiddle: "Abs Centro",
-DlgImgAlignBaseline : "Liña Base",
-DlgImgAlignBottom : "Pé",
-DlgImgAlignMiddle : "Centro",
-DlgImgAlignRight : "Dereita",
-DlgImgAlignTextTop : "Tope do Texto",
-DlgImgAlignTop : "Tope",
-DlgImgPreview : "Vista Previa",
-DlgImgAlertUrl : "Por favor, escriba a URL da imaxe",
-DlgImgLinkTab : "Ligazón",
-
-// Flash Dialog
-DlgFlashTitle : "Propriedades Flash",
-DlgFlashChkPlay : "Auto Execución",
-DlgFlashChkLoop : "Bucle",
-DlgFlashChkMenu : "Activar Menú Flash",
-DlgFlashScale : "Escalar",
-DlgFlashScaleAll : "Amosar Todo",
-DlgFlashScaleNoBorder : "Sen Borde",
-DlgFlashScaleFit : "Encaixar axustando",
-
-// Link Dialog
-DlgLnkWindowTitle : "Ligazón",
-DlgLnkInfoTab : "Información da Ligazón",
-DlgLnkTargetTab : "Referencia a esta páxina",
-
-DlgLnkType : "Tipo de Ligazón",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Referencia nesta páxina",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocolo",
-DlgLnkProtoOther : "<outro>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Seleccionar unha Referencia",
-DlgLnkAnchorByName : "Por Nome de Referencia",
-DlgLnkAnchorById : "Por Element Id",
-DlgLnkNoAnchors : "(Non hai referencias disponibles no documento)",
-DlgLnkEMail : "Enderezo de E-Mail",
-DlgLnkEMailSubject : "Asunto do Mensaxe",
-DlgLnkEMailBody : "Corpo do Mensaxe",
-DlgLnkUpload : "Carregar",
-DlgLnkBtnUpload : "Enviar ó servidor",
-
-DlgLnkTarget : "Destino",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<Xanela Emerxente>",
-DlgLnkTargetBlank : "Nova Xanela (_blank)",
-DlgLnkTargetParent : "Xanela Pai (_parent)",
-DlgLnkTargetSelf : "Mesma Xanela (_self)",
-DlgLnkTargetTop : "Xanela Primaria (_top)",
-DlgLnkTargetFrameName : "Nome do Marco Destino",
-DlgLnkPopWinName : "Nome da Xanela Emerxente",
-DlgLnkPopWinFeat : "Características da Xanela Emerxente",
-DlgLnkPopResize : "Axustable",
-DlgLnkPopLocation : "Barra de Localización",
-DlgLnkPopMenu : "Barra de Menú",
-DlgLnkPopScroll : "Barras de Desplazamento",
-DlgLnkPopStatus : "Barra de Estado",
-DlgLnkPopToolbar : "Barra de Ferramentas",
-DlgLnkPopFullScrn : "A Toda Pantalla (IE)",
-DlgLnkPopDependent : "Dependente (Netscape)",
-DlgLnkPopWidth : "Largura",
-DlgLnkPopHeight : "Altura",
-DlgLnkPopLeft : "Posición Esquerda",
-DlgLnkPopTop : "Posición dende Arriba",
-
-DlnLnkMsgNoUrl : "Por favor, escriba a ligazón URL",
-DlnLnkMsgNoEMail : "Por favor, escriba o enderezo de e-mail",
-DlnLnkMsgNoAnchor : "Por favor, seleccione un destino",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Seleccionar Color",
-DlgColorBtnClear : "Nengunha",
-DlgColorHighlight : "Destacado",
-DlgColorSelected : "Seleccionado",
-
-// Smiley Dialog
-DlgSmileyTitle : "Inserte un Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Seleccione Caracter Especial",
-
-// Table Dialog
-DlgTableTitle : "Propiedades da Táboa",
-DlgTableRows : "Filas",
-DlgTableColumns : "Columnas",
-DlgTableBorder : "Tamaño do Borde",
-DlgTableAlign : "Aliñamento",
-DlgTableAlignNotSet : "<Non Definido>",
-DlgTableAlignLeft : "Esquerda",
-DlgTableAlignCenter : "Centro",
-DlgTableAlignRight : "Ereita",
-DlgTableWidth : "Largura",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Altura",
-DlgTableCellSpace : "Marxe entre Celas",
-DlgTableCellPad : "Marxe interior",
-DlgTableCaption : "Título",
-DlgTableSummary : "Sumario",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Propriedades da Cela",
-DlgCellWidth : "Largura",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Altura",
-DlgCellWordWrap : "Axustar Liñas",
-DlgCellWordWrapNotSet : "<Non Definido>",
-DlgCellWordWrapYes : "Si",
-DlgCellWordWrapNo : "Non",
-DlgCellHorAlign : "Aliñamento Horizontal",
-DlgCellHorAlignNotSet : "<Non definido>",
-DlgCellHorAlignLeft : "Esquerda",
-DlgCellHorAlignCenter : "Centro",
-DlgCellHorAlignRight: "Dereita",
-DlgCellVerAlign : "Aliñamento Vertical",
-DlgCellVerAlignNotSet : "<Non definido>",
-DlgCellVerAlignTop : "Arriba",
-DlgCellVerAlignMiddle : "Medio",
-DlgCellVerAlignBottom : "Abaixo",
-DlgCellVerAlignBaseline : "Liña de Base",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Ocupar Filas",
-DlgCellCollSpan : "Ocupar Columnas",
-DlgCellBackColor : "Color de Fondo",
-DlgCellBorderColor : "Color de Borde",
-DlgCellBtnSelect : "Seleccionar...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Procurar",
-DlgFindFindBtn : "Procurar",
-DlgFindNotFoundMsg : "Non te atopou o texto indicado.",
-
-// Replace Dialog
-DlgReplaceTitle : "Substituir",
-DlgReplaceFindLbl : "Texto a procurar:",
-DlgReplaceReplaceLbl : "Substituir con:",
-DlgReplaceCaseChk : "Coincidir Mai./min.",
-DlgReplaceReplaceBtn : "Substituir",
-DlgReplaceReplAllBtn : "Substitiur Todo",
-DlgReplaceWordChk : "Coincidir con toda a palabra",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).",
-PasteErrorCopy : "Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).",
-
-PasteAsText : "Pegar como texto plano",
-PasteFromWord : "Pegar dende Word",
-
-DlgPasteMsg2 : "Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl+V</STRONG>) e pulse <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignorar as definicións de Tipografía",
-DlgPasteRemoveStyles : "Eliminar as definicións de Estilos",
-
-// Color Picker
-ColorAutomatic : "Automático",
-ColorMoreColors : "Máis Cores...",
-
-// Document Properties
-DocProps : "Propriedades do Documento",
-
-// Anchor Dialog
-DlgAnchorTitle : "Propriedades da Referencia",
-DlgAnchorName : "Nome da Referencia",
-DlgAnchorErrorName : "Por favor, escriba o nome da referencia",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Non está no diccionario",
-DlgSpellChangeTo : "Cambiar a",
-DlgSpellBtnIgnore : "Ignorar",
-DlgSpellBtnIgnoreAll : "Ignorar Todas",
-DlgSpellBtnReplace : "Substituir",
-DlgSpellBtnReplaceAll : "Substituir Todas",
-DlgSpellBtnUndo : "Desfacer",
-DlgSpellNoSuggestions : "- Sen candidatos -",
-DlgSpellProgress : "Corrección ortográfica en progreso...",
-DlgSpellNoMispell : "Corrección ortográfica rematada: Non se atoparon erros",
-DlgSpellNoChanges : "Corrección ortográfica rematada: Non se substituiu nengunha verba",
-DlgSpellOneChange : "Corrección ortográfica rematada: Unha verba substituida",
-DlgSpellManyChanges : "Corrección ortográfica rematada: %1 verbas substituidas",
-
-IeSpellDownload : "O corrector ortográfico non está instalado. ¿Quere descargalo agora?",
-
-// Button Dialog
-DlgButtonText : "Texto (Valor)",
-DlgButtonType : "Tipo",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nome",
-DlgCheckboxValue : "Valor",
-DlgCheckboxSelected : "Seleccionado",
-
-// Form Dialog
-DlgFormName : "Nome",
-DlgFormAction : "Acción",
-DlgFormMethod : "Método",
-
-// Select Field Dialog
-DlgSelectName : "Nome",
-DlgSelectValue : "Valor",
-DlgSelectSize : "Tamaño",
-DlgSelectLines : "liñas",
-DlgSelectChkMulti : "Permitir múltiples seleccións",
-DlgSelectOpAvail : "Opcións Disponibles",
-DlgSelectOpText : "Texto",
-DlgSelectOpValue : "Valor",
-DlgSelectBtnAdd : "Engadir",
-DlgSelectBtnModify : "Modificar",
-DlgSelectBtnUp : "Subir",
-DlgSelectBtnDown : "Baixar",
-DlgSelectBtnSetValue : "Definir como valor por defecto",
-DlgSelectBtnDelete : "Borrar",
-
-// Textarea Dialog
-DlgTextareaName : "Nome",
-DlgTextareaCols : "Columnas",
-DlgTextareaRows : "Filas",
-
-// Text Field Dialog
-DlgTextName : "Nome",
-DlgTextValue : "Valor",
-DlgTextCharWidth : "Tamaño do Caracter",
-DlgTextMaxChars : "Máximo de Caracteres",
-DlgTextType : "Tipo",
-DlgTextTypeText : "Texto",
-DlgTextTypePass : "Chave",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nome",
-DlgHiddenValue : "Valor",
-
-// Bulleted List Dialog
-BulletedListProp : "Propriedades das Marcas",
-NumberedListProp : "Propriedades da Lista de Numeración",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Tipo",
-DlgLstTypeCircle : "Círculo",
-DlgLstTypeDisc : "Disco",
-DlgLstTypeSquare : "Cuadrado",
-DlgLstTypeNumbers : "Números (1, 2, 3)",
-DlgLstTypeLCase : "Letras Minúsculas (a, b, c)",
-DlgLstTypeUCase : "Letras Maiúsculas (A, B, C)",
-DlgLstTypeSRoman : "Números Romanos en minúscula (i, ii, iii)",
-DlgLstTypeLRoman : "Números Romanos en Maiúscula (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Xeral",
-DlgDocBackTab : "Fondo",
-DlgDocColorsTab : "Cores e Marxes",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Título da Páxina",
-DlgDocLangDir : "Orientación do Idioma",
-DlgDocLangDirLTR : "Esquerda a Dereita (LTR)",
-DlgDocLangDirRTL : "Dereita a Esquerda (RTL)",
-DlgDocLangCode : "Código de Idioma",
-DlgDocCharSet : "Codificación do Xogo de Caracteres",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Outra Codificación do Xogo de Caracteres",
-
-DlgDocDocType : "Encabezado do Tipo de Documento",
-DlgDocDocTypeOther : "Outro Encabezado do Tipo de Documento",
-DlgDocIncXHTML : "Incluir Declaracións XHTML",
-DlgDocBgColor : "Cor de Fondo",
-DlgDocBgImage : "URL da Imaxe de Fondo",
-DlgDocBgNoScroll : "Fondo Fixo",
-DlgDocCText : "Texto",
-DlgDocCLink : "Ligazóns",
-DlgDocCVisited : "Ligazón Visitada",
-DlgDocCActive : "Ligazón Activa",
-DlgDocMargins : "Marxes da Páxina",
-DlgDocMaTop : "Arriba",
-DlgDocMaLeft : "Esquerda",
-DlgDocMaRight : "Dereita",
-DlgDocMaBottom : "Abaixo",
-DlgDocMeIndex : "Palabras Chave de Indexación do Documento (separadas por comas)",
-DlgDocMeDescr : "Descripción do Documento",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Vista Previa",
-
-// Templates Dialog
-Templates : "Plantillas",
-DlgTemplatesTitle : "Plantillas de Contido",
-DlgTemplatesSelMsg : "Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):",
-DlgTemplatesLoading : "Cargando listado de plantillas. Por favor, espere...",
-DlgTemplatesNoTpl : "(Non hai plantillas definidas)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "Acerca de",
-DlgAboutBrowserInfoTab : "Información do Navegador",
-DlgAboutLicenseTab : "Licencia",
-DlgAboutVersion : "versión",
-DlgAboutInfo : "Para máis información visitar:",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gu.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gu.js
deleted file mode 100644
index b8d577632..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/gu.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Gujarati language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "ટૂલબાર નાનà«àª‚ કરવà«àª‚",
-ToolbarExpand : "ટૂલબાર મોટà«àª‚ કરવà«àª‚",
-
-// Toolbar Items and Context Menu
-Save : "સેવ",
-NewPage : "નવૠપાનà«àª‚",
-Preview : "પૂરà«àªµàª¦àª°à«àª¶àª¨",
-Cut : "કાપવà«àª‚",
-Copy : "નકલ",
-Paste : "પેસà«àªŸ",
-PasteText : "પેસà«àªŸ (સાદી ટેકà«àª¸à«àªŸ)",
-PasteWord : "પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)",
-Print : "પà«àª°àª¿àª¨à«àªŸ",
-SelectAll : "બઘà«àª‚ પસંદ કરવà«àª‚",
-RemoveFormat : "ફૉરà«àª®àªŸ કાઢવà«àª‚",
-InsertLinkLbl : "સંબંધન, લિંક",
-InsertLink : "લિંક ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી",
-RemoveLink : "લિંક કાઢવી",
-VisitLink : "Open Link", //MISSING
-Anchor : "àªàª‚કર ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી",
-AnchorDelete : "àªàª‚કર કાઢવી",
-InsertImageLbl : "ચિતà«àª°",
-InsertImage : "ચિતà«àª° ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚",
-InsertFlashLbl : "ફà«àª²à«…શ",
-InsertFlash : "ફà«àª²à«…શ ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚",
-InsertTableLbl : "ટેબલ, કોઠો",
-InsertTable : "ટેબલ, કોઠો ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚",
-InsertLineLbl : "રેખા",
-InsertLine : "સમસà«àª¤àª°à«€àª¯ રેખા ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી",
-InsertSpecialCharLbl: "વિશિષà«àªŸ અકà«àª·àª°",
-InsertSpecialChar : "વિશિષà«àªŸ અકà«àª·àª° ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚",
-InsertSmileyLbl : "સà«àª®àª¾àª‡àª²à«€",
-InsertSmiley : "સà«àª®àª¾àª‡àª²à«€ ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી",
-About : "FCKeditorના વિષે",
-Bold : "બોલà«àª¡/સà«àªªàª·à«àªŸ",
-Italic : "ઇટેલિક, તà«àª°àª¾àª‚સા",
-Underline : "અનà«àª¡àª°à«àª²àª¾àª‡àª¨, નીચે લીટી",
-StrikeThrough : "છેકી નાખવà«àª‚",
-Subscript : "àªàª• ચિહà«àª¨àª¨à«€ નીચે કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨",
-Superscript : "àªàª• ચિહà«àª¨ ઉપર કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨.",
-LeftJustify : "ડાબી બાજà«àª/બાજૠતરફ",
-CenterJustify : "સંકેંદà«àª°àª£/સેંટરિંગ",
-RightJustify : "જમણી બાજà«àª/બાજૠતરફ",
-BlockJustify : "બà«àª²à«‰àª•, અંતરાય જસà«àªŸàª¿àª«àª¾àª‡",
-DecreaseIndent : "ઇનà«àª¡à«‡àª¨à«àªŸ લીટીના આરંભમાં જગà«àª¯àª¾ ઘટાડવી",
-IncreaseIndent : "ઇનà«àª¡à«‡àª¨à«àªŸ, લીટીના આરંભમાં જગà«àª¯àª¾ વધારવી",
-Blockquote : "બà«àª²à«‰àª•-કોટ, અવતરણચિહà«àª¨à«‹",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "રદ કરવà«àª‚; પહેલાં હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી",
-Redo : "રિડૂ; પછી હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી",
-NumberedListLbl : "સંખà«àª¯àª¾àª‚કન સૂચિ",
-NumberedList : "સંખà«àª¯àª¾àª‚કન સૂચિ ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી",
-BulletedListLbl : "બà«àª²à«‡àªŸ સૂચિ",
-BulletedList : "બà«àª²à«‡àªŸ સૂચિ ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી",
-ShowTableBorders : "ટેબલ, કોઠાની બાજà«(બોરà«àª¡àª°) બતાવવી",
-ShowDetails : "વિસà«àª¤à«ƒàª¤ વિગતવાર બતાવવà«àª‚",
-Style : "શૈલી/રીત",
-FontFormat : "ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી",
-Font : "ફૉનà«àªŸ",
-FontSize : "ફૉનà«àªŸ સાઇàª/કદ",
-TextColor : "શબà«àª¦àª¨à«‹ રંગ",
-BGColor : "બૅકગà«àª°àª¾àª‰àª¨à«àª¡ રંગ,",
-Source : "મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ",
-Find : "શોધવà«àª‚",
-Replace : "રિપà«àª²à«‡àª¸/બદલવà«àª‚",
-SpellCheck : "જોડણી (સà«àªªà«‡àª²àª¿àª‚ગ) તપાસવી",
-UniversalKeyboard : "યૂનિવરà«àª¸àª²/વિશà«àªµàªµà«àª¯àª¾àªªàª• કીબૉરà«àª¡",
-PageBreakLbl : "પેજબà«àª°à«‡àª•/પાનાને અલગ કરવà«àª‚",
-PageBreak : "ઇનà«àª¸àª°à«àªŸ પેજબà«àª°à«‡àª•/પાનાને અલગ કરવà«àª‚/દાખલ કરવà«àª‚",
-
-Form : "ફૉરà«àª®/પતà«àª°àª•",
-Checkbox : "ચેક બોકà«àª¸",
-RadioButton : "રેડિઓ બટન",
-TextField : "ટેકà«àª¸à«àªŸ ફીલà«àª¡, શબà«àª¦ કà«àª·à«‡àª¤à«àª°",
-Textarea : "ટેકà«àª¸à«àªŸ àªàª°àª¿àª†, શબà«àª¦ વિસà«àª¤àª¾àª°",
-HiddenField : "ગà«àªªà«àª¤ કà«àª·à«‡àª¤à«àª°",
-Button : "બટન",
-SelectionField : "પસંદગી કà«àª·à«‡àª¤à«àª°",
-ImageButton : "ચિતà«àª° બટન",
-
-FitWindow : "àªàª¡àª¿àªŸàª°àª¨à«€ સાઇઠઅધિકતમ કરવી",
-ShowBlocks : "બà«àª²à«‰àª• બતાવવà«àª‚",
-
-// Context Menu
-EditLink : " લિંક àªàª¡àª¿àªŸ/માં ફેરફાર કરવો",
-CellCM : "કોષના ખાના",
-RowCM : "પંકà«àª¤àª¿àª¨àª¾ ખાના",
-ColumnCM : "કૉલમ/ઊભી કટાર",
-InsertRowAfter : "પછી પંકà«àª¤àª¿ ઉમેરવી",
-InsertRowBefore : "પહેલાં પંકà«àª¤àª¿ ઉમેરવી",
-DeleteRows : "પંકà«àª¤àª¿àª“ ડિલીટ/કાઢી નાખવી",
-InsertColumnAfter : "પછી કૉલમ/ઊભી કટાર ઉમેરવી",
-InsertColumnBefore : "પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી",
-DeleteColumns : "કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી",
-InsertCellAfter : "પછી કોષ ઉમેરવો",
-InsertCellBefore : "પહેલાં કોષ ઉમેરવો",
-DeleteCells : "કોષ ડિલીટ/કાઢી નાખવો",
-MergeCells : "કોષ ભેગા કરવા",
-MergeRight : "જમણી બાજૠભેગા કરવા",
-MergeDown : "નીચે ભેગા કરવા",
-HorizontalSplitCell : "કોષને સમસà«àª¤àª°à«€àª¯ વિભાજન કરવà«àª‚",
-VerticalSplitCell : "કોષને સીધà«àª‚ ને ઊભà«àª‚ વિભાજન કરવà«àª‚",
-TableDelete : "કોઠો ડિલીટ/કાઢી નાખવà«àª‚",
-CellProperties : "કોષના ગà«àª£",
-TableProperties : "કોઠાના ગà«àª£",
-ImageProperties : "ચિતà«àª°àª¨àª¾ ગà«àª£",
-FlashProperties : "ફà«àª²à«…શના ગà«àª£",
-
-AnchorProp : "àªàª‚કરના ગà«àª£",
-ButtonProp : "બટનના ગà«àª£",
-CheckboxProp : "ચેક બોકà«àª¸ ગà«àª£",
-HiddenFieldProp : "ગà«àªªà«àª¤ કà«àª·à«‡àª¤à«àª°àª¨àª¾ ગà«àª£",
-RadioButtonProp : "રેડિઓ બટનના ગà«àª£",
-ImageButtonProp : "ચિતà«àª° બટનના ગà«àª£",
-TextFieldProp : "ટેકà«àª¸à«àªŸ ફીલà«àª¡, શબà«àª¦ કà«àª·à«‡àª¤à«àª°àª¨àª¾ ગà«àª£",
-SelectionFieldProp : "પસંદગી કà«àª·à«‡àª¤à«àª°àª¨àª¾ ગà«àª£",
-TextareaProp : "ટેકà«àª¸à«àªŸ àªàª…રિઆ, શબà«àª¦ વિસà«àª¤àª¾àª°àª¨àª¾ ગà«àª£",
-FormProp : "ફૉરà«àª®/પતà«àª°àª•ના ગà«àª£",
-
-FontFormats : "સામાનà«àª¯;ફૉરà«àª®àªŸà«‡àª¡;સરનામà«àª‚;શીરà«àª·àª• 1;શીરà«àª·àª• 2;શીરà«àª·àª• 3;શીરà«àª·àª• 4;શીરà«àª·àª• 5;શીરà«àª·àª• 6;શીરà«àª·àª• (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML પà«àª°àª•à«àª°àª¿àª¯àª¾ ચાલૠછે. મહેરબાની કરીને રાહ જોવો...",
-Done : "પતી ગયà«àª‚",
-PasteWordConfirm : "તમે જે ટેકà«àª¸à«àªŸ પેસà«àªŸ કરવા માંગો છો, તે વડૅમાંથી કોપી કરેલૠલાગે છે. પેસà«àªŸ કરતા પહેલાં ટેકà«àª¸à«àªŸ સાફ કરવી છે?",
-NotCompatiblePaste : "આ કમાનà«àª¡ ઈનટરનેટ àªàª•à«àª¸àªªà«àª²à«‹àª°àª°(Internet Explorer) 5.5 અથવા àªàª¨àª¾ પછીના વરà«àªàª¨ માટેજ છે. ટેકà«àª¸à«àªŸàª¨à«‡ સાફ કયૅા પહેલાં પેસà«àªŸ કરવી છે?",
-UnknownToolbarItem : "અજાણી ટૂલબાર આઇટમ \"%1\"",
-UnknownCommand : "અજાણયો કમાનà«àª¡ \"%1\"",
-NotImplemented : "કમાનà«àª¡ ઇમà«àªªà«àª²àª¿àª®àª¨à«àªŸ નથી કરોયો",
-UnknownToolbarSet : "ટૂલબાર સેટ \"%1\" ઉપલબà«àª§ નથી",
-NoActiveX : "તમારા બà«àª°àª¾àª‰àªàª°àª¨à«€ સà«àª°àª•à«àª·àª¾ સેટિંગસ àªàª¡àª¿àªŸàª°àª¨àª¾ અમà«àª• ફીચરને પરવાનગી આપતી નથી. કૃપયા \"Run ActiveX controls and plug-ins\" વિકલà«àªªàª¨à«‡ ઇનેબલ/સમરà«àª¥ કરો. તમારા બà«àª°àª¾àª‰àªàª°àª®àª¾àª‚ àªàª°àª° ઇનà«àªµàª¿àªàª¿àª¬àª² ફીચરનો અનà«àª­àªµ થઈ શકે છે. કૃપયા પૉપ-અપ બà«àª²à«‰àª•ર ડિસેબલ કરો.",
-BrowseServerBlocked : "રિસૉરà«àª¸ બà«àª°àª¾àª‰àªàª° ખોલી ન સકાયà«àª‚.",
-DialogBlocked : "ડાયલૉગ વિનà«àª¡à«‹ ખોલી ન સકાયà«àª‚. કૃપયા પૉપ-અપ બà«àª²à«‰àª•ર ડિસેબલ કરો.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "ઠીક છે",
-DlgBtnCancel : "રદ કરવà«àª‚",
-DlgBtnClose : "બંધ કરવà«àª‚",
-DlgBtnBrowseServer : "સરà«àªµàª° બà«àª°àª¾àª‰àª કરો",
-DlgAdvancedTag : "અડà«àªµàª¾àª¨à«àª¸àª¡",
-DlgOpOther : "<અનà«àª¯>",
-DlgInfoTab : "સૂચના",
-DlgAlertUrl : "URL ઇનà«àª¸àª°à«àªŸ કરો",
-
-// General Dialogs Labels
-DlgGenNotSet : "<સેટ નથી>",
-DlgGenId : "Id",
-DlgGenLangDir : "ભાષા લેખવાની પદà«àª§àª¤àª¿",
-DlgGenLangDirLtr : "ડાબે થી જમણે (LTR)",
-DlgGenLangDirRtl : "જમણે થી ડાબે (RTL)",
-DlgGenLangCode : "ભાષા કોડ",
-DlgGenAccessKey : "àªàª•à«àª¸à«‡àª¸ કી",
-DlgGenName : "નામ",
-DlgGenTabIndex : "ટૅબ ઇનà«àª¡à«‡àª•à«àª¸",
-DlgGenLongDescr : "વધારે માહિતી માટે URL",
-DlgGenClass : "સà«àªŸàª¾àª‡àª²-શીટ કà«àª²àª¾àª¸",
-DlgGenTitle : "મà«àª–à«àª¯ મથાળà«àª‚",
-DlgGenContType : "મà«àª–à«àª¯ કનà«àªŸà«‡àª¨à«àªŸ પà«àª°àª•ાર",
-DlgGenLinkCharset : "લિંક રિસૉરà«àª¸ કૅરિકà«àªŸàª° સેટ",
-DlgGenStyle : "સà«àªŸàª¾àª‡àª²",
-
-// Image Dialog
-DlgImgTitle : "ચિતà«àª°àª¨àª¾ ગà«àª£",
-DlgImgInfoTab : "ચિતà«àª° ની જાણકારી",
-DlgImgBtnUpload : "આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚",
-DlgImgURL : "URL",
-DlgImgUpload : "અપલોડ",
-DlgImgAlt : "ઑલà«àªŸàª°à«àª¨àªŸ ટેકà«àª¸à«àªŸ",
-DlgImgWidth : "પહોળાઈ",
-DlgImgHeight : "ઊંચાઈ",
-DlgImgLockRatio : "લૉક ગà«àª£à«‹àª¤à«àª¤àª°",
-DlgBtnResetSize : "રીસેટ સાઇàª",
-DlgImgBorder : "બોરà«àª¡àª°",
-DlgImgHSpace : "સમસà«àª¤àª°à«€àª¯ જગà«àª¯àª¾",
-DlgImgVSpace : "લંબરૂપ જગà«àª¯àª¾",
-DlgImgAlign : "લાઇનદોરીમાં ગોઠવવà«àª‚",
-DlgImgAlignLeft : "ડાબી બાજૠગોઠવવà«àª‚",
-DlgImgAlignAbsBottom: "Abs નીચે",
-DlgImgAlignAbsMiddle: "Abs ઉપર",
-DlgImgAlignBaseline : "આધાર લીટી",
-DlgImgAlignBottom : "નીચે",
-DlgImgAlignMiddle : "વચà«àªšà«‡",
-DlgImgAlignRight : "જમણી",
-DlgImgAlignTextTop : "ટેકà«àª¸à«àªŸ ઉપર",
-DlgImgAlignTop : "ઉપર",
-DlgImgPreview : "પૂરà«àªµàª¦àª°à«àª¶àª¨",
-DlgImgAlertUrl : "ચિતà«àª°àª¨à«€ URL ટાઇપ કરો",
-DlgImgLinkTab : "લિંક",
-
-// Flash Dialog
-DlgFlashTitle : "ફà«àª²à«…શ ગà«àª£",
-DlgFlashChkPlay : "ઑટો/સà«àªµàª¯àª‚ પà«àª²à«‡",
-DlgFlashChkLoop : "લૂપ",
-DlgFlashChkMenu : "ફà«àª²à«…શ મેનà«àª¯à«‚ નો પà«àª°àª¯à«‹àª— કરો",
-DlgFlashScale : "સà«àª•ેલ",
-DlgFlashScaleAll : "સà«àª•ેલ ઓલ/બધૠબતાવો",
-DlgFlashScaleNoBorder : "સà«àª•ેલ બોરà«àª¡àª° વગર",
-DlgFlashScaleFit : "સà«àª•ેલ àªàª•દમ ફીટ",
-
-// Link Dialog
-DlgLnkWindowTitle : "લિંક",
-DlgLnkInfoTab : "લિંક ઇનà«àª«à«‰ ટૅબ",
-DlgLnkTargetTab : "ટારà«àª—ેટ/લકà«àª·à«àª¯ ટૅબ",
-
-DlgLnkType : "લિંક પà«àª°àª•ાર",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "આ પેજનો àªàª‚કર",
-DlgLnkTypeEMail : "ઈ-મેલ",
-DlgLnkProto : "પà«àª°à«‹àªŸà«‹àª•ૉલ",
-DlgLnkProtoOther : "<અનà«àª¯>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "àªàª‚કર પસંદ કરો",
-DlgLnkAnchorByName : "àªàª‚કર નામથી પસંદ કરો",
-DlgLnkAnchorById : "àªàª‚કર àªàª²àª¿àª®àª¨à«àªŸ Id થી પસંદ કરો",
-DlgLnkNoAnchors : "(ડૉકà«àª¯à«àª®àª¨à«àªŸàª®àª¾àª‚ àªàª‚કરની સંખà«àª¯àª¾)",
-DlgLnkEMail : "ઈ-મેલ સરનામà«àª‚",
-DlgLnkEMailSubject : "ઈ-મેલ વિષય",
-DlgLnkEMailBody : "સંદેશ",
-DlgLnkUpload : "અપલોડ",
-DlgLnkBtnUpload : "આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚",
-
-DlgLnkTarget : "ટારà«àª—ેટ/લકà«àª·à«àª¯",
-DlgLnkTargetFrame : "<ફà«àª°à«‡àª®>",
-DlgLnkTargetPopup : "<પૉપ-અપ વિનà«àª¡à«‹>",
-DlgLnkTargetBlank : "નવી વિનà«àª¡à«‹ (_blank)",
-DlgLnkTargetParent : "મૂળ વિનà«àª¡à«‹ (_parent)",
-DlgLnkTargetSelf : "આજ વિનà«àª¡à«‹ (_self)",
-DlgLnkTargetTop : "ઉપરની વિનà«àª¡à«‹ (_top)",
-DlgLnkTargetFrameName : "ટારà«àª—ેટ ફà«àª°à«‡àª® નà«àª‚ નામ",
-DlgLnkPopWinName : "પૉપ-અપ વિનà«àª¡à«‹ નà«àª‚ નામ",
-DlgLnkPopWinFeat : "પૉપ-અપ વિનà«àª¡à«‹ ફીચરસૅ",
-DlgLnkPopResize : "સાઇઠબદલી સકાય છે",
-DlgLnkPopLocation : "લોકેશન બાર",
-DlgLnkPopMenu : "મેનà«àª¯à«‚ બાર",
-DlgLnkPopScroll : "સà«àª•à«àª°à«‹àª² બાર",
-DlgLnkPopStatus : "સà«àªŸà«…ટસ બાર",
-DlgLnkPopToolbar : "ટૂલ બાર",
-DlgLnkPopFullScrn : "ફà«àª² સà«àª•à«àª°à«€àª¨ (IE)",
-DlgLnkPopDependent : "ડિપેનà«àª¡àª¨à«àªŸ (Netscape)",
-DlgLnkPopWidth : "પહોળાઈ",
-DlgLnkPopHeight : "ઊંચાઈ",
-DlgLnkPopLeft : "ડાબી બાજà«",
-DlgLnkPopTop : "જમણી બાજà«",
-
-DlnLnkMsgNoUrl : "લિંક URL ટાઇપ કરો",
-DlnLnkMsgNoEMail : "ઈ-મેલ સરનામà«àª‚ ટાઇપ કરો",
-DlnLnkMsgNoAnchor : "àªàª‚કર પસંદ કરો",
-DlnLnkMsgInvPopName : "પૉપ-અપ વિનà«àª¡à«‹ નà«àª‚ નામ àªàª²à«àª«àª¬à«‡àªŸàª¥à«€ શરૂ કરવો અને તેમાં સà«àªªà«‡àª‡àª¸ ન હોવી જોઈàª",
-
-// Color Dialog
-DlgColorTitle : "રંગ પસંદ કરો",
-DlgColorBtnClear : "સાફ કરો",
-DlgColorHighlight : "હાઈલાઇટ",
-DlgColorSelected : "સિલેકà«àªŸà«‡àª¡/પસંદ કરવà«àª‚",
-
-// Smiley Dialog
-DlgSmileyTitle : "સà«àª®àª¾àª‡àª²à«€ પસંદ કરો",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "સà«àªªà«‡àª¶àª¿àª…લ વિશિષà«àªŸ અકà«àª·àª° પસંદ કરો",
-
-// Table Dialog
-DlgTableTitle : "ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚",
-DlgTableRows : "પંકà«àª¤àª¿àª¨àª¾ ખાના",
-DlgTableColumns : "કૉલમ/ઊભી કટાર",
-DlgTableBorder : "કોઠાની બાજà«(બોરà«àª¡àª°) સાઇàª",
-DlgTableAlign : "અલાઇનમનà«àªŸ/ગોઠવાયેલà«àª‚ ",
-DlgTableAlignNotSet : "<સેટ નથી>",
-DlgTableAlignLeft : "ડાબી બાજà«",
-DlgTableAlignCenter : "મધà«àª¯ સેનà«àªŸàª°",
-DlgTableAlignRight : "જમણી બાજà«",
-DlgTableWidth : "પહોળાઈ",
-DlgTableWidthPx : "પિકસલ",
-DlgTableWidthPc : "પà«àª°àª¤àª¿àª¶àª¤",
-DlgTableHeight : "ઊંચાઈ",
-DlgTableCellSpace : "સેલ અંતર",
-DlgTableCellPad : "સેલ પૅડિંગ",
-DlgTableCaption : "મથાળà«àª‚/કૅપà«àª¶àª¨ ",
-DlgTableSummary : "ટૂંકો àªàª¹à«‡àªµàª¾àª²",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "પંકà«àª¤àª¿àª¨àª¾ ખાનાના ગà«àª£",
-DlgCellWidth : "પહોળાઈ",
-DlgCellWidthPx : "પિકસલ",
-DlgCellWidthPc : "પà«àª°àª¤àª¿àª¶àª¤",
-DlgCellHeight : "ઊંચાઈ",
-DlgCellWordWrap : "વરà«àª¡ રૅપ",
-DlgCellWordWrapNotSet : "<સેટ નથી>",
-DlgCellWordWrapYes : "હા",
-DlgCellWordWrapNo : "ના",
-DlgCellHorAlign : "સમસà«àª¤àª°à«€àª¯ ગોઠવવà«àª‚",
-DlgCellHorAlignNotSet : "<સેટ નથી>",
-DlgCellHorAlignLeft : "ડાબી બાજà«",
-DlgCellHorAlignCenter : "મધà«àª¯ સેનà«àªŸàª°",
-DlgCellHorAlignRight: "જમણી બાજà«",
-DlgCellVerAlign : "લંબરૂપ ગોઠવવà«àª‚",
-DlgCellVerAlignNotSet : "<સેટ નથી>",
-DlgCellVerAlignTop : "ઉપર",
-DlgCellVerAlignMiddle : "મધà«àª¯ સેનà«àªŸàª°",
-DlgCellVerAlignBottom : "નીચે",
-DlgCellVerAlignBaseline : "મૂળ રેખા",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "પંકà«àª¤àª¿ સà«àªªàª¾àª¨",
-DlgCellCollSpan : "કૉલમ/ઊભી કટાર સà«àªªàª¾àª¨",
-DlgCellBackColor : "બૅકગà«àª°àª¾àª‰àª¨à«àª¡ રંગ",
-DlgCellBorderColor : "બોરà«àª¡àª°àª¨à«‹ રંગ",
-DlgCellBtnSelect : "પસંદ કરો...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "શોધવà«àª‚ અને બદલવà«àª‚",
-
-// Find Dialog
-DlgFindTitle : "શોધવà«àª‚",
-DlgFindFindBtn : "શોધવà«àª‚",
-DlgFindNotFoundMsg : "તમે શોધેલી ટેકà«àª¸à«àªŸ નથી મળી",
-
-// Replace Dialog
-DlgReplaceTitle : "બદલવà«àª‚",
-DlgReplaceFindLbl : "આ શોધો",
-DlgReplaceReplaceLbl : "આનાથી બદલો",
-DlgReplaceCaseChk : "કેસ સરખા રાખો",
-DlgReplaceReplaceBtn : "બદલવà«àª‚",
-DlgReplaceReplAllBtn : "બઘા બદલી ",
-DlgReplaceWordChk : "બઘા શબà«àª¦ સરખા રાખો",
-
-// Paste Operations / Dialog
-PasteErrorCut : "તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.",
-PasteErrorCopy : "તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl+C) का पà¥à¤°à¤¯à¥‹à¤— करें।",
-
-PasteAsText : "પેસà«àªŸ (ટેકà«àª¸à«àªŸ)",
-PasteFromWord : "પેસà«àªŸ (વરà«àª¡ થી)",
-
-DlgPasteMsg2 : "Ctrl+V નો પà«àª°àª¯à«‹àª— કરી પેસà«àªŸ કરો",
-DlgPasteSec : "તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસના કારણે,àªàª¡àª¿àªŸàª° તમારા કિલà«àªªàª¬à«‹àª°à«àª¡ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિનà«àª¡à«‹àª®àª¾àª‚ ફરીથી પેસà«àªŸ કરવà«àª‚ પડશે.",
-DlgPasteIgnoreFont : "ફૉનà«àªŸàª«à«‡àª¸ વà«àª¯àª¾àª–à«àª¯àª¾àª¨à«€ અવગણના",
-DlgPasteRemoveStyles : "સà«àªŸàª¾àª‡àª² વà«àª¯àª¾àª–à«àª¯àª¾ કાઢી નાખવી",
-
-// Color Picker
-ColorAutomatic : "સà«àªµàªšàª¾àª²àª¿àª¤",
-ColorMoreColors : "ઔર રંગ...",
-
-// Document Properties
-DocProps : "ડૉકà«àª¯à«àª®àª¨à«àªŸ ગà«àª£/પà«àª°à«‰àªªàª°à«àªŸàª¿àª",
-
-// Anchor Dialog
-DlgAnchorTitle : "àªàª‚કર ગà«àª£/પà«àª°à«‰àªªàª°à«àªŸàª¿àª",
-DlgAnchorName : "àªàª‚કરનà«àª‚ નામ",
-DlgAnchorErrorName : "àªàª‚કરનà«àª‚ નામ ટાઈપ કરો",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "શબà«àª¦àª•ોશમાં નથી",
-DlgSpellChangeTo : "આનાથી બદલવà«àª‚",
-DlgSpellBtnIgnore : "ઇગà«àª¨à«‹àª°/અવગણના કરવી",
-DlgSpellBtnIgnoreAll : "બધાની ઇગà«àª¨à«‹àª°/અવગણના કરવી",
-DlgSpellBtnReplace : "બદલવà«àª‚",
-DlgSpellBtnReplaceAll : "બધા બદલી કરો",
-DlgSpellBtnUndo : "અનà«àª¡à«‚",
-DlgSpellNoSuggestions : "- કઇ સજેશન નથી -",
-DlgSpellProgress : "શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક ચાલૠછે...",
-DlgSpellNoMispell : "શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: ખોટી જોડણી મળી નથી",
-DlgSpellNoChanges : "શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: àªàª•પણ શબà«àª¦ બદલયો નથી",
-DlgSpellOneChange : "શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: àªàª• શબà«àª¦ બદલયો છે",
-DlgSpellManyChanges : "શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: %1 શબà«àª¦ બદલયા છે",
-
-IeSpellDownload : "સà«àªªà«‡àª²-ચેકર ઇનà«àª¸à«àªŸà«‹àª² નથી. શà«àª‚ તમે ડાઉનલોડ કરવા માંગો છો?",
-
-// Button Dialog
-DlgButtonText : "ટેકà«àª¸à«àªŸ (વૅલà«àª¯à«‚)",
-DlgButtonType : "પà«àª°àª•ાર",
-DlgButtonTypeBtn : "બટન",
-DlgButtonTypeSbm : "સબà«àª®àª¿àªŸ",
-DlgButtonTypeRst : "રિસેટ",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "નામ",
-DlgCheckboxValue : "વૅલà«àª¯à«‚",
-DlgCheckboxSelected : "સિલેકà«àªŸà«‡àª¡",
-
-// Form Dialog
-DlgFormName : "નામ",
-DlgFormAction : "કà«àª°àª¿àª¯àª¾",
-DlgFormMethod : "પદà«àª§àª¤àª¿",
-
-// Select Field Dialog
-DlgSelectName : "નામ",
-DlgSelectValue : "વૅલà«àª¯à«‚",
-DlgSelectSize : "સાઇàª",
-DlgSelectLines : "લીટીઓ",
-DlgSelectChkMulti : "àªàª•થી વધારે પસંદ કરી શકો",
-DlgSelectOpAvail : "ઉપલબà«àª§ વિકલà«àªª",
-DlgSelectOpText : "ટેકà«àª¸à«àªŸ",
-DlgSelectOpValue : "વૅલà«àª¯à«‚",
-DlgSelectBtnAdd : "ઉમેરવà«àª‚",
-DlgSelectBtnModify : "બદલવà«àª‚",
-DlgSelectBtnUp : "ઉપર",
-DlgSelectBtnDown : "નીચે",
-DlgSelectBtnSetValue : "પસંદ કરલી વૅલà«àª¯à«‚ સેટ કરો",
-DlgSelectBtnDelete : "રદ કરવà«àª‚",
-
-// Textarea Dialog
-DlgTextareaName : "નામ",
-DlgTextareaCols : "કૉલમ/ઊભી કટાર",
-DlgTextareaRows : "પંકà«àª¤àª¿àª“",
-
-// Text Field Dialog
-DlgTextName : "નામ",
-DlgTextValue : "વૅલà«àª¯à«‚",
-DlgTextCharWidth : "કેરેકà«àªŸàª°àª¨à«€ પહોળાઈ",
-DlgTextMaxChars : "અધિકતમ કેરેકà«àªŸàª°",
-DlgTextType : "ટાઇપ",
-DlgTextTypeText : "ટેકà«àª¸à«àªŸ",
-DlgTextTypePass : "પાસવરà«àª¡",
-
-// Hidden Field Dialog
-DlgHiddenName : "નામ",
-DlgHiddenValue : "વૅલà«àª¯à«‚",
-
-// Bulleted List Dialog
-BulletedListProp : "બà«àª²à«‡àªŸ સૂચિ ગà«àª£",
-NumberedListProp : "સંખà«àª¯àª¾àª‚કà«àª¤àª¿ સૂચિ ગà«àª£",
-DlgLstStart : "શરૂઆતથી",
-DlgLstType : "પà«àª°àª•ાર",
-DlgLstTypeCircle : "વરà«àª¤à«àª³",
-DlgLstTypeDisc : "ડિસà«àª•",
-DlgLstTypeSquare : "ચોરસ",
-DlgLstTypeNumbers : "સંખà«àª¯àª¾ (1, 2, 3)",
-DlgLstTypeLCase : "નાના અકà«àª·àª° (a, b, c)",
-DlgLstTypeUCase : "મોટા અકà«àª·àª° (A, B, C)",
-DlgLstTypeSRoman : "નાના રોમન આંક (i, ii, iii)",
-DlgLstTypeLRoman : "મોટા રોમન આંક (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "સાધારણ",
-DlgDocBackTab : "બૅકગà«àª°àª¾àª‰àª¨à«àª¡",
-DlgDocColorsTab : "રંગ અને મારà«àªœàª¿àª¨/કિનાર",
-DlgDocMetaTab : "મેટાડૅટા",
-
-DlgDocPageTitle : "પેજ મથાળà«àª‚/ટાઇટલ",
-DlgDocLangDir : "ભાષા લેખવાની પદà«àª§àª¤àª¿",
-DlgDocLangDirLTR : "ડાબે થી જમણે (LTR)",
-DlgDocLangDirRTL : "જમણે થી ડાબે (RTL)",
-DlgDocLangCode : "ભાષા કોડ",
-DlgDocCharSet : "કેરેકà«àªŸàª° સેટ àªàª¨à«àª•ોડિંગ",
-DlgDocCharSetCE : "મધà«àª¯ યà«àª°à«‹àªªàª¿àª…ન (Central European)",
-DlgDocCharSetCT : "ચાઇનીઠ(Chinese Traditional Big5)",
-DlgDocCharSetCR : "સિરીલિક (Cyrillic)",
-DlgDocCharSetGR : "ગà«àª°à«€àª• (Greek)",
-DlgDocCharSetJP : "જાપાનિઠ(Japanese)",
-DlgDocCharSetKR : "કોરીયન (Korean)",
-DlgDocCharSetTR : "ટરà«àª•િ (Turkish)",
-DlgDocCharSetUN : "યૂનિકોડ (UTF-8)",
-DlgDocCharSetWE : "પશà«àªšàª¿àª® યà«àª°à«‹àªªàª¿àª…ન (Western European)",
-DlgDocCharSetOther : "અનà«àª¯ કેરેકà«àªŸàª° સેટ àªàª¨à«àª•ોડિંગ",
-
-DlgDocDocType : "ડૉકà«àª¯à«àª®àª¨à«àªŸ પà«àª°àª•ાર શીરà«àª·àª•",
-DlgDocDocTypeOther : "અનà«àª¯ ડૉકà«àª¯à«àª®àª¨à«àªŸ પà«àª°àª•ાર શીરà«àª·àª•",
-DlgDocIncXHTML : "XHTML સૂચના સમાવિષà«àªŸ કરવી",
-DlgDocBgColor : "બૅકગà«àª°àª¾àª‰àª¨à«àª¡ રંગ",
-DlgDocBgImage : "બૅકગà«àª°àª¾àª‰àª¨à«àª¡ ચિતà«àª° URL",
-DlgDocBgNoScroll : "સà«àª•à«àª°à«‹àª² ન થાય તેવà«àª‚ બૅકગà«àª°àª¾àª‰àª¨à«àª¡",
-DlgDocCText : "ટેકà«àª¸à«àªŸ",
-DlgDocCLink : "લિંક",
-DlgDocCVisited : "વિàªàª¿àªŸà«‡àª¡ લિંક",
-DlgDocCActive : "સકà«àª°àª¿àª¯ લિંક",
-DlgDocMargins : "પેજ મારà«àªœàª¿àª¨",
-DlgDocMaTop : "ઉપર",
-DlgDocMaLeft : "ડાબી",
-DlgDocMaRight : "જમણી",
-DlgDocMaBottom : "નીચે",
-DlgDocMeIndex : "ડૉકà«àª¯à«àª®àª¨à«àªŸ ઇનà«àª¡à«‡àª•à«àª¸ સંકેતશબà«àª¦ (અલà«àªªàªµàª¿àª°àª¾àª® (,) થી અલગ કરો)",
-DlgDocMeDescr : "ડૉકà«àª¯à«àª®àª¨à«àªŸ વરà«àª£àª¨",
-DlgDocMeAuthor : "લેખક",
-DlgDocMeCopy : "કૉપિરાઇટ",
-DlgDocPreview : "પૂરà«àªµàª¦àª°à«àª¶àª¨",
-
-// Templates Dialog
-Templates : "ટેમà«àªªà«àª²à«‡àªŸ",
-DlgTemplatesTitle : "કનà«àªŸà«‡àª¨à«àªŸ ટેમà«àªªà«àª²à«‡àªŸ",
-DlgTemplatesSelMsg : "àªàª¡àª¿àªŸàª°àª®àª¾àª‚ ઓપન કરવા ટેમà«àªªà«àª²à«‡àªŸ પસંદ કરો (વરà«àª¤àª®àª¾àª¨ કનà«àªŸà«‡àª¨à«àªŸ સેવ નહીં થાય):",
-DlgTemplatesLoading : "ટેમà«àªªà«àª²à«‡àªŸ સૂચિ લોડ થાય છે. રાહ જà«àª“...",
-DlgTemplatesNoTpl : "(કોઈ ટેમà«àªªà«àª²à«‡àªŸ ડિફાઇન નથી)",
-DlgTemplatesReplace : "મૂળ શબà«àª¦àª¨à«‡ બદલો",
-
-// About Dialog
-DlgAboutAboutTab : "FCKEditor ના વિષે",
-DlgAboutBrowserInfoTab : "બà«àª°àª¾àª‰àªàª° ના વિષે",
-DlgAboutLicenseTab : "લાઇસનà«àª¸",
-DlgAboutVersion : "વરà«àªàª¨",
-DlgAboutInfo : "વધારે માહિતી માટે:",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/he.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/he.js
deleted file mode 100644
index c3521377e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/he.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Hebrew language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "rtl",
-
-ToolbarCollapse : "כיווץ סרגל הכלי×",
-ToolbarExpand : "פתיחת סרגל הכלי×",
-
-// Toolbar Items and Context Menu
-Save : "שמירה",
-NewPage : "דף חדש",
-Preview : "תצוגה מקדימה",
-Cut : "גזירה",
-Copy : "העתקה",
-Paste : "הדבקה",
-PasteText : "הדבקה כטקסט פשוט",
-PasteWord : "הדבקה מ-וורד",
-Print : "הדפסה",
-SelectAll : "בחירת הכל",
-RemoveFormat : "הסרת העיצוב",
-InsertLinkLbl : "קישור",
-InsertLink : "הוספת/עריכת קישור",
-RemoveLink : "הסרת הקישור",
-VisitLink : "פתח קישור",
-Anchor : "הוספת/עריכת נקודת עיגון",
-AnchorDelete : "הסר נקודת עיגון",
-InsertImageLbl : "תמונה",
-InsertImage : "הוספת/עריכת תמונה",
-InsertFlashLbl : "פל×ש",
-InsertFlash : "הוסף/ערוך פל×ש",
-InsertTableLbl : "טבלה",
-InsertTable : "הוספת/עריכת טבלה",
-InsertLineLbl : "קו",
-InsertLine : "הוספת קו ×ופקי",
-InsertSpecialCharLbl: "תו מיוחד",
-InsertSpecialChar : "הוספת תו מיוחד",
-InsertSmileyLbl : "סמיילי",
-InsertSmiley : "הוספת סמיילי",
-About : "×ודות FCKeditor",
-Bold : "מודגש",
-Italic : "נטוי",
-Underline : "קו תחתון",
-StrikeThrough : "כתיב מחוק",
-Subscript : "כתיב תחתון",
-Superscript : "כתיב עליון",
-LeftJustify : "יישור לשמ×ל",
-CenterJustify : "מרכוז",
-RightJustify : "יישור לימין",
-BlockJustify : "יישור לשוליי×",
-DecreaseIndent : "הקטנת ×ינדנטציה",
-IncreaseIndent : "הגדלת ×ינדנטציה",
-Blockquote : "בלוק ציטוט",
-CreateDiv : "צור מיכל(תג)DIV",
-EditDiv : "ערוך מיכל (תג)DIV",
-DeleteDiv : "הסר מיכל(תג) DIV",
-Undo : "ביטול צעד ×חרון",
-Redo : "חזרה על צעד ×חרון",
-NumberedListLbl : "רשימה ממוספרת",
-NumberedList : "הוספת/הסרת רשימה ממוספרת",
-BulletedListLbl : "רשימת נקודות",
-BulletedList : "הוספת/הסרת רשימת נקודות",
-ShowTableBorders : "הצגת מסגרת הטבלה",
-ShowDetails : "הצגת פרטי×",
-Style : "סגנון",
-FontFormat : "עיצוב",
-Font : "גופן",
-FontSize : "גודל",
-TextColor : "צבע טקסט",
-BGColor : "צבע רקע",
-Source : "מקור",
-Find : "חיפוש",
-Replace : "החלפה",
-SpellCheck : "בדיקת ×יות",
-UniversalKeyboard : "מקלדת ×וניברסלית",
-PageBreakLbl : "שבירת דף",
-PageBreak : "הוסף שבירת דף",
-
-Form : "טופס",
-Checkbox : "תיבת סימון",
-RadioButton : "לחצן ×פשרויות",
-TextField : "שדה טקסט",
-Textarea : "×יזור טקסט",
-HiddenField : "שדה חבוי",
-Button : "כפתור",
-SelectionField : "שדה בחירה",
-ImageButton : "כפתור תמונה",
-
-FitWindow : "הגדל ×ת גודל העורך",
-ShowBlocks : "הצג בלוקי×",
-
-// Context Menu
-EditLink : "עריכת קישור",
-CellCM : "ת×",
-RowCM : "שורה",
-ColumnCM : "עמודה",
-InsertRowAfter : "הוסף שורה ×חרי",
-InsertRowBefore : "הוסף שורה לפני",
-DeleteRows : "מחיקת שורות",
-InsertColumnAfter : "הוסף עמודה ×חרי",
-InsertColumnBefore : "הוסף עמודה לפני",
-DeleteColumns : "מחיקת עמודות",
-InsertCellAfter : "הוסף ×ª× ×חרי",
-InsertCellBefore : "הוסף ×ª× ×חרי",
-DeleteCells : "מחיקת ת××™×",
-MergeCells : "מיזוג ת××™×",
-MergeRight : "מזג ימינה",
-MergeDown : "מזג למטה",
-HorizontalSplitCell : "פצל ×ª× ×ופקית",
-VerticalSplitCell : "פצל ×ª× ×נכית",
-TableDelete : "מחק טבלה",
-CellProperties : "תכונות הת×",
-TableProperties : "תכונות הטבלה",
-ImageProperties : "תכונות התמונה",
-FlashProperties : "מ×פייני פל×ש",
-
-AnchorProp : "מ×פייני נקודת עיגון",
-ButtonProp : "מ×פייני כפתור",
-CheckboxProp : "מ×פייני תיבת סימון",
-HiddenFieldProp : "מ×פיני שדה חבוי",
-RadioButtonProp : "מ×פייני לחצן ×פשרויות",
-ImageButtonProp : "מ×פיני כפתור תמונה",
-TextFieldProp : "מ×פייני שדה טקסט",
-SelectionFieldProp : "מ×פייני שדה בחירה",
-TextareaProp : "מ×פיני ×יזור טקסט",
-FormProp : "מ×פיני טופס",
-
-FontFormats : "נורמלי;קוד;כתובת;כותרת;כותרת 2;כותרת 3;כותרת 4;כותרת 5;כותרת 6",
-
-// Alerts and Messages
-ProcessingXHTML : "מעבד XHTML, × × ×œ×”×ž×ª×™×Ÿ...",
-Done : "המשימה הושלמה",
-PasteWordConfirm : "נר××” הטקסט שבכוונתך להדביק מקורו בקובץ וורד. ×”×× ×‘×¨×¦×•× ×š לנקות ×ותו ×˜×¨× ×”×”×“×‘×§×”?",
-NotCompatiblePaste : "פעולה זו זמינה לדפדפן ×ינטרנט ×קספלורר ×ž×’×™×¨×¡× 5.5 ומעלה. ×”×× ×œ×”×ž×©×™×š בהדבקה ×œ×œ× ×”× ×™×§×•×™?",
-UnknownToolbarItem : "פריט ×œ× ×™×“×•×¢ בסרגל ×”×›×œ×™× \"%1\"",
-UnknownCommand : "×©× ×¤×¢×•×œ×” ×œ× ×™×“×•×¢ \"%1\"",
-NotImplemented : "הפקודה ×œ× ×ž×™×•×©×ž×ª",
-UnknownToolbarSet : "ערכת סרגל ×”×›×œ×™× \"%1\" ×œ× ×§×™×™×ž×ª",
-NoActiveX : "הגדרות ×בטחה של הדפדפן עלולות לגביל ×ת ×פשרויות העריכה.יש ל×פשר ×ת ×”×ופציה \"הרץ ×¤×§×“×™× ×¤×¢×™×œ×™× ×•×ª×•×¡×¤×•×ª\". תוכל לחוות טעויות ×•×—×™×•×•×™× ×©×œ ×פשרויות שחסרי×.",
-BrowseServerBlocked : "×œ× × ×™×ª×Ÿ לגשת לדפדפן מש×בי×.×× × ×•×•×“× ×©×—×•×¡× ×—×œ×•× ×•×ª ×”×§×•×¤×¦×™× ×œ× ×¤×¢×™×œ.",
-DialogBlocked : "×œ× ×”×™×” ניתן לפתוח חלון די×לוג. ×× × ×•×•×“× ×©×—×•×¡× ×—×œ×•× ×•×ª ×§×•×¤×¦×™× ×œ× ×¤×¢×™×œ.",
-VisitLinkBlocked : "×œ× × ×™×ª×Ÿ לפתוח חלון חדש.× × ×œ×•×•×“× ×©×—×•×¡×ž×™ החלונות ×”×§×•×¤×¦×™× ×œ× ×¤×¢×™×œ×™×.",
-
-// Dialogs
-DlgBtnOK : "×ישור",
-DlgBtnCancel : "ביטול",
-DlgBtnClose : "סגירה",
-DlgBtnBrowseServer : "סייר השרת",
-DlgAdvancedTag : "×פשרויות מתקדמות",
-DlgOpOther : "<×חר>",
-DlgInfoTab : "מידע",
-DlgAlertUrl : "×× × ×”×–×Ÿ URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<×œ× × ×§×‘×¢>",
-DlgGenId : "זיהוי (Id)",
-DlgGenLangDir : "כיוון שפה",
-DlgGenLangDirLtr : "שמ×ל לימין (LTR)",
-DlgGenLangDirRtl : "ימין לשמ×ל (RTL)",
-DlgGenLangCode : "קוד שפה",
-DlgGenAccessKey : "מקש גישה",
-DlgGenName : "ש×",
-DlgGenTabIndex : "מספר ט×ב",
-DlgGenLongDescr : "קישור לתי×ור מפורט",
-DlgGenClass : "גיליונות עיצוב קבוצות",
-DlgGenTitle : "כותרת מוצעת",
-DlgGenContType : "Content Type מוצע",
-DlgGenLinkCharset : "קידוד המש×ב המקושר",
-DlgGenStyle : "סגנון",
-
-// Image Dialog
-DlgImgTitle : "תכונות התמונה",
-DlgImgInfoTab : "מידע על התמונה",
-DlgImgBtnUpload : "שליחה לשרת",
-DlgImgURL : "כתובת (URL)",
-DlgImgUpload : "העל××”",
-DlgImgAlt : "טקסט חלופי",
-DlgImgWidth : "רוחב",
-DlgImgHeight : "גובה",
-DlgImgLockRatio : "נעילת היחס",
-DlgBtnResetSize : "×יפוס הגודל",
-DlgImgBorder : "מסגרת",
-DlgImgHSpace : "מרווח ×ופקי",
-DlgImgVSpace : "מרווח ×× ×›×™",
-DlgImgAlign : "יישור",
-DlgImgAlignLeft : "לשמ×ל",
-DlgImgAlignAbsBottom: "לתחתית ×”×בסולוטית",
-DlgImgAlignAbsMiddle: "מרכוז ×בסולוטי",
-DlgImgAlignBaseline : "לקו התחתית",
-DlgImgAlignBottom : "לתחתית",
-DlgImgAlignMiddle : "ל×מצע",
-DlgImgAlignRight : "לימין",
-DlgImgAlignTextTop : "לר×ש הטקסט",
-DlgImgAlignTop : "למעלה",
-DlgImgPreview : "תצוגה מקדימה",
-DlgImgAlertUrl : "× × ×œ×”×§×œ×™×“ ×ת כתובת התמונה",
-DlgImgLinkTab : "קישור",
-
-// Flash Dialog
-DlgFlashTitle : "מ×פיני פל×ש",
-DlgFlashChkPlay : "נגן ×וטומטי",
-DlgFlashChkLoop : "לול××”",
-DlgFlashChkMenu : "×פשר תפריט פל×ש",
-DlgFlashScale : "גודל",
-DlgFlashScaleAll : "הצג הכל",
-DlgFlashScaleNoBorder : "×œ×œ× ×’×‘×•×œ×•×ª",
-DlgFlashScaleFit : "הת×מה מושלמת",
-
-// Link Dialog
-DlgLnkWindowTitle : "קישור",
-DlgLnkInfoTab : "מידע על הקישור",
-DlgLnkTargetTab : "מטרה",
-
-DlgLnkType : "סוג קישור",
-DlgLnkTypeURL : "כתובת (URL)",
-DlgLnkTypeAnchor : "עוגן בעמוד זה",
-DlgLnkTypeEMail : "דו×''ל",
-DlgLnkProto : "פרוטוקול",
-DlgLnkProtoOther : "<×חר>",
-DlgLnkURL : "כתובת (URL)",
-DlgLnkAnchorSel : "בחירת עוגן",
-DlgLnkAnchorByName : "עפ''×™ ×©× ×”×¢×•×’×Ÿ",
-DlgLnkAnchorById : "עפ''י זיהוי (Id) הרכיב",
-DlgLnkNoAnchors : "(×ין ×¢×•×’× ×™× ×–×ž×™× ×™× ×‘×“×£)",
-DlgLnkEMail : "כתובת הדו×''ל",
-DlgLnkEMailSubject : "× ×•×©× ×”×”×•×“×¢×”",
-DlgLnkEMailBody : "גוף ההודעה",
-DlgLnkUpload : "העל××”",
-DlgLnkBtnUpload : "שליחה לשרת",
-
-DlgLnkTarget : "מטרה",
-DlgLnkTargetFrame : "<מסגרת>",
-DlgLnkTargetPopup : "<חלון קופץ>",
-DlgLnkTargetBlank : "חלון חדש (_blank)",
-DlgLnkTargetParent : "חלון ×”×ב (_parent)",
-DlgLnkTargetSelf : "ב×ותו החלון (_self)",
-DlgLnkTargetTop : "חלון ר×שי (_top)",
-DlgLnkTargetFrameName : "×©× ×ž×¡×’×¨×ª היעד",
-DlgLnkPopWinName : "×©× ×”×—×œ×•×Ÿ הקופץ",
-DlgLnkPopWinFeat : "תכונות החלון הקופץ",
-DlgLnkPopResize : "בעל גודל ניתן לשינוי",
-DlgLnkPopLocation : "סרגל כתובת",
-DlgLnkPopMenu : "סרגל תפריט",
-DlgLnkPopScroll : "ניתן לגלילה",
-DlgLnkPopStatus : "סרגל חיווי",
-DlgLnkPopToolbar : "סרגל הכלי×",
-DlgLnkPopFullScrn : "מסך ×ž×œ× (IE)",
-DlgLnkPopDependent : "תלוי (Netscape)",
-DlgLnkPopWidth : "רוחב",
-DlgLnkPopHeight : "גובה",
-DlgLnkPopLeft : "×ž×™×§×•× ×¦×“ שמ×ל",
-DlgLnkPopTop : "×ž×™×§×•× ×¦×“ עליון",
-
-DlnLnkMsgNoUrl : "× × ×œ×”×§×œ×™×“ ×ת כתובת הקישור (URL)",
-DlnLnkMsgNoEMail : "× × ×œ×”×§×œ×™×“ ×ת כתובת הדו×''ל",
-DlnLnkMsgNoAnchor : "× × ×œ×‘×—×•×¨ עוגן במסמך",
-DlnLnkMsgInvPopName : "×©× ×”×—×œ×•×Ÿ הקופץ חייב להתחיל ב×ותיות ו×סור לכלול רווחי×",
-
-// Color Dialog
-DlgColorTitle : "בחירת צבע",
-DlgColorBtnClear : "×יפוס",
-DlgColorHighlight : "נוכחי",
-DlgColorSelected : "נבחר",
-
-// Smiley Dialog
-DlgSmileyTitle : "הוספת סמיילי",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "בחירת תו מיוחד",
-
-// Table Dialog
-DlgTableTitle : "תכונות טבלה",
-DlgTableRows : "שורות",
-DlgTableColumns : "עמודות",
-DlgTableBorder : "גודל מסגרת",
-DlgTableAlign : "יישור",
-DlgTableAlignNotSet : "<×œ× × ×§×‘×¢>",
-DlgTableAlignLeft : "שמ×ל",
-DlgTableAlignCenter : "מרכז",
-DlgTableAlignRight : "ימין",
-DlgTableWidth : "רוחב",
-DlgTableWidthPx : "פיקסלי×",
-DlgTableWidthPc : "×חוז",
-DlgTableHeight : "גובה",
-DlgTableCellSpace : "מרווח ת×",
-DlgTableCellPad : "ריפוד ת×",
-DlgTableCaption : "כיתוב",
-DlgTableSummary : "סיכו×",
-DlgTableHeaders : "כותרות",
-DlgTableHeadersNone : "×ין",
-DlgTableHeadersColumn : "עמודה ר×שונה",
-DlgTableHeadersRow : "שורה ר×שונה",
-DlgTableHeadersBoth : "שניה×",
-
-// Table Cell Dialog
-DlgCellTitle : "תכונות ת×",
-DlgCellWidth : "רוחב",
-DlgCellWidthPx : "פיקסלי×",
-DlgCellWidthPc : "×חוז",
-DlgCellHeight : "גובה",
-DlgCellWordWrap : "גלילת שורות",
-DlgCellWordWrapNotSet : "<×œ× × ×§×‘×¢>",
-DlgCellWordWrapYes : "כן",
-DlgCellWordWrapNo : "ל×",
-DlgCellHorAlign : "יישור ×ופקי",
-DlgCellHorAlignNotSet : "<×œ× × ×§×‘×¢>",
-DlgCellHorAlignLeft : "שמ×ל",
-DlgCellHorAlignCenter : "מרכז",
-DlgCellHorAlignRight: "ימין",
-DlgCellVerAlign : "יישור ×× ×›×™",
-DlgCellVerAlignNotSet : "<×œ× × ×§×‘×¢>",
-DlgCellVerAlignTop : "למעלה",
-DlgCellVerAlignMiddle : "ל×מצע",
-DlgCellVerAlignBottom : "לתחתית",
-DlgCellVerAlignBaseline : "קו תחתית",
-DlgCellType : "סוג ת×",
-DlgCellTypeData : "סוג",
-DlgCellTypeHeader : "כותרת",
-DlgCellRowSpan : "טווח שורות",
-DlgCellCollSpan : "טווח עמודות",
-DlgCellBackColor : "צבע רקע",
-DlgCellBorderColor : "צבע מסגרת",
-DlgCellBtnSelect : "בחירה...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "חפש והחלף",
-
-// Find Dialog
-DlgFindTitle : "חיפוש",
-DlgFindFindBtn : "חיפוש",
-DlgFindNotFoundMsg : "הטקסט המבוקש ×œ× × ×ž×¦×.",
-
-// Replace Dialog
-DlgReplaceTitle : "החלפה",
-DlgReplaceFindLbl : "חיפוש מחרוזת:",
-DlgReplaceReplaceLbl : "החלפה במחרוזת:",
-DlgReplaceCaseChk : "הת×מת סוג ×ותיות (Case)",
-DlgReplaceReplaceBtn : "החלפה",
-DlgReplaceReplAllBtn : "החלפה בכל העמוד",
-DlgReplaceWordChk : "הת×מה למילה המל××”",
-
-// Paste Operations / Dialog
-PasteErrorCut : "הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות גזירה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl+X).",
-PasteErrorCopy : "הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות העתקה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl+C).",
-
-PasteAsText : "הדבקה כטקסט פשוט",
-PasteFromWord : "הדבקה מ-וורד",
-
-DlgPasteMsg2 : "×× × ×”×“×‘×§ בתוך הקופסה ב×מצעות (<STRONG>Ctrl+V</STRONG>) ולחץ על <STRONG>×ישור</STRONG>.",
-DlgPasteSec : "עקב הגדרות ×בטחה בדפדפן, ×œ× × ×™×ª×Ÿ לגשת ×ל לוח ×”×’×–×™×¨×™× (clipboard) בצורה ישירה.×× × ×‘×¦×¢ הדבק שוב בחלון ×–×”.",
-DlgPasteIgnoreFont : "×”×ª×¢×œ× ×ž×”×’×“×¨×•×ª סוג פונט",
-DlgPasteRemoveStyles : "הסר הגדרות סגנון",
-
-// Color Picker
-ColorAutomatic : "×וטומטי",
-ColorMoreColors : "×¦×‘×¢×™× × ×•×¡×¤×™×...",
-
-// Document Properties
-DocProps : "מ×פיני מסמך",
-
-// Anchor Dialog
-DlgAnchorTitle : "מ×פיני נקודת עיגון",
-DlgAnchorName : "×©× ×œ× ×§×•×“×ª עיגון",
-DlgAnchorErrorName : "×× × ×”×–×Ÿ ×©× ×œ× ×§×•×“×ª עיגון",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "×œ× × ×ž×¦× ×‘×ž×™×œ×•×Ÿ",
-DlgSpellChangeTo : "שנה ל",
-DlgSpellBtnIgnore : "התעל×",
-DlgSpellBtnIgnoreAll : "×”×ª×¢×œ× ×ž×”×›×œ",
-DlgSpellBtnReplace : "החלף",
-DlgSpellBtnReplaceAll : "החלף הכל",
-DlgSpellBtnUndo : "החזר",
-DlgSpellNoSuggestions : "- ×ין הצעות -",
-DlgSpellProgress : "בדיקות ×יות בתהליך ....",
-DlgSpellNoMispell : "בדיקות ×יות הסתיימה: ×œ× × ×ž×¦×ו שגיעות כתיב",
-DlgSpellNoChanges : "בדיקות ×יות הסתיימה: ×œ× ×©×•× ×ª×” ××£ מילה",
-DlgSpellOneChange : "בדיקות ×יות הסתיימה: שונתה מילה ×חת",
-DlgSpellManyChanges : "בדיקות ×יות הסתיימה: %1 ×ž×™×œ×™× ×©×•× ×•",
-
-IeSpellDownload : "בודק ×”×יות ×œ× ×ž×•×ª×§×Ÿ, ×”×× ×תה מעוניין להוריד?",
-
-// Button Dialog
-DlgButtonText : "טקסט (ערך)",
-DlgButtonType : "סוג",
-DlgButtonTypeBtn : "כפתור",
-DlgButtonTypeSbm : "שלח",
-DlgButtonTypeRst : "×פס",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "ש×",
-DlgCheckboxValue : "ערך",
-DlgCheckboxSelected : "בחור",
-
-// Form Dialog
-DlgFormName : "ש×",
-DlgFormAction : "שלח ×ל",
-DlgFormMethod : "סוג שליחה",
-
-// Select Field Dialog
-DlgSelectName : "ש×",
-DlgSelectValue : "ערך",
-DlgSelectSize : "גודל",
-DlgSelectLines : "שורות",
-DlgSelectChkMulti : "×פשר בחירות מרובות",
-DlgSelectOpAvail : "×פשרויות זמינות",
-DlgSelectOpText : "טקסט",
-DlgSelectOpValue : "ערך",
-DlgSelectBtnAdd : "הוסף",
-DlgSelectBtnModify : "שנה",
-DlgSelectBtnUp : "למעלה",
-DlgSelectBtnDown : "למטה",
-DlgSelectBtnSetValue : "קבע כברירת מחדל",
-DlgSelectBtnDelete : "מחק",
-
-// Textarea Dialog
-DlgTextareaName : "ש×",
-DlgTextareaCols : "עמודות",
-DlgTextareaRows : "שורות",
-
-// Text Field Dialog
-DlgTextName : "ש×",
-DlgTextValue : "ערך",
-DlgTextCharWidth : "רוחב ב×ותיות",
-DlgTextMaxChars : "מקסימות ×ותיות",
-DlgTextType : "סוג",
-DlgTextTypeText : "טקסט",
-DlgTextTypePass : "סיסמה",
-
-// Hidden Field Dialog
-DlgHiddenName : "ש×",
-DlgHiddenValue : "ערך",
-
-// Bulleted List Dialog
-BulletedListProp : "מ×פייני רשימה",
-NumberedListProp : "מ×פייני רשימה ממוספרת",
-DlgLstStart : "התחלה",
-DlgLstType : "סוג",
-DlgLstTypeCircle : "עיגול",
-DlgLstTypeDisc : "דיסק",
-DlgLstTypeSquare : "מרובע",
-DlgLstTypeNumbers : "×ž×¡×¤×¨×™× (1, 2, 3)",
-DlgLstTypeLCase : "×ותיות קטנות (a, b, c)",
-DlgLstTypeUCase : "×ותיות גדולות (A, B, C)",
-DlgLstTypeSRoman : "ספרות רומ×יות קטנות (i, ii, iii)",
-DlgLstTypeLRoman : "ספרות רומ×יות גדולות (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "כללי",
-DlgDocBackTab : "רקע",
-DlgDocColorsTab : "×¦×‘×¢×™× ×•×’×‘×•×œ×•×ª",
-DlgDocMetaTab : "נתוני META",
-
-DlgDocPageTitle : "כותרת דף",
-DlgDocLangDir : "כיוון שפה",
-DlgDocLangDirLTR : "שמ×ל לימין (LTR)",
-DlgDocLangDirRTL : "ימין לשמ×ל (RTL)",
-DlgDocLangCode : "קוד שפה",
-DlgDocCharSet : "קידוד ×ותיות",
-DlgDocCharSetCE : "מרכז ×ירופה",
-DlgDocCharSetCT : "סיני מסורתי (Big5)",
-DlgDocCharSetCR : "קירילי",
-DlgDocCharSetGR : "יוונית",
-DlgDocCharSetJP : "יפנית",
-DlgDocCharSetKR : "קור×נית",
-DlgDocCharSetTR : "טורקית",
-DlgDocCharSetUN : "יוני קוד (UTF-8)",
-DlgDocCharSetWE : "מערב ×ירופה",
-DlgDocCharSetOther : "קידוד ×ותיות ×חר",
-
-DlgDocDocType : "הגדרות סוג מסמך",
-DlgDocDocTypeOther : "הגדרות סוג מסמך ×חרות",
-DlgDocIncXHTML : "כלול הגדרות XHTML",
-DlgDocBgColor : "צבע רקע",
-DlgDocBgImage : "URL לתמונת רקע",
-DlgDocBgNoScroll : "רגע ×œ×œ× ×’×œ×™×œ×”",
-DlgDocCText : "טקסט",
-DlgDocCLink : "קישור",
-DlgDocCVisited : "קישור שבוקר",
-DlgDocCActive : " קישור פעיל",
-DlgDocMargins : "גבולות דף",
-DlgDocMaTop : "למעלה",
-DlgDocMaLeft : "שמ×לה",
-DlgDocMaRight : "ימינה",
-DlgDocMaBottom : "למטה",
-DlgDocMeIndex : "מפתח ×¢× ×™×™× ×™× ×©×œ המסמך )מופרד בפסיק(",
-DlgDocMeDescr : "ת×ור מסמך",
-DlgDocMeAuthor : "מחבר",
-DlgDocMeCopy : "זכויות יוצרי×",
-DlgDocPreview : "תצוגה מקדימה",
-
-// Templates Dialog
-Templates : "תבניות",
-DlgTemplatesTitle : "תביות תוכן",
-DlgTemplatesSelMsg : "×× × ×‘×—×¨ תבנית לפתיחה בעורך <BR>התוכן המקורי ימחק:",
-DlgTemplatesLoading : "מעלה רשימת תבניות ×× × ×”×ž×ª×Ÿ",
-DlgTemplatesNoTpl : "(×œ× ×”×•×’×“×¨×• תבניות)",
-DlgTemplatesReplace : "החלפת תוכן ממשי",
-
-// About Dialog
-DlgAboutAboutTab : "×ודות",
-DlgAboutBrowserInfoTab : "גירסת דפדפן",
-DlgAboutLicenseTab : "רשיון",
-DlgAboutVersion : "גירס×",
-DlgAboutInfo : "מידע נוסף ניתן ×œ×ž×¦×•× ×›×ן:",
-
-// Div Dialog
-DlgDivGeneralTab : "כללי",
-DlgDivAdvancedTab : "מתקד×",
-DlgDivStyle : "סגנון",
-DlgDivInlineStyle : "סגנון בתוך השורה"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hi.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hi.js
deleted file mode 100644
index e68131b1f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hi.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Hindi language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "टूलबार सिमटायें",
-ToolbarExpand : "टूलबार का विसà¥à¤¤à¤¾à¤° करें",
-
-// Toolbar Items and Context Menu
-Save : "सेव",
-NewPage : "नया पेज",
-Preview : "पà¥à¤°à¥€à¤µà¥à¤¯à¥‚",
-Cut : "कट",
-Copy : "कॉपी",
-Paste : "पेसà¥à¤Ÿ",
-PasteText : "पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)",
-PasteWord : "पेसà¥à¤Ÿ (वरà¥à¤¡ से)",
-Print : "पà¥à¤°à¤¿à¤¨à¥à¤Ÿ",
-SelectAll : "सब सॅलॅकà¥à¤Ÿ करें",
-RemoveFormat : "फ़ॉरà¥à¤®à¥ˆà¤Ÿ हटायें",
-InsertLinkLbl : "लिंक",
-InsertLink : "लिंक इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-RemoveLink : "लिंक हटायें",
-VisitLink : "लिंक खोलें",
-Anchor : "à¤à¤‚कर इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-AnchorDelete : "à¤à¤‚कर हटायें",
-InsertImageLbl : "तसà¥à¤µà¥€à¤°",
-InsertImage : "तसà¥à¤µà¥€à¤° इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-InsertFlashLbl : "फ़à¥à¤²à¥ˆà¤¶",
-InsertFlash : "फ़à¥à¤²à¥ˆà¤¶ इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-InsertTableLbl : "टेबल",
-InsertTable : "टेबल इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-InsertLineLbl : "रेखा",
-InsertLine : "हॉरिज़ॉनà¥à¤Ÿà¤² रेखा इनà¥à¤¸à¤°à¥à¤Ÿ करें",
-InsertSpecialCharLbl: "विशेष करॅकà¥à¤Ÿà¤°",
-InsertSpecialChar : "विशेष करॅकà¥à¤Ÿà¤° इनà¥à¤¸à¤°à¥à¤Ÿ करें",
-InsertSmileyLbl : "सà¥à¤®à¤¾à¤‡à¤²à¥€",
-InsertSmiley : "सà¥à¤®à¤¾à¤‡à¤²à¥€ इनà¥à¤¸à¤°à¥à¤Ÿ करें",
-About : "FCKeditor के बारे में",
-Bold : "बोलà¥à¤¡",
-Italic : "इटैलिक",
-Underline : "रेखांकण",
-StrikeThrough : "सà¥à¤Ÿà¥à¤°à¤¾à¤‡à¤• थà¥à¤°à¥‚",
-Subscript : "अधोलेख",
-Superscript : "अभिलेख",
-LeftJustify : "बायीं तरफ",
-CenterJustify : "बीच में",
-RightJustify : "दायीं तरफ",
-BlockJustify : "बà¥à¤²à¥‰à¤• जसà¥à¤Ÿà¥€à¥žà¤¾à¤ˆ",
-DecreaseIndent : "इनà¥à¤¡à¥…नà¥à¤Ÿ कम करें",
-IncreaseIndent : "इनà¥à¤¡à¥…नà¥à¤Ÿ बà¥à¤¾à¤¯à¥‡à¤‚",
-Blockquote : "बà¥à¤²à¥‰à¤•-कोट",
-CreateDiv : "डिव (Div) कनà¥à¤Ÿà¥‡à¤¨à¤° बनायें",
-EditDiv : "डिव (Div) कनà¥à¤Ÿà¥‡à¤¨à¤° बदलें",
-DeleteDiv : "डिव कनà¥à¤Ÿà¥‡à¤¨à¤° हटायें",
-Undo : "अनà¥à¤¡à¥‚",
-Redo : "रीडू",
-NumberedListLbl : "अंकीय सूची",
-NumberedList : "अंकीय सूची इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-BulletedListLbl : "बà¥à¤²à¥…ट सूची",
-BulletedList : "बà¥à¤²à¥…ट सूची इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन",
-ShowTableBorders : "टेबल बॉरà¥à¤¡à¤°à¤¯à¥‡à¤‚ दिखायें",
-ShowDetails : "जà¥à¤¯à¤¾à¤¦à¤¾ दिखायें",
-Style : "सà¥à¤Ÿà¤¾à¤‡à¤²",
-FontFormat : "फ़ॉरà¥à¤®à¥ˆà¤Ÿ",
-Font : "फ़ॉनà¥à¤Ÿ",
-FontSize : "साइज़",
-TextColor : "टेकà¥à¤¸à¥à¤Ÿ रंग",
-BGColor : "बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡ रंग",
-Source : "सोरà¥à¤¸",
-Find : "खोजें",
-Replace : "रीपà¥à¤²à¥‡à¤¸",
-SpellCheck : "वरà¥à¤¤à¤¨à¥€ (सà¥à¤ªà¥‡à¤²à¤¿à¤‚ग) जाà¤à¤š",
-UniversalKeyboard : "यूनीवरà¥à¤¸à¤² कीबोरà¥à¤¡",
-PageBreakLbl : "पेज बà¥à¤°à¥‡à¤•",
-PageBreak : "पेज बà¥à¤°à¥‡à¤• इनà¥à¤¸à¤°à¥à¤Ÿà¥ करें",
-
-Form : "फ़ॉरà¥à¤®",
-Checkbox : "चॅक बॉकà¥à¤¸",
-RadioButton : "रेडिओ बटन",
-TextField : "टेकà¥à¤¸à¥à¤Ÿ फ़ीलà¥à¤¡",
-Textarea : "टेकà¥à¤¸à¥à¤Ÿ à¤à¤°à¤¿à¤¯à¤¾",
-HiddenField : "गà¥à¤ªà¥à¤¤ फ़ीलà¥à¤¡",
-Button : "बटन",
-SelectionField : "चà¥à¤¨à¤¾à¤µ फ़ीलà¥à¤¡",
-ImageButton : "तसà¥à¤µà¥€à¤° बटन",
-
-FitWindow : "à¤à¤¡à¤¿à¤Ÿà¤° साइज़ को चरम सीमा तक बà¥à¤¾à¤¯à¥‡à¤‚",
-ShowBlocks : "बà¥à¤²à¥‰à¤• दिखायें",
-
-// Context Menu
-EditLink : "लिंक संपादन",
-CellCM : "खाना",
-RowCM : "पंकà¥à¤¤à¤¿",
-ColumnCM : "कालम",
-InsertRowAfter : "बाद में पंकà¥à¤¤à¤¿ डालें",
-InsertRowBefore : "पहले पंकà¥à¤¤à¤¿ डालें",
-DeleteRows : "पंकà¥à¤¤à¤¿à¤¯à¤¾à¤ डिलीट करें",
-InsertColumnAfter : "बाद में कालम डालें",
-InsertColumnBefore : "पहले कालम डालें",
-DeleteColumns : "कालम डिलीट करें",
-InsertCellAfter : "बाद में सैल डालें",
-InsertCellBefore : "पहले सैल डालें",
-DeleteCells : "सैल डिलीट करें",
-MergeCells : "सैल मिलायें",
-MergeRight : "बाà¤à¤¯à¤¾ विलय",
-MergeDown : "नीचे विलय करें",
-HorizontalSplitCell : "सैल को कà¥à¤·à¥ˆà¤¤à¤¿à¤œ सà¥à¤¥à¤¿à¤¤à¤¿ में विभाजित करें",
-VerticalSplitCell : "सैल को लमà¥à¤¬à¤¾à¤•ार में विभाजित करें",
-TableDelete : "टेबल डिलीट करें",
-CellProperties : "सैल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-TableProperties : "टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-ImageProperties : "तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-FlashProperties : "फ़à¥à¤²à¥ˆà¤¶ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-
-AnchorProp : "à¤à¤‚कर पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-ButtonProp : "बटन पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-CheckboxProp : "चॅक बॉकà¥à¤¸ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-HiddenFieldProp : "गà¥à¤ªà¥à¤¤ फ़ीलà¥à¤¡ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-RadioButtonProp : "रेडिओ बटन पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-ImageButtonProp : "तसà¥à¤µà¥€à¤° बटन पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-TextFieldProp : "टेकà¥à¤¸à¥à¤Ÿ फ़ीलà¥à¤¡ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-SelectionFieldProp : "चà¥à¤¨à¤¾à¤µ फ़ीलà¥à¤¡ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-TextareaProp : "टेकà¥à¤¸à¥à¤¤ à¤à¤°à¤¿à¤¯à¤¾ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-FormProp : "फ़ॉरà¥à¤® पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-
-FontFormats : "साधारण;फ़ॉरà¥à¤®à¥ˆà¤Ÿà¥…ड;पता;शीरà¥à¤·à¤• 1;शीरà¥à¤·à¤• 2;शीरà¥à¤·à¤• 3;शीरà¥à¤·à¤• 4;शीरà¥à¤·à¤• 5;शीरà¥à¤·à¤• 6;शीरà¥à¤·à¤• (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML पà¥à¤°à¥‹à¤¸à¥…स हो रहा है। ज़रा ठहरें...",
-Done : "पूरा हà¥à¤†",
-PasteWordConfirm : "आप जो टेकà¥à¤¸à¥à¤Ÿ पेसà¥à¤Ÿ करना चाहते हैं, वह वरà¥à¤¡ से कॉपी किया हà¥à¤† लग रहा है। कà¥à¤¯à¤¾ पेसà¥à¤Ÿ करने से पहले आप इसे साफ़ करना चाहेंगे?",
-NotCompatiblePaste : "यह कमांड इनà¥à¤Ÿà¤°à¤¨à¥…ट à¤à¤•à¥à¤¸à¥à¤ªà¥à¤²à¥‹à¤°à¤°(Internet Explorer) 5.5 या उसके बाद के वरà¥à¥›à¤¨ के लिठही उपलबà¥à¤§ है। कà¥à¤¯à¤¾ आप बिना साफ़ किठपेसà¥à¤Ÿ करना चाहेंगे?",
-UnknownToolbarItem : "अनजान टूलबार आइटम \"%1\"",
-UnknownCommand : "अनजान कमानà¥à¤¡ \"%1\"",
-NotImplemented : "कमानà¥à¤¡ इमà¥à¤ªà¥à¤²à¥€à¤®à¥…नà¥à¤Ÿ नहीं किया गया है",
-UnknownToolbarSet : "टूलबार सॅट \"%1\" उपलबà¥à¤§ नहीं है",
-NoActiveX : "आपके बà¥à¤°à¤¾à¤‰à¥›à¤°à¥ की सà¥à¤°à¤•à¥à¤¶à¤¾ सेटिंगà¥à¤¸à¥ à¤à¤¡à¤¿à¤Ÿà¤° की कà¥à¤›à¥ फ़ीचरों को सीमित करॠसकती हैं। कà¥à¤°à¤¿à¤ªà¤¯à¤¾ \"Run ActiveX controls and plug-ins\" विकलà¥à¤ª को à¤à¤¨à¥‡à¤¬à¤² करें. आपको à¤à¤°à¤°à¥à¤¸à¥ और गायब फ़ीचरà¥à¤¸à¥ का अनà¥à¤­à¤µ हो सकता है।",
-BrowseServerBlocked : "रिसोरà¥à¤¸à¥‡à¥› बà¥à¤°à¤¾à¤‰à¥›à¤°à¥ नहीं खोला जा सका। कà¥à¤°à¤¿à¤ªà¤¯à¤¾ सभी पॉपà¥-अपॠबà¥à¤²à¥‰à¤•रà¥à¤¸à¥ को निषà¥à¤•à¥à¤°à¤¿à¤¯ करें।",
-DialogBlocked : "डायलग विनà¥à¤¡à¥‹ नहीं खोला जा सका। कà¥à¤°à¤¿à¤ªà¤¯à¤¾ सभी पॉपà¥-अपॠबà¥à¤²à¥‰à¤•रà¥à¤¸à¥ को निषà¥à¤•à¥à¤°à¤¿à¤¯ करें।",
-VisitLinkBlocked : "नया विनà¥à¤¡à¥‹ नहीं खोला जा सका। कà¥à¤°à¤¿à¤ªà¤¯à¤¾ सभी पॉपà¥-अपॠबà¥à¤²à¥‰à¤•रà¥à¤¸à¥ को निषà¥à¤•à¥à¤°à¤¿à¤¯ करें।",
-
-// Dialogs
-DlgBtnOK : "ठीक है",
-DlgBtnCancel : "रदà¥à¤¦ करें",
-DlgBtnClose : "बनà¥à¤¦ करें",
-DlgBtnBrowseServer : "सरà¥à¤µà¤° बà¥à¤°à¤¾à¤‰à¥› करें",
-DlgAdvancedTag : "à¤à¤¡à¥à¤µà¤¾à¤¨à¥à¤¸à¥à¤¡",
-DlgOpOther : "<अनà¥à¤¯>",
-DlgInfoTab : "सूचना",
-DlgAlertUrl : "URL इनà¥à¤¸à¤°à¥à¤Ÿ करें",
-
-// General Dialogs Labels
-DlgGenNotSet : "<सॅट नहीं>",
-DlgGenId : "Id",
-DlgGenLangDir : "भाषा लिखने की दिशा",
-DlgGenLangDirLtr : "बायें से दायें (LTR)",
-DlgGenLangDirRtl : "दायें से बायें (RTL)",
-DlgGenLangCode : "भाषा कोड",
-DlgGenAccessKey : "à¤à¤•à¥à¤¸à¥…स की",
-DlgGenName : "नाम",
-DlgGenTabIndex : "टैब इनà¥à¤¡à¥…कà¥à¤¸",
-DlgGenLongDescr : "अधिक विवरण के लिठURL",
-DlgGenClass : "सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸",
-DlgGenTitle : "परामरà¥à¤¶ शीरà¥à¤¶à¤•",
-DlgGenContType : "परामरà¥à¤¶ कनà¥à¤Ÿà¥…नà¥à¤Ÿ पà¥à¤°à¤•ार",
-DlgGenLinkCharset : "लिंक रिसोरà¥à¤¸ करॅकà¥à¤Ÿà¤° सॅट",
-DlgGenStyle : "सà¥à¤Ÿà¤¾à¤‡à¤²",
-
-// Image Dialog
-DlgImgTitle : "तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-DlgImgInfoTab : "तसà¥à¤µà¥€à¤° की जानकारी",
-DlgImgBtnUpload : "इसे सरà¥à¤µà¤° को भेजें",
-DlgImgURL : "URL",
-DlgImgUpload : "अपलोड",
-DlgImgAlt : "वैकलà¥à¤ªà¤¿à¤• टेकà¥à¤¸à¥à¤Ÿ",
-DlgImgWidth : "चौड़ाई",
-DlgImgHeight : "ऊà¤à¤šà¤¾à¤ˆ",
-DlgImgLockRatio : "लॉक अनà¥à¤ªà¤¾à¤¤",
-DlgBtnResetSize : "रीसॅट साइज़",
-DlgImgBorder : "बॉरà¥à¤¡à¤°",
-DlgImgHSpace : "हॉरिज़ॉनà¥à¤Ÿà¤² सà¥à¤ªà¥‡à¤¸",
-DlgImgVSpace : "वरà¥à¤Ÿà¤¿à¤•ल सà¥à¤ªà¥‡à¤¸",
-DlgImgAlign : "à¤à¤²à¤¾à¤‡à¤¨",
-DlgImgAlignLeft : "दायें",
-DlgImgAlignAbsBottom: "Abs नीचे",
-DlgImgAlignAbsMiddle: "Abs ऊपर",
-DlgImgAlignBaseline : "मूल रेखा",
-DlgImgAlignBottom : "नीचे",
-DlgImgAlignMiddle : "मधà¥à¤¯",
-DlgImgAlignRight : "दायें",
-DlgImgAlignTextTop : "टेकà¥à¤¸à¥à¤Ÿ ऊपर",
-DlgImgAlignTop : "ऊपर",
-DlgImgPreview : "पà¥à¤°à¥€à¤µà¥à¤¯à¥‚",
-DlgImgAlertUrl : "तसà¥à¤µà¥€à¤° का URL टाइप करें ",
-DlgImgLinkTab : "लिंक",
-
-// Flash Dialog
-DlgFlashTitle : "फ़à¥à¤²à¥ˆà¤¶ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-DlgFlashChkPlay : "ऑटो पà¥à¤²à¥‡",
-DlgFlashChkLoop : "लूप",
-DlgFlashChkMenu : "फ़à¥à¤²à¥ˆà¤¶ मॅनà¥à¤¯à¥‚ का पà¥à¤°à¤¯à¥‹à¤— करें",
-DlgFlashScale : "सà¥à¤•ेल",
-DlgFlashScaleAll : "सभी दिखायें",
-DlgFlashScaleNoBorder : "कोई बॉरà¥à¤¡à¤° नहीं",
-DlgFlashScaleFit : "बिलà¥à¤•à¥à¤² फ़िट",
-
-// Link Dialog
-DlgLnkWindowTitle : "लिंक",
-DlgLnkInfoTab : "लिंक ",
-DlgLnkTargetTab : "टारà¥à¤—ेट",
-
-DlgLnkType : "लिंक पà¥à¤°à¤•ार",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "इस पेज का à¤à¤‚कर",
-DlgLnkTypeEMail : "ई-मेल",
-DlgLnkProto : "पà¥à¤°à¥‹à¤Ÿà¥‹à¤•ॉल",
-DlgLnkProtoOther : "<अनà¥à¤¯>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "à¤à¤‚कर चà¥à¤¨à¥‡à¤‚",
-DlgLnkAnchorByName : "à¤à¤‚कर नाम से",
-DlgLnkAnchorById : "à¤à¤²à¥€à¤®à¥…नà¥à¤Ÿ Id से",
-DlgLnkNoAnchors : "(डॉकà¥à¤¯à¥‚मॅनà¥à¤Ÿ में à¤à¤‚करà¥à¤¸ की संखà¥à¤¯à¤¾)",
-DlgLnkEMail : "ई-मेल पता",
-DlgLnkEMailSubject : "संदेश विषय",
-DlgLnkEMailBody : "संदेश",
-DlgLnkUpload : "अपलोड",
-DlgLnkBtnUpload : "इसे सरà¥à¤µà¤° को भेजें",
-
-DlgLnkTarget : "टारà¥à¤—ेट",
-DlgLnkTargetFrame : "<फ़à¥à¤°à¥‡à¤®>",
-DlgLnkTargetPopup : "<पॉप-अप विनà¥à¤¡à¥‹>",
-DlgLnkTargetBlank : "नया विनà¥à¤¡à¥‹ (_blank)",
-DlgLnkTargetParent : "मूल विनà¥à¤¡à¥‹ (_parent)",
-DlgLnkTargetSelf : "इसी विनà¥à¤¡à¥‹ (_self)",
-DlgLnkTargetTop : "शीरà¥à¤· विनà¥à¤¡à¥‹ (_top)",
-DlgLnkTargetFrameName : "टारà¥à¤—ेट फ़à¥à¤°à¥‡à¤® का नाम",
-DlgLnkPopWinName : "पॉप-अप विनà¥à¤¡à¥‹ का नाम",
-DlgLnkPopWinFeat : "पॉप-अप विनà¥à¤¡à¥‹ फ़ीचरà¥à¤¸",
-DlgLnkPopResize : "साइज़ बदला जा सकता है",
-DlgLnkPopLocation : "लोकेशन बार",
-DlgLnkPopMenu : "मॅनà¥à¤¯à¥‚ बार",
-DlgLnkPopScroll : "सà¥à¤•à¥à¤°à¥‰à¤² बार",
-DlgLnkPopStatus : "सà¥à¤Ÿà¥‡à¤Ÿà¤¸ बार",
-DlgLnkPopToolbar : "टूल बार",
-DlgLnkPopFullScrn : "फ़à¥à¤² सà¥à¤•à¥à¤°à¥€à¤¨ (IE)",
-DlgLnkPopDependent : "डिपेनà¥à¤¡à¥…नà¥à¤Ÿ (Netscape)",
-DlgLnkPopWidth : "चौड़ाई",
-DlgLnkPopHeight : "ऊà¤à¤šà¤¾à¤ˆ",
-DlgLnkPopLeft : "बायीं तरफ",
-DlgLnkPopTop : "दायीं तरफ",
-
-DlnLnkMsgNoUrl : "लिंक URL टाइप करें",
-DlnLnkMsgNoEMail : "ई-मेल पता टाइप करें",
-DlnLnkMsgNoAnchor : "à¤à¤‚कर चà¥à¤¨à¥‡à¤‚",
-DlnLnkMsgInvPopName : "पॉप-अप का नाम अलà¥à¤«à¤¾à¤¬à¥‡à¤Ÿ से शà¥à¤°à¥‚ होना चाहिये और उसमें सà¥à¤ªà¥‡à¤¸ नहीं होने चाहिà¤",
-
-// Color Dialog
-DlgColorTitle : "रंग चà¥à¤¨à¥‡à¤‚",
-DlgColorBtnClear : "साफ़ करें",
-DlgColorHighlight : "हाइलाइट",
-DlgColorSelected : "सॅलॅकà¥à¤Ÿà¥…ड",
-
-// Smiley Dialog
-DlgSmileyTitle : "सà¥à¤®à¤¾à¤‡à¤²à¥€ इनà¥à¤¸à¤°à¥à¤Ÿ करें",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "विशेष करॅकà¥à¤Ÿà¤° चà¥à¤¨à¥‡à¤‚",
-
-// Table Dialog
-DlgTableTitle : "टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-DlgTableRows : "पंकà¥à¤¤à¤¿à¤¯à¤¾à¤",
-DlgTableColumns : "कालम",
-DlgTableBorder : "बॉरà¥à¤¡à¤° साइज़",
-DlgTableAlign : "à¤à¤²à¤¾à¤‡à¤¨à¥à¤®à¥…नà¥à¤Ÿ",
-DlgTableAlignNotSet : "<सॅट नहीं>",
-DlgTableAlignLeft : "दायें",
-DlgTableAlignCenter : "बीच में",
-DlgTableAlignRight : "बायें",
-DlgTableWidth : "चौड़ाई",
-DlgTableWidthPx : "पिकà¥à¤¸à¥ˆà¤²",
-DlgTableWidthPc : "पà¥à¤°à¤¤à¤¿à¤¶à¤¤",
-DlgTableHeight : "ऊà¤à¤šà¤¾à¤ˆ",
-DlgTableCellSpace : "सैल अंतर",
-DlgTableCellPad : "सैल पैडिंग",
-DlgTableCaption : "शीरà¥à¤·à¤•",
-DlgTableSummary : "सारांश",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "सैल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-DlgCellWidth : "चौड़ाई",
-DlgCellWidthPx : "पिकà¥à¤¸à¥ˆà¤²",
-DlgCellWidthPc : "पà¥à¤°à¤¤à¤¿à¤¶à¤¤",
-DlgCellHeight : "ऊà¤à¤šà¤¾à¤ˆ",
-DlgCellWordWrap : "वरà¥à¤¡ रैप",
-DlgCellWordWrapNotSet : "<सॅट नहीं>",
-DlgCellWordWrapYes : "हाà¤",
-DlgCellWordWrapNo : "नहीं",
-DlgCellHorAlign : "हॉरिज़ॉनà¥à¤Ÿà¤² à¤à¤²à¤¾à¤‡à¤¨à¥à¤®à¥…नà¥à¤Ÿ",
-DlgCellHorAlignNotSet : "<सॅट नहीं>",
-DlgCellHorAlignLeft : "दायें",
-DlgCellHorAlignCenter : "बीच में",
-DlgCellHorAlignRight: "बायें",
-DlgCellVerAlign : "वरà¥à¤Ÿà¤¿à¤•ल à¤à¤²à¤¾à¤‡à¤¨à¥à¤®à¥…नà¥à¤Ÿ",
-DlgCellVerAlignNotSet : "<सॅट नहीं>",
-DlgCellVerAlignTop : "ऊपर",
-DlgCellVerAlignMiddle : "मधà¥à¤¯",
-DlgCellVerAlignBottom : "नीचे",
-DlgCellVerAlignBaseline : "मूलरेखा",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "पंकà¥à¤¤à¤¿ सà¥à¤ªà¥ˆà¤¨",
-DlgCellCollSpan : "कालम सà¥à¤ªà¥ˆà¤¨",
-DlgCellBackColor : "बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡ रंग",
-DlgCellBorderColor : "बॉरà¥à¤¡à¤° का रंग",
-DlgCellBtnSelect : "चà¥à¤¨à¥‡à¤‚...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "खोजें और बदलें",
-
-// Find Dialog
-DlgFindTitle : "खोजें",
-DlgFindFindBtn : "खोजें",
-DlgFindNotFoundMsg : "आपके दà¥à¤µà¤¾à¤°à¤¾ दिया गया टेकà¥à¤¸à¥à¤Ÿ नहीं मिला",
-
-// Replace Dialog
-DlgReplaceTitle : "रिपà¥à¤²à¥‡à¤¸",
-DlgReplaceFindLbl : "यह खोजें:",
-DlgReplaceReplaceLbl : "इससे रिपà¥à¤²à¥‡à¤¸ करें:",
-DlgReplaceCaseChk : "केस मिलायें",
-DlgReplaceReplaceBtn : "रिपà¥à¤²à¥‡à¤¸",
-DlgReplaceReplAllBtn : "सभी रिपà¥à¤²à¥‡à¤¸ करें",
-DlgReplaceWordChk : "पूरा शबà¥à¤¦ मिलायें",
-
-// Paste Operations / Dialog
-PasteErrorCut : "आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कट करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl+X) का पà¥à¤°à¤¯à¥‹à¤— करें।",
-PasteErrorCopy : "आपके बà¥à¤°à¤¾à¤†à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कॉपी करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl+C) का पà¥à¤°à¤¯à¥‹à¤— करें।",
-
-PasteAsText : "पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)",
-PasteFromWord : "पेसà¥à¤Ÿ (वरà¥à¤¡ से)",
-
-DlgPasteMsg2 : "Ctrl+V का पà¥à¤°à¤¯à¥‹à¤— करके पेसà¥à¤Ÿ करें और ठीक है करें.",
-DlgPasteSec : "आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°Kश सैटिंग के कारण, à¤à¤¡à¤¿à¤Ÿà¤° आपके कà¥à¤²à¤¿à¤ªà¤¬à¥‹à¤°à¥à¤¡ डेटा को नहीं पा सकता है. आपको उसे इस विनà¥à¤¡à¥‹ में दोबारा पेसà¥à¤Ÿ करना होगा.",
-DlgPasteIgnoreFont : "फ़ॉनà¥à¤Ÿ परिभाषा निकालें",
-DlgPasteRemoveStyles : "सà¥à¤Ÿà¤¾à¤‡à¤² परिभाषा निकालें",
-
-// Color Picker
-ColorAutomatic : "सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤",
-ColorMoreColors : "और रंग...",
-
-// Document Properties
-DocProps : "डॉकà¥à¤¯à¥‚मॅनà¥à¤Ÿ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-
-// Anchor Dialog
-DlgAnchorTitle : "à¤à¤‚कर पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-DlgAnchorName : "à¤à¤‚कर का नाम",
-DlgAnchorErrorName : "à¤à¤‚कर का नाम टाइप करें",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "शबà¥à¤¦à¤•ोश में नहीं",
-DlgSpellChangeTo : "इसमें बदलें",
-DlgSpellBtnIgnore : "इगà¥à¤¨à¥‹à¤°",
-DlgSpellBtnIgnoreAll : "सभी इगà¥à¤¨à¥‹à¤° करें",
-DlgSpellBtnReplace : "रिपà¥à¤²à¥‡à¤¸",
-DlgSpellBtnReplaceAll : "सभी रिपà¥à¤²à¥‡à¤¸ करें",
-DlgSpellBtnUndo : "अनà¥à¤¡à¥‚",
-DlgSpellNoSuggestions : "- कोई सà¥à¤à¤¾à¤µ नहीं -",
-DlgSpellProgress : "वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š (सà¥à¤ªà¥…ल-चॅक) जारी है...",
-DlgSpellNoMispell : "वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š : कोई गलत वरà¥à¤¤à¤¨à¥€ (सà¥à¤ªà¥…लिंग) नहीं पाई गई",
-DlgSpellNoChanges : "वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š :कोई शबà¥à¤¦ नहीं बदला गया",
-DlgSpellOneChange : "वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š : à¤à¤• शबà¥à¤¦ बदला गया",
-DlgSpellManyChanges : "वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š : %1 शबà¥à¤¦ बदले गये",
-
-IeSpellDownload : "सà¥à¤ªà¥…ल-चॅकर इनà¥à¤¸à¥à¤Ÿà¤¾à¤² नहीं किया गया है। कà¥à¤¯à¤¾ आप इसे डा‌उनलोड करना चाहेंगे?",
-
-// Button Dialog
-DlgButtonText : "टेकà¥à¤¸à¥à¤Ÿ (वैलà¥à¤¯à¥‚)",
-DlgButtonType : "पà¥à¤°à¤•ार",
-DlgButtonTypeBtn : "बटन",
-DlgButtonTypeSbm : "सबà¥à¤®à¤¿à¤Ÿ",
-DlgButtonTypeRst : "रिसेट",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "नाम",
-DlgCheckboxValue : "वैलà¥à¤¯à¥‚",
-DlgCheckboxSelected : "सॅलॅकà¥à¤Ÿà¥…ड",
-
-// Form Dialog
-DlgFormName : "नाम",
-DlgFormAction : "कà¥à¤°à¤¿à¤¯à¤¾",
-DlgFormMethod : "तरीका",
-
-// Select Field Dialog
-DlgSelectName : "नाम",
-DlgSelectValue : "वैलà¥à¤¯à¥‚",
-DlgSelectSize : "साइज़",
-DlgSelectLines : "पंकà¥à¤¤à¤¿à¤¯à¤¾à¤",
-DlgSelectChkMulti : "à¤à¤• से जà¥à¤¯à¤¾à¤¦à¤¾ विकलà¥à¤ª चà¥à¤¨à¤¨à¥‡ दें",
-DlgSelectOpAvail : "उपलबà¥à¤§ विकलà¥à¤ª",
-DlgSelectOpText : "टेकà¥à¤¸à¥à¤Ÿ",
-DlgSelectOpValue : "वैलà¥à¤¯à¥‚",
-DlgSelectBtnAdd : "जोड़ें",
-DlgSelectBtnModify : "बदलें",
-DlgSelectBtnUp : "ऊपर",
-DlgSelectBtnDown : "नीचे",
-DlgSelectBtnSetValue : "चà¥à¤¨à¥€ गई वैलà¥à¤¯à¥‚ सॅट करें",
-DlgSelectBtnDelete : "डिलीट",
-
-// Textarea Dialog
-DlgTextareaName : "नाम",
-DlgTextareaCols : "कालम",
-DlgTextareaRows : "पंकà¥à¤¤à¤¿à¤¯à¤¾à¤‚",
-
-// Text Field Dialog
-DlgTextName : "नाम",
-DlgTextValue : "वैलà¥à¤¯à¥‚",
-DlgTextCharWidth : "करॅकà¥à¤Ÿà¤° की चौà¥à¤¾à¤ˆ",
-DlgTextMaxChars : "अधिकतम करॅकà¥à¤Ÿà¤°",
-DlgTextType : "टाइप",
-DlgTextTypeText : "टेकà¥à¤¸à¥à¤Ÿ",
-DlgTextTypePass : "पासà¥à¤µà¤°à¥à¤¡",
-
-// Hidden Field Dialog
-DlgHiddenName : "नाम",
-DlgHiddenValue : "वैलà¥à¤¯à¥‚",
-
-// Bulleted List Dialog
-BulletedListProp : "बà¥à¤²à¥…ट सूची पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-NumberedListProp : "अंकीय सूची पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›",
-DlgLstStart : "पà¥à¤°à¤¾à¤°à¤®à¥à¤­",
-DlgLstType : "पà¥à¤°à¤•ार",
-DlgLstTypeCircle : "गोल",
-DlgLstTypeDisc : "डिसà¥à¤•",
-DlgLstTypeSquare : "चौकॊण",
-DlgLstTypeNumbers : "अंक (1, 2, 3)",
-DlgLstTypeLCase : "छोटे अकà¥à¤·à¤° (a, b, c)",
-DlgLstTypeUCase : "बड़े अकà¥à¤·à¤° (A, B, C)",
-DlgLstTypeSRoman : "छोटे रोमन अंक (i, ii, iii)",
-DlgLstTypeLRoman : "बड़े रोमन अंक (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "आम",
-DlgDocBackTab : "बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡",
-DlgDocColorsTab : "रंग और मारà¥à¤œà¤¿à¤¨",
-DlgDocMetaTab : "मॅटाडेटा",
-
-DlgDocPageTitle : "पेज शीरà¥à¤·à¤•",
-DlgDocLangDir : "भाषा लिखने की दिशा",
-DlgDocLangDirLTR : "बायें से दायें (LTR)",
-DlgDocLangDirRTL : "दायें से बायें (RTL)",
-DlgDocLangCode : "भाषा कोड",
-DlgDocCharSet : "करेकà¥à¤Ÿà¤° सॅट à¤à¤¨à¥à¤•ोडिंग",
-DlgDocCharSetCE : "मधà¥à¤¯ यूरोपीय (Central European)",
-DlgDocCharSetCT : "चीनी (Chinese Traditional Big5)",
-DlgDocCharSetCR : "सिरीलिक (Cyrillic)",
-DlgDocCharSetGR : "यवन (Greek)",
-DlgDocCharSetJP : "जापानी (Japanese)",
-DlgDocCharSetKR : "कोरीयन (Korean)",
-DlgDocCharSetTR : "तà¥à¤°à¥à¤•ी (Turkish)",
-DlgDocCharSetUN : "यूनीकोड (UTF-8)",
-DlgDocCharSetWE : "पशà¥à¤šà¤¿à¤® यूरोपीय (Western European)",
-DlgDocCharSetOther : "अनà¥à¤¯ करेकà¥à¤Ÿà¤° सॅट à¤à¤¨à¥à¤•ोडिंग",
-
-DlgDocDocType : "डॉकà¥à¤¯à¥‚मॅनà¥à¤Ÿ पà¥à¤°à¤•ार शीरà¥à¤·à¤•",
-DlgDocDocTypeOther : "अनà¥à¤¯ डॉकà¥à¤¯à¥‚मॅनà¥à¤Ÿ पà¥à¤°à¤•ार शीरà¥à¤·à¤•",
-DlgDocIncXHTML : "XHTML सूचना समà¥à¤®à¤¿à¤²à¤¿à¤¤ करें",
-DlgDocBgColor : "बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡ रंग",
-DlgDocBgImage : "बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡ तसà¥à¤µà¥€à¤° URL",
-DlgDocBgNoScroll : "सà¥à¤•à¥à¤°à¥‰à¤² न करने वाला बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡",
-DlgDocCText : "टेकà¥à¤¸à¥à¤Ÿ",
-DlgDocCLink : "लिंक",
-DlgDocCVisited : "विज़िट किया गया लिंक",
-DlgDocCActive : "सकà¥à¤°à¤¿à¤¯ लिंक",
-DlgDocMargins : "पेज मारà¥à¤œà¤¿à¤¨",
-DlgDocMaTop : "ऊपर",
-DlgDocMaLeft : "बायें",
-DlgDocMaRight : "दायें",
-DlgDocMaBottom : "नीचे",
-DlgDocMeIndex : "डॉकà¥à¤¯à¥à¤®à¥…नà¥à¤Ÿ इनà¥à¤¡à¥‡à¤•à¥à¤¸ संकेतशबà¥à¤¦ (अलà¥à¤ªà¤µà¤¿à¤°à¤¾à¤® से अलग करें)",
-DlgDocMeDescr : "डॉकà¥à¤¯à¥‚मॅनà¥à¤Ÿ करॅकà¥à¤Ÿà¤°à¤¨",
-DlgDocMeAuthor : "लेखक",
-DlgDocMeCopy : "कॉपीराइट",
-DlgDocPreview : "पà¥à¤°à¥€à¤µà¥à¤¯à¥‚",
-
-// Templates Dialog
-Templates : "टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ",
-DlgTemplatesTitle : "कनà¥à¤Ÿà¥‡à¤¨à¥à¤Ÿ टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ",
-DlgTemplatesSelMsg : "à¤à¤¡à¤¿à¤Ÿà¤° में ओपन करने हेतॠटॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ चà¥à¤¨à¥‡à¤‚(वरà¥à¤¤à¤®à¤¾à¤¨ कनà¥à¤Ÿà¥…नà¥à¤Ÿ सेव नहीं होंगे):",
-DlgTemplatesLoading : "टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ सूची लोड की जा रही है। ज़रा ठहरें...",
-DlgTemplatesNoTpl : "(कोई टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ डिफ़ाइन नहीं किया गया है)",
-DlgTemplatesReplace : "मूल शबà¥à¤¦à¥‹à¤‚ को बदलें",
-
-// About Dialog
-DlgAboutAboutTab : "FCKEditor के बारे में",
-DlgAboutBrowserInfoTab : "बà¥à¤°à¤¾à¤‰à¥›à¤° के बारे में",
-DlgAboutLicenseTab : "लाइसैनà¥à¤¸",
-DlgAboutVersion : "वरà¥à¥›à¤¨",
-DlgAboutInfo : "अधिक जानकारी के लिये यहाठजायें:",
-
-// Div Dialog
-DlgDivGeneralTab : "सामानà¥à¤¯",
-DlgDivAdvancedTab : "à¤à¤¡à¥à¤µà¤¾à¤¨à¥à¤¸à¥à¤¡",
-DlgDivStyle : "सà¥à¤Ÿà¤¾à¤‡à¤²",
-DlgDivInlineStyle : "इनलाइन सà¥à¤Ÿà¤¾à¤‡à¤²"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hr.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hr.js
deleted file mode 100644
index 85840f146..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hr.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Croatian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Smanji trake s alatima",
-ToolbarExpand : "Proširi trake s alatima",
-
-// Toolbar Items and Context Menu
-Save : "Snimi",
-NewPage : "Nova stranica",
-Preview : "Pregledaj",
-Cut : "Izreži",
-Copy : "Kopiraj",
-Paste : "Zalijepi",
-PasteText : "Zalijepi kao Äisti tekst",
-PasteWord : "Zalijepi iz Worda",
-Print : "Ispiši",
-SelectAll : "Odaberi sve",
-RemoveFormat : "Ukloni formatiranje",
-InsertLinkLbl : "Link",
-InsertLink : "Ubaci/promijeni link",
-RemoveLink : "Ukloni link",
-VisitLink : "Otvori link",
-Anchor : "Ubaci/promijeni sidro",
-AnchorDelete : "Ukloni sidro",
-InsertImageLbl : "Slika",
-InsertImage : "Ubaci/promijeni sliku",
-InsertFlashLbl : "Flash",
-InsertFlash : "Ubaci/promijeni Flash",
-InsertTableLbl : "Tablica",
-InsertTable : "Ubaci/promijeni tablicu",
-InsertLineLbl : "Linija",
-InsertLine : "Ubaci vodoravnu liniju",
-InsertSpecialCharLbl: "Posebni karakteri",
-InsertSpecialChar : "Ubaci posebne znakove",
-InsertSmileyLbl : "Smješko",
-InsertSmiley : "Ubaci smješka",
-About : "O FCKeditoru",
-Bold : "Podebljaj",
-Italic : "Ukosi",
-Underline : "Potcrtano",
-StrikeThrough : "Precrtano",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Lijevo poravnanje",
-CenterJustify : "Središnje poravnanje",
-RightJustify : "Desno poravnanje",
-BlockJustify : "Blok poravnanje",
-DecreaseIndent : "Pomakni ulijevo",
-IncreaseIndent : "Pomakni udesno",
-Blockquote : "Blockquote",
-CreateDiv : "Napravi Div kontejner",
-EditDiv : "Uredi Div kontejner",
-DeleteDiv : "Ukloni Div kontejner",
-Undo : "Poništi",
-Redo : "Ponovi",
-NumberedListLbl : "BrojÄana lista",
-NumberedList : "Ubaci/ukloni brojÄanu listu",
-BulletedListLbl : "ObiÄna lista",
-BulletedList : "Ubaci/ukloni obiÄnu listu",
-ShowTableBorders : "Prikaži okvir tablice",
-ShowDetails : "Prikaži detalje",
-Style : "Stil",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "VeliÄina",
-TextColor : "Boja teksta",
-BGColor : "Boja pozadine",
-Source : "Kôd",
-Find : "Pronađi",
-Replace : "Zamijeni",
-SpellCheck : "Provjeri pravopis",
-UniversalKeyboard : "Univerzalna tipkovnica",
-PageBreakLbl : "Prijelom stranice",
-PageBreak : "Ubaci prijelom stranice",
-
-Form : "Form",
-Checkbox : "Checkbox",
-RadioButton : "Radio Button",
-TextField : "Text Field",
-Textarea : "Textarea",
-HiddenField : "Hidden Field",
-Button : "Button",
-SelectionField : "Selection Field",
-ImageButton : "Image Button",
-
-FitWindow : "Povećaj veliÄinu editora",
-ShowBlocks : "Prikaži blokove",
-
-// Context Menu
-EditLink : "Promijeni link",
-CellCM : "Ćelija",
-RowCM : "Red",
-ColumnCM : "Kolona",
-InsertRowAfter : "Ubaci red poslije",
-InsertRowBefore : "Ubaci red prije",
-DeleteRows : "Izbriši redove",
-InsertColumnAfter : "Ubaci kolonu poslije",
-InsertColumnBefore : "Ubaci kolonu prije",
-DeleteColumns : "Izbriši kolone",
-InsertCellAfter : "Ubaci ćeliju poslije",
-InsertCellBefore : "Ubaci ćeliju prije",
-DeleteCells : "Izbriši ćelije",
-MergeCells : "Spoji ćelije",
-MergeRight : "Spoji desno",
-MergeDown : "Spoji dolje",
-HorizontalSplitCell : "Podijeli ćeliju vodoravno",
-VerticalSplitCell : "Podijeli ćeliju okomito",
-TableDelete : "Izbriši tablicu",
-CellProperties : "Svojstva ćelije",
-TableProperties : "Svojstva tablice",
-ImageProperties : "Svojstva slike",
-FlashProperties : "Flash svojstva",
-
-AnchorProp : "Svojstva sidra",
-ButtonProp : "Image Button svojstva",
-CheckboxProp : "Checkbox svojstva",
-HiddenFieldProp : "Hidden Field svojstva",
-RadioButtonProp : "Radio Button svojstva",
-ImageButtonProp : "Image Button svojstva",
-TextFieldProp : "Text Field svojstva",
-SelectionFieldProp : "Selection svojstva",
-TextareaProp : "Textarea svojstva",
-FormProp : "Form svojstva",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "ObraÄ‘ujem XHTML. Molimo priÄekajte...",
-Done : "Završio",
-PasteWordConfirm : "Tekst koji želite zalijepiti Äini se da je kopiran iz Worda. Želite li prije oÄistiti tekst?",
-NotCompatiblePaste : "Ova naredba je dostupna samo u Internet Exploreru 5.5 ili novijem. Želite li nastaviti bez Äišćenja?",
-UnknownToolbarItem : "Nepoznati Älan trake s alatima \"%1\"",
-UnknownCommand : "Nepoznata naredba \"%1\"",
-NotImplemented : "Naredba nije implementirana",
-UnknownToolbarSet : "Traka s alatima \"%1\" ne postoji",
-NoActiveX : "VaÅ¡e postavke pretraživaÄa mogle bi ograniÄiti neke od mogućnosti editora. Morate ukljuÄiti opciju \"Run ActiveX controls and plug-ins\" u postavkama. Ukoliko to ne uÄinite, moguće su razliite greÅ¡ke tijekom rada.",
-BrowseServerBlocked : "PretraivaÄ nije moguće otvoriti. Provjerite da li je ukljuÄeno blokiranje pop-up prozora.",
-DialogBlocked : "Nije moguće otvoriti novi prozor. Provjerite da li je ukljuÄeno blokiranje pop-up prozora.",
-VisitLinkBlocked : "Nije moguće otvoriti novi prozor. Provjerite da li je ukljuÄeno blokiranje pop-up prozora.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Poništi",
-DlgBtnClose : "Zatvori",
-DlgBtnBrowseServer : "Pretraži server",
-DlgAdvancedTag : "Napredno",
-DlgOpOther : "<Drugo>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Molimo unesite URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nije postavljeno>",
-DlgGenId : "Id",
-DlgGenLangDir : "Smjer jezika",
-DlgGenLangDirLtr : "S lijeva na desno (LTR)",
-DlgGenLangDirRtl : "S desna na lijevo (RTL)",
-DlgGenLangCode : "Kôd jezika",
-DlgGenAccessKey : "Pristupna tipka",
-DlgGenName : "Naziv",
-DlgGenTabIndex : "Tab Indeks",
-DlgGenLongDescr : "DugaÄki opis URL",
-DlgGenClass : "Stylesheet klase",
-DlgGenTitle : "Advisory naslov",
-DlgGenContType : "Advisory vrsta sadržaja",
-DlgGenLinkCharset : "Kodna stranica povezanih resursa",
-DlgGenStyle : "Stil",
-
-// Image Dialog
-DlgImgTitle : "Svojstva slika",
-DlgImgInfoTab : "Info slike",
-DlgImgBtnUpload : "Pošalji na server",
-DlgImgURL : "URL",
-DlgImgUpload : "Pošalji",
-DlgImgAlt : "Alternativni tekst",
-DlgImgWidth : "Å irina",
-DlgImgHeight : "Visina",
-DlgImgLockRatio : "ZakljuÄaj odnos",
-DlgBtnResetSize : "ObriÅ¡i veliÄinu",
-DlgImgBorder : "Okvir",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Poravnaj",
-DlgImgAlignLeft : "Lijevo",
-DlgImgAlignAbsBottom: "Abs dolje",
-DlgImgAlignAbsMiddle: "Abs sredina",
-DlgImgAlignBaseline : "Bazno",
-DlgImgAlignBottom : "Dolje",
-DlgImgAlignMiddle : "Sredina",
-DlgImgAlignRight : "Desno",
-DlgImgAlignTextTop : "Vrh teksta",
-DlgImgAlignTop : "Vrh",
-DlgImgPreview : "Pregledaj",
-DlgImgAlertUrl : "Unesite URL slike",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Flash svojstva",
-DlgFlashChkPlay : "Auto Play",
-DlgFlashChkLoop : "Ponavljaj",
-DlgFlashChkMenu : "Omogući Flash izbornik",
-DlgFlashScale : "Omjer",
-DlgFlashScaleAll : "Prikaži sve",
-DlgFlashScaleNoBorder : "Bez okvira",
-DlgFlashScaleFit : "ToÄna veliÄina",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link Info",
-DlgLnkTargetTab : "Meta",
-
-DlgLnkType : "Link vrsta",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Sidro na ovoj stranici",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<drugo>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Odaberi sidro",
-DlgLnkAnchorByName : "Po nazivu sidra",
-DlgLnkAnchorById : "Po Id elementa",
-DlgLnkNoAnchors : "(Nema dostupnih sidra)",
-DlgLnkEMail : "E-Mail adresa",
-DlgLnkEMailSubject : "Naslov",
-DlgLnkEMailBody : "Sadržaj poruke",
-DlgLnkUpload : "Pošalji",
-DlgLnkBtnUpload : "Pošalji na server",
-
-DlgLnkTarget : "Meta",
-DlgLnkTargetFrame : "<okvir>",
-DlgLnkTargetPopup : "<popup prozor>",
-DlgLnkTargetBlank : "Novi prozor (_blank)",
-DlgLnkTargetParent : "Roditeljski prozor (_parent)",
-DlgLnkTargetSelf : "Isti prozor (_self)",
-DlgLnkTargetTop : "Vršni prozor (_top)",
-DlgLnkTargetFrameName : "Ime ciljnog okvira",
-DlgLnkPopWinName : "Naziv popup prozora",
-DlgLnkPopWinFeat : "Mogućnosti popup prozora",
-DlgLnkPopResize : "Promjenljive veliÄine",
-DlgLnkPopLocation : "Traka za lokaciju",
-DlgLnkPopMenu : "Izborna traka",
-DlgLnkPopScroll : "Scroll traka",
-DlgLnkPopStatus : "Statusna traka",
-DlgLnkPopToolbar : "Traka s alatima",
-DlgLnkPopFullScrn : "Cijeli ekran (IE)",
-DlgLnkPopDependent : "Ovisno (Netscape)",
-DlgLnkPopWidth : "Å irina",
-DlgLnkPopHeight : "Visina",
-DlgLnkPopLeft : "Lijeva pozicija",
-DlgLnkPopTop : "Gornja pozicija",
-
-DlnLnkMsgNoUrl : "Molimo upišite URL link",
-DlnLnkMsgNoEMail : "Molimo upišite e-mail adresu",
-DlnLnkMsgNoAnchor : "Molimo odaberite sidro",
-DlnLnkMsgInvPopName : "Ime popup prozora mora poÄeti sa slovom i ne smije sadržavati razmake",
-
-// Color Dialog
-DlgColorTitle : "Odaberite boju",
-DlgColorBtnClear : "Obriši",
-DlgColorHighlight : "Osvijetli",
-DlgColorSelected : "Odaberi",
-
-// Smiley Dialog
-DlgSmileyTitle : "Ubaci smješka",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Odaberite posebni karakter",
-
-// Table Dialog
-DlgTableTitle : "Svojstva tablice",
-DlgTableRows : "Redova",
-DlgTableColumns : "Kolona",
-DlgTableBorder : "VeliÄina okvira",
-DlgTableAlign : "Poravnanje",
-DlgTableAlignNotSet : "<nije postavljeno>",
-DlgTableAlignLeft : "Lijevo",
-DlgTableAlignCenter : "Središnje",
-DlgTableAlignRight : "Desno",
-DlgTableWidth : "Å irina",
-DlgTableWidthPx : "piksela",
-DlgTableWidthPc : "postotaka",
-DlgTableHeight : "Visina",
-DlgTableCellSpace : "Prostornost ćelija",
-DlgTableCellPad : "Razmak ćelija",
-DlgTableCaption : "Naslov",
-DlgTableSummary : "Sažetak",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Svojstva ćelije",
-DlgCellWidth : "Å irina",
-DlgCellWidthPx : "piksela",
-DlgCellWidthPc : "postotaka",
-DlgCellHeight : "Visina",
-DlgCellWordWrap : "Word Wrap",
-DlgCellWordWrapNotSet : "<nije postavljeno>",
-DlgCellWordWrapYes : "Da",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Vodoravno poravnanje",
-DlgCellHorAlignNotSet : "<nije postavljeno>",
-DlgCellHorAlignLeft : "Lijevo",
-DlgCellHorAlignCenter : "Središnje",
-DlgCellHorAlignRight: "Desno",
-DlgCellVerAlign : "Okomito poravnanje",
-DlgCellVerAlignNotSet : "<nije postavljeno>",
-DlgCellVerAlignTop : "Gornje",
-DlgCellVerAlignMiddle : "Srednišnje",
-DlgCellVerAlignBottom : "Donje",
-DlgCellVerAlignBaseline : "Bazno",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Spajanje redova",
-DlgCellCollSpan : "Spajanje kolona",
-DlgCellBackColor : "Boja pozadine",
-DlgCellBorderColor : "Boja okvira",
-DlgCellBtnSelect : "Odaberi...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Pronađi i zamijeni",
-
-// Find Dialog
-DlgFindTitle : "Pronađi",
-DlgFindFindBtn : "Pronađi",
-DlgFindNotFoundMsg : "Traženi tekst nije pronađen.",
-
-// Replace Dialog
-DlgReplaceTitle : "Zamijeni",
-DlgReplaceFindLbl : "Pronađi:",
-DlgReplaceReplaceLbl : "Zamijeni s:",
-DlgReplaceCaseChk : "Usporedi mala/velika slova",
-DlgReplaceReplaceBtn : "Zamijeni",
-DlgReplaceReplAllBtn : "Zamijeni sve",
-DlgReplaceWordChk : "Usporedi cijele rijeÄi",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).",
-PasteErrorCopy : "Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).",
-
-PasteAsText : "Zalijepi kao Äisti tekst",
-PasteFromWord : "Zalijepi iz Worda",
-
-DlgPasteMsg2 : "Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl+V</STRONG>) i kliknite <STRONG>OK</STRONG>.",
-DlgPasteSec : "Zbog sigurnosnih postavki VaÅ¡eg pretraživaÄa, editor nema direktan pristup VaÅ¡em meÄ‘uspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.",
-DlgPasteIgnoreFont : "Zanemari definiciju vrste fonta",
-DlgPasteRemoveStyles : "Ukloni definicije stilova",
-
-// Color Picker
-ColorAutomatic : "Automatski",
-ColorMoreColors : "Više boja...",
-
-// Document Properties
-DocProps : "Svojstva dokumenta",
-
-// Anchor Dialog
-DlgAnchorTitle : "Svojstva sidra",
-DlgAnchorName : "Ime sidra",
-DlgAnchorErrorName : "Molimo unesite ime sidra",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nije u rjeÄniku",
-DlgSpellChangeTo : "Promijeni u",
-DlgSpellBtnIgnore : "Zanemari",
-DlgSpellBtnIgnoreAll : "Zanemari sve",
-DlgSpellBtnReplace : "Zamijeni",
-DlgSpellBtnReplaceAll : "Zamijeni sve",
-DlgSpellBtnUndo : "Vrati",
-DlgSpellNoSuggestions : "-Nema preporuke-",
-DlgSpellProgress : "Provjera u tijeku...",
-DlgSpellNoMispell : "Provjera završena: Nema grešaka",
-DlgSpellNoChanges : "Provjera završena: Nije napravljena promjena",
-DlgSpellOneChange : "Provjera zavrÅ¡ena: Jedna rijeÄ promjenjena",
-DlgSpellManyChanges : "Provjera zavrÅ¡ena: Promijenjeno %1 rijeÄi",
-
-IeSpellDownload : "Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?",
-
-// Button Dialog
-DlgButtonText : "Tekst (vrijednost)",
-DlgButtonType : "Vrsta",
-DlgButtonTypeBtn : "Gumb",
-DlgButtonTypeSbm : "Pošalji",
-DlgButtonTypeRst : "Poništi",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Ime",
-DlgCheckboxValue : "Vrijednost",
-DlgCheckboxSelected : "Odabrano",
-
-// Form Dialog
-DlgFormName : "Ime",
-DlgFormAction : "Akcija",
-DlgFormMethod : "Metoda",
-
-// Select Field Dialog
-DlgSelectName : "Ime",
-DlgSelectValue : "Vrijednost",
-DlgSelectSize : "VeliÄina",
-DlgSelectLines : "linija",
-DlgSelectChkMulti : "Dozvoli višestruki odabir",
-DlgSelectOpAvail : "Dostupne opcije",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Vrijednost",
-DlgSelectBtnAdd : "Dodaj",
-DlgSelectBtnModify : "Promijeni",
-DlgSelectBtnUp : "Gore",
-DlgSelectBtnDown : "Dolje",
-DlgSelectBtnSetValue : "Postavi kao odabranu vrijednost",
-DlgSelectBtnDelete : "Obriši",
-
-// Textarea Dialog
-DlgTextareaName : "Ime",
-DlgTextareaCols : "Kolona",
-DlgTextareaRows : "Redova",
-
-// Text Field Dialog
-DlgTextName : "Ime",
-DlgTextValue : "Vrijednost",
-DlgTextCharWidth : "Å irina",
-DlgTextMaxChars : "Najviše karaktera",
-DlgTextType : "Vrsta",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Å ifra",
-
-// Hidden Field Dialog
-DlgHiddenName : "Ime",
-DlgHiddenValue : "Vrijednost",
-
-// Bulleted List Dialog
-BulletedListProp : "Svojstva liste",
-NumberedListProp : "Svojstva brojÄane liste",
-DlgLstStart : "PoÄetak",
-DlgLstType : "Vrsta",
-DlgLstTypeCircle : "Krug",
-DlgLstTypeDisc : "Disk",
-DlgLstTypeSquare : "Kvadrat",
-DlgLstTypeNumbers : "Brojevi (1, 2, 3)",
-DlgLstTypeLCase : "Mala slova (a, b, c)",
-DlgLstTypeUCase : "Velika slova (A, B, C)",
-DlgLstTypeSRoman : "Male rimske brojke (i, ii, iii)",
-DlgLstTypeLRoman : "Velike rimske brojke (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Općenito",
-DlgDocBackTab : "Pozadina",
-DlgDocColorsTab : "Boje i margine",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Naslov stranice",
-DlgDocLangDir : "Smjer jezika",
-DlgDocLangDirLTR : "S lijeva na desno",
-DlgDocLangDirRTL : "S desna na lijevo",
-DlgDocLangCode : "Kôd jezika",
-DlgDocCharSet : "Enkodiranje znakova",
-DlgDocCharSetCE : "Središnja Europa",
-DlgDocCharSetCT : "Tradicionalna kineska (Big5)",
-DlgDocCharSetCR : "Ćirilica",
-DlgDocCharSetGR : "GrÄka",
-DlgDocCharSetJP : "Japanska",
-DlgDocCharSetKR : "Koreanska",
-DlgDocCharSetTR : "Turska",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Zapadna Europa",
-DlgDocCharSetOther : "Ostalo enkodiranje znakova",
-
-DlgDocDocType : "Zaglavlje vrste dokumenta",
-DlgDocDocTypeOther : "Ostalo zaglavlje vrste dokumenta",
-DlgDocIncXHTML : "Ubaci XHTML deklaracije",
-DlgDocBgColor : "Boja pozadine",
-DlgDocBgImage : "URL slike pozadine",
-DlgDocBgNoScroll : "Pozadine se ne pomiÄe",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Posjećeni link",
-DlgDocCActive : "Aktivni link",
-DlgDocMargins : "Margine stranice",
-DlgDocMaTop : "Vrh",
-DlgDocMaLeft : "Lijevo",
-DlgDocMaRight : "Desno",
-DlgDocMaBottom : "Dolje",
-DlgDocMeIndex : "KljuÄne rijeÄi dokumenta (odvojene zarezom)",
-DlgDocMeDescr : "Opis dokumenta",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Autorska prava",
-DlgDocPreview : "Pregledaj",
-
-// Templates Dialog
-Templates : "Predlošci",
-DlgTemplatesTitle : "Predlošci sadržaja",
-DlgTemplatesSelMsg : "Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):",
-DlgTemplatesLoading : "UÄitavam listu predložaka. Molimo priÄekajte...",
-DlgTemplatesNoTpl : "(Nema definiranih predložaka)",
-DlgTemplatesReplace : "Zamijeni trenutne sadržaje",
-
-// About Dialog
-DlgAboutAboutTab : "O FCKEditoru",
-DlgAboutBrowserInfoTab : "Podaci o pretraživaÄu",
-DlgAboutLicenseTab : "Licenca",
-DlgAboutVersion : "inaÄica",
-DlgAboutInfo : "Za više informacija posjetite",
-
-// Div Dialog
-DlgDivGeneralTab : "Općenito",
-DlgDivAdvancedTab : "Napredno",
-DlgDivStyle : "Stil",
-DlgDivInlineStyle : "Stil u redu"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hu.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hu.js
deleted file mode 100644
index 55e707b28..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/hu.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Hungarian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Eszköztár elrejtése",
-ToolbarExpand : "Eszköztár megjelenítése",
-
-// Toolbar Items and Context Menu
-Save : "Mentés",
-NewPage : "Új oldal",
-Preview : "Előnézet",
-Cut : "Kivágás",
-Copy : "Másolás",
-Paste : "Beillesztés",
-PasteText : "Beillesztés formázás nélkül",
-PasteWord : "Beillesztés Word-ből",
-Print : "Nyomtatás",
-SelectAll : "Mindent kijelöl",
-RemoveFormat : "Formázás eltávolítása",
-InsertLinkLbl : "Hivatkozás",
-InsertLink : "Hivatkozás beillesztése/módosítása",
-RemoveLink : "Hivatkozás törlése",
-VisitLink : "Open Link", //MISSING
-Anchor : "Horgony beillesztése/szerkesztése",
-AnchorDelete : "Horgony eltávolítása",
-InsertImageLbl : "Kép",
-InsertImage : "Kép beillesztése/módosítása",
-InsertFlashLbl : "Flash",
-InsertFlash : "Flash beillesztése, módosítása",
-InsertTableLbl : "Táblázat",
-InsertTable : "Táblázat beillesztése/módosítása",
-InsertLineLbl : "Vonal",
-InsertLine : "Elválasztóvonal beillesztése",
-InsertSpecialCharLbl: "Speciális karakter",
-InsertSpecialChar : "Speciális karakter beillesztése",
-InsertSmileyLbl : "Hangulatjelek",
-InsertSmiley : "Hangulatjelek beillesztése",
-About : "FCKeditor névjegy",
-Bold : "Félkövér",
-Italic : "Dőlt",
-Underline : "Aláhúzott",
-StrikeThrough : "Ãthúzott",
-Subscript : "Alsó index",
-Superscript : "Felső index",
-LeftJustify : "Balra",
-CenterJustify : "Középre",
-RightJustify : "Jobbra",
-BlockJustify : "Sorkizárt",
-DecreaseIndent : "Behúzás csökkentése",
-IncreaseIndent : "Behúzás növelése",
-Blockquote : "Idézet blokk",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Visszavonás",
-Redo : "Ismétlés",
-NumberedListLbl : "Számozás",
-NumberedList : "Számozás beillesztése/törlése",
-BulletedListLbl : "Felsorolás",
-BulletedList : "Felsorolás beillesztése/törlése",
-ShowTableBorders : "Táblázat szegély mutatása",
-ShowDetails : "Részletek mutatása",
-Style : "Stílus",
-FontFormat : "Formátum",
-Font : "Betűtípus",
-FontSize : "Méret",
-TextColor : "Betűszín",
-BGColor : "Háttérszín",
-Source : "Forráskód",
-Find : "Keresés",
-Replace : "Csere",
-SpellCheck : "Helyesírás-ellenőrzés",
-UniversalKeyboard : "Univerzális billentyűzet",
-PageBreakLbl : "Oldaltörés",
-PageBreak : "Oldaltörés beillesztése",
-
-Form : "Űrlap",
-Checkbox : "Jelölőnégyzet",
-RadioButton : "Választógomb",
-TextField : "Szövegmező",
-Textarea : "Szövegterület",
-HiddenField : "Rejtettmező",
-Button : "Gomb",
-SelectionField : "Legördülő lista",
-ImageButton : "Képgomb",
-
-FitWindow : "Maximalizálás",
-ShowBlocks : "Blokkok megjelenítése",
-
-// Context Menu
-EditLink : "Hivatkozás módosítása",
-CellCM : "Cella",
-RowCM : "Sor",
-ColumnCM : "Oszlop",
-InsertRowAfter : "Sor beillesztése az aktuális sor mögé",
-InsertRowBefore : "Sor beillesztése az aktuális sor elé",
-DeleteRows : "Sorok törlése",
-InsertColumnAfter : "Oszlop beillesztése az aktuális oszlop mögé",
-InsertColumnBefore : "Oszlop beillesztése az aktuális oszlop elé",
-DeleteColumns : "Oszlopok törlése",
-InsertCellAfter : "Cella beillesztése az aktuális cella mögé",
-InsertCellBefore : "Cella beillesztése az aktuális cella elé",
-DeleteCells : "Cellák törlése",
-MergeCells : "Cellák egyesítése",
-MergeRight : "Cellák egyesítése jobbra",
-MergeDown : "Cellák egyesítése lefelé",
-HorizontalSplitCell : "Cellák szétválasztása vízszintesen",
-VerticalSplitCell : "Cellák szétválasztása függőlegesen",
-TableDelete : "Táblázat törlése",
-CellProperties : "Cella tulajdonságai",
-TableProperties : "Táblázat tulajdonságai",
-ImageProperties : "Kép tulajdonságai",
-FlashProperties : "Flash tulajdonságai",
-
-AnchorProp : "Horgony tulajdonságai",
-ButtonProp : "Gomb tulajdonságai",
-CheckboxProp : "Jelölőnégyzet tulajdonságai",
-HiddenFieldProp : "Rejtett mező tulajdonságai",
-RadioButtonProp : "Választógomb tulajdonságai",
-ImageButtonProp : "Képgomb tulajdonságai",
-TextFieldProp : "Szövegmező tulajdonságai",
-SelectionFieldProp : "Legördülő lista tulajdonságai",
-TextareaProp : "Szövegterület tulajdonságai",
-FormProp : "Űrlap tulajdonságai",
-
-FontFormats : "Normál;Formázott;Címsor;Fejléc 1;Fejléc 2;Fejléc 3;Fejléc 4;Fejléc 5;Fejléc 6;Bekezdés (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML feldolgozása. Kérem várjon...",
-Done : "Kész",
-PasteWordConfirm : "A beilleszteni kívánt szöveg Word-ből van másolva. El kívánja távolítani a formázást a beillesztés előtt?",
-NotCompatiblePaste : "Ez a parancs csak Internet Explorer 5.5 verziótól használható. Megpróbálja beilleszteni a szöveget az eredeti formázással?",
-UnknownToolbarItem : "Ismeretlen eszköztár elem \"%1\"",
-UnknownCommand : "Ismeretlen parancs \"%1\"",
-NotImplemented : "A parancs nem hajtható végre",
-UnknownToolbarSet : "Az eszközkészlet \"%1\" nem létezik",
-NoActiveX : "A böngésző biztonsági beállításai korlátozzák a szerkesztő lehetőségeit. Engedélyezni kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Ettől függetlenül előfordulhatnak hibaüzenetek ill. bizonyos funkciók hiányozhatnak.",
-BrowseServerBlocked : "Nem lehet megnyitni a fájlböngészőt. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
-DialogBlocked : "Nem lehet megnyitni a párbeszédablakot. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "Rendben",
-DlgBtnCancel : "Mégsem",
-DlgBtnClose : "Bezárás",
-DlgBtnBrowseServer : "Böngészés a szerveren",
-DlgAdvancedTag : "További opciók",
-DlgOpOther : "Egyéb",
-DlgInfoTab : "Alaptulajdonságok",
-DlgAlertUrl : "Illessze be a webcímet",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nincs beállítva>",
-DlgGenId : "Azonosító",
-DlgGenLangDir : "Ãrás iránya",
-DlgGenLangDirLtr : "Balról jobbra",
-DlgGenLangDirRtl : "Jobbról balra",
-DlgGenLangCode : "Nyelv kódja",
-DlgGenAccessKey : "Billentyűkombináció",
-DlgGenName : "Név",
-DlgGenTabIndex : "Tabulátor index",
-DlgGenLongDescr : "Részletes leírás webcíme",
-DlgGenClass : "Stíluskészlet",
-DlgGenTitle : "Súgócimke",
-DlgGenContType : "Súgó tartalomtípusa",
-DlgGenLinkCharset : "Hivatkozott tartalom kódlapja",
-DlgGenStyle : "Stílus",
-
-// Image Dialog
-DlgImgTitle : "Kép tulajdonságai",
-DlgImgInfoTab : "Alaptulajdonságok",
-DlgImgBtnUpload : "Küldés a szerverre",
-DlgImgURL : "Hivatkozás",
-DlgImgUpload : "Feltöltés",
-DlgImgAlt : "Buborék szöveg",
-DlgImgWidth : "Szélesség",
-DlgImgHeight : "Magasság",
-DlgImgLockRatio : "Arány megtartása",
-DlgBtnResetSize : "Eredeti méret",
-DlgImgBorder : "Keret",
-DlgImgHSpace : "Vízsz. táv",
-DlgImgVSpace : "Függ. táv",
-DlgImgAlign : "Igazítás",
-DlgImgAlignLeft : "Bal",
-DlgImgAlignAbsBottom: "Legaljára",
-DlgImgAlignAbsMiddle: "Közepére",
-DlgImgAlignBaseline : "Alapvonalhoz",
-DlgImgAlignBottom : "Aljára",
-DlgImgAlignMiddle : "Középre",
-DlgImgAlignRight : "Jobbra",
-DlgImgAlignTextTop : "Szöveg tetejére",
-DlgImgAlignTop : "Tetejére",
-DlgImgPreview : "Előnézet",
-DlgImgAlertUrl : "Töltse ki a kép webcímét",
-DlgImgLinkTab : "Hivatkozás",
-
-// Flash Dialog
-DlgFlashTitle : "Flash tulajdonságai",
-DlgFlashChkPlay : "Automata lejátszás",
-DlgFlashChkLoop : "Folyamatosan",
-DlgFlashChkMenu : "Flash menü engedélyezése",
-DlgFlashScale : "Méretezés",
-DlgFlashScaleAll : "Mindent mutat",
-DlgFlashScaleNoBorder : "Keret nélkül",
-DlgFlashScaleFit : "Teljes kitöltés",
-
-// Link Dialog
-DlgLnkWindowTitle : "Hivatkozás tulajdonságai",
-DlgLnkInfoTab : "Alaptulajdonságok",
-DlgLnkTargetTab : "Megjelenítés",
-
-DlgLnkType : "Hivatkozás típusa",
-DlgLnkTypeURL : "Webcím",
-DlgLnkTypeAnchor : "Horgony az oldalon",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<más>",
-DlgLnkURL : "Webcím",
-DlgLnkAnchorSel : "Horgony választása",
-DlgLnkAnchorByName : "Horgony név szerint",
-DlgLnkAnchorById : "Azonosító szerint",
-DlgLnkNoAnchors : "(Nincs horgony a dokumentumban)",
-DlgLnkEMail : "E-Mail cím",
-DlgLnkEMailSubject : "Üzenet tárgya",
-DlgLnkEMailBody : "Üzenet",
-DlgLnkUpload : "Feltöltés",
-DlgLnkBtnUpload : "Küldés a szerverre",
-
-DlgLnkTarget : "Tartalom megjelenítése",
-DlgLnkTargetFrame : "<keretben>",
-DlgLnkTargetPopup : "<felugró ablakban>",
-DlgLnkTargetBlank : "Új ablakban (_blank)",
-DlgLnkTargetParent : "Szülő ablakban (_parent)",
-DlgLnkTargetSelf : "Azonos ablakban (_self)",
-DlgLnkTargetTop : "Legfelső ablakban (_top)",
-DlgLnkTargetFrameName : "Keret neve",
-DlgLnkPopWinName : "Felugró ablak neve",
-DlgLnkPopWinFeat : "Felugró ablak jellemzői",
-DlgLnkPopResize : "Méretezhető",
-DlgLnkPopLocation : "Címsor",
-DlgLnkPopMenu : "Menü sor",
-DlgLnkPopScroll : "Gördítősáv",
-DlgLnkPopStatus : "Ãllapotsor",
-DlgLnkPopToolbar : "Eszköztár",
-DlgLnkPopFullScrn : "Teljes képernyő (csak IE)",
-DlgLnkPopDependent : "Szülőhöz kapcsolt (csak Netscape)",
-DlgLnkPopWidth : "Szélesség",
-DlgLnkPopHeight : "Magasság",
-DlgLnkPopLeft : "Bal pozíció",
-DlgLnkPopTop : "Felső pozíció",
-
-DlnLnkMsgNoUrl : "Adja meg a hivatkozás webcímét",
-DlnLnkMsgNoEMail : "Adja meg az E-Mail címet",
-DlnLnkMsgNoAnchor : "Válasszon egy horgonyt",
-DlnLnkMsgInvPopName : "A felbukkanó ablak neve alfanumerikus karakterrel kezdôdjön, valamint ne tartalmazzon szóközt",
-
-// Color Dialog
-DlgColorTitle : "Színválasztás",
-DlgColorBtnClear : "Törlés",
-DlgColorHighlight : "Előnézet",
-DlgColorSelected : "Kiválasztott",
-
-// Smiley Dialog
-DlgSmileyTitle : "Hangulatjel beszúrása",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Speciális karakter választása",
-
-// Table Dialog
-DlgTableTitle : "Táblázat tulajdonságai",
-DlgTableRows : "Sorok",
-DlgTableColumns : "Oszlopok",
-DlgTableBorder : "Szegélyméret",
-DlgTableAlign : "Igazítás",
-DlgTableAlignNotSet : "<Nincs beállítva>",
-DlgTableAlignLeft : "Balra",
-DlgTableAlignCenter : "Középre",
-DlgTableAlignRight : "Jobbra",
-DlgTableWidth : "Szélesség",
-DlgTableWidthPx : "képpont",
-DlgTableWidthPc : "százalék",
-DlgTableHeight : "Magasság",
-DlgTableCellSpace : "Cella térköz",
-DlgTableCellPad : "Cella belső margó",
-DlgTableCaption : "Felirat",
-DlgTableSummary : "Leírás",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Cella tulajdonságai",
-DlgCellWidth : "Szélesség",
-DlgCellWidthPx : "képpont",
-DlgCellWidthPc : "százalék",
-DlgCellHeight : "Magasság",
-DlgCellWordWrap : "Sortörés",
-DlgCellWordWrapNotSet : "<Nincs beállítva>",
-DlgCellWordWrapYes : "Igen",
-DlgCellWordWrapNo : "Nem",
-DlgCellHorAlign : "Vízsz. igazítás",
-DlgCellHorAlignNotSet : "<Nincs beállítva>",
-DlgCellHorAlignLeft : "Balra",
-DlgCellHorAlignCenter : "Középre",
-DlgCellHorAlignRight: "Jobbra",
-DlgCellVerAlign : "Függ. igazítás",
-DlgCellVerAlignNotSet : "<Nincs beállítva>",
-DlgCellVerAlignTop : "Tetejére",
-DlgCellVerAlignMiddle : "Középre",
-DlgCellVerAlignBottom : "Aljára",
-DlgCellVerAlignBaseline : "Egyvonalba",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Sorok egyesítése",
-DlgCellCollSpan : "Oszlopok egyesítése",
-DlgCellBackColor : "Háttérszín",
-DlgCellBorderColor : "Szegélyszín",
-DlgCellBtnSelect : "Kiválasztás...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Keresés és csere",
-
-// Find Dialog
-DlgFindTitle : "Keresés",
-DlgFindFindBtn : "Keresés",
-DlgFindNotFoundMsg : "A keresett szöveg nem található.",
-
-// Replace Dialog
-DlgReplaceTitle : "Csere",
-DlgReplaceFindLbl : "Keresett szöveg:",
-DlgReplaceReplaceLbl : "Csere erre:",
-DlgReplaceCaseChk : "kis- és nagybetű megkülönböztetése",
-DlgReplaceReplaceBtn : "Csere",
-DlgReplaceReplAllBtn : "Az összes cseréje",
-DlgReplaceWordChk : "csak ha ez a teljes szó",
-
-// Paste Operations / Dialog
-PasteErrorCut : "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
-PasteErrorCopy : "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
-
-PasteAsText : "Beillesztés formázatlan szövegként",
-PasteFromWord : "Beillesztés Word-ből",
-
-DlgPasteMsg2 : "Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.",
-DlgPasteSec : "A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.",
-DlgPasteIgnoreFont : "Betű formázások megszüntetése",
-DlgPasteRemoveStyles : "Stílusok eltávolítása",
-
-// Color Picker
-ColorAutomatic : "Automatikus",
-ColorMoreColors : "További színek...",
-
-// Document Properties
-DocProps : "Dokumentum tulajdonságai",
-
-// Anchor Dialog
-DlgAnchorTitle : "Horgony tulajdonságai",
-DlgAnchorName : "Horgony neve",
-DlgAnchorErrorName : "Kérem adja meg a horgony nevét",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nincs a szótárban",
-DlgSpellChangeTo : "Módosítás",
-DlgSpellBtnIgnore : "Kihagyja",
-DlgSpellBtnIgnoreAll : "Mindet kihagyja",
-DlgSpellBtnReplace : "Csere",
-DlgSpellBtnReplaceAll : "Összes cseréje",
-DlgSpellBtnUndo : "Visszavonás",
-DlgSpellNoSuggestions : "Nincs javaslat",
-DlgSpellProgress : "Helyesírás-ellenőrzés folyamatban...",
-DlgSpellNoMispell : "Helyesírás-ellenőrzés kész: Nem találtam hibát",
-DlgSpellNoChanges : "Helyesírás-ellenőrzés kész: Nincs változtatott szó",
-DlgSpellOneChange : "Helyesírás-ellenőrzés kész: Egy szó cserélve",
-DlgSpellManyChanges : "Helyesírás-ellenőrzés kész: %1 szó cserélve",
-
-IeSpellDownload : "A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?",
-
-// Button Dialog
-DlgButtonText : "Szöveg (Érték)",
-DlgButtonType : "Típus",
-DlgButtonTypeBtn : "Gomb",
-DlgButtonTypeSbm : "Küldés",
-DlgButtonTypeRst : "Alaphelyzet",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Név",
-DlgCheckboxValue : "Érték",
-DlgCheckboxSelected : "Kiválasztott",
-
-// Form Dialog
-DlgFormName : "Név",
-DlgFormAction : "Adatfeldolgozást végző hivatkozás",
-DlgFormMethod : "Adatküldés módja",
-
-// Select Field Dialog
-DlgSelectName : "Név",
-DlgSelectValue : "Érték",
-DlgSelectSize : "Méret",
-DlgSelectLines : "sor",
-DlgSelectChkMulti : "több sor is kiválasztható",
-DlgSelectOpAvail : "Elérhető opciók",
-DlgSelectOpText : "Szöveg",
-DlgSelectOpValue : "Érték",
-DlgSelectBtnAdd : "Hozzáad",
-DlgSelectBtnModify : "Módosít",
-DlgSelectBtnUp : "Fel",
-DlgSelectBtnDown : "Le",
-DlgSelectBtnSetValue : "Legyen az alapértelmezett érték",
-DlgSelectBtnDelete : "Töröl",
-
-// Textarea Dialog
-DlgTextareaName : "Név",
-DlgTextareaCols : "Karakterek száma egy sorban",
-DlgTextareaRows : "Sorok száma",
-
-// Text Field Dialog
-DlgTextName : "Név",
-DlgTextValue : "Érték",
-DlgTextCharWidth : "Megjelenített karakterek száma",
-DlgTextMaxChars : "Maximális karakterszám",
-DlgTextType : "Típus",
-DlgTextTypeText : "Szöveg",
-DlgTextTypePass : "Jelszó",
-
-// Hidden Field Dialog
-DlgHiddenName : "Név",
-DlgHiddenValue : "Érték",
-
-// Bulleted List Dialog
-BulletedListProp : "Felsorolás tulajdonságai",
-NumberedListProp : "Számozás tulajdonságai",
-DlgLstStart : "Start",
-DlgLstType : "Formátum",
-DlgLstTypeCircle : "Kör",
-DlgLstTypeDisc : "Lemez",
-DlgLstTypeSquare : "Négyzet",
-DlgLstTypeNumbers : "Számok (1, 2, 3)",
-DlgLstTypeLCase : "Kisbetűk (a, b, c)",
-DlgLstTypeUCase : "Nagybetűk (A, B, C)",
-DlgLstTypeSRoman : "Kis római számok (i, ii, iii)",
-DlgLstTypeLRoman : "Nagy római számok (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Ãltalános",
-DlgDocBackTab : "Háttér",
-DlgDocColorsTab : "Színek és margók",
-DlgDocMetaTab : "Meta adatok",
-
-DlgDocPageTitle : "Oldalcím",
-DlgDocLangDir : "Ãrás iránya",
-DlgDocLangDirLTR : "Balról jobbra",
-DlgDocLangDirRTL : "Jobbról balra",
-DlgDocLangCode : "Nyelv kód",
-DlgDocCharSet : "Karakterkódolás",
-DlgDocCharSetCE : "Közép-Európai",
-DlgDocCharSetCT : "Kínai Tradicionális (Big5)",
-DlgDocCharSetCR : "Cyrill",
-DlgDocCharSetGR : "Görög",
-DlgDocCharSetJP : "Japán",
-DlgDocCharSetKR : "Koreai",
-DlgDocCharSetTR : "Török",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Nyugat-Európai",
-DlgDocCharSetOther : "Más karakterkódolás",
-
-DlgDocDocType : "Dokumentum típus fejléc",
-DlgDocDocTypeOther : "Más dokumentum típus fejléc",
-DlgDocIncXHTML : "XHTML deklarációk beillesztése",
-DlgDocBgColor : "Háttérszín",
-DlgDocBgImage : "Háttérkép cím",
-DlgDocBgNoScroll : "Nem gördíthető háttér",
-DlgDocCText : "Szöveg",
-DlgDocCLink : "Cím",
-DlgDocCVisited : "Látogatott cím",
-DlgDocCActive : "Aktív cím",
-DlgDocMargins : "Oldal margók",
-DlgDocMaTop : "Felső",
-DlgDocMaLeft : "Bal",
-DlgDocMaRight : "Jobb",
-DlgDocMaBottom : "Alsó",
-DlgDocMeIndex : "Dokumentum keresőszavak (vesszővel elválasztva)",
-DlgDocMeDescr : "Dokumentum leírás",
-DlgDocMeAuthor : "Szerző",
-DlgDocMeCopy : "Szerzői jog",
-DlgDocPreview : "Előnézet",
-
-// Templates Dialog
-Templates : "Sablonok",
-DlgTemplatesTitle : "Elérhető sablonok",
-DlgTemplatesSelMsg : "Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):",
-DlgTemplatesLoading : "Sablon lista betöltése. Kis türelmet...",
-DlgTemplatesNoTpl : "(Nincs sablon megadva)",
-DlgTemplatesReplace : "Kicseréli a jelenlegi tartalmat",
-
-// About Dialog
-DlgAboutAboutTab : "Névjegy",
-DlgAboutBrowserInfoTab : "Böngésző információ",
-DlgAboutLicenseTab : "Licensz",
-DlgAboutVersion : "verzió",
-DlgAboutInfo : "További információkért látogasson el ide:",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/is.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/is.js
deleted file mode 100644
index 1a31cace7..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/is.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Icelandic language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Fela verkstiku",
-ToolbarExpand : "Sýna verkstiku",
-
-// Toolbar Items and Context Menu
-Save : "Vista",
-NewPage : "Ný síða",
-Preview : "Forskoða",
-Cut : "Klippa",
-Copy : "Afrita",
-Paste : "Líma",
-PasteText : "Líma ósniðinn texta",
-PasteWord : "Líma úr Word",
-Print : "Prenta",
-SelectAll : "Velja allt",
-RemoveFormat : "Fjarlægja snið",
-InsertLinkLbl : "Stikla",
-InsertLink : "Stofna/breyta stiklu",
-RemoveLink : "Fjarlægja stiklu",
-VisitLink : "Opna stiklusíðu",
-Anchor : "Stofna/breyta kaflamerki",
-AnchorDelete : "Eyða kaflamerki",
-InsertImageLbl : "Setja inn mynd",
-InsertImage : "Setja inn/breyta mynd",
-InsertFlashLbl : "Flash",
-InsertFlash : "Setja inn/breyta Flash",
-InsertTableLbl : "Tafla",
-InsertTable : "Setja inn/breyta töflu",
-InsertLineLbl : "Lína",
-InsertLine : "Lóðrétt lína",
-InsertSpecialCharLbl: "Merki",
-InsertSpecialChar : "Setja inn merki",
-InsertSmileyLbl : "Svipur",
-InsertSmiley : "Setja upp svip",
-About : "Um FCKeditor",
-Bold : "Feitletrað",
-Italic : "Skáletrað",
-Underline : "Undirstrikað",
-StrikeThrough : "Yfirstrikað",
-Subscript : "Niðurskrifað",
-Superscript : "Uppskrifað",
-LeftJustify : "Vinstrijöfnun",
-CenterJustify : "Miðja texta",
-RightJustify : "Hægrijöfnun",
-BlockJustify : "Jafna báðum megin",
-DecreaseIndent : "Auka inndrátt",
-IncreaseIndent : "Minnka inndrátt",
-Blockquote : "Inndráttur",
-CreateDiv : "Búa til DIV-hýsil",
-EditDiv : "Breyta DIV-hýsli",
-DeleteDiv : "Eyða DIV-hýsli",
-Undo : "Afturkalla",
-Redo : "Hætta við afturköllun",
-NumberedListLbl : "Númeraður listi",
-NumberedList : "Setja inn/fella númeraðan lista",
-BulletedListLbl : "Punktalisti",
-BulletedList : "Setja inn/fella punktalista",
-ShowTableBorders : "Sýna töflugrind",
-ShowDetails : "Sýna smáatriði",
-Style : "Stílflokkur",
-FontFormat : "Stílsnið",
-Font : "Leturgerð ",
-FontSize : "Leturstærð ",
-TextColor : "Litur texta",
-BGColor : "Bakgrunnslitur",
-Source : "Kóði",
-Find : "Leita",
-Replace : "Skipta út",
-SpellCheck : "Villuleit",
-UniversalKeyboard : "Hnattrænt lyklaborð",
-PageBreakLbl : "Síðuskil",
-PageBreak : "Setja inn síðuskil",
-
-Form : "Setja inn innsláttarform",
-Checkbox : "Setja inn hökunarreit",
-RadioButton : "Setja inn valhnapp",
-TextField : "Setja inn textareit",
-Textarea : "Setja inn textasvæði",
-HiddenField : "Setja inn falið svæði",
-Button : "Setja inn hnapp",
-SelectionField : "Setja inn lista",
-ImageButton : "Setja inn myndahnapp",
-
-FitWindow : "Skoða ritil í fullri stærð",
-ShowBlocks : "Sýna blokkir",
-
-// Context Menu
-EditLink : "Breyta stiklu",
-CellCM : "Reitur",
-RowCM : "Röð",
-ColumnCM : "Dálkur",
-InsertRowAfter : "Skjóta inn röð fyrir neðan",
-InsertRowBefore : "Skjóta inn röð fyrir ofan",
-DeleteRows : "Eyða röð",
-InsertColumnAfter : "Skjóta inn dálki hægra megin",
-InsertColumnBefore : "Skjóta inn dálki vinstra megin",
-DeleteColumns : "Fella dálk",
-InsertCellAfter : "Skjóta inn reiti fyrir framan",
-InsertCellBefore : "Skjóta inn reiti fyrir aftan",
-DeleteCells : "Fella reit",
-MergeCells : "Sameina reiti",
-MergeRight : "Sameina til hægri",
-MergeDown : "Sameina niður á við",
-HorizontalSplitCell : "Kljúfa reit lárétt",
-VerticalSplitCell : "Kljúfa reit lóðrétt",
-TableDelete : "Fella töflu",
-CellProperties : "Eigindi reits",
-TableProperties : "Eigindi töflu",
-ImageProperties : "Eigindi myndar",
-FlashProperties : "Eigindi Flash",
-
-AnchorProp : "Eigindi kaflamerkis",
-ButtonProp : "Eigindi hnapps",
-CheckboxProp : "Eigindi markreits",
-HiddenFieldProp : "Eigindi falins svæðis",
-RadioButtonProp : "Eigindi valhnapps",
-ImageButtonProp : "Eigindi myndahnapps",
-TextFieldProp : "Eigindi textareits",
-SelectionFieldProp : "Eigindi lista",
-TextareaProp : "Eigindi textasvæðis",
-FormProp : "Eigindi innsláttarforms",
-
-FontFormats : "Venjulegt letur;Forsniðið;Vistfang;Fyrirsögn 1;Fyrirsögn 2;Fyrirsögn 3;Fyrirsögn 4;Fyrirsögn 5;Fyrirsögn 6;Venjulegt (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Meðhöndla XHTML...",
-Done : "Tilbúið",
-PasteWordConfirm : "Textinn sem þú ætlar að líma virðist koma úr Word. Viltu hreinsa óþarfar Word-skipanir úr honum?",
-NotCompatiblePaste : "Þessi aðgerð er bundin við Internet Explorer 5.5 og nýrri. Viltu líma textann án þess að hreinsa hann?",
-UnknownToolbarItem : "Óþekktur hlutur í verkstiku \"%1\"!",
-UnknownCommand : "Óþekkt skipanaheiti \"%1\"!",
-NotImplemented : "Skipun ekki virkjuð!",
-UnknownToolbarSet : "Verkstikan \"%1\" ekki til!",
-NoActiveX : "Öryggisstillingarnar í vafranum þínum leyfa ekki alla möguleika ritilsins.<br>Láttu vafrann leyfa Active-X og viðbætur til að komast hjá villum og takmörkunum.",
-BrowseServerBlocked : "Ritillinn getur ekki opnað nauðsynlega hjálparglugga!<br>Láttu hann leyfa þessari síðu að opna sprettiglugga.",
-DialogBlocked : "Ekki var hægt að opna skipanaglugga!<br>Nauðsynlegt er að leyfa síðunni að opna sprettiglugga.",
-VisitLinkBlocked : "Ekki var hægt að opna nýjan glugga. Gangtu úr skugga um að engir sprettigluggabanar séu virkir.",
-
-// Dialogs
-DlgBtnOK : "Ã lagi",
-DlgBtnCancel : "Hætta við",
-DlgBtnClose : "Loka",
-DlgBtnBrowseServer : "Fletta í skjalasafni",
-DlgAdvancedTag : "Tæknilegt",
-DlgOpOther : "<Annað>",
-DlgInfoTab : "Upplýsingar",
-DlgAlertUrl : "Sláðu inn slóð",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ekkert valið>",
-DlgGenId : "Auðkenni",
-DlgGenLangDir : "Lesstefna",
-DlgGenLangDirLtr : "Frá vinstri til hægri (LTR)",
-DlgGenLangDirRtl : "Frá hægri til vinstri (RTL)",
-DlgGenLangCode : "Tungumálakóði",
-DlgGenAccessKey : "Skammvalshnappur",
-DlgGenName : "Nafn",
-DlgGenTabIndex : "Raðnúmer innsláttarreits",
-DlgGenLongDescr : "Nánari lýsing",
-DlgGenClass : "Stílsniðsflokkur",
-DlgGenTitle : "Titill",
-DlgGenContType : "Tegund innihalds",
-DlgGenLinkCharset : "Táknróf",
-DlgGenStyle : "Stíll",
-
-// Image Dialog
-DlgImgTitle : "Eigindi myndar",
-DlgImgInfoTab : "Almennt",
-DlgImgBtnUpload : "Hlaða upp",
-DlgImgURL : "Vefslóð",
-DlgImgUpload : "Hlaða upp",
-DlgImgAlt : "Baklægur texti",
-DlgImgWidth : "Breidd",
-DlgImgHeight : "Hæð",
-DlgImgLockRatio : "Festa stærðarhlutfall",
-DlgBtnResetSize : "Reikna stærð",
-DlgImgBorder : "Rammi",
-DlgImgHSpace : "Vinstri bil",
-DlgImgVSpace : "Hægri bil",
-DlgImgAlign : "Jöfnun",
-DlgImgAlignLeft : "Vinstri",
-DlgImgAlignAbsBottom: "Abs neðst",
-DlgImgAlignAbsMiddle: "Abs miðjuð",
-DlgImgAlignBaseline : "Grunnlína",
-DlgImgAlignBottom : "Neðst",
-DlgImgAlignMiddle : "Miðjuð",
-DlgImgAlignRight : "Hægri",
-DlgImgAlignTextTop : "Efri brún texta",
-DlgImgAlignTop : "Efst",
-DlgImgPreview : "Sýna dæmi",
-DlgImgAlertUrl : "Sláðu inn slóðina að myndinni",
-DlgImgLinkTab : "Stikla",
-
-// Flash Dialog
-DlgFlashTitle : "Eigindi Flash",
-DlgFlashChkPlay : "Sjálfvirk spilun",
-DlgFlashChkLoop : "Endurtekning",
-DlgFlashChkMenu : "Sýna Flash-valmynd",
-DlgFlashScale : "Skali",
-DlgFlashScaleAll : "Sýna allt",
-DlgFlashScaleNoBorder : "Ãn ramma",
-DlgFlashScaleFit : "Fella skala að stærð",
-
-// Link Dialog
-DlgLnkWindowTitle : "Stikla",
-DlgLnkInfoTab : "Almennt",
-DlgLnkTargetTab : "Mark",
-
-DlgLnkType : "Stikluflokkur",
-DlgLnkTypeURL : "Vefslóð",
-DlgLnkTypeAnchor : "Bókamerki á þessari síðu",
-DlgLnkTypeEMail : "Netfang",
-DlgLnkProto : "Samskiptastaðall",
-DlgLnkProtoOther : "<annað>",
-DlgLnkURL : "Vefslóð",
-DlgLnkAnchorSel : "Veldu akkeri",
-DlgLnkAnchorByName : "Eftir akkerisnafni",
-DlgLnkAnchorById : "Eftir auðkenni einingar",
-DlgLnkNoAnchors : "<Engin bókamerki á skrá>",
-DlgLnkEMail : "Netfang",
-DlgLnkEMailSubject : "Efni",
-DlgLnkEMailBody : "Meginmál",
-DlgLnkUpload : "Senda upp",
-DlgLnkBtnUpload : "Senda upp",
-
-DlgLnkTarget : "Mark",
-DlgLnkTargetFrame : "<rammi>",
-DlgLnkTargetPopup : "<sprettigluggi>",
-DlgLnkTargetBlank : "Nýr gluggi (_blank)",
-DlgLnkTargetParent : "Yfirsettur rammi (_parent)",
-DlgLnkTargetSelf : "Sami gluggi (_self)",
-DlgLnkTargetTop : "Allur glugginn (_top)",
-DlgLnkTargetFrameName : "Nafn markglugga",
-DlgLnkPopWinName : "Nafn sprettiglugga",
-DlgLnkPopWinFeat : "Eigindi sprettiglugga",
-DlgLnkPopResize : "Skölun",
-DlgLnkPopLocation : "Fanglína",
-DlgLnkPopMenu : "Vallína",
-DlgLnkPopScroll : "Skrunstikur",
-DlgLnkPopStatus : "Stöðustika",
-DlgLnkPopToolbar : "Verkfærastika",
-DlgLnkPopFullScrn : "Heilskjár (IE)",
-DlgLnkPopDependent : "Háð venslum (Netscape)",
-DlgLnkPopWidth : "Breidd",
-DlgLnkPopHeight : "Hæð",
-DlgLnkPopLeft : "Fjarlægð frá vinstri",
-DlgLnkPopTop : "Fjarlægð frá efri brún",
-
-DlnLnkMsgNoUrl : "Sláðu inn veffang stiklunnar!",
-DlnLnkMsgNoEMail : "Sláðu inn netfang!",
-DlnLnkMsgNoAnchor : "Veldu fyrst eitthvert bókamerki!",
-DlnLnkMsgInvPopName : "Sprettisíðan verður að byrja á bókstaf (a-z) og má ekki innihalda stafabil",
-
-// Color Dialog
-DlgColorTitle : "Velja lit",
-DlgColorBtnClear : "Núllstilla",
-DlgColorHighlight : "Litmerkja",
-DlgColorSelected : "Valið",
-
-// Smiley Dialog
-DlgSmileyTitle : "Velja svip",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Velja tákn",
-
-// Table Dialog
-DlgTableTitle : "Eigindi töflu",
-DlgTableRows : "Raðir",
-DlgTableColumns : "Dálkar",
-DlgTableBorder : "Breidd ramma",
-DlgTableAlign : "Jöfnun",
-DlgTableAlignNotSet : "<ekkert valið>",
-DlgTableAlignLeft : "Vinstrijafnað",
-DlgTableAlignCenter : "Miðjað",
-DlgTableAlignRight : "Hægrijafnað",
-DlgTableWidth : "Breidd",
-DlgTableWidthPx : "myndeindir",
-DlgTableWidthPc : "prósent",
-DlgTableHeight : "Hæð",
-DlgTableCellSpace : "Bil milli reita",
-DlgTableCellPad : "Reitaspássía",
-DlgTableCaption : "Titill",
-DlgTableSummary : "Ãfram",
-DlgTableHeaders : "Fyrirsagnir",
-DlgTableHeadersNone : "Engar",
-DlgTableHeadersColumn : "Fyrsti dálkur",
-DlgTableHeadersRow : "Fyrsta röð",
-DlgTableHeadersBoth : "Hvort tveggja",
-
-// Table Cell Dialog
-DlgCellTitle : "Eigindi reits",
-DlgCellWidth : "Breidd",
-DlgCellWidthPx : "myndeindir",
-DlgCellWidthPc : "prósent",
-DlgCellHeight : "Hæð",
-DlgCellWordWrap : "Línuskipting",
-DlgCellWordWrapNotSet : "<ekkert valið>",
-DlgCellWordWrapYes : "Já",
-DlgCellWordWrapNo : "Nei",
-DlgCellHorAlign : "Lárétt jöfnun",
-DlgCellHorAlignNotSet : "<ekkert valið>",
-DlgCellHorAlignLeft : "Vinstrijafnað",
-DlgCellHorAlignCenter : "Miðjað",
-DlgCellHorAlignRight: "Hægrijafnað",
-DlgCellVerAlign : "Lóðrétt jöfnun",
-DlgCellVerAlignNotSet : "<ekkert valið>",
-DlgCellVerAlignTop : "Efst",
-DlgCellVerAlignMiddle : "Miðjað",
-DlgCellVerAlignBottom : "Neðst",
-DlgCellVerAlignBaseline : "Grunnlína",
-DlgCellType : "Tegund reits",
-DlgCellTypeData : "Gögn",
-DlgCellTypeHeader : "Fyrirsögn",
-DlgCellRowSpan : "Hæð í röðum talið",
-DlgCellCollSpan : "Breidd í dálkum talið",
-DlgCellBackColor : "Bakgrunnslitur",
-DlgCellBorderColor : "Rammalitur",
-DlgCellBtnSelect : "Veldu...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Finna og skipta",
-
-// Find Dialog
-DlgFindTitle : "Finna",
-DlgFindFindBtn : "Finna",
-DlgFindNotFoundMsg : "Leitartexti fannst ekki!",
-
-// Replace Dialog
-DlgReplaceTitle : "Skipta út",
-DlgReplaceFindLbl : "Leita að:",
-DlgReplaceReplaceLbl : "Skipta út fyrir:",
-DlgReplaceCaseChk : "Gera greinarmun á¡ há¡- og lágstöfum",
-DlgReplaceReplaceBtn : "Skipta út",
-DlgReplaceReplAllBtn : "Skipta út allsstaðar",
-DlgReplaceWordChk : "Aðeins heil orð",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl+X).",
-PasteErrorCopy : "Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl+C).",
-
-PasteAsText : "Líma sem ósniðinn texta",
-PasteFromWord : "Líma úr Word",
-
-DlgPasteMsg2 : "Límdu í svæðið hér að neðan og (<STRONG>Ctrl+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.",
-DlgPasteSec : "Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.",
-DlgPasteIgnoreFont : "Hunsa leturskilgreiningar",
-DlgPasteRemoveStyles : "Hunsa letureigindi",
-
-// Color Picker
-ColorAutomatic : "Sjálfval",
-ColorMoreColors : "Fleiri liti...",
-
-// Document Properties
-DocProps : "Eigindi skjals",
-
-// Anchor Dialog
-DlgAnchorTitle : "Eigindi bókamerkis",
-DlgAnchorName : "Nafn bókamerkis",
-DlgAnchorErrorName : "Sláðu inn nafn bókamerkis!",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ekki í orðabókinni",
-DlgSpellChangeTo : "Tillaga",
-DlgSpellBtnIgnore : "Hunsa",
-DlgSpellBtnIgnoreAll : "Hunsa allt",
-DlgSpellBtnReplace : "Skipta",
-DlgSpellBtnReplaceAll : "Skipta öllu",
-DlgSpellBtnUndo : "Til baka",
-DlgSpellNoSuggestions : "- engar tillögur -",
-DlgSpellProgress : "Villuleit í gangi...",
-DlgSpellNoMispell : "Villuleit lokið: Engin villa fannst",
-DlgSpellNoChanges : "Villuleit lokið: Engu orði breytt",
-DlgSpellOneChange : "Villuleit lokið: Einu orði breytt",
-DlgSpellManyChanges : "Villuleit lokið: %1 orðum breytt",
-
-IeSpellDownload : "Villuleit ekki sett upp.<br>Viltu setja hana upp?",
-
-// Button Dialog
-DlgButtonText : "Texti",
-DlgButtonType : "Gerð",
-DlgButtonTypeBtn : "Hnappur",
-DlgButtonTypeSbm : "Staðfesta",
-DlgButtonTypeRst : "Hreinsa",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nafn",
-DlgCheckboxValue : "Gildi",
-DlgCheckboxSelected : "Valið",
-
-// Form Dialog
-DlgFormName : "Nafn",
-DlgFormAction : "Aðgerð",
-DlgFormMethod : "Aðferð",
-
-// Select Field Dialog
-DlgSelectName : "Nafn",
-DlgSelectValue : "Gildi",
-DlgSelectSize : "Stærð",
-DlgSelectLines : "línur",
-DlgSelectChkMulti : "Leyfa fleiri kosti",
-DlgSelectOpAvail : "Kostir",
-DlgSelectOpText : "Texti",
-DlgSelectOpValue : "Gildi",
-DlgSelectBtnAdd : "Bæta við",
-DlgSelectBtnModify : "Breyta",
-DlgSelectBtnUp : "Upp",
-DlgSelectBtnDown : "Niður",
-DlgSelectBtnSetValue : "Merkja sem valið",
-DlgSelectBtnDelete : "Eyða",
-
-// Textarea Dialog
-DlgTextareaName : "Nafn",
-DlgTextareaCols : "Dálkar",
-DlgTextareaRows : "Línur",
-
-// Text Field Dialog
-DlgTextName : "Nafn",
-DlgTextValue : "Gildi",
-DlgTextCharWidth : "Breidd (leturtákn)",
-DlgTextMaxChars : "Hámarksfjöldi leturtákna",
-DlgTextType : "Gerð",
-DlgTextTypeText : "Texti",
-DlgTextTypePass : "Lykilorð",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nafn",
-DlgHiddenValue : "Gildi",
-
-// Bulleted List Dialog
-BulletedListProp : "Eigindi depillista",
-NumberedListProp : "Eigindi tölusetts lista",
-DlgLstStart : "Byrja",
-DlgLstType : "Gerð",
-DlgLstTypeCircle : "Hringur",
-DlgLstTypeDisc : "Fylltur hringur",
-DlgLstTypeSquare : "Ferningur",
-DlgLstTypeNumbers : "Tölusett (1, 2, 3)",
-DlgLstTypeLCase : "Lágstafir (a, b, c)",
-DlgLstTypeUCase : "Hástafir (A, B, C)",
-DlgLstTypeSRoman : "Rómverkar lágstafatölur (i, ii, iii)",
-DlgLstTypeLRoman : "Rómverkar hástafatölur (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Almennt",
-DlgDocBackTab : "Bakgrunnur",
-DlgDocColorsTab : "Litir og rammar",
-DlgDocMetaTab : "Lýsigögn",
-
-DlgDocPageTitle : "Titill síðu",
-DlgDocLangDir : "Tungumál",
-DlgDocLangDirLTR : "Vinstri til hægri (LTR)",
-DlgDocLangDirRTL : "Hægri til vinstri (RTL)",
-DlgDocLangCode : "Tungumálakóði",
-DlgDocCharSet : "Letursett",
-DlgDocCharSetCE : "Mið-evrópskt",
-DlgDocCharSetCT : "Kínverskt, hefðbundið (Big5)",
-DlgDocCharSetCR : "Kýrilskt",
-DlgDocCharSetGR : "Grískt",
-DlgDocCharSetJP : "Japanskt",
-DlgDocCharSetKR : "Kóreskt",
-DlgDocCharSetTR : "Tyrkneskt",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Vestur-evrópst",
-DlgDocCharSetOther : "Annað letursett",
-
-DlgDocDocType : "Flokkur skjalategunda",
-DlgDocDocTypeOther : "Annar flokkur skjalategunda",
-DlgDocIncXHTML : "Fella inn XHTML lýsingu",
-DlgDocBgColor : "Bakgrunnslitur",
-DlgDocBgImage : "Slóð bakgrunnsmyndar",
-DlgDocBgNoScroll : "Læstur bakgrunnur",
-DlgDocCText : "Texti",
-DlgDocCLink : "Stikla",
-DlgDocCVisited : "Heimsótt stikla",
-DlgDocCActive : "Virk stikla",
-DlgDocMargins : "Hliðarspássía",
-DlgDocMaTop : "Efst",
-DlgDocMaLeft : "Vinstri",
-DlgDocMaRight : "Hægri",
-DlgDocMaBottom : "Neðst",
-DlgDocMeIndex : "Lykilorð efnisorðaskrár (aðgreind með kommum)",
-DlgDocMeDescr : "Lýsing skjals",
-DlgDocMeAuthor : "Höfundur",
-DlgDocMeCopy : "Höfundarréttur",
-DlgDocPreview : "Sýna",
-
-// Templates Dialog
-Templates : "Sniðmát",
-DlgTemplatesTitle : "Innihaldssniðmát",
-DlgTemplatesSelMsg : "Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):",
-DlgTemplatesLoading : "Sæki lista yfir sniðmát...",
-DlgTemplatesNoTpl : "(Ekkert sniðmát er skilgreint!)",
-DlgTemplatesReplace : "Skipta út raunverulegu innihaldi",
-
-// About Dialog
-DlgAboutAboutTab : "Um",
-DlgAboutBrowserInfoTab : "Almennt",
-DlgAboutLicenseTab : "Leyfi",
-DlgAboutVersion : "útgáfa",
-DlgAboutInfo : "Nánari upplýsinar, sjá:",
-
-// Div Dialog
-DlgDivGeneralTab : "Almennt",
-DlgDivAdvancedTab : "Sérhæft",
-DlgDivStyle : "Stíll",
-DlgDivInlineStyle : "Línulægur stíll"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/it.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/it.js
deleted file mode 100644
index 353abfba5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/it.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Italian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Nascondi la barra degli strumenti",
-ToolbarExpand : "Mostra la barra degli strumenti",
-
-// Toolbar Items and Context Menu
-Save : "Salva",
-NewPage : "Nuova pagina vuota",
-Preview : "Anteprima",
-Cut : "Taglia",
-Copy : "Copia",
-Paste : "Incolla",
-PasteText : "Incolla come testo semplice",
-PasteWord : "Incolla da Word",
-Print : "Stampa",
-SelectAll : "Seleziona tutto",
-RemoveFormat : "Elimina formattazione",
-InsertLinkLbl : "Collegamento",
-InsertLink : "Inserisci/Modifica collegamento",
-RemoveLink : "Elimina collegamento",
-VisitLink : "Open Link", //MISSING
-Anchor : "Inserisci/Modifica Ancora",
-AnchorDelete : "Rimuovi Ancora",
-InsertImageLbl : "Immagine",
-InsertImage : "Inserisci/Modifica immagine",
-InsertFlashLbl : "Oggetto Flash",
-InsertFlash : "Inserisci/Modifica Oggetto Flash",
-InsertTableLbl : "Tabella",
-InsertTable : "Inserisci/Modifica tabella",
-InsertLineLbl : "Riga orizzontale",
-InsertLine : "Inserisci riga orizzontale",
-InsertSpecialCharLbl: "Caratteri speciali",
-InsertSpecialChar : "Inserisci carattere speciale",
-InsertSmileyLbl : "Emoticon",
-InsertSmiley : "Inserisci emoticon",
-About : "Informazioni su FCKeditor",
-Bold : "Grassetto",
-Italic : "Corsivo",
-Underline : "Sottolineato",
-StrikeThrough : "Barrato",
-Subscript : "Pedice",
-Superscript : "Apice",
-LeftJustify : "Allinea a sinistra",
-CenterJustify : "Centra",
-RightJustify : "Allinea a destra",
-BlockJustify : "Giustifica",
-DecreaseIndent : "Riduci rientro",
-IncreaseIndent : "Aumenta rientro",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Annulla",
-Redo : "Ripristina",
-NumberedListLbl : "Elenco numerato",
-NumberedList : "Inserisci/Modifica elenco numerato",
-BulletedListLbl : "Elenco puntato",
-BulletedList : "Inserisci/Modifica elenco puntato",
-ShowTableBorders : "Mostra bordi tabelle",
-ShowDetails : "Mostra dettagli",
-Style : "Stile",
-FontFormat : "Formato",
-Font : "Font",
-FontSize : "Dimensione",
-TextColor : "Colore testo",
-BGColor : "Colore sfondo",
-Source : "Codice Sorgente",
-Find : "Trova",
-Replace : "Sostituisci",
-SpellCheck : "Correttore ortografico",
-UniversalKeyboard : "Tastiera universale",
-PageBreakLbl : "Interruzione di pagina",
-PageBreak : "Inserisci interruzione di pagina",
-
-Form : "Modulo",
-Checkbox : "Checkbox",
-RadioButton : "Radio Button",
-TextField : "Campo di testo",
-Textarea : "Area di testo",
-HiddenField : "Campo nascosto",
-Button : "Bottone",
-SelectionField : "Menu di selezione",
-ImageButton : "Bottone immagine",
-
-FitWindow : "Massimizza l'area dell'editor",
-ShowBlocks : "Visualizza Blocchi",
-
-// Context Menu
-EditLink : "Modifica collegamento",
-CellCM : "Cella",
-RowCM : "Riga",
-ColumnCM : "Colonna",
-InsertRowAfter : "Inserisci Riga Dopo",
-InsertRowBefore : "Inserisci Riga Prima",
-DeleteRows : "Elimina righe",
-InsertColumnAfter : "Inserisci Colonna Dopo",
-InsertColumnBefore : "Inserisci Colonna Prima",
-DeleteColumns : "Elimina colonne",
-InsertCellAfter : "Inserisci Cella Dopo",
-InsertCellBefore : "Inserisci Cella Prima",
-DeleteCells : "Elimina celle",
-MergeCells : "Unisce celle",
-MergeRight : "Unisci a Destra",
-MergeDown : "Unisci in Basso",
-HorizontalSplitCell : "Dividi Cella Orizzontalmente",
-VerticalSplitCell : "Dividi Cella Verticalmente",
-TableDelete : "Cancella Tabella",
-CellProperties : "Proprietà cella",
-TableProperties : "Proprietà tabella",
-ImageProperties : "Proprietà immagine",
-FlashProperties : "Proprietà Oggetto Flash",
-
-AnchorProp : "Proprietà ancora",
-ButtonProp : "Proprietà bottone",
-CheckboxProp : "Proprietà checkbox",
-HiddenFieldProp : "Proprietà campo nascosto",
-RadioButtonProp : "Proprietà radio button",
-ImageButtonProp : "Proprietà bottone immagine",
-TextFieldProp : "Proprietà campo di testo",
-SelectionFieldProp : "Proprietà menu di selezione",
-TextareaProp : "Proprietà area di testo",
-FormProp : "Proprietà modulo",
-
-FontFormats : "Normale;Formattato;Indirizzo;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Elaborazione XHTML in corso. Attendere prego...",
-Done : "Completato",
-PasteWordConfirm : "Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?",
-NotCompatiblePaste : "Questa funzione è disponibile solo per Internet Explorer 5.5 o superiore. Desideri incollare il testo senza pulirlo?",
-UnknownToolbarItem : "Elemento della barra strumenti sconosciuto \"%1\"",
-UnknownCommand : "Comando sconosciuto \"%1\"",
-NotImplemented : "Comando non implementato",
-UnknownToolbarSet : "La barra di strumenti \"%1\" non esiste",
-NoActiveX : "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.",
-BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.",
-DialogBlocked : "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Annulla",
-DlgBtnClose : "Chiudi",
-DlgBtnBrowseServer : "Cerca sul server",
-DlgAdvancedTag : "Avanzate",
-DlgOpOther : "<Altro>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Devi inserire l'URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<non impostato>",
-DlgGenId : "Id",
-DlgGenLangDir : "Direzione scrittura",
-DlgGenLangDirLtr : "Da Sinistra a Destra (LTR)",
-DlgGenLangDirRtl : "Da Destra a Sinistra (RTL)",
-DlgGenLangCode : "Codice Lingua",
-DlgGenAccessKey : "Scorciatoia<br />da tastiera",
-DlgGenName : "Nome",
-DlgGenTabIndex : "Ordine di tabulazione",
-DlgGenLongDescr : "URL descrizione estesa",
-DlgGenClass : "Nome classe CSS",
-DlgGenTitle : "Titolo",
-DlgGenContType : "Tipo della risorsa collegata",
-DlgGenLinkCharset : "Set di caretteri della risorsa collegata",
-DlgGenStyle : "Stile",
-
-// Image Dialog
-DlgImgTitle : "Proprietà immagine",
-DlgImgInfoTab : "Informazioni immagine",
-DlgImgBtnUpload : "Invia al server",
-DlgImgURL : "URL",
-DlgImgUpload : "Carica",
-DlgImgAlt : "Testo alternativo",
-DlgImgWidth : "Larghezza",
-DlgImgHeight : "Altezza",
-DlgImgLockRatio : "Blocca rapporto",
-DlgBtnResetSize : "Reimposta dimensione",
-DlgImgBorder : "Bordo",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Allineamento",
-DlgImgAlignLeft : "Sinistra",
-DlgImgAlignAbsBottom: "In basso assoluto",
-DlgImgAlignAbsMiddle: "Centrato assoluto",
-DlgImgAlignBaseline : "Linea base",
-DlgImgAlignBottom : "In Basso",
-DlgImgAlignMiddle : "Centrato",
-DlgImgAlignRight : "Destra",
-DlgImgAlignTextTop : "In alto al testo",
-DlgImgAlignTop : "In Alto",
-DlgImgPreview : "Anteprima",
-DlgImgAlertUrl : "Devi inserire l'URL per l'immagine",
-DlgImgLinkTab : "Collegamento",
-
-// Flash Dialog
-DlgFlashTitle : "Proprietà Oggetto Flash",
-DlgFlashChkPlay : "Avvio Automatico",
-DlgFlashChkLoop : "Cicla",
-DlgFlashChkMenu : "Abilita Menu di Flash",
-DlgFlashScale : "Ridimensiona",
-DlgFlashScaleAll : "Mostra Tutto",
-DlgFlashScaleNoBorder : "Senza Bordo",
-DlgFlashScaleFit : "Dimensione Esatta",
-
-// Link Dialog
-DlgLnkWindowTitle : "Collegamento",
-DlgLnkInfoTab : "Informazioni collegamento",
-DlgLnkTargetTab : "Destinazione",
-
-DlgLnkType : "Tipo di Collegamento",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ancora nella pagina",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocollo",
-DlgLnkProtoOther : "<altro>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Scegli Ancora",
-DlgLnkAnchorByName : "Per Nome",
-DlgLnkAnchorById : "Per id elemento",
-DlgLnkNoAnchors : "(Nessuna ancora disponibile nel documento)",
-DlgLnkEMail : "Indirizzo E-Mail",
-DlgLnkEMailSubject : "Oggetto del messaggio",
-DlgLnkEMailBody : "Corpo del messaggio",
-DlgLnkUpload : "Carica",
-DlgLnkBtnUpload : "Invia al Server",
-
-DlgLnkTarget : "Destinazione",
-DlgLnkTargetFrame : "<riquadro>",
-DlgLnkTargetPopup : "<finestra popup>",
-DlgLnkTargetBlank : "Nuova finestra (_blank)",
-DlgLnkTargetParent : "Finestra padre (_parent)",
-DlgLnkTargetSelf : "Stessa finestra (_self)",
-DlgLnkTargetTop : "Finestra superiore (_top)",
-DlgLnkTargetFrameName : "Nome del riquadro di destinazione",
-DlgLnkPopWinName : "Nome finestra popup",
-DlgLnkPopWinFeat : "Caratteristiche finestra popup",
-DlgLnkPopResize : "Ridimensionabile",
-DlgLnkPopLocation : "Barra degli indirizzi",
-DlgLnkPopMenu : "Barra del menu",
-DlgLnkPopScroll : "Barre di scorrimento",
-DlgLnkPopStatus : "Barra di stato",
-DlgLnkPopToolbar : "Barra degli strumenti",
-DlgLnkPopFullScrn : "A tutto schermo (IE)",
-DlgLnkPopDependent : "Dipendente (Netscape)",
-DlgLnkPopWidth : "Larghezza",
-DlgLnkPopHeight : "Altezza",
-DlgLnkPopLeft : "Posizione da sinistra",
-DlgLnkPopTop : "Posizione dall'alto",
-
-DlnLnkMsgNoUrl : "Devi inserire l'URL del collegamento",
-DlnLnkMsgNoEMail : "Devi inserire un'indirizzo e-mail",
-DlnLnkMsgNoAnchor : "Devi selezionare un'ancora",
-DlnLnkMsgInvPopName : "Il nome del popup deve iniziare con una lettera, e non può contenere spazi",
-
-// Color Dialog
-DlgColorTitle : "Seleziona colore",
-DlgColorBtnClear : "Vuota",
-DlgColorHighlight : "Evidenziato",
-DlgColorSelected : "Selezionato",
-
-// Smiley Dialog
-DlgSmileyTitle : "Inserisci emoticon",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Seleziona carattere speciale",
-
-// Table Dialog
-DlgTableTitle : "Proprietà tabella",
-DlgTableRows : "Righe",
-DlgTableColumns : "Colonne",
-DlgTableBorder : "Dimensione bordo",
-DlgTableAlign : "Allineamento",
-DlgTableAlignNotSet : "<non impostato>",
-DlgTableAlignLeft : "Sinistra",
-DlgTableAlignCenter : "Centrato",
-DlgTableAlignRight : "Destra",
-DlgTableWidth : "Larghezza",
-DlgTableWidthPx : "pixel",
-DlgTableWidthPc : "percento",
-DlgTableHeight : "Altezza",
-DlgTableCellSpace : "Spaziatura celle",
-DlgTableCellPad : "Padding celle",
-DlgTableCaption : "Intestazione",
-DlgTableSummary : "Indice",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Proprietà cella",
-DlgCellWidth : "Larghezza",
-DlgCellWidthPx : "pixel",
-DlgCellWidthPc : "percento",
-DlgCellHeight : "Altezza",
-DlgCellWordWrap : "A capo automatico",
-DlgCellWordWrapNotSet : "<non impostato>",
-DlgCellWordWrapYes : "Si",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "Allineamento orizzontale",
-DlgCellHorAlignNotSet : "<non impostato>",
-DlgCellHorAlignLeft : "Sinistra",
-DlgCellHorAlignCenter : "Centrato",
-DlgCellHorAlignRight: "Destra",
-DlgCellVerAlign : "Allineamento verticale",
-DlgCellVerAlignNotSet : "<non impostato>",
-DlgCellVerAlignTop : "In Alto",
-DlgCellVerAlignMiddle : "Centrato",
-DlgCellVerAlignBottom : "In Basso",
-DlgCellVerAlignBaseline : "Linea base",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Righe occupate",
-DlgCellCollSpan : "Colonne occupate",
-DlgCellBackColor : "Colore sfondo",
-DlgCellBorderColor : "Colore bordo",
-DlgCellBtnSelect : "Scegli...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Cerca e Sostituisci",
-
-// Find Dialog
-DlgFindTitle : "Trova",
-DlgFindFindBtn : "Trova",
-DlgFindNotFoundMsg : "L'elemento cercato non è stato trovato.",
-
-// Replace Dialog
-DlgReplaceTitle : "Sostituisci",
-DlgReplaceFindLbl : "Trova:",
-DlgReplaceReplaceLbl : "Sostituisci con:",
-DlgReplaceCaseChk : "Maiuscole/minuscole",
-DlgReplaceReplaceBtn : "Sostituisci",
-DlgReplaceReplAllBtn : "Sostituisci tutto",
-DlgReplaceWordChk : "Solo parole intere",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).",
-PasteErrorCopy : "Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).",
-
-PasteAsText : "Incolla come testo semplice",
-PasteFromWord : "Incolla da Word",
-
-DlgPasteMsg2 : "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl+V</STRONG>) e premi <STRONG>OK</STRONG>.",
-DlgPasteSec : "A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.",
-DlgPasteIgnoreFont : "Ignora le definizioni di Font",
-DlgPasteRemoveStyles : "Rimuovi le definizioni di Stile",
-
-// Color Picker
-ColorAutomatic : "Automatico",
-ColorMoreColors : "Altri colori...",
-
-// Document Properties
-DocProps : "Proprietà del Documento",
-
-// Anchor Dialog
-DlgAnchorTitle : "Proprietà ancora",
-DlgAnchorName : "Nome ancora",
-DlgAnchorErrorName : "Inserici il nome dell'ancora",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Non nel dizionario",
-DlgSpellChangeTo : "Cambia in",
-DlgSpellBtnIgnore : "Ignora",
-DlgSpellBtnIgnoreAll : "Ignora tutto",
-DlgSpellBtnReplace : "Cambia",
-DlgSpellBtnReplaceAll : "Cambia tutto",
-DlgSpellBtnUndo : "Annulla",
-DlgSpellNoSuggestions : "- Nessun suggerimento -",
-DlgSpellProgress : "Controllo ortografico in corso",
-DlgSpellNoMispell : "Controllo ortografico completato: nessun errore trovato",
-DlgSpellNoChanges : "Controllo ortografico completato: nessuna parola cambiata",
-DlgSpellOneChange : "Controllo ortografico completato: 1 parola cambiata",
-DlgSpellManyChanges : "Controllo ortografico completato: %1 parole cambiate",
-
-IeSpellDownload : "Contollo ortografico non installato. Lo vuoi scaricare ora?",
-
-// Button Dialog
-DlgButtonText : "Testo (Value)",
-DlgButtonType : "Tipo",
-DlgButtonTypeBtn : "Bottone",
-DlgButtonTypeSbm : "Invio",
-DlgButtonTypeRst : "Annulla",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nome",
-DlgCheckboxValue : "Valore",
-DlgCheckboxSelected : "Selezionato",
-
-// Form Dialog
-DlgFormName : "Nome",
-DlgFormAction : "Azione",
-DlgFormMethod : "Metodo",
-
-// Select Field Dialog
-DlgSelectName : "Nome",
-DlgSelectValue : "Valore",
-DlgSelectSize : "Dimensione",
-DlgSelectLines : "righe",
-DlgSelectChkMulti : "Permetti selezione multipla",
-DlgSelectOpAvail : "Opzioni disponibili",
-DlgSelectOpText : "Testo",
-DlgSelectOpValue : "Valore",
-DlgSelectBtnAdd : "Aggiungi",
-DlgSelectBtnModify : "Modifica",
-DlgSelectBtnUp : "Su",
-DlgSelectBtnDown : "Gi",
-DlgSelectBtnSetValue : "Imposta come predefinito",
-DlgSelectBtnDelete : "Rimuovi",
-
-// Textarea Dialog
-DlgTextareaName : "Nome",
-DlgTextareaCols : "Colonne",
-DlgTextareaRows : "Righe",
-
-// Text Field Dialog
-DlgTextName : "Nome",
-DlgTextValue : "Valore",
-DlgTextCharWidth : "Larghezza",
-DlgTextMaxChars : "Numero massimo di caratteri",
-DlgTextType : "Tipo",
-DlgTextTypeText : "Testo",
-DlgTextTypePass : "Password",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nome",
-DlgHiddenValue : "Valore",
-
-// Bulleted List Dialog
-BulletedListProp : "Proprietà lista puntata",
-NumberedListProp : "Proprietà lista numerata",
-DlgLstStart : "Inizio",
-DlgLstType : "Tipo",
-DlgLstTypeCircle : "Tondo",
-DlgLstTypeDisc : "Disco",
-DlgLstTypeSquare : "Quadrato",
-DlgLstTypeNumbers : "Numeri (1, 2, 3)",
-DlgLstTypeLCase : "Caratteri minuscoli (a, b, c)",
-DlgLstTypeUCase : "Caratteri maiuscoli (A, B, C)",
-DlgLstTypeSRoman : "Numeri Romani minuscoli (i, ii, iii)",
-DlgLstTypeLRoman : "Numeri Romani maiuscoli (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Genarale",
-DlgDocBackTab : "Sfondo",
-DlgDocColorsTab : "Colori e margini",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Titolo pagina",
-DlgDocLangDir : "Direzione scrittura",
-DlgDocLangDirLTR : "Da Sinistra a Destra (LTR)",
-DlgDocLangDirRTL : "Da Destra a Sinistra (RTL)",
-DlgDocLangCode : "Codice Lingua",
-DlgDocCharSet : "Set di caretteri",
-DlgDocCharSetCE : "Europa Centrale",
-DlgDocCharSetCT : "Cinese Tradizionale (Big5)",
-DlgDocCharSetCR : "Cirillico",
-DlgDocCharSetGR : "Greco",
-DlgDocCharSetJP : "Giapponese",
-DlgDocCharSetKR : "Coreano",
-DlgDocCharSetTR : "Turco",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Europa Occidentale",
-DlgDocCharSetOther : "Altro set di caretteri",
-
-DlgDocDocType : "Intestazione DocType",
-DlgDocDocTypeOther : "Altra intestazione DocType",
-DlgDocIncXHTML : "Includi dichiarazione XHTML",
-DlgDocBgColor : "Colore di sfondo",
-DlgDocBgImage : "Immagine di sfondo",
-DlgDocBgNoScroll : "Sfondo fissato",
-DlgDocCText : "Testo",
-DlgDocCLink : "Collegamento",
-DlgDocCVisited : "Collegamento visitato",
-DlgDocCActive : "Collegamento attivo",
-DlgDocMargins : "Margini",
-DlgDocMaTop : "In Alto",
-DlgDocMaLeft : "A Sinistra",
-DlgDocMaRight : "A Destra",
-DlgDocMaBottom : "In Basso",
-DlgDocMeIndex : "Chiavi di indicizzazione documento (separate da virgola)",
-DlgDocMeDescr : "Descrizione documento",
-DlgDocMeAuthor : "Autore",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Anteprima",
-
-// Templates Dialog
-Templates : "Modelli",
-DlgTemplatesTitle : "Contenuto dei modelli",
-DlgTemplatesSelMsg : "Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",
-DlgTemplatesLoading : "Caricamento modelli in corso. Attendere prego...",
-DlgTemplatesNoTpl : "(Nessun modello definito)",
-DlgTemplatesReplace : "Cancella il contenuto corrente",
-
-// About Dialog
-DlgAboutAboutTab : "Informazioni",
-DlgAboutBrowserInfoTab : "Informazioni Browser",
-DlgAboutLicenseTab : "Licenza",
-DlgAboutVersion : "versione",
-DlgAboutInfo : "Per maggiori informazioni visitare",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ja.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ja.js
deleted file mode 100644
index b4a663544..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ja.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Japanese language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "ツールãƒãƒ¼ã‚’éš ã™",
-ToolbarExpand : "ツールãƒãƒ¼ã‚’表示",
-
-// Toolbar Items and Context Menu
-Save : "ä¿å­˜",
-NewPage : "æ–°ã—ã„ページ",
-Preview : "プレビュー",
-Cut : "切りå–り",
-Copy : "コピー",
-Paste : "貼り付ã‘",
-PasteText : "プレーンテキスト貼り付ã‘",
-PasteWord : "ワード文章ã‹ã‚‰è²¼ã‚Šä»˜ã‘",
-Print : "å°åˆ·",
-SelectAll : "ã™ã¹ã¦é¸æŠž",
-RemoveFormat : "フォーマット削除",
-InsertLinkLbl : "リンク",
-InsertLink : "リンク挿入/編集",
-RemoveLink : "リンク削除",
-VisitLink : "リンクを開ã",
-Anchor : "アンカー挿入/編集",
-AnchorDelete : "アンカー削除",
-InsertImageLbl : "イメージ",
-InsertImage : "イメージ挿入/編集",
-InsertFlashLbl : "Flash",
-InsertFlash : "Flash挿入/編集",
-InsertTableLbl : "テーブル",
-InsertTable : "テーブル挿入/編集",
-InsertLineLbl : "ライン",
-InsertLine : "横罫線",
-InsertSpecialCharLbl: "特殊文字",
-InsertSpecialChar : "特殊文字挿入",
-InsertSmileyLbl : "絵文字",
-InsertSmiley : "絵文字挿入",
-About : "FCKeditorヘルプ",
-Bold : "太字",
-Italic : "斜体",
-Underline : "下線",
-StrikeThrough : "æ‰“ã¡æ¶ˆã—ç·š",
-Subscript : "æ·»ãˆå­—",
-Superscript : "ä¸Šä»˜ãæ–‡å­—",
-LeftJustify : "å·¦æƒãˆ",
-CenterJustify : "中央æƒãˆ",
-RightJustify : "峿ƒãˆ",
-BlockJustify : "両端æƒãˆ",
-DecreaseIndent : "インデント解除",
-IncreaseIndent : "インデント",
-Blockquote : "ブロック引用",
-CreateDiv : "Div 作æˆ",
-EditDiv : "Div 編集",
-DeleteDiv : "Div 削除",
-Undo : "å…ƒã«æˆ»ã™",
-Redo : "やり直ã—",
-NumberedListLbl : "段è½ç•ªå·",
-NumberedList : "段è½ç•ªå·ã®è¿½åŠ /削除",
-BulletedListLbl : "ç®‡æ¡æ›¸ã",
-BulletedList : "ç®‡æ¡æ›¸ãã®è¿½åŠ /削除",
-ShowTableBorders : "テーブルボーダー表示",
-ShowDetails : "詳細表示",
-Style : "スタイル",
-FontFormat : "フォーマット",
-Font : "フォント",
-FontSize : "サイズ",
-TextColor : "テキスト色",
-BGColor : "背景色",
-Source : "ソース",
-Find : "検索",
-Replace : "ç½®ãæ›ãˆ",
-SpellCheck : "スペルãƒã‚§ãƒƒã‚¯",
-UniversalKeyboard : "ユニãƒãƒ¼ã‚µãƒ«ãƒ»ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰",
-PageBreakLbl : "改ページ",
-PageBreak : "改ページ挿入",
-
-Form : "フォーム",
-Checkbox : "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹",
-RadioButton : "ラジオボタン",
-TextField : "1行テキスト",
-Textarea : "テキストエリア",
-HiddenField : "ä¸å¯è¦–フィールド",
-Button : "ボタン",
-SelectionField : "é¸æŠžãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰",
-ImageButton : "ç”»åƒãƒœã‚¿ãƒ³",
-
-FitWindow : "エディタサイズを最大ã«ã—ã¾ã™",
-ShowBlocks : "ブロック表示",
-
-// Context Menu
-EditLink : "リンク編集",
-CellCM : "セル",
-RowCM : "行",
-ColumnCM : "カラム",
-InsertRowAfter : "列ã®å¾Œã«æŒ¿å…¥",
-InsertRowBefore : "列ã®å‰ã«æŒ¿å…¥",
-DeleteRows : "行削除",
-InsertColumnAfter : "カラムã®å¾Œã«æŒ¿å…¥",
-InsertColumnBefore : "カラムã®å‰ã«æŒ¿å…¥",
-DeleteColumns : "列削除",
-InsertCellAfter : "セルã®å¾Œã«æŒ¿å…¥",
-InsertCellBefore : "セルã®å‰ã«æŒ¿å…¥",
-DeleteCells : "セル削除",
-MergeCells : "セルçµåˆ",
-MergeRight : "å³ã«çµåˆ",
-MergeDown : "下ã«çµåˆ",
-HorizontalSplitCell : "セルを水平方å‘分割",
-VerticalSplitCell : "セルを垂直方å‘ã«åˆ†å‰²",
-TableDelete : "テーブル削除",
-CellProperties : "セル プロパティ",
-TableProperties : "テーブル プロパティ",
-ImageProperties : "イメージ プロパティ",
-FlashProperties : "Flash プロパティ",
-
-AnchorProp : "アンカー プロパティ",
-ButtonProp : "ボタン プロパティ",
-CheckboxProp : "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ プロパティ",
-HiddenFieldProp : "ä¸å¯è¦–フィールド プロパティ",
-RadioButtonProp : "ラジオボタン プロパティ",
-ImageButtonProp : "ç”»åƒãƒœã‚¿ãƒ³ プロパティ",
-TextFieldProp : "1行テキスト プロパティ",
-SelectionFieldProp : "é¸æŠžãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ プロパティ",
-TextareaProp : "テキストエリア プロパティ",
-FormProp : "フォーム プロパティ",
-
-FontFormats : "標準;書å¼ä»˜ã;アドレス;見出㗠1;見出㗠2;見出㗠3;見出㗠4;見出㗠5;見出㗠6;標準 (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML処ç†ä¸­. ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„...",
-Done : "完了",
-PasteWordConfirm : "貼り付ã‘を行ã†ãƒ†ã‚­ã‚¹ãƒˆã¯ã€ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰ã‚³ãƒ”ーã•れよã†ã¨ã—ã¦ã„ã¾ã™ã€‚貼り付ã‘ã‚‹å‰ã«ã‚¯ãƒªãƒ¼ãƒ‹ãƒ³ã‚°ã‚’行ã„ã¾ã™ã‹ï¼Ÿ",
-NotCompatiblePaste : "ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆãƒ»ã‚¨ã‚¯ã‚¹ãƒ—ローラーãƒãƒ¼ã‚¸ãƒ§ãƒ³5.5以上ã§åˆ©ç”¨å¯èƒ½ã§ã™ã€‚クリーニングã—ãªã„ã§è²¼ã‚Šä»˜ã‘を行ã„ã¾ã™ã‹ï¼Ÿ",
-UnknownToolbarItem : "未知ã®ãƒ„ールãƒãƒ¼é …ç›® \"%1\"",
-UnknownCommand : "未知ã®ã‚³ãƒžãƒ³ãƒ‰å \"%1\"",
-NotImplemented : "コマンドã¯ã‚¤ãƒ³ãƒ—リメントã•れã¾ã›ã‚“ã§ã—ãŸã€‚",
-UnknownToolbarSet : "ツールãƒãƒ¼è¨­å®š \"%1\" 存在ã—ã¾ã›ã‚“。",
-NoActiveX : "エラーã€è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãªã©ãŒç™ºç”Ÿã—ãŸå ´åˆã€ãƒ–ラウザーã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®ã„ãã¤ã‹ã®æ©Ÿèƒ½ãŒåˆ¶é™ã•れã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚セキュリティ設定ã®ã‚ªãƒ—ションã§\"ActiveXコントロールã¨ãƒ—ラグインã®å®Ÿè¡Œ\"を有効ã«ã™ã‚‹ã«ã—ã¦ãã ã•ã„。",
-BrowseServerBlocked : "サーãƒãƒ¼ãƒ–ラウザーを開ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãƒãƒƒãƒ—アップ・ブロック機能ãŒç„¡åйã«ãªã£ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。",
-DialogBlocked : "ダイアログウィンドウを開ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãƒãƒƒãƒ—アップ・ブロック機能ãŒç„¡åйã«ãªã£ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。",
-VisitLinkBlocked : "æ–°ã—ã„ウィンドウを開ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãƒãƒƒãƒ—アップ・ブロック機能ãŒç„¡åйã«ãªã£ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "キャンセル",
-DlgBtnClose : "é–‰ã˜ã‚‹",
-DlgBtnBrowseServer : "サーãƒãƒ¼ãƒ–ラウザー",
-DlgAdvancedTag : "高度ãªè¨­å®š",
-DlgOpOther : "<ãã®ä»–>",
-DlgInfoTab : "情報",
-DlgAlertUrl : "URLを挿入ã—ã¦ãã ã•ã„",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ãªã—>",
-DlgGenId : "Id",
-DlgGenLangDir : "æ–‡å­—è¡¨è¨˜ã®æ–¹å‘",
-DlgGenLangDirLtr : "å·¦ã‹ã‚‰å³ (LTR)",
-DlgGenLangDirRtl : "å³ã‹ã‚‰å·¦ (RTL)",
-DlgGenLangCode : "言語コード",
-DlgGenAccessKey : "アクセスキー",
-DlgGenName : "Name属性",
-DlgGenTabIndex : "タブインデックス",
-DlgGenLongDescr : "longdesc属性(長文説明)",
-DlgGenClass : "スタイルシートクラス",
-DlgGenTitle : "Title属性",
-DlgGenContType : "Content Type属性",
-DlgGenLinkCharset : "リンクcharset属性",
-DlgGenStyle : "スタイルシート",
-
-// Image Dialog
-DlgImgTitle : "イメージ プロパティ",
-DlgImgInfoTab : "イメージ 情報",
-DlgImgBtnUpload : "サーãƒãƒ¼ã«é€ä¿¡",
-DlgImgURL : "URL",
-DlgImgUpload : "アップロード",
-DlgImgAlt : "代替テキスト",
-DlgImgWidth : "å¹…",
-DlgImgHeight : "高ã•",
-DlgImgLockRatio : "ロック比率",
-DlgBtnResetSize : "サイズリセット",
-DlgImgBorder : "ボーダー",
-DlgImgHSpace : "横間隔",
-DlgImgVSpace : "縦間隔",
-DlgImgAlign : "行æƒãˆ",
-DlgImgAlignLeft : "å·¦",
-DlgImgAlignAbsBottom: "下部(絶対的)",
-DlgImgAlignAbsMiddle: "中央(絶対的)",
-DlgImgAlignBaseline : "ベースライン",
-DlgImgAlignBottom : "下",
-DlgImgAlignMiddle : "中央",
-DlgImgAlignRight : "å³",
-DlgImgAlignTextTop : "テキスト上部",
-DlgImgAlignTop : "上",
-DlgImgPreview : "プレビュー",
-DlgImgAlertUrl : "イメージã®URLを入力ã—ã¦ãã ã•ã„。",
-DlgImgLinkTab : "リンク",
-
-// Flash Dialog
-DlgFlashTitle : "Flash プロパティ",
-DlgFlashChkPlay : "å†ç”Ÿ",
-DlgFlashChkLoop : "ループå†ç”Ÿ",
-DlgFlashChkMenu : "Flashメニューå¯èƒ½",
-DlgFlashScale : "拡大縮å°è¨­å®š",
-DlgFlashScaleAll : "ã™ã¹ã¦è¡¨ç¤º",
-DlgFlashScaleNoBorder : "外ãŒè¦‹ãˆãªã„æ§˜ã«æ‹¡å¤§",
-DlgFlashScaleFit : "上下左å³ã«ãƒ•ィット",
-
-// Link Dialog
-DlgLnkWindowTitle : "ãƒã‚¤ãƒ‘ーリンク",
-DlgLnkInfoTab : "ãƒã‚¤ãƒ‘ーリンク 情報",
-DlgLnkTargetTab : "ターゲット",
-
-DlgLnkType : "リンクタイプ",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "ã“ã®ãƒšãƒ¼ã‚¸ã®ã‚¢ãƒ³ã‚«ãƒ¼",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "プロトコル",
-DlgLnkProtoOther : "<ãã®ä»–>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "ã‚¢ãƒ³ã‚«ãƒ¼ã‚’é¸æŠž",
-DlgLnkAnchorByName : "アンカーå",
-DlgLnkAnchorById : "エレメントID",
-DlgLnkNoAnchors : "(ドキュメントã«ãŠã„ã¦åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒ³ã‚«ãƒ¼ã¯ã‚りã¾ã›ã‚“。)",
-DlgLnkEMail : "E-Mail アドレス",
-DlgLnkEMailSubject : "ä»¶å",
-DlgLnkEMailBody : "本文",
-DlgLnkUpload : "アップロード",
-DlgLnkBtnUpload : "サーãƒãƒ¼ã«é€ä¿¡",
-
-DlgLnkTarget : "ターゲット",
-DlgLnkTargetFrame : "<フレーム>",
-DlgLnkTargetPopup : "<ãƒãƒƒãƒ—アップウィンドウ>",
-DlgLnkTargetBlank : "æ–°ã—ã„ウィンドウ (_blank)",
-DlgLnkTargetParent : "親ウィンドウ (_parent)",
-DlgLnkTargetSelf : "åŒã˜ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ (_self)",
-DlgLnkTargetTop : "最上ä½ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ (_top)",
-DlgLnkTargetFrameName : "目的ã®ãƒ•レームå",
-DlgLnkPopWinName : "ãƒãƒƒãƒ—アップウィンドウå",
-DlgLnkPopWinFeat : "ãƒãƒƒãƒ—アップウィンドウ特徴",
-DlgLnkPopResize : "リサイズå¯èƒ½",
-DlgLnkPopLocation : "ロケーションãƒãƒ¼",
-DlgLnkPopMenu : "メニューãƒãƒ¼",
-DlgLnkPopScroll : "スクロールãƒãƒ¼",
-DlgLnkPopStatus : "ステータスãƒãƒ¼",
-DlgLnkPopToolbar : "ツールãƒãƒ¼",
-DlgLnkPopFullScrn : "全画é¢ãƒ¢ãƒ¼ãƒ‰(IE)",
-DlgLnkPopDependent : "é–‹ã„ãŸã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«é€£å‹•ã—ã¦é–‰ã˜ã‚‹ (Netscape)",
-DlgLnkPopWidth : "å¹…",
-DlgLnkPopHeight : "高ã•",
-DlgLnkPopLeft : "左端ã‹ã‚‰ã®åº§æ¨™ã§æŒ‡å®š",
-DlgLnkPopTop : "上端ã‹ã‚‰ã®åº§æ¨™ã§æŒ‡å®š",
-
-DlnLnkMsgNoUrl : "リンクURLを入力ã—ã¦ãã ã•ã„。",
-DlnLnkMsgNoEMail : "メールアドレスを入力ã—ã¦ãã ã•ã„。",
-DlnLnkMsgNoAnchor : "ã‚¢ãƒ³ã‚«ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。",
-DlnLnkMsgInvPopName : "ãƒãƒƒãƒ—・アップåã¯è‹±å­—ã§å§‹ã¾ã‚‹æ–‡å­—ã§æŒ‡å®šã—ã¦ãã ã„。ãƒãƒƒãƒ—・アップåã«ã‚¹ãƒšãƒ¼ã‚¹ã¯å«ã‚ã¾ã›ã‚“",
-
-// Color Dialog
-DlgColorTitle : "è‰²é¸æŠž",
-DlgColorBtnClear : "クリア",
-DlgColorHighlight : "ãƒã‚¤ãƒ©ã‚¤ãƒˆ",
-DlgColorSelected : "é¸æŠžè‰²",
-
-// Smiley Dialog
-DlgSmileyTitle : "顔文字挿入",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "ç‰¹æ®Šæ–‡å­—é¸æŠž",
-
-// Table Dialog
-DlgTableTitle : "テーブル プロパティ",
-DlgTableRows : "行",
-DlgTableColumns : "列",
-DlgTableBorder : "ボーダーサイズ",
-DlgTableAlign : "ã‚­ãƒ£ãƒ—ã‚·ãƒ§ãƒ³ã®æ•´åˆ—",
-DlgTableAlignNotSet : "<ãªã—>",
-DlgTableAlignLeft : "å·¦",
-DlgTableAlignCenter : "中央",
-DlgTableAlignRight : "å³",
-DlgTableWidth : "テーブル幅",
-DlgTableWidthPx : "ピクセル",
-DlgTableWidthPc : "パーセント",
-DlgTableHeight : "テーブル高ã•",
-DlgTableCellSpace : "セル内余白",
-DlgTableCellPad : "セル内間隔",
-DlgTableCaption : "キャプショï¾",
-DlgTableSummary : "テーブル目的/構造",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "セル プロパティ",
-DlgCellWidth : "å¹…",
-DlgCellWidthPx : "ピクセル",
-DlgCellWidthPc : "パーセント",
-DlgCellHeight : "高ã•",
-DlgCellWordWrap : "折り返ã—",
-DlgCellWordWrapNotSet : "<ãªã—>",
-DlgCellWordWrapYes : "Yes",
-DlgCellWordWrapNo : "No",
-DlgCellHorAlign : "ã‚»ãƒ«æ¨ªã®æ•´åˆ—",
-DlgCellHorAlignNotSet : "<ãªã—>",
-DlgCellHorAlignLeft : "å·¦",
-DlgCellHorAlignCenter : "中央",
-DlgCellHorAlignRight: "å³",
-DlgCellVerAlign : "ã‚»ãƒ«ç¸¦ã®æ•´åˆ—",
-DlgCellVerAlignNotSet : "<ãªã—>",
-DlgCellVerAlignTop : "上",
-DlgCellVerAlignMiddle : "中央",
-DlgCellVerAlignBottom : "下",
-DlgCellVerAlignBaseline : "ベースライン",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "縦幅(行数)",
-DlgCellCollSpan : "横幅(列数)",
-DlgCellBackColor : "背景色",
-DlgCellBorderColor : "ボーダーカラー",
-DlgCellBtnSelect : "é¸æŠž...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "検索ã—ã¦ç½®æ›",
-
-// Find Dialog
-DlgFindTitle : "検索",
-DlgFindFindBtn : "検索",
-DlgFindNotFoundMsg : "指定ã•ã‚ŒãŸæ–‡å­—列ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚",
-
-// Replace Dialog
-DlgReplaceTitle : "ç½®ãæ›ãˆ",
-DlgReplaceFindLbl : "検索ã™ã‚‹æ–‡å­—列:",
-DlgReplaceReplaceLbl : "ç½®æ›ãˆã™ã‚‹æ–‡å­—列:",
-DlgReplaceCaseChk : "部分一致",
-DlgReplaceReplaceBtn : "ç½®æ›ãˆ",
-DlgReplaceReplAllBtn : "ã™ã¹ã¦ç½®æ›ãˆ",
-DlgReplaceWordChk : "å˜èªžå˜ä½ã§ä¸€è‡´",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ブラウザーã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®åˆ‡ã‚Šå–りæ“作ãŒè‡ªå‹•ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã®(Ctrl+X)を使用ã—ã¦ãã ã•ã„。",
-PasteErrorCopy : "ブラウザーã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®ã‚³ãƒ”ーæ“作ãŒè‡ªå‹•ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã®(Ctrl+C)を使用ã—ã¦ãã ã•ã„。",
-
-PasteAsText : "プレーンテキスト貼り付ã‘",
-PasteFromWord : "ワード文章ã‹ã‚‰è²¼ã‚Šä»˜ã‘",
-
-DlgPasteMsg2 : "キーボード(<STRONG>Ctrl+V</STRONG>)を使用ã—ã¦ã€æ¬¡ã®å…¥åŠ›ã‚¨ãƒªã‚¢å†…ã§è²¼ã£ã¦ã€<STRONG>OK</STRONG>を押ã—ã¦ãã ã•ã„。",
-DlgPasteSec : "ブラウザã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã€ã‚¨ãƒ‡ã‚£ã‚¿ã¯ã‚¯ãƒªãƒƒãƒ—ボード・データã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¯è²¼ã‚Šä»˜ã‘æ“作を行ã†åº¦ã«è¡¨ç¤ºã•れã¾ã™ã€‚",
-DlgPasteIgnoreFont : "Fontã‚¿ã‚°ã®Face属性を無視ã—ã¾ã™ã€‚",
-DlgPasteRemoveStyles : "スタイル定義を削除ã—ã¾ã™ã€‚",
-
-// Color Picker
-ColorAutomatic : "自動",
-ColorMoreColors : "ãã®ä»–ã®è‰²...",
-
-// Document Properties
-DocProps : "文書 プロパティ",
-
-// Anchor Dialog
-DlgAnchorTitle : "アンカー プロパティ",
-DlgAnchorName : "アンカーå",
-DlgAnchorErrorName : "アンカーåã‚’å¿…ãšå…¥åŠ›ã—ã¦ãã ã•ã„。",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "辞書ã«ã‚りã¾ã›ã‚“",
-DlgSpellChangeTo : "変更",
-DlgSpellBtnIgnore : "無視",
-DlgSpellBtnIgnoreAll : "ã™ã¹ã¦ç„¡è¦–",
-DlgSpellBtnReplace : "ç½®æ›",
-DlgSpellBtnReplaceAll : "ã™ã¹ã¦ç½®æ›",
-DlgSpellBtnUndo : "やり直ã—",
-DlgSpellNoSuggestions : "- 該当ãªã— -",
-DlgSpellProgress : "スペルãƒã‚§ãƒƒã‚¯å‡¦ç†ä¸­...",
-DlgSpellNoMispell : "スペルãƒã‚§ãƒƒã‚¯å®Œäº†: スペルã®èª¤ã‚Šã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ",
-DlgSpellNoChanges : "スペルãƒã‚§ãƒƒã‚¯å®Œäº†: 語å¥ã¯å¤‰æ›´ã•れã¾ã›ã‚“ã§ã—ãŸ",
-DlgSpellOneChange : "スペルãƒã‚§ãƒƒã‚¯å®Œäº†: 1語å¥å¤‰æ›´ã•れã¾ã—ãŸ",
-DlgSpellManyChanges : "スペルãƒã‚§ãƒƒã‚¯å®Œäº†: %1 語å¥å¤‰æ›´ã•れã¾ã—ãŸ",
-
-IeSpellDownload : "スペルãƒã‚§ãƒƒã‚«ãƒ¼ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“。今ã™ãダウンロードã—ã¾ã™ã‹?",
-
-// Button Dialog
-DlgButtonText : "テキスト (値)",
-DlgButtonType : "タイプ",
-DlgButtonTypeBtn : "ボタン",
-DlgButtonTypeSbm : "é€ä¿¡",
-DlgButtonTypeRst : "リセット",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "åå‰",
-DlgCheckboxValue : "値",
-DlgCheckboxSelected : "é¸æŠžæ¸ˆã¿",
-
-// Form Dialog
-DlgFormName : "フォームå",
-DlgFormAction : "アクション",
-DlgFormMethod : "メソッド",
-
-// Select Field Dialog
-DlgSelectName : "åå‰",
-DlgSelectValue : "値",
-DlgSelectSize : "サイズ",
-DlgSelectLines : "行",
-DlgSelectChkMulti : "è¤‡æ•°é …ç›®é¸æŠžã‚’è¨±å¯",
-DlgSelectOpAvail : "利用å¯èƒ½ãªã‚ªãƒ—ション",
-DlgSelectOpText : "é¸æŠžé …ç›®å",
-DlgSelectOpValue : "é¸æŠžé …ç›®å€¤",
-DlgSelectBtnAdd : "追加",
-DlgSelectBtnModify : "編集",
-DlgSelectBtnUp : "上ã¸",
-DlgSelectBtnDown : "下ã¸",
-DlgSelectBtnSetValue : "é¸æŠžã—ãŸå€¤ã‚’設定",
-DlgSelectBtnDelete : "削除",
-
-// Textarea Dialog
-DlgTextareaName : "åå‰",
-DlgTextareaCols : "列",
-DlgTextareaRows : "行",
-
-// Text Field Dialog
-DlgTextName : "åå‰",
-DlgTextValue : "値",
-DlgTextCharWidth : "サイズ",
-DlgTextMaxChars : "最大長",
-DlgTextType : "タイプ",
-DlgTextTypeText : "テキスト",
-DlgTextTypePass : "パスワード入力",
-
-// Hidden Field Dialog
-DlgHiddenName : "åå‰",
-DlgHiddenValue : "値",
-
-// Bulleted List Dialog
-BulletedListProp : "ç®‡æ¡æ›¸ã プロパティ",
-NumberedListProp : "段è½ç•ªå· プロパティ",
-DlgLstStart : "開始文字",
-DlgLstType : "タイプ",
-DlgLstTypeCircle : "白丸",
-DlgLstTypeDisc : "黒丸",
-DlgLstTypeSquare : "四角",
-DlgLstTypeNumbers : "アラビア数字 (1, 2, 3)",
-DlgLstTypeLCase : "è‹±å­—å°æ–‡å­— (a, b, c)",
-DlgLstTypeUCase : "英字大文字 (A, B, C)",
-DlgLstTypeSRoman : "ãƒ­ãƒ¼ãƒžæ•°å­—å°æ–‡å­— (i, ii, iii)",
-DlgLstTypeLRoman : "ローマ数字大文字 (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "全般",
-DlgDocBackTab : "背景",
-DlgDocColorsTab : "色ã¨ãƒžãƒ¼ã‚¸ãƒ³",
-DlgDocMetaTab : "メタデータ",
-
-DlgDocPageTitle : "ページタイトル",
-DlgDocLangDir : "è¨€èªžæ–‡å­—è¡¨è¨˜ã®æ–¹å‘",
-DlgDocLangDirLTR : "å·¦ã‹ã‚‰å³ã«è¡¨è¨˜(LTR)",
-DlgDocLangDirRTL : "å³ã‹ã‚‰å·¦ã«è¡¨è¨˜(RTL)",
-DlgDocLangCode : "言語コード",
-DlgDocCharSet : "文字セット符å·åŒ–",
-DlgDocCharSetCE : "Central European",
-DlgDocCharSetCT : "Chinese Traditional (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Greek",
-DlgDocCharSetJP : "Japanese",
-DlgDocCharSetKR : "Korean",
-DlgDocCharSetTR : "Turkish",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "ä»–ã®æ–‡å­—セット符å·åŒ–",
-
-DlgDocDocType : "文書タイプヘッダー",
-DlgDocDocTypeOther : "ãã®ä»–文書タイプヘッダー",
-DlgDocIncXHTML : "XHTML宣言をインクルード",
-DlgDocBgColor : "背景色",
-DlgDocBgImage : "èƒŒæ™¯ç”»åƒ URL",
-DlgDocBgNoScroll : "スクロールã—ãªã„背景",
-DlgDocCText : "テキスト",
-DlgDocCLink : "リンク",
-DlgDocCVisited : "アクセス済ã¿ãƒªãƒ³ã‚¯",
-DlgDocCActive : "アクセス中リンク",
-DlgDocMargins : "ページ・マージン",
-DlgDocMaTop : "上部",
-DlgDocMaLeft : "å·¦",
-DlgDocMaRight : "å³",
-DlgDocMaBottom : "下部",
-DlgDocMeIndex : "文書ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰(カンマ区切り)",
-DlgDocMeDescr : "æ–‡æ›¸ã®æ¦‚è¦",
-DlgDocMeAuthor : "文書ã®ä½œè€…",
-DlgDocMeCopy : "文書ã®è‘—作権",
-DlgDocPreview : "プレビュー",
-
-// Templates Dialog
-Templates : "テンプレート(雛形)",
-DlgTemplatesTitle : "テンプレート内容",
-DlgTemplatesSelMsg : "エディターã§ä½¿ç”¨ã™ã‚‹ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。<br>(ç¾åœ¨ã®ã‚¨ãƒ‡ã‚£ã‚¿ã®å†…容ã¯å¤±ã‚れã¾ã™):",
-DlgTemplatesLoading : "テンプレート一覧読ã¿è¾¼ã¿ä¸­. ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„...",
-DlgTemplatesNoTpl : "(テンプレートãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“)",
-DlgTemplatesReplace : "ç¾åœ¨ã®ã‚¨ãƒ‡ã‚£ã‚¿ã®å†…容ã¨ç½®æ›ãˆã‚’ã—ã¾ã™",
-
-// About Dialog
-DlgAboutAboutTab : "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±",
-DlgAboutBrowserInfoTab : "ブラウザ情報",
-DlgAboutLicenseTab : "ライセンス",
-DlgAboutVersion : "ãƒãƒ¼ã‚¸ãƒ§ãƒ³",
-DlgAboutInfo : "より詳ã—ã„æƒ…å ±ã¯ã“ã¡ã‚‰ã§",
-
-// Div Dialog
-DlgDivGeneralTab : "全般",
-DlgDivAdvancedTab : "高度ãªè¨­å®š",
-DlgDivStyle : "スタイル",
-DlgDivInlineStyle : "インラインスタイル"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/km.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/km.js
deleted file mode 100644
index a52b8b04e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/km.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Khmer language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "បង្រួមរបាឧបរកណáŸ",
-ToolbarExpand : "ពង្រីករបាឧបរណáŸ",
-
-// Toolbar Items and Context Menu
-Save : "រក្សាទុក",
-NewPage : "ទំពáŸážšážáŸ’មី",
-Preview : "មើលសាកល្បង",
-Cut : "កាážáŸ‹áž™áž€",
-Copy : "ចំលងយក",
-Paste : "ចំលងដាក់",
-PasteText : "ចំលងដាក់ជាអážáŸ’ážáž”ទធម្មážáž¶",
-PasteWord : "ចំលងដាក់ពី Word",
-Print : "បោះពុម្ភ",
-SelectAll : "ជ្រើសរើសទាំងអស់",
-RemoveFormat : "លប់ចោល ការរចនា",
-InsertLinkLbl : "ឈ្នាប់",
-InsertLink : "បន្ážáŸ‚ម/កែប្រែ ឈ្នាប់",
-RemoveLink : "លប់ឈ្នាប់",
-VisitLink : "Open Link", //MISSING
-Anchor : "បន្ážáŸ‚ម/កែប្រែ យុážáŸ’កា",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "រូបភាព",
-InsertImage : "បន្ážáŸ‚ម/កែប្រែ រូបភាព",
-InsertFlashLbl : "Flash",
-InsertFlash : "បន្ážáŸ‚ម/កែប្រែ Flash",
-InsertTableLbl : "ážáž¶ážšáž¶áž„",
-InsertTable : "បន្ážáŸ‚ម/កែប្រែ ážáž¶ážšáž¶áž„",
-InsertLineLbl : "បន្ទាážáŸ‹",
-InsertLine : "បន្ážáŸ‚មបន្ទាážáŸ‹áž•្ážáŸáž€",
-InsertSpecialCharLbl: "អក្សរពិសáŸážŸ",
-InsertSpecialChar : "បន្ážáŸ‚មអក្សរពិសáŸážŸ",
-InsertSmileyLbl : "រូបភាព",
-InsertSmiley : "បន្ážáŸ‚ម រូបភាព",
-About : "អំពី FCKeditor",
-Bold : "អក្សរដិážáž’ំ",
-Italic : "អក្សរផ្ážáŸáž€",
-Underline : "ដិážáž”ន្ទាážáŸ‹áž–ីក្រោមអក្សរ",
-StrikeThrough : "ដិážáž”ន្ទាážáŸ‹áž–ាក់កណ្ážáž¶áž›áž¢áž€áŸ’សរ",
-Subscript : "អក្សរážáž¼áž…ក្រោម",
-Superscript : "អក្សរážáž¼áž…លើ",
-LeftJustify : "ážáŸ†ážšáž¹áž˜áž†áŸ’ážœáŸáž„",
-CenterJustify : "ážáŸ†ážšáž¹áž˜áž€ážŽáŸ’ážáž¶áž›",
-RightJustify : "ážáŸ†ážšáž¹áž˜ážŸáŸ’ážáž¶áŸ†",
-BlockJustify : "ážáŸ†ážšáž¹áž˜ážŸáž„ážáž¶áž„",
-DecreaseIndent : "បន្ážáž™áž€áž¶ážšáž…ូលបន្ទាážáŸ‹",
-IncreaseIndent : "បន្ážáŸ‚មការចូលបន្ទាážáŸ‹",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "សារឡើងវិញ",
-Redo : "ធ្វើឡើងវិញ",
-NumberedListLbl : "បញ្ជីជាអក្សរ",
-NumberedList : "បន្ážáŸ‚ម/លប់ បញ្ជីជាអក្សរ",
-BulletedListLbl : "បញ្ជីជារង្វង់មូល",
-BulletedList : "បន្ážáŸ‚ម/លប់ បញ្ជីជារង្វង់មូល",
-ShowTableBorders : "បង្ហាញស៊ុមážáž¶ážšáž¶áž„",
-ShowDetails : "បង្ហាញពិស្ážáž¶ážš",
-Style : "ម៉ូáž",
-FontFormat : "រចនា",
-Font : "ហ្វុង",
-FontSize : "ទំហំ",
-TextColor : "ពណ៌អក្សរ",
-BGColor : "ពណ៌ផ្ទៃážáž¶áž„ក្រោយ",
-Source : "កូáž",
-Find : "ស្វែងរក",
-Replace : "ជំនួស",
-SpellCheck : "ពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ",
-UniversalKeyboard : "ក្ážáž¶ážšáž–ុម្ភអក្សរសកល",
-PageBreakLbl : "ការផ្ážáž¶áž…់ទំពáŸážš",
-PageBreak : "បន្ážáŸ‚ម ការផ្ážáž¶áž…់ទំពáŸážš",
-
-Form : "បែបបទ",
-Checkbox : "ប្រអប់ជ្រើសរើស",
-RadioButton : "ប៉ូážáž»áž“រង្វង់មូល",
-TextField : "ជួរសរសáŸážšáž¢ážáŸ’ážáž”áž‘",
-Textarea : "ážáŸ†áž”ន់សរសáŸážšáž¢ážáŸ’ážáž”áž‘",
-HiddenField : "ជួរលាក់",
-Button : "ប៉ូážáž»áž“",
-SelectionField : "ជួរជ្រើសរើស",
-ImageButton : "ប៉ូážáž»áž“រូបភាព",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "កែប្រែឈ្នាប់",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "លប់ជួរផ្ážáŸáž€",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "លប់ជួរឈរ",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "លប់សែល",
-MergeCells : "បញ្ជូលសែល",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "លប់ážáž¶ážšáž¶áž„",
-CellProperties : "ការកំណážáŸ‹ážŸáŸ‚áž›",
-TableProperties : "ការកំណážáŸ‹ážáž¶ážšáž¶áž„",
-ImageProperties : "ការកំណážáŸ‹ážšáž¼áž”áž—áž¶áž–",
-FlashProperties : "ការកំណážáŸ‹ Flash",
-
-AnchorProp : "ការកំណážáŸ‹áž™áž»ážáŸ’កា",
-ButtonProp : "ការកំណážáŸ‹ ប៉ូážáž»áž“",
-CheckboxProp : "ការកំណážáŸ‹áž”្រអប់ជ្រើសរើស",
-HiddenFieldProp : "ការកំណážáŸ‹áž‡áž½ážšáž›áž¶áž€áŸ‹",
-RadioButtonProp : "ការកំណážáŸ‹áž”៉ូážáž»áž“រង្វង់",
-ImageButtonProp : "ការកំណážáŸ‹áž”៉ូážáž»áž“រូបភាព",
-TextFieldProp : "ការកំណážáŸ‹áž‡áž½ážšáž¢ážáŸ’ážáž”áž‘",
-SelectionFieldProp : "ការកំណážáŸ‹áž‡áž½ážšáž‡áŸ’រើសរើស",
-TextareaProp : "ការកំណážáŸ‹áž€áž“្លែងសរសáŸážšáž¢ážáŸ’ážáž”áž‘",
-FormProp : "ការកំណážáŸ‹áž”ែបបទ",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "កំពុងដំណើរការ XHTML ។ សូមរងចាំ...",
-Done : "ចប់រួចរាល់",
-PasteWordConfirm : "អážáŸ’ážáž”ទដែលលោកអ្នកបំរុងចំលងដាក់ ហាក់បីដូចជាážáŸ’រូវចំលងមកពីកម្មវិធី​Word​។ ážáž¾áž›áŸ„កអ្នកចង់សំអាážáž˜áž»áž“ចំលងអážáŸ’ážáž”ទដាក់ទáŸ?",
-NotCompatiblePaste : "ពាក្យបញ្ជានáŸáŸ‡áž”្រើបានážáŸ‚ជាមួយ Internet Explorer កំរិហ5.5 រឺ លើសនáŸáŸ‡ ។ ážáž¾áž›áŸ„កអ្នកចង់ចំលងដាក់ដោយមិនចាំបាច់សំអាážáž‘áŸ?",
-UnknownToolbarItem : "ážœážáŸ’ážáž»áž›áž¾ážšáž”ាឧបរកណ០មិនស្គាល់ \"%1\"",
-UnknownCommand : "ឈ្មោះពាក្យបញ្ជា មិនស្គាល់ \"%1\"",
-NotImplemented : "ពាក្យបញ្ជា មិនបានអនុវážáŸ’áž",
-UnknownToolbarSet : "របាឧបរកណ០\"%1\" ពុំមាន ។",
-NoActiveX : "ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž¢áž¶áž…ធ្វើអោយលោកអ្នកមិនអាចប្រើមុážáž„áž¶ážšážáŸ’លះរបស់កម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”ទនáŸáŸ‡ ។ លោកអ្នកážáŸ’រូវកំណážáŸ‹áž¢áŸ„áž™ \"ActiveX និង​កម្មវិធីជំនួយក្នុង (plug-ins)\" អោយដំណើរការ ។ លោកអ្នកអាចជួបប្រទះនឹង បញ្ហា ព្រមជាមួយនឹងការបាážáŸ‹áž”ង់មុážáž„ារណាមួយរបស់កម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”ទនáŸáŸ‡ ។",
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "វីនដូវមិនអាចបើកបានទ០។ សូមពិនិážáŸ’យចំពោះកម្មវិធីបិទ វីនដូវលោហ(popup) ážáž¶ážáž¾ážœáž¶ážŠáŸ†ážŽáž¾ážšáž€áž¶ážšážšážºáž‘០។",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "យល់ព្រម",
-DlgBtnCancel : "មិនយល់ព្រម",
-DlgBtnClose : "បិទ",
-DlgBtnBrowseServer : "មើល",
-DlgAdvancedTag : "កំរិážážáŸ’ពស់",
-DlgOpOther : "<ផ្សáŸáž„ទៅáž>",
-DlgInfoTab : "áž–ážáŸŒáž˜áž¶áž“",
-DlgAlertUrl : "សូមសរសáŸážš URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<មិនមែន>",
-DlgGenId : "Id",
-DlgGenLangDir : "ទិសដៅភាសា",
-DlgGenLangDirLtr : "ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ†(LTR)",
-DlgGenLangDirRtl : "ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„(RTL)",
-DlgGenLangCode : "áž›áŸážáž€áž¼ážáž—ាសា",
-DlgGenAccessKey : "ឃី សំរាប់ចូល",
-DlgGenName : "ឈ្មោះ",
-DlgGenTabIndex : "áž›áŸáž Tab",
-DlgGenLongDescr : "អធិប្បាយ URL វែង",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "ចំណងជើង ប្រឹក្សា",
-DlgGenContType : "ប្រភáŸáž‘អážáŸ’ážáž”áž‘ ប្រឹក្សា",
-DlgGenLinkCharset : "áž›áŸážáž€áž¼ážáž¢áž€áŸ’សររបស់ឈ្នាប់",
-DlgGenStyle : "ម៉ូáž",
-
-// Image Dialog
-DlgImgTitle : "ការកំណážáŸ‹ážšáž¼áž”áž—áž¶áž–",
-DlgImgInfoTab : "áž–ážáŸŒáž˜áž¶áž“អំពីរូបភាព",
-DlgImgBtnUpload : "បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្ážáž›áŸ‹ážŸáŸážœáž¶",
-DlgImgURL : "URL",
-DlgImgUpload : "ទាញយក",
-DlgImgAlt : "អážáŸ’ážáž”ទជំនួស",
-DlgImgWidth : "ទទឹង",
-DlgImgHeight : "កំពស់",
-DlgImgLockRatio : "អážáŸ’រាឡុក",
-DlgBtnResetSize : "កំណážáŸ‹áž‘ំហំឡើងវិញ",
-DlgImgBorder : "ស៊ុម",
-DlgImgHSpace : "គំលាážáž‘ទឹង",
-DlgImgVSpace : "គំលាážáž”ណ្ážáŸ„áž™",
-DlgImgAlign : "កំណážáŸ‹áž‘ីážáž¶áŸ†áž„",
-DlgImgAlignLeft : "ážáž¶áž„ឆ្វង",
-DlgImgAlignAbsBottom: "Abs Bottom", //MISSING
-DlgImgAlignAbsMiddle: "Abs Middle", //MISSING
-DlgImgAlignBaseline : "បន្ទាážáŸ‹áž‡áž¶áž˜áž¼áž›ážŠáŸ’ឋាន",
-DlgImgAlignBottom : "ážáž¶áž„ក្រោម",
-DlgImgAlignMiddle : "កណ្ážáž¶áž›",
-DlgImgAlignRight : "ážáž¶áž„ស្ážáž¶áŸ†",
-DlgImgAlignTextTop : "លើអážáŸ’ážáž”áž‘",
-DlgImgAlignTop : "ážáž¶áž„លើ",
-DlgImgPreview : "មើលសាកល្បង",
-DlgImgAlertUrl : "សូមសរសáŸážšáž„ាសáŸáž™ážŠáŸ’ឋានរបស់រូបភាព",
-DlgImgLinkTab : "ឈ្នាប់",
-
-// Flash Dialog
-DlgFlashTitle : "ការកំណážáŸ‹ Flash",
-DlgFlashChkPlay : "áž›áŸáž„ដោយស្វáŸáž™áž”្រវážáŸ’áž",
-DlgFlashChkLoop : "ចំនួនដង",
-DlgFlashChkMenu : "បង្ហាញ មឺនុយរបស់ Flash",
-DlgFlashScale : "ទំហំ",
-DlgFlashScaleAll : "បង្ហាញទាំងអស់",
-DlgFlashScaleNoBorder : "មិនបង្ហាញស៊ុម",
-DlgFlashScaleFit : "ážáŸ’រូវល្មម",
-
-// Link Dialog
-DlgLnkWindowTitle : "ឈ្នាប់",
-DlgLnkInfoTab : "áž–ážáŸŒáž˜áž¶áž“អំពីឈ្នាប់",
-DlgLnkTargetTab : "គោលដៅ",
-
-DlgLnkType : "ប្រភáŸáž‘ឈ្នាប់",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "យុážáŸ’កានៅក្នុងទំពáŸážšáž“áŸáŸ‡",
-DlgLnkTypeEMail : "អ៊ីមែល",
-DlgLnkProto : "ប្រូážáž¼áž€áž¼áž›",
-DlgLnkProtoOther : "<ផ្សáŸáž„ទៀáž>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "ជ្រើសរើសយុážáŸ’កា",
-DlgLnkAnchorByName : "ážáž¶áž˜ážˆáŸ’មោះរបស់យុážáŸ’កា",
-DlgLnkAnchorById : "ážáž¶áž˜ Id",
-DlgLnkNoAnchors : "(No anchors available in the document)", //MISSING
-DlgLnkEMail : "អ៊ីមែល",
-DlgLnkEMailSubject : "ចំណងជើងអážáŸ’ážáž”áž‘",
-DlgLnkEMailBody : "អážáŸ’ážáž”áž‘",
-DlgLnkUpload : "ទាញយក",
-DlgLnkBtnUpload : "ទាញយក",
-
-DlgLnkTarget : "គោលដៅ",
-DlgLnkTargetFrame : "<ហ្វ្រáŸáž˜>",
-DlgLnkTargetPopup : "<វីនដូវ លោáž>",
-DlgLnkTargetBlank : "វីនដូវážáŸ’មី (_blank)",
-DlgLnkTargetParent : "វីនដូវម០(_parent)",
-DlgLnkTargetSelf : "វីនដូវដដែល (_self)",
-DlgLnkTargetTop : "វីនដូវនៅលើគáŸ(_top)",
-DlgLnkTargetFrameName : "ឈ្មោះហ្រ្វáŸáž˜ážŠáŸ‚លជាគោលដៅ",
-DlgLnkPopWinName : "ឈ្មោះវីនដូវលោáž",
-DlgLnkPopWinFeat : "លក្ážážŽáŸ‡ážšáž”ស់វីនដូលលោáž",
-DlgLnkPopResize : "ទំហំអាចផ្លាស់ប្ážáž¼ážš",
-DlgLnkPopLocation : "របា ទីážáž¶áŸ†áž„",
-DlgLnkPopMenu : "របា មឺនុយ",
-DlgLnkPopScroll : "របា ទាញ",
-DlgLnkPopStatus : "របា áž–ážáŸŒáž˜áž¶áž“",
-DlgLnkPopToolbar : "របា ឩបករណáŸ",
-DlgLnkPopFullScrn : "អáŸáž€áŸ’រុងពáŸáž‰(IE)",
-DlgLnkPopDependent : "អាស្រáŸáž™áž›áž¾ (Netscape)",
-DlgLnkPopWidth : "ទទឹង",
-DlgLnkPopHeight : "កំពស់",
-DlgLnkPopLeft : "ទីážáž¶áŸ†áž„ážáž¶áž„ឆ្វáŸáž„",
-DlgLnkPopTop : "ទីážáž¶áŸ†áž„ážáž¶áž„លើ",
-
-DlnLnkMsgNoUrl : "សូមសរសáŸážš អាសáŸáž™ážŠáŸ’ឋាន URL",
-DlnLnkMsgNoEMail : "សូមសរសáŸážš អាសáŸáž™ážŠáŸ’ឋាន អ៊ីមែល",
-DlnLnkMsgNoAnchor : "សូមជ្រើសរើស យុážáŸ’កា",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "ជ្រើសរើស ពណ៌",
-DlgColorBtnClear : "លប់",
-DlgColorHighlight : "ផាážáŸ‹áž–ណ៌",
-DlgColorSelected : "បានជ្រើសរើស",
-
-// Smiley Dialog
-DlgSmileyTitle : "បញ្ជូលរូបភាព",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "ážáž¼áž¢áž€áŸ’សរពិសáŸážŸ",
-
-// Table Dialog
-DlgTableTitle : "ការកំណážáŸ‹ ážáž¶ážšáž¶áž„",
-DlgTableRows : "ជួរផ្ážáŸáž€",
-DlgTableColumns : "ជួរឈរ",
-DlgTableBorder : "ទំហំស៊ុម",
-DlgTableAlign : "ការកំណážáŸ‹áž‘ីážáž¶áŸ†áž„",
-DlgTableAlignNotSet : "<មិនកំណážáŸ‹>",
-DlgTableAlignLeft : "ážáž¶áž„ឆ្វáŸáž„",
-DlgTableAlignCenter : "កណ្ážáž¶áž›",
-DlgTableAlignRight : "ážáž¶áž„ស្ážáž¶áŸ†",
-DlgTableWidth : "ទទឹង",
-DlgTableWidthPx : "ភីកសែល",
-DlgTableWidthPc : "ភាគរយ",
-DlgTableHeight : "កំពស់",
-DlgTableCellSpace : "គំលាážážŸáŸ‚áž›",
-DlgTableCellPad : "គែមសែល",
-DlgTableCaption : "ចំណងជើង",
-DlgTableSummary : "សáŸáž…ក្ážáž¸ážŸáž„្ážáŸáž”",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "ការកំណážáŸ‹ សែល",
-DlgCellWidth : "ទទឹង",
-DlgCellWidthPx : "ភីកសែល",
-DlgCellWidthPc : "ភាគរយ",
-DlgCellHeight : "កំពស់",
-DlgCellWordWrap : "បង្ហាញអážáŸ’ážáž”ទទាំងអស់",
-DlgCellWordWrapNotSet : "<មិនកំណážáŸ‹>",
-DlgCellWordWrapYes : "បាទ(ចា)",
-DlgCellWordWrapNo : "áž‘áŸ",
-DlgCellHorAlign : "ážáŸ†ážšáž¹áž˜áž•្ážáŸáž€",
-DlgCellHorAlignNotSet : "<មិនកំណážáŸ‹>",
-DlgCellHorAlignLeft : "ážáž¶áž„ឆ្វáŸáž„",
-DlgCellHorAlignCenter : "កណ្ážáž¶áž›",
-DlgCellHorAlignRight: "Right", //MISSING
-DlgCellVerAlign : "ážáŸ†ážšáž¹áž˜ážˆážš",
-DlgCellVerAlignNotSet : "<មិនកណážáŸ‹>",
-DlgCellVerAlignTop : "ážáž¶áž„លើ",
-DlgCellVerAlignMiddle : "កណ្ážáž¶áž›",
-DlgCellVerAlignBottom : "ážáž¶áž„ក្រោម",
-DlgCellVerAlignBaseline : "បន្ទាážáŸ‹áž‡áž¶áž˜áž¼áž›ážŠáŸ’ឋាន",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "បញ្ជូលជួរផ្ážáŸáž€",
-DlgCellCollSpan : "បញ្ជូលជួរឈរ",
-DlgCellBackColor : "ពណ៌ផ្នែកážáž¶áž„ក្រោម",
-DlgCellBorderColor : "ពណ៌ស៊ុម",
-DlgCellBtnSelect : "ជ្រើសរើស...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "ស្វែងរក",
-DlgFindFindBtn : "ស្វែងរក",
-DlgFindNotFoundMsg : "ពាក្យនáŸáŸ‡ រកមិនឃើញទ០។",
-
-// Replace Dialog
-DlgReplaceTitle : "ជំនួស",
-DlgReplaceFindLbl : "ស្វែងរកអ្វី:",
-DlgReplaceReplaceLbl : "ជំនួសជាមួយ:",
-DlgReplaceCaseChk : "ករណ៉ážáŸ’រូវរក",
-DlgReplaceReplaceBtn : "ជំនួស",
-DlgReplaceReplAllBtn : "ជំនួសទាំងអស់",
-DlgReplaceWordChk : "ážáŸ’រូវពាក្យទាំងអស់",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ កាážáŸ‹áž¢ážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl+X) ។",
-PasteErrorCopy : "ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ ចំលងអážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl+C)។",
-
-PasteAsText : "ចំលងដាក់អážáŸ’ážáž”ទធម្មážáž¶",
-PasteFromWord : "ចំលងពាក្យពីកម្មវិធី Word",
-
-DlgPasteMsg2 : "សូមចំលងអážáŸ’ážáž”ទទៅដាក់ក្នុងប្រអប់ដូចážáž¶áž„ក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "មិនគិážáž¢áŸ†áž–ីប្រភáŸáž‘ពុម្ភអក្សរ",
-DlgPasteRemoveStyles : "លប់ម៉ូáž",
-
-// Color Picker
-ColorAutomatic : "ស្វáŸáž™áž”្រវážáŸ’áž",
-ColorMoreColors : "ពណ៌ផ្សáŸáž„ទៀáž..",
-
-// Document Properties
-DocProps : "ការកំណážáŸ‹ ឯកសារ",
-
-// Anchor Dialog
-DlgAnchorTitle : "ការកំណážáŸ‹áž…ំណងជើងយុទ្ធážáŸ’កា",
-DlgAnchorName : "ឈ្មោះយុទ្ធážáŸ’កា",
-DlgAnchorErrorName : "សូមសរសáŸážš ឈ្មោះយុទ្ធážáŸ’កា",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "គ្មានក្នុងវចនានុក្រម",
-DlgSpellChangeTo : "ផ្លាស់ប្ážáž¼ážšáž‘ៅ",
-DlgSpellBtnIgnore : "មិនផ្លាស់ប្ážáž¼ážš",
-DlgSpellBtnIgnoreAll : "មិនផ្លាស់ប្ážáž¼ážš ទាំងអស់",
-DlgSpellBtnReplace : "ជំនួស",
-DlgSpellBtnReplaceAll : "ជំនួសទាំងអស់",
-DlgSpellBtnUndo : "សារឡើងវិញ",
-DlgSpellNoSuggestions : "- គ្មានសំណើរ -",
-DlgSpellProgress : "កំពុងពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ...",
-DlgSpellNoMispell : "ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: គ្មានកំហុស",
-DlgSpellNoChanges : "ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: ពុំមានផ្លាស់ប្ážáž¼ážš",
-DlgSpellOneChange : "ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: ពាក្យមួយážáŸ’រូចបានផ្លាស់ប្ážáž¼ážš",
-DlgSpellManyChanges : "ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្ážáž¼ážš",
-
-IeSpellDownload : "ពុំមានកម្មវិធីពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ ។ ážáž¾áž…ង់ទាញយកពីណា?",
-
-// Button Dialog
-DlgButtonText : "អážáŸ’ážáž”áž‘(ážáŸ†áž›áŸƒ)",
-DlgButtonType : "ប្រភáŸáž‘",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "ឈ្មោះ",
-DlgCheckboxValue : "ážáŸ†áž›áŸƒ",
-DlgCheckboxSelected : "បានជ្រើសរើស",
-
-// Form Dialog
-DlgFormName : "ឈ្មោះ",
-DlgFormAction : "សកម្មភាព",
-DlgFormMethod : "វិធី",
-
-// Select Field Dialog
-DlgSelectName : "ឈ្មោះ",
-DlgSelectValue : "ážáŸ†áž›áŸƒ",
-DlgSelectSize : "ទំហំ",
-DlgSelectLines : "បន្ទាážáŸ‹",
-DlgSelectChkMulti : "អនុញ្ញាážáž¢áŸ„យជ្រើសរើសច្រើន",
-DlgSelectOpAvail : "ការកំណážáŸ‹áž‡áŸ’រើសរើស ដែលអាចកំណážáŸ‹áž”áž¶áž“",
-DlgSelectOpText : "ពាក្យ",
-DlgSelectOpValue : "ážáŸ†áž›áŸƒ",
-DlgSelectBtnAdd : "បន្ážáŸ‚ម",
-DlgSelectBtnModify : "ផ្លាស់ប្ážáž¼ážš",
-DlgSelectBtnUp : "លើ",
-DlgSelectBtnDown : "ក្រោម",
-DlgSelectBtnSetValue : "Set as selected value", //MISSING
-DlgSelectBtnDelete : "លប់",
-
-// Textarea Dialog
-DlgTextareaName : "ឈ្មោះ",
-DlgTextareaCols : "ជូរឈរ",
-DlgTextareaRows : "ជូរផ្ážáŸáž€",
-
-// Text Field Dialog
-DlgTextName : "ឈ្មោះ",
-DlgTextValue : "ážáŸ†áž›áŸƒ",
-DlgTextCharWidth : "ទទឹង អក្សរ",
-DlgTextMaxChars : "អក្សរអážáž·áž”រិមា",
-DlgTextType : "ប្រភáŸáž‘",
-DlgTextTypeText : "ពាក្យ",
-DlgTextTypePass : "ពាក្យសំងាážáŸ‹",
-
-// Hidden Field Dialog
-DlgHiddenName : "ឈ្មោះ",
-DlgHiddenValue : "ážáŸ†áž›áŸƒ",
-
-// Bulleted List Dialog
-BulletedListProp : "កំណážáŸ‹áž”ញ្ជីរង្វង់",
-NumberedListProp : "កំណážáŸ‹áž”ញ្áŸáž‡áž¸áž›áŸáž",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "ប្រភáŸáž‘",
-DlgLstTypeCircle : "រង្វង់",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "ការáŸ",
-DlgLstTypeNumbers : "áž›áŸáž(1, 2, 3)",
-DlgLstTypeLCase : "អក្សរážáž¼áž…(a, b, c)",
-DlgLstTypeUCase : "អក្សរធំ(A, B, C)",
-DlgLstTypeSRoman : "អក្សរឡាážáž¶áŸ†áž„ážáž¼áž…(i, ii, iii)",
-DlgLstTypeLRoman : "អក្សរឡាážáž¶áŸ†áž„ធំ(I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "ទូទៅ",
-DlgDocBackTab : "ផ្នែកážáž¶áž„ក្រោយ",
-DlgDocColorsTab : "ទំពáŸážšâ€‹áž“áž·áž„ ស៊ុម",
-DlgDocMetaTab : "ទិន្ននáŸáž™áž˜áŸ",
-
-DlgDocPageTitle : "ចំណងជើងទំពáŸážš",
-DlgDocLangDir : "ទិសដៅសរសáŸážšáž—ាសា",
-DlgDocLangDirLTR : "ពីឆ្វáŸáž„ទៅស្ដាំ(LTR)",
-DlgDocLangDirRTL : "ពីស្ដាំទៅឆ្វáŸáž„(RTL)",
-DlgDocLangCode : "áž›áŸážáž€áž¼ážáž—ាសា",
-DlgDocCharSet : "កំណážáŸ‹áž›áŸážáž€áž¼ážáž—ាសា",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "កំណážáŸ‹áž›áŸážáž€áž¼ážáž—ាសាផ្សáŸáž„ទៀáž",
-
-DlgDocDocType : "ប្រភáŸáž‘ក្បាលទំពáŸážš",
-DlgDocDocTypeOther : "ប្រភáŸáž‘ក្បាលទំពáŸážšáž•្សáŸáž„ទៀáž",
-DlgDocIncXHTML : "បញ្ជូល XHTML",
-DlgDocBgColor : "ពណ៌ážáž¶áž„ក្រោម",
-DlgDocBgImage : "URL របស់រូបភាពážáž¶áž„ក្រោម",
-DlgDocBgNoScroll : "ទំពáŸážšáž€áŸ’រោមមិនប្ážáž¼ážš",
-DlgDocCText : "អážáŸ’ážáž”áž‘",
-DlgDocCLink : "ឈ្នាប់",
-DlgDocCVisited : "ឈ្នាប់មើលហើយ",
-DlgDocCActive : "ឈ្នាប់កំពុងមើល",
-DlgDocMargins : "ស៊ុមទំពáŸážš",
-DlgDocMaTop : "លើ",
-DlgDocMaLeft : "ឆ្វáŸáž„",
-DlgDocMaRight : "ស្ដាំ",
-DlgDocMaBottom : "ក្រោម",
-DlgDocMeIndex : "ពាក្យនៅក្នុងឯកសារ (ផ្ážáž¶áž…់ពីគ្នាដោយក្បៀស)",
-DlgDocMeDescr : "សáŸáž…ក្ážáž¸áž¢ážáŸ’ážáž¶áž’ិប្បាយអំពីឯកសារ",
-DlgDocMeAuthor : "អ្នកនិពន្ធ",
-DlgDocMeCopy : "រក្សាសិទ្ធិáŸ",
-DlgDocPreview : "មើលសាកល្បង",
-
-// Templates Dialog
-Templates : "ឯកសារគំរូ",
-DlgTemplatesTitle : "ឯកសារគំរូ របស់អážáŸ’ážáž“áŸáž™",
-DlgTemplatesSelMsg : "សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘<br>(អážáŸ’ážáž”ទនឹងបាážáŸ‹áž”ង់):",
-DlgTemplatesLoading : "កំពុងអានបញ្ជីឯកសារគំរូ ។ សូមរងចាំ...",
-DlgTemplatesNoTpl : "(ពុំមានឯកសារគំរូážáŸ’រូវបានកំណážáŸ‹)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "អំពី",
-DlgAboutBrowserInfoTab : "ព៌ážáž˜áž¶áž“កម្មវិធីរុករក",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "ជំនាន់",
-DlgAboutInfo : "សំរាប់ព៌ážáž˜áž¶áž“ផ្សáŸáž„ទៀហសូមទាក់ទង",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ko.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ko.js
deleted file mode 100644
index a5d2e0ce5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ko.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Korean language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "툴바 ê°ì¶”기",
-ToolbarExpand : "툴바 ë³´ì´ê¸°",
-
-// Toolbar Items and Context Menu
-Save : "저장하기",
-NewPage : "새 문서",
-Preview : "미리보기",
-Cut : "잘ë¼ë‚´ê¸°",
-Copy : "복사하기",
-Paste : "붙여넣기",
-PasteText : "í…스트로 붙여넣기",
-PasteWord : "MS Word 형ì‹ì—서 붙여넣기",
-Print : "ì¸ì‡„하기",
-SelectAll : "ì „ì²´ì„ íƒ",
-RemoveFormat : "í¬ë§· 지우기",
-InsertLinkLbl : "ë§í¬",
-InsertLink : "ë§í¬ 삽입/변경",
-RemoveLink : "ë§í¬ ì‚­ì œ",
-VisitLink : "Open Link", //MISSING
-Anchor : "책갈피 삽입/변경",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "ì´ë¯¸ì§€",
-InsertImage : "ì´ë¯¸ì§€ 삽입/변경",
-InsertFlashLbl : "플래쉬",
-InsertFlash : "플래쉬 삽입/변경",
-InsertTableLbl : "표",
-InsertTable : "표 삽입/변경",
-InsertLineLbl : "수í‰ì„ ",
-InsertLine : "수í‰ì„  삽입",
-InsertSpecialCharLbl: "íŠ¹ìˆ˜ë¬¸ìž ì‚½ìž…",
-InsertSpecialChar : "íŠ¹ìˆ˜ë¬¸ìž ì‚½ìž…",
-InsertSmileyLbl : "ì•„ì´ì½˜",
-InsertSmiley : "ì•„ì´ì½˜ 삽입",
-About : "FCKeditorì— ëŒ€í•˜ì—¬",
-Bold : "진하게",
-Italic : "ì´í…”릭",
-Underline : "밑줄",
-StrikeThrough : "취소선",
-Subscript : "아래 첨ìž",
-Superscript : "위 첨ìž",
-LeftJustify : "왼쪽 정렬",
-CenterJustify : "ê°€ìš´ë° ì •ë ¬",
-RightJustify : "오른쪽 정렬",
-BlockJustify : "양쪽 맞춤",
-DecreaseIndent : "내어쓰기",
-IncreaseIndent : "들여쓰기",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "취소",
-Redo : "재실행",
-NumberedListLbl : "순서있는 목ë¡",
-NumberedList : "순서있는 목ë¡",
-BulletedListLbl : "순서없는 목ë¡",
-BulletedList : "순서없는 목ë¡",
-ShowTableBorders : "표 í…Œë‘리 보기",
-ShowDetails : "문서기호 보기",
-Style : "스타ì¼",
-FontFormat : "í¬ë§·",
-Font : "í°íЏ",
-FontSize : "ê¸€ìž í¬ê¸°",
-TextColor : "ê¸€ìž ìƒ‰ìƒ",
-BGColor : "ë°°ê²½ 색ìƒ",
-Source : "소스",
-Find : "찾기",
-Replace : "바꾸기",
-SpellCheck : "ì² ìžê²€ì‚¬",
-UniversalKeyboard : "다국어 입력기",
-PageBreakLbl : "Page Break", //MISSING
-PageBreak : "Insert Page Break", //MISSING
-
-Form : "í¼",
-Checkbox : "ì²´í¬ë°•스",
-RadioButton : "ë¼ë””오버튼",
-TextField : "입력필드",
-Textarea : "ìž…ë ¥ì˜ì—­",
-HiddenField : "숨김필드",
-Button : "버튼",
-SelectionField : "펼침목ë¡",
-ImageButton : "ì´ë¯¸ì§€ë²„튼",
-
-FitWindow : "ì—디터 최대화",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "ë§í¬ 수정",
-CellCM : "셀/칸(Cell)",
-RowCM : "í–‰(Row)",
-ColumnCM : "ì—´(Column)",
-InsertRowAfter : "ë’¤ì— í–‰ 삽입",
-InsertRowBefore : "ì•žì— í–‰ 삽입",
-DeleteRows : "가로줄 삭제",
-InsertColumnAfter : "ë’¤ì— ì—´ 삽입",
-InsertColumnBefore : "ì•žì— ì—´ 삽입",
-DeleteColumns : "세로줄 삭제",
-InsertCellAfter : "ë’¤ì— ì…€/칸 삽입",
-InsertCellBefore : "ì•žì— ì…€/칸 삽입",
-DeleteCells : "셀 삭제",
-MergeCells : "셀 합치기",
-MergeRight : "오른쪽 뭉치기",
-MergeDown : "왼쪽 뭉치기",
-HorizontalSplitCell : "ìˆ˜í‰ ë‚˜ëˆ„ê¸°",
-VerticalSplitCell : "ìˆ˜ì§ ë‚˜ëˆ„ê¸°",
-TableDelete : "표 삭제",
-CellProperties : "ì…€ ì†ì„±",
-TableProperties : "표 ì†ì„±",
-ImageProperties : "ì´ë¯¸ì§€ ì†ì„±",
-FlashProperties : "플래쉬 ì†ì„±",
-
-AnchorProp : "책갈피 ì†ì„±",
-ButtonProp : "버튼 ì†ì„±",
-CheckboxProp : "ì²´í¬ë°•스 ì†ì„±",
-HiddenFieldProp : "숨김필드 ì†ì„±",
-RadioButtonProp : "ë¼ë””오버튼 ì†ì„±",
-ImageButtonProp : "ì´ë¯¸ì§€ë²„튼 ì†ì„±",
-TextFieldProp : "입력필드 ì†ì„±",
-SelectionFieldProp : "íŽ¼ì¹¨ëª©ë¡ ì†ì„±",
-TextareaProp : "ìž…ë ¥ì˜ì—­ ì†ì„±",
-FormProp : "í¼ ì†ì„±",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML 처리중. 잠시만 기다려주십시요.",
-Done : "완료",
-PasteWordConfirm : "붙여넣기 í•  í…스트는 MS Wordì—서 복사한 것입니다. 붙여넣기 ì „ì— MS Word í¬ë©§ì„ 삭제하시겠습니까?",
-NotCompatiblePaste : "ì´ ëª…ë ¹ì€ ì¸í„°ë„·ìµìŠ¤í”Œë¡œëŸ¬ 5.5 버전 ì´ìƒì—서만 ìž‘ë™í•©ë‹ˆë‹¤. í¬ë©§ì„ 삭제하지 않고 붙여넣기 하시겠습니까?",
-UnknownToolbarItem : "알수없는 툴바입니다. : \"%1\"",
-UnknownCommand : "알수없는 기능입니다. : \"%1\"",
-NotImplemented : "ê¸°ëŠ¥ì´ ì‹¤í–‰ë˜ì§€ 않았습니다.",
-UnknownToolbarSet : "툴바 ì„¤ì •ì´ ì—†ìŠµë‹ˆë‹¤. : \"%1\"",
-NoActiveX : "ë¸ŒëŸ¬ìš°ì €ì˜ ë³´ì•ˆ 설정으로 ì¸í•´ 몇몇 ê¸°ëŠ¥ì˜ ìž‘ë™ì— 장애가 ìžˆì„ ìˆ˜ 있습니다. \"액티브-액스 기능과 플러그 ì¸\" ì˜µì…˜ì„ í—ˆìš©í•˜ì—¬ 주시지 않으면 오류가 ë°œìƒí•  수 있습니다.",
-BrowseServerBlocked : "브러우저 요소가 열리지 않습니다. íŒì—…차단 ì„¤ì •ì´ êº¼ì ¸ìžˆëŠ”ì§€ 확ì¸í•˜ì—¬ 주십시오.",
-DialogBlocked : "윈ë„ìš° ëŒ€í™”ì°½ì„ ì—´ 수 없습니다. íŒì—…차단 ì„¤ì •ì´ êº¼ì ¸ìžˆëŠ”ì§€ 확ì¸í•˜ì—¬ 주십시오.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "예",
-DlgBtnCancel : "아니오",
-DlgBtnClose : "닫기",
-DlgBtnBrowseServer : "서버 보기",
-DlgAdvancedTag : "ìžì„¸ížˆ",
-DlgOpOther : "<기타>",
-DlgInfoTab : "ì •ë³´",
-DlgAlertUrl : "URLì„ ìž…ë ¥í•˜ì‹­ì‹œìš”",
-
-// General Dialogs Labels
-DlgGenNotSet : "<설정ë˜ì§€ 않ìŒ>",
-DlgGenId : "ID",
-DlgGenLangDir : "쓰기 방향",
-DlgGenLangDirLtr : "왼쪽ì—서 오른쪽 (LTR)",
-DlgGenLangDirRtl : "오른쪽ì—서 왼쪽 (RTL)",
-DlgGenLangCode : "언어 코드",
-DlgGenAccessKey : "엑세스 키",
-DlgGenName : "Name",
-DlgGenTabIndex : "탭 순서",
-DlgGenLongDescr : "URL 설명",
-DlgGenClass : "Stylesheet Classes",
-DlgGenTitle : "Advisory Title",
-DlgGenContType : "Advisory Content Type",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "ì´ë¯¸ì§€ 설정",
-DlgImgInfoTab : "ì´ë¯¸ì§€ ì •ë³´",
-DlgImgBtnUpload : "서버로 전송",
-DlgImgURL : "URL",
-DlgImgUpload : "업로드",
-DlgImgAlt : "ì´ë¯¸ì§€ 설명",
-DlgImgWidth : "너비",
-DlgImgHeight : "높ì´",
-DlgImgLockRatio : "비율 유지",
-DlgBtnResetSize : "ì›ëž˜ í¬ê¸°ë¡œ",
-DlgImgBorder : "í…Œë‘리",
-DlgImgHSpace : "수í‰ì—¬ë°±",
-DlgImgVSpace : "수ì§ì—¬ë°±",
-DlgImgAlign : "ì •ë ¬",
-DlgImgAlignLeft : "왼쪽",
-DlgImgAlignAbsBottom: "줄아래(Abs Bottom)",
-DlgImgAlignAbsMiddle: "줄중간(Abs Middle)",
-DlgImgAlignBaseline : "기준선",
-DlgImgAlignBottom : "아래",
-DlgImgAlignMiddle : "중간",
-DlgImgAlignRight : "오른쪽",
-DlgImgAlignTextTop : "글ìžìƒë‹¨",
-DlgImgAlignTop : "위",
-DlgImgPreview : "미리보기",
-DlgImgAlertUrl : "ì´ë¯¸ì§€ URLì„ ìž…ë ¥í•˜ì‹­ì‹œìš”",
-DlgImgLinkTab : "ë§í¬",
-
-// Flash Dialog
-DlgFlashTitle : "플래쉬 등ë¡ì •ë³´",
-DlgFlashChkPlay : "ìžë™ìž¬ìƒ",
-DlgFlashChkLoop : "반복",
-DlgFlashChkMenu : "플래쉬메뉴 가능",
-DlgFlashScale : "ì˜ì—­",
-DlgFlashScaleAll : "모ë‘보기",
-DlgFlashScaleNoBorder : "경계선없ìŒ",
-DlgFlashScaleFit : "ì˜ì—­ìžë™ì¡°ì ˆ",
-
-// Link Dialog
-DlgLnkWindowTitle : "ë§í¬",
-DlgLnkInfoTab : "ë§í¬ ì •ë³´",
-DlgLnkTargetTab : "타겟",
-
-DlgLnkType : "ë§í¬ 종류",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "책갈피",
-DlgLnkTypeEMail : "ì´ë©”ì¼",
-DlgLnkProto : "프로토콜",
-DlgLnkProtoOther : "<기타>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "책갈피 ì„ íƒ",
-DlgLnkAnchorByName : "책갈피 ì´ë¦„",
-DlgLnkAnchorById : "책갈피 ID",
-DlgLnkNoAnchors : "(ë¬¸ì„œì— ì±…ê°ˆí”¼ê°€ 없습니다.)",
-DlgLnkEMail : "ì´ë©”ì¼ ì£¼ì†Œ",
-DlgLnkEMailSubject : "제목",
-DlgLnkEMailBody : "ë‚´ìš©",
-DlgLnkUpload : "업로드",
-DlgLnkBtnUpload : "서버로 전송",
-
-DlgLnkTarget : "타겟",
-DlgLnkTargetFrame : "<프레임>",
-DlgLnkTargetPopup : "<íŒì—…ì°½>",
-DlgLnkTargetBlank : "새 창 (_blank)",
-DlgLnkTargetParent : "부모 창 (_parent)",
-DlgLnkTargetSelf : "현재 창 (_self)",
-DlgLnkTargetTop : "최 ìƒìœ„ ì°½ (_top)",
-DlgLnkTargetFrameName : "타겟 프레임 ì´ë¦„",
-DlgLnkPopWinName : "íŒì—…ì°½ ì´ë¦„",
-DlgLnkPopWinFeat : "íŒì—…ì°½ 설정",
-DlgLnkPopResize : "í¬ê¸°ì¡°ì •",
-DlgLnkPopLocation : "주소표시줄",
-DlgLnkPopMenu : "메뉴바",
-DlgLnkPopScroll : "스í¬ë¡¤ë°”",
-DlgLnkPopStatus : "ìƒíƒœë°”",
-DlgLnkPopToolbar : "툴바",
-DlgLnkPopFullScrn : "전체화면 (IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "너비",
-DlgLnkPopHeight : "높ì´",
-DlgLnkPopLeft : "왼쪽 위치",
-DlgLnkPopTop : "윗쪽 위치",
-
-DlnLnkMsgNoUrl : "ë§í¬ URLì„ ìž…ë ¥í•˜ì‹­ì‹œìš”.",
-DlnLnkMsgNoEMail : "ì´ë©”ì¼ì£¼ì†Œë¥¼ 입력하십시요.",
-DlnLnkMsgNoAnchor : "ì±…ê°ˆí”¼ëª…ì„ ìž…ë ¥í•˜ì‹­ì‹œìš”.",
-DlnLnkMsgInvPopName : "íŒì—…ì°½ì˜ íƒ€ì´í‹€ì€ ê³µë°±ì„ í—ˆìš©í•˜ì§€ 않습니다.",
-
-// Color Dialog
-DlgColorTitle : "ìƒ‰ìƒ ì„ íƒ",
-DlgColorBtnClear : "지우기",
-DlgColorHighlight : "현재",
-DlgColorSelected : "ì„ íƒë¨",
-
-// Smiley Dialog
-DlgSmileyTitle : "ì•„ì´ì½˜ 삽입",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "íŠ¹ìˆ˜ë¬¸ìž ì„ íƒ",
-
-// Table Dialog
-DlgTableTitle : "표 설정",
-DlgTableRows : "가로줄",
-DlgTableColumns : "세로줄",
-DlgTableBorder : "í…Œë‘리 í¬ê¸°",
-DlgTableAlign : "ì •ë ¬",
-DlgTableAlignNotSet : "<설정ë˜ì§€ 않ìŒ>",
-DlgTableAlignLeft : "왼쪽",
-DlgTableAlignCenter : "가운ë°",
-DlgTableAlignRight : "오른쪽",
-DlgTableWidth : "너비",
-DlgTableWidthPx : "픽셀",
-DlgTableWidthPc : "í¼ì„¼íЏ",
-DlgTableHeight : "높ì´",
-DlgTableCellSpace : "셀 간격",
-DlgTableCellPad : "셀 여백",
-DlgTableCaption : "캡션",
-DlgTableSummary : "Summary", //MISSING
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "셀 설정",
-DlgCellWidth : "너비",
-DlgCellWidthPx : "픽셀",
-DlgCellWidthPc : "í¼ì„¼íЏ",
-DlgCellHeight : "높ì´",
-DlgCellWordWrap : "워드랩",
-DlgCellWordWrapNotSet : "<설정ë˜ì§€ 않ìŒ>",
-DlgCellWordWrapYes : "예",
-DlgCellWordWrapNo : "아니오",
-DlgCellHorAlign : "ìˆ˜í‰ ì •ë ¬",
-DlgCellHorAlignNotSet : "<설정ë˜ì§€ 않ìŒ>",
-DlgCellHorAlignLeft : "왼쪽",
-DlgCellHorAlignCenter : "가운ë°",
-DlgCellHorAlignRight: "오른쪽",
-DlgCellVerAlign : "ìˆ˜ì§ ì •ë ¬",
-DlgCellVerAlignNotSet : "<설정ë˜ì§€ 않ìŒ>",
-DlgCellVerAlignTop : "위",
-DlgCellVerAlignMiddle : "중간",
-DlgCellVerAlignBottom : "아래",
-DlgCellVerAlignBaseline : "기준선",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "세로 합치기",
-DlgCellCollSpan : "가로 합치기",
-DlgCellBackColor : "ë°°ê²½ 색ìƒ",
-DlgCellBorderColor : "í…Œë‘리 색ìƒ",
-DlgCellBtnSelect : "ì„ íƒ",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "찾기 & 바꾸기",
-
-// Find Dialog
-DlgFindTitle : "찾기",
-DlgFindFindBtn : "찾기",
-DlgFindNotFoundMsg : "문ìžì—´ì„ ì°¾ì„ ìˆ˜ 없습니다.",
-
-// Replace Dialog
-DlgReplaceTitle : "바꾸기",
-DlgReplaceFindLbl : "ì°¾ì„ ë¬¸ìžì—´:",
-DlgReplaceReplaceLbl : "바꿀 문ìžì—´:",
-DlgReplaceCaseChk : "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„",
-DlgReplaceReplaceBtn : "바꾸기",
-DlgReplaceReplAllBtn : "ëª¨ë‘ ë°”ê¾¸ê¸°",
-DlgReplaceWordChk : "온전한 단어",
-
-// Paste Operations / Dialog
-PasteErrorCut : "브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì •ë•Œë¬¸ì— ìž˜ë¼ë‚´ê¸° ê¸°ëŠ¥ì„ ì‹¤í–‰í•  수 없습니다. 키보드 ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œìš”. (Ctrl+X).",
-PasteErrorCopy : "브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì •ë•Œë¬¸ì— ë³µì‚¬í•˜ê¸° ê¸°ëŠ¥ì„ ì‹¤í–‰í•  수 없습니다. 키보드 ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œìš”. (Ctrl+C).",
-
-PasteAsText : "í…스트로 붙여넣기",
-PasteFromWord : "MS Word 형ì‹ì—서 붙여넣기",
-
-DlgPasteMsg2 : "í‚¤ë³´ë“œì˜ (<STRONG>Ctrl+V</STRONG>) 를 ì´ìš©í•´ì„œ ìƒìžì•ˆì— 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.",
-DlgPasteSec : "브러우저 보안 설정으로 ì¸í•´, í´ë¦½ë³´ë“œì˜ ìžë£Œë¥¼ ì§ì ‘ 접근할 수 없습니다. ì´ ì°½ì— ë‹¤ì‹œ 붙여넣기 하십시오.",
-DlgPasteIgnoreFont : "í°íЏ 설정 무시",
-DlgPasteRemoveStyles : "ìŠ¤íƒ€ì¼ ì •ì˜ ì œê±°",
-
-// Color Picker
-ColorAutomatic : "기본색ìƒ",
-ColorMoreColors : "색ìƒì„ íƒ...",
-
-// Document Properties
-DocProps : "문서 ì†ì„±",
-
-// Anchor Dialog
-DlgAnchorTitle : "책갈피 ì†ì„±",
-DlgAnchorName : "책갈피 ì´ë¦„",
-DlgAnchorErrorName : "책갈피 ì´ë¦„ì„ ìž…ë ¥í•˜ì‹­ì‹œìš”.",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "ì‚¬ì „ì— ì—†ëŠ” 단어",
-DlgSpellChangeTo : "변경할 단어",
-DlgSpellBtnIgnore : "건너뜀",
-DlgSpellBtnIgnoreAll : "ëª¨ë‘ ê±´ë„ˆëœ€",
-DlgSpellBtnReplace : "변경",
-DlgSpellBtnReplaceAll : "ëª¨ë‘ ë³€ê²½",
-DlgSpellBtnUndo : "취소",
-DlgSpellNoSuggestions : "- 추천단어 ì—†ìŒ -",
-DlgSpellProgress : "ì² ìžê²€ì‚¬ë¥¼ 진행중입니다...",
-DlgSpellNoMispell : "ì² ìžê²€ì‚¬ 완료: ìž˜ëª»ëœ ì² ìžê°€ 없습니다.",
-DlgSpellNoChanges : "ì² ìžê²€ì‚¬ 완료: ë³€ê²½ëœ ë‹¨ì–´ê°€ 없습니다.",
-DlgSpellOneChange : "ì² ìžê²€ì‚¬ 완료: 단어가 변경ë˜ì—ˆìŠµë‹ˆë‹¤.",
-DlgSpellManyChanges : "ì² ìžê²€ì‚¬ 완료: %1 단어가 변경ë˜ì—ˆìŠµë‹ˆë‹¤.",
-
-IeSpellDownload : "ì² ìž ê²€ì‚¬ê¸°ê°€ 철치ë˜ì§€ 않았습니다. 지금 다운로드하시겠습니까?",
-
-// Button Dialog
-DlgButtonText : "버튼글ìž(ê°’)",
-DlgButtonType : "버튼종류",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "ì´ë¦„",
-DlgCheckboxValue : "ê°’",
-DlgCheckboxSelected : "ì„ íƒë¨",
-
-// Form Dialog
-DlgFormName : "í¼ì´ë¦„",
-DlgFormAction : "실행경로(Action)",
-DlgFormMethod : "방법(Method)",
-
-// Select Field Dialog
-DlgSelectName : "ì´ë¦„",
-DlgSelectValue : "ê°’",
-DlgSelectSize : "세로í¬ê¸°",
-DlgSelectLines : "줄",
-DlgSelectChkMulti : "여러항목 ì„ íƒ í—ˆìš©",
-DlgSelectOpAvail : "ì„ íƒì˜µì…˜",
-DlgSelectOpText : "ì´ë¦„",
-DlgSelectOpValue : "ê°’",
-DlgSelectBtnAdd : "추가",
-DlgSelectBtnModify : "변경",
-DlgSelectBtnUp : "위로",
-DlgSelectBtnDown : "아래로",
-DlgSelectBtnSetValue : "ì„ íƒëœê²ƒìœ¼ë¡œ 설정",
-DlgSelectBtnDelete : "삭제",
-
-// Textarea Dialog
-DlgTextareaName : "ì´ë¦„",
-DlgTextareaCols : "칸수",
-DlgTextareaRows : "줄수",
-
-// Text Field Dialog
-DlgTextName : "ì´ë¦„",
-DlgTextValue : "ê°’",
-DlgTextCharWidth : "ê¸€ìž ë„ˆë¹„",
-DlgTextMaxChars : "최대 글ìžìˆ˜",
-DlgTextType : "종류",
-DlgTextTypeText : "문ìžì—´",
-DlgTextTypePass : "비밀번호",
-
-// Hidden Field Dialog
-DlgHiddenName : "ì´ë¦„",
-DlgHiddenValue : "ê°’",
-
-// Bulleted List Dialog
-BulletedListProp : "순서없는 ëª©ë¡ ì†ì„±",
-NumberedListProp : "순서있는 ëª©ë¡ ì†ì„±",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "종류",
-DlgLstTypeCircle : "ì›(Circle)",
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "네모ì (Square)",
-DlgLstTypeNumbers : "번호 (1, 2, 3)",
-DlgLstTypeLCase : "ì†Œë¬¸ìž (a, b, c)",
-DlgLstTypeUCase : "ëŒ€ë¬¸ìž (A, B, C)",
-DlgLstTypeSRoman : "ë¡œë§ˆìž ìˆ˜ë¬¸ìž (i, ii, iii)",
-DlgLstTypeLRoman : "ë¡œë§ˆìž ëŒ€ë¬¸ìž (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "ì¼ë°˜",
-DlgDocBackTab : "ë°°ê²½",
-DlgDocColorsTab : "ìƒ‰ìƒ ë° ì—¬ë°±",
-DlgDocMetaTab : "메타ë°ì´í„°",
-
-DlgDocPageTitle : "페ì´ì§€ëª…",
-DlgDocLangDir : "ë¬¸ìž ì“°ê¸°ë°©í–¥",
-DlgDocLangDirLTR : "왼쪽ì—서 오른쪽 (LTR)",
-DlgDocLangDirRTL : "오른쪽ì—서 왼쪽 (RTL)",
-DlgDocLangCode : "언어코드",
-DlgDocCharSet : "ìºë¦­í„°ì…‹ ì¸ì½”딩",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "다른 ìºë¦­í„°ì…‹ ì¸ì½”딩",
-
-DlgDocDocType : "문서 헤드",
-DlgDocDocTypeOther : "다른 문서헤드",
-DlgDocIncXHTML : "XHTML ë¬¸ì„œì •ì˜ í¬í•¨",
-DlgDocBgColor : "배경색ìƒ",
-DlgDocBgImage : "ë°°ê²½ì´ë¯¸ì§€ URL",
-DlgDocBgNoScroll : "스í¬ë¡¤ë˜ì§€ì•ŠëŠ” ë°°ê²½",
-DlgDocCText : "í…스트",
-DlgDocCLink : "ë§í¬",
-DlgDocCVisited : "방문한 ë§í¬(Visited)",
-DlgDocCActive : "í™œì„±í™”ëœ ë§í¬(Active)",
-DlgDocMargins : "페ì´ì§€ 여백",
-DlgDocMaTop : "위",
-DlgDocMaLeft : "왼쪽",
-DlgDocMaRight : "오른쪽",
-DlgDocMaBottom : "아래",
-DlgDocMeIndex : "문서 키워드 (콤마로 구분)",
-DlgDocMeDescr : "문서 설명",
-DlgDocMeAuthor : "작성ìž",
-DlgDocMeCopy : "저작권",
-DlgDocPreview : "미리보기",
-
-// Templates Dialog
-Templates : "템플릿",
-DlgTemplatesTitle : "내용 템플릿",
-DlgTemplatesSelMsg : "ì—디터ì—서 사용할 í…œí”Œë¦¿ì„ ì„ íƒí•˜ì‹­ì‹œìš”.<br>(지금까지 ìž‘ì„±ëœ ë‚´ìš©ì€ ì‚¬ë¼ì§‘니다.):",
-DlgTemplatesLoading : "템플릿 목ë¡ì„ 불러오는중입니다. 잠시만 기다려주십시요.",
-DlgTemplatesNoTpl : "(í…œí”Œë¦¿ì´ ì—†ìŠµë‹ˆë‹¤.)",
-DlgTemplatesReplace : "현재 내용 바꾸기",
-
-// About Dialog
-DlgAboutAboutTab : "About",
-DlgAboutBrowserInfoTab : "브ë¼ìš°ì € ì •ë³´",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "버전",
-DlgAboutInfo : "ë” ë§Žì€ ì •ë³´ë¥¼ 보시려면 ë‹¤ìŒ ì‚¬ì´íŠ¸ë¡œ 가십시오.",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lt.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lt.js
deleted file mode 100644
index 3b9e6d656..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lt.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Lithuanian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Sutraukti mygtukų juostą",
-ToolbarExpand : "Išplėsti mygtukų juostą",
-
-// Toolbar Items and Context Menu
-Save : "Išsaugoti",
-NewPage : "Naujas puslapis",
-Preview : "Peržiūra",
-Cut : "Iškirpti",
-Copy : "Kopijuoti",
-Paste : "Įdėti",
-PasteText : "Įdėti kaip gryną tekstą",
-PasteWord : "Įdėti iš Word",
-Print : "Spausdinti",
-SelectAll : "Pažymėti viską",
-RemoveFormat : "Panaikinti formatÄ…",
-InsertLinkLbl : "Nuoroda",
-InsertLink : "Įterpti/taisyti nuorodą",
-RemoveLink : "Panaikinti nuorodÄ…",
-VisitLink : "Open Link", //MISSING
-Anchor : "Įterpti/modifikuoti žymę",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Vaizdas",
-InsertImage : "Įterpti/taisyti vaizdą",
-InsertFlashLbl : "Flash",
-InsertFlash : "Įterpti/taisyti Flash",
-InsertTableLbl : "LentelÄ—",
-InsertTable : "Įterpti/taisyti lentelę",
-InsertLineLbl : "Linija",
-InsertLine : "Įterpti horizontalią liniją",
-InsertSpecialCharLbl: "Spec. simbolis",
-InsertSpecialChar : "Įterpti specialų simbolį",
-InsertSmileyLbl : "Veideliai",
-InsertSmiley : "Įterpti veidelį",
-About : "Apie FCKeditor",
-Bold : "Pusjuodis",
-Italic : "Kursyvas",
-Underline : "Pabrauktas",
-StrikeThrough : "Perbrauktas",
-Subscript : "Apatinis indeksas",
-Superscript : "Viršutinis indeksas",
-LeftJustify : "Lygiuoti kairÄ™",
-CenterJustify : "Centruoti",
-RightJustify : "Lygiuoti dešinę",
-BlockJustify : "Lygiuoti abi puses",
-DecreaseIndent : "Sumažinti įtrauką",
-IncreaseIndent : "Padidinti įtrauką",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Atšaukti",
-Redo : "Atstatyti",
-NumberedListLbl : "Numeruotas sąrašas",
-NumberedList : "Įterpti/Panaikinti numeruotą sąrašą",
-BulletedListLbl : "Suženklintas sąrašas",
-BulletedList : "Įterpti/Panaikinti suženklintą sąrašą",
-ShowTableBorders : "Rodyti lentelÄ—s rÄ—mus",
-ShowDetails : "Rodyti detales",
-Style : "Stilius",
-FontFormat : "Å rifto formatas",
-Font : "Å riftas",
-FontSize : "Å rifto dydis",
-TextColor : "Teksto spalva",
-BGColor : "Fono spalva",
-Source : "Å altinis",
-Find : "Rasti",
-Replace : "Pakeisti",
-SpellCheck : "Rašybos tikrinimas",
-UniversalKeyboard : "Universali klaviatūra",
-PageBreakLbl : "Puslapių skirtukas",
-PageBreak : "Įterpti puslapių skirtuką",
-
-Form : "Forma",
-Checkbox : "Žymimasis langelis",
-RadioButton : "Žymimoji akutė",
-TextField : "Teksto laukas",
-Textarea : "Teksto sritis",
-HiddenField : "Nerodomas laukas",
-Button : "Mygtukas",
-SelectionField : "Atrankos laukas",
-ImageButton : "Vaizdinis mygtukas",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Taisyti nuorodÄ…",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Å alinti eilutes",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Å alinti stulpelius",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Å alinti langelius",
-MergeCells : "Sujungti langelius",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Å alinti lentelÄ™",
-CellProperties : "Langelio savybÄ—s",
-TableProperties : "LentelÄ—s savybÄ—s",
-ImageProperties : "Vaizdo savybÄ—s",
-FlashProperties : "Flash savybÄ—s",
-
-AnchorProp : "Žymės savybės",
-ButtonProp : "Mygtuko savybÄ—s",
-CheckboxProp : "Žymimojo langelio savybės",
-HiddenFieldProp : "Nerodomo lauko savybÄ—s",
-RadioButtonProp : "Žymimosios akutės savybės",
-ImageButtonProp : "Vaizdinio mygtuko savybÄ—s",
-TextFieldProp : "Teksto lauko savybÄ—s",
-SelectionFieldProp : "Atrankos lauko savybÄ—s",
-TextareaProp : "Teksto srities savybÄ—s",
-FormProp : "Formos savybÄ—s",
-
-FontFormats : "Normalus;Formuotas;Kreipinio;Antraštinis 1;Antraštinis 2;Antraštinis 3;Antraštinis 4;Antraštinis 5;Antraštinis 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Apdorojamas XHTML. Prašome palaukti...",
-Done : "Baigta",
-PasteWordConfirm : "Įdedamas tekstas yra panašus į kopiją iš Word. Ar Jūs norite prieš įdėjimą išvalyti jį?",
-NotCompatiblePaste : "Ši komanda yra prieinama tik per Internet Explorer 5.5 ar aukštesnę versiją. Ar Jūs norite įterpti be valymo?",
-UnknownToolbarItem : "Nežinomas mygtukų juosta elementas \"%1\"",
-UnknownCommand : "Nežinomas komandos vardas \"%1\"",
-NotImplemented : "Komanda nėra įgyvendinta",
-UnknownToolbarSet : "Mygtukų juostos rinkinys \"%1\" neegzistuoja",
-NoActiveX : "Jūsų naršyklės saugumo nuostatos gali riboti kai kurias redaktoriaus savybes. Jūs turite aktyvuoti opciją \"Run ActiveX controls and plug-ins\". Kitu atveju Jums bus pranešama apie klaidas ir trūkstamas savybes.",
-BrowseServerBlocked : "Neįmanoma atidaryti naujo narÅ¡yklÄ—s lango. Ä®sitikinkite, kad iÅ¡kylanÄių langų blokavimo programos neveiksnios.",
-DialogBlocked : "Neįmanoma atidaryti dialogo lango. Ä®sitikinkite, kad iÅ¡kylanÄių langų blokavimo programos neveiksnios.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Nutraukti",
-DlgBtnClose : "Uždaryti",
-DlgBtnBrowseServer : "Naršyti po serverį",
-DlgAdvancedTag : "Papildomas",
-DlgOpOther : "<Kita>",
-DlgInfoTab : "Informacija",
-DlgAlertUrl : "Prašome įrašyti URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nÄ—ra nustatyta>",
-DlgGenId : "Id",
-DlgGenLangDir : "Teksto kryptis",
-DlgGenLangDirLtr : "Iš kairės į dešinę (LTR)",
-DlgGenLangDirRtl : "Iš dešinės į kairę (RTL)",
-DlgGenLangCode : "Kalbos kodas",
-DlgGenAccessKey : "Prieigos raktas",
-DlgGenName : "Vardas",
-DlgGenTabIndex : "Tabuliavimo indeksas",
-DlgGenLongDescr : "Ilgas aprašymas URL",
-DlgGenClass : "Stilių lentelės klasės",
-DlgGenTitle : "Konsultacinė antraštė",
-DlgGenContType : "Konsultacinio turinio tipas",
-DlgGenLinkCharset : "Susietų išteklių simbolių lentelė",
-DlgGenStyle : "Stilius",
-
-// Image Dialog
-DlgImgTitle : "Vaizdo savybÄ—s",
-DlgImgInfoTab : "Vaizdo informacija",
-DlgImgBtnUpload : "Siųsti į serverį",
-DlgImgURL : "URL",
-DlgImgUpload : "Nusiųsti",
-DlgImgAlt : "Alternatyvus Tekstas",
-DlgImgWidth : "Plotis",
-DlgImgHeight : "Aukštis",
-DlgImgLockRatio : "Išlaikyti proporciją",
-DlgBtnResetSize : "Atstatyti dydį",
-DlgImgBorder : "RÄ—melis",
-DlgImgHSpace : "Hor.ErdvÄ—",
-DlgImgVSpace : "Vert.ErdvÄ—",
-DlgImgAlign : "Lygiuoti",
-DlgImgAlignLeft : "KairÄ™",
-DlgImgAlignAbsBottom: "AbsoliuÄiÄ… apaÄiÄ…",
-DlgImgAlignAbsMiddle: "Absoliutų vidurį",
-DlgImgAlignBaseline : "ApatinÄ™ linijÄ…",
-DlgImgAlignBottom : "ApaÄiÄ…",
-DlgImgAlignMiddle : "Vidurį",
-DlgImgAlignRight : "Dešinę",
-DlgImgAlignTextTop : "Teksto viršūnę",
-DlgImgAlignTop : "Viršūnę",
-DlgImgPreview : "Peržiūra",
-DlgImgAlertUrl : "Prašome įvesti vaizdo URL",
-DlgImgLinkTab : "Nuoroda",
-
-// Flash Dialog
-DlgFlashTitle : "Flash savybÄ—s",
-DlgFlashChkPlay : "Automatinis paleidimas",
-DlgFlashChkLoop : "Ciklas",
-DlgFlashChkMenu : "Leisti Flash meniu",
-DlgFlashScale : "Mastelis",
-DlgFlashScaleAll : "Rodyti visÄ…",
-DlgFlashScaleNoBorder : "Be rÄ—melio",
-DlgFlashScaleFit : "Tikslus atitikimas",
-
-// Link Dialog
-DlgLnkWindowTitle : "Nuoroda",
-DlgLnkInfoTab : "Nuorodos informacija",
-DlgLnkTargetTab : "Paskirtis",
-
-DlgLnkType : "Nuorodos tipas",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Žymė šiame puslapyje",
-DlgLnkTypeEMail : "El.paštas",
-DlgLnkProto : "Protokolas",
-DlgLnkProtoOther : "<kitas>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Pasirinkite žymę",
-DlgLnkAnchorByName : "Pagal žymės vardą",
-DlgLnkAnchorById : "Pagal žymės Id",
-DlgLnkNoAnchors : "(Šiame dokumente žymių nėra)",
-DlgLnkEMail : "El.pašto adresas",
-DlgLnkEMailSubject : "Žinutės tema",
-DlgLnkEMailBody : "Žinutės turinys",
-DlgLnkUpload : "Siųsti",
-DlgLnkBtnUpload : "Siųsti į serverį",
-
-DlgLnkTarget : "Paskirties vieta",
-DlgLnkTargetFrame : "<kadras>",
-DlgLnkTargetPopup : "<išskleidžiamas langas>",
-DlgLnkTargetBlank : "Naujas langas (_blank)",
-DlgLnkTargetParent : "Pirminis langas (_parent)",
-DlgLnkTargetSelf : "Tas pats langas (_self)",
-DlgLnkTargetTop : "Svarbiausias langas (_top)",
-DlgLnkTargetFrameName : "Paskirties kadro vardas",
-DlgLnkPopWinName : "Paskirties lango vardas",
-DlgLnkPopWinFeat : "Išskleidžiamo lango savybės",
-DlgLnkPopResize : "KeiÄiamas dydis",
-DlgLnkPopLocation : "Adreso juosta",
-DlgLnkPopMenu : "Meniu juosta",
-DlgLnkPopScroll : "Slinkties juostos",
-DlgLnkPopStatus : "Būsenos juosta",
-DlgLnkPopToolbar : "Mygtukų juosta",
-DlgLnkPopFullScrn : "Visas ekranas (IE)",
-DlgLnkPopDependent : "Priklausomas (Netscape)",
-DlgLnkPopWidth : "Plotis",
-DlgLnkPopHeight : "Aukštis",
-DlgLnkPopLeft : "KairÄ— pozicija",
-DlgLnkPopTop : "Viršutinė pozicija",
-
-DlnLnkMsgNoUrl : "Prašome įvesti nuorodos URL",
-DlnLnkMsgNoEMail : "Prašome įvesti el.pašto adresą",
-DlnLnkMsgNoAnchor : "Prašome pasirinkti žymę",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Pasirinkite spalvÄ…",
-DlgColorBtnClear : "Trinti",
-DlgColorHighlight : "Paryškinta",
-DlgColorSelected : "Pažymėta",
-
-// Smiley Dialog
-DlgSmileyTitle : "Įterpti veidelį",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Pasirinkite specialų simbolį",
-
-// Table Dialog
-DlgTableTitle : "LentelÄ—s savybÄ—s",
-DlgTableRows : "EilutÄ—s",
-DlgTableColumns : "Stulpeliai",
-DlgTableBorder : "RÄ—melio dydis",
-DlgTableAlign : "Lygiuoti",
-DlgTableAlignNotSet : "<Nenustatyta>",
-DlgTableAlignLeft : "KairÄ™",
-DlgTableAlignCenter : "CentrÄ…",
-DlgTableAlignRight : "Dešinę",
-DlgTableWidth : "Plotis",
-DlgTableWidthPx : "taškais",
-DlgTableWidthPc : "procentais",
-DlgTableHeight : "Aukštis",
-DlgTableCellSpace : "Tarpas tarp langelių",
-DlgTableCellPad : "Trapas nuo langelio rÄ—mo iki teksto",
-DlgTableCaption : "Antraštė",
-DlgTableSummary : "Santrauka",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Langelio savybÄ—s",
-DlgCellWidth : "Plotis",
-DlgCellWidthPx : "taškais",
-DlgCellWidthPc : "procentais",
-DlgCellHeight : "Aukštis",
-DlgCellWordWrap : "Teksto laužymas",
-DlgCellWordWrapNotSet : "<Nenustatyta>",
-DlgCellWordWrapYes : "Taip",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Horizontaliai lygiuoti",
-DlgCellHorAlignNotSet : "<Nenustatyta>",
-DlgCellHorAlignLeft : "KairÄ™",
-DlgCellHorAlignCenter : "CentrÄ…",
-DlgCellHorAlignRight: "Dešinę",
-DlgCellVerAlign : "Vertikaliai lygiuoti",
-DlgCellVerAlignNotSet : "<Nenustatyta>",
-DlgCellVerAlignTop : "Viršų",
-DlgCellVerAlignMiddle : "Vidurį",
-DlgCellVerAlignBottom : "ApaÄiÄ…",
-DlgCellVerAlignBaseline : "ApatinÄ™ linijÄ…",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "EiluÄių apjungimas",
-DlgCellCollSpan : "Stulpelių apjungimas",
-DlgCellBackColor : "Fono spalva",
-DlgCellBorderColor : "RÄ—melio spalva",
-DlgCellBtnSelect : "Pažymėti...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Paieška",
-DlgFindFindBtn : "Surasti",
-DlgFindNotFoundMsg : "Nurodytas tekstas nerastas.",
-
-// Replace Dialog
-DlgReplaceTitle : "Pakeisti",
-DlgReplaceFindLbl : "Surasti tekstÄ…:",
-DlgReplaceReplaceLbl : "Pakeisti tekstu:",
-DlgReplaceCaseChk : "Skirti didžiąsias ir mažąsias raides",
-DlgReplaceReplaceBtn : "Pakeisti",
-DlgReplaceReplAllBtn : "Pakeisti viskÄ…",
-DlgReplaceWordChk : "Atitikti pilną žodį",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).",
-PasteErrorCopy : "Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).",
-
-PasteAsText : "Įdėti kaip gryną tekstą",
-PasteFromWord : "Įdėti iš Word",
-
-DlgPasteMsg2 : "Žemiau esanÄiame įvedimo lauke įdÄ—kite tekstÄ…, naudodami klaviatÅ«rÄ… (<STRONG>Ctrl+V</STRONG>) ir spÅ«stelkite mygtukÄ… <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignoruoti šriftų nustatymus",
-DlgPasteRemoveStyles : "Pašalinti stilių nustatymus",
-
-// Color Picker
-ColorAutomatic : "Automatinis",
-ColorMoreColors : "Daugiau spalvų...",
-
-// Document Properties
-DocProps : "Dokumento savybÄ—s",
-
-// Anchor Dialog
-DlgAnchorTitle : "Žymės savybės",
-DlgAnchorName : "Žymės vardas",
-DlgAnchorErrorName : "Prašome įvesti žymės vardą",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Žodyne nerastas",
-DlgSpellChangeTo : "Pakeisti į",
-DlgSpellBtnIgnore : "Ignoruoti",
-DlgSpellBtnIgnoreAll : "Ignoruoti visus",
-DlgSpellBtnReplace : "Pakeisti",
-DlgSpellBtnReplaceAll : "Pakeisti visus",
-DlgSpellBtnUndo : "Atšaukti",
-DlgSpellNoSuggestions : "- Nėra pasiūlymų -",
-DlgSpellProgress : "Vyksta rašybos tikrinimas...",
-DlgSpellNoMispell : "Rašybos tikrinimas baigtas: Nerasta rašybos klaidų",
-DlgSpellNoChanges : "Rašybos tikrinimas baigtas: Nėra pakeistų žodžių",
-DlgSpellOneChange : "Rašybos tikrinimas baigtas: Vienas žodis pakeistas",
-DlgSpellManyChanges : "Rašybos tikrinimas baigtas: Pakeista %1 žodžių",
-
-IeSpellDownload : "Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?",
-
-// Button Dialog
-DlgButtonText : "Tekstas (Reikšmė)",
-DlgButtonType : "Tipas",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Vardas",
-DlgCheckboxValue : "Reikšmė",
-DlgCheckboxSelected : "Pažymėtas",
-
-// Form Dialog
-DlgFormName : "Vardas",
-DlgFormAction : "Veiksmas",
-DlgFormMethod : "Metodas",
-
-// Select Field Dialog
-DlgSelectName : "Vardas",
-DlgSelectValue : "Reikšmė",
-DlgSelectSize : "Dydis",
-DlgSelectLines : "eiluÄių",
-DlgSelectChkMulti : "Leisti daugeriopÄ… atrankÄ…",
-DlgSelectOpAvail : "Galimos parinktys",
-DlgSelectOpText : "Tekstas",
-DlgSelectOpValue : "Reikšmė",
-DlgSelectBtnAdd : "Įtraukti",
-DlgSelectBtnModify : "Modifikuoti",
-DlgSelectBtnUp : "Aukštyn",
-DlgSelectBtnDown : "Žemyn",
-DlgSelectBtnSetValue : "Laikyti pažymėta reikšme",
-DlgSelectBtnDelete : "Trinti",
-
-// Textarea Dialog
-DlgTextareaName : "Vardas",
-DlgTextareaCols : "Ilgis",
-DlgTextareaRows : "Plotis",
-
-// Text Field Dialog
-DlgTextName : "Vardas",
-DlgTextValue : "Reikšmė",
-DlgTextCharWidth : "Ilgis simboliais",
-DlgTextMaxChars : "Maksimalus simbolių skaiÄius",
-DlgTextType : "Tipas",
-DlgTextTypeText : "Tekstas",
-DlgTextTypePass : "Slaptažodis",
-
-// Hidden Field Dialog
-DlgHiddenName : "Vardas",
-DlgHiddenValue : "Reikšmė",
-
-// Bulleted List Dialog
-BulletedListProp : "Suženklinto sąrašo savybės",
-NumberedListProp : "Numeruoto sąrašo savybės",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Tipas",
-DlgLstTypeCircle : "Apskritimas",
-DlgLstTypeDisc : "Diskas",
-DlgLstTypeSquare : "Kvadratas",
-DlgLstTypeNumbers : "SkaiÄiai (1, 2, 3)",
-DlgLstTypeLCase : "Mažosios raidės (a, b, c)",
-DlgLstTypeUCase : "Didžiosios raidės (A, B, C)",
-DlgLstTypeSRoman : "RomÄ—nų mažieji skaiÄiai (i, ii, iii)",
-DlgLstTypeLRoman : "RomÄ—nų didieji skaiÄiai (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Bendros savybÄ—s",
-DlgDocBackTab : "Fonas",
-DlgDocColorsTab : "Spalvos ir kraštinės",
-DlgDocMetaTab : "Meta duomenys",
-
-DlgDocPageTitle : "Puslapio antraštė",
-DlgDocLangDir : "Kalbos kryptis",
-DlgDocLangDirLTR : "Iš kairės į dešinę (LTR)",
-DlgDocLangDirRTL : "Iš dešinės į kairę (RTL)",
-DlgDocLangCode : "Kalbos kodas",
-DlgDocCharSet : "Simbolių kodavimo lentelė",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Kita simbolių kodavimo lentelė",
-
-DlgDocDocType : "Dokumento tipo antraštė",
-DlgDocDocTypeOther : "Kita dokumento tipo antraštė",
-DlgDocIncXHTML : "Įtraukti XHTML deklaracijas",
-DlgDocBgColor : "Fono spalva",
-DlgDocBgImage : "Fono paveikslÄ—lio nuoroda (URL)",
-DlgDocBgNoScroll : "Neslenkantis fonas",
-DlgDocCText : "Tekstas",
-DlgDocCLink : "Nuoroda",
-DlgDocCVisited : "Aplankyta nuoroda",
-DlgDocCActive : "Aktyvi nuoroda",
-DlgDocMargins : "Puslapio kraštinės",
-DlgDocMaTop : "Viršuje",
-DlgDocMaLeft : "KairÄ—je",
-DlgDocMaRight : "Dešinėje",
-DlgDocMaBottom : "ApaÄioje",
-DlgDocMeIndex : "Dokumento indeksavimo raktiniai žodžiai (atskirti kableliais)",
-DlgDocMeDescr : "Dokumento apibūdinimas",
-DlgDocMeAuthor : "Autorius",
-DlgDocMeCopy : "AutorinÄ—s teisÄ—s",
-DlgDocPreview : "Peržiūra",
-
-// Templates Dialog
-Templates : "Å ablonai",
-DlgTemplatesTitle : "Turinio šablonai",
-DlgTemplatesSelMsg : "Pasirinkite norimą šabloną<br>(<b>Dėmesio!</b> esamas turinys bus prarastas):",
-DlgTemplatesLoading : "Įkeliamas šablonų sąrašas. Prašome palaukti...",
-DlgTemplatesNoTpl : "(Å ablonų sÄ…raÅ¡as tuÅ¡Äias)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "Apie",
-DlgAboutBrowserInfoTab : "Naršyklės informacija",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "versija",
-DlgAboutInfo : "PapildomÄ… informacijÄ… galima gauti",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lv.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lv.js
deleted file mode 100644
index bfb09c140..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/lv.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Latvian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "SamazinÄt rÄ«ku joslu",
-ToolbarExpand : "PaplaÅ¡inÄt rÄ«ku joslu",
-
-// Toolbar Items and Context Menu
-Save : "SaglabÄt",
-NewPage : "Jauna lapa",
-Preview : "PÄrskatÄ«t",
-Cut : "Izgriezt",
-Copy : "Kopēt",
-Paste : "Ievietot",
-PasteText : "Ievietot kÄ vienkÄrÅ¡u tekstu",
-PasteWord : "Ievietot no Worda",
-Print : "DrukÄt",
-SelectAll : "Iezīmēt visu",
-RemoveFormat : "Noņemt stilus",
-InsertLinkLbl : "Hipersaite",
-InsertLink : "Ievietot/Labot hipersaiti",
-RemoveLink : "Noņemt hipersaiti",
-VisitLink : "Open Link", //MISSING
-Anchor : "Ievietot/Labot iezīmi",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Attēls",
-InsertImage : "Ievietot/Labot Attēlu",
-InsertFlashLbl : "Flash",
-InsertFlash : "Ievietot/Labot Flash",
-InsertTableLbl : "Tabula",
-InsertTable : "Ievietot/Labot Tabulu",
-InsertLineLbl : "AtdalÄ«tÄjsvÄ«tra",
-InsertLine : "Ievietot horizontÄlu AtdalÄ«tÄjsvÄ«tru",
-InsertSpecialCharLbl: "Īpašs simbols",
-InsertSpecialChar : "Ievietot speciÄlo simbolu",
-InsertSmileyLbl : "Smaidiņi",
-InsertSmiley : "Ievietot smaidiņu",
-About : "ĪsumÄ par FCKeditor",
-Bold : "Treknu šriftu",
-Italic : "SlÄ«prakstÄ",
-Underline : "Apakšsvītra",
-StrikeThrough : "PÄrsvÄ«trots",
-Subscript : "ZemrakstÄ",
-Superscript : "AugÅ¡rakstÄ",
-LeftJustify : "IzlÄ«dzinÄt pa kreisi",
-CenterJustify : "IzlÄ«dzinÄt pret centru",
-RightJustify : "IzlÄ«dzinÄt pa labi",
-BlockJustify : "IzlÄ«dzinÄt malas",
-DecreaseIndent : "SamazinÄt atkÄpi",
-IncreaseIndent : "PalielinÄt atkÄpi",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Atcelt",
-Redo : "AtkÄrtot",
-NumberedListLbl : "Numurēts saraksts",
-NumberedList : "Ievietot/Noņemt numerēto sarakstu",
-BulletedListLbl : "Izcelts saraksts",
-BulletedList : "Ievietot/Noņemt izceltu sarakstu",
-ShowTableBorders : "ParÄdÄ«t tabulas robežas",
-ShowDetails : "ParÄdÄ«t sÄ«kÄku informÄciju",
-Style : "Stils",
-FontFormat : "FormÄts",
-Font : "Å rifts",
-FontSize : "Izmērs",
-TextColor : "Teksta krÄsa",
-BGColor : "Fona krÄsa",
-Source : "HTML kods",
-Find : "Meklēt",
-Replace : "Nomainīt",
-SpellCheck : "PareizrakstÄ«bas pÄrbaude",
-UniversalKeyboard : "UniversÄla klaviatÅ«ra",
-PageBreakLbl : "Lapas pÄrtraukums",
-PageBreak : "Ievietot lapas pÄrtraukumu",
-
-Form : "Forma",
-Checkbox : "Atzīmēšanas kastīte",
-RadioButton : "Izvēles poga",
-TextField : "Teksta rinda",
-Textarea : "Teksta laukums",
-HiddenField : "Paslēpta teksta rinda",
-Button : "Poga",
-SelectionField : "Iezīmēšanas lauks",
-ImageButton : "Attēlpoga",
-
-FitWindow : "Maksimizēt redaktora izmēru",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Labot hipersaiti",
-CellCM : "Šūna",
-RowCM : "Rinda",
-ColumnCM : "Kolonna",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Dzēst rindas",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Dzēst kolonnas",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Dzēst rūtiņas",
-MergeCells : "Apvienot rūtiņas",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Dzēst tabulu",
-CellProperties : "Rūtiņas īpašības",
-TableProperties : "Tabulas īpašības",
-ImageProperties : "Attēla īpašības",
-FlashProperties : "Flash īpašības",
-
-AnchorProp : "Iezīmes īpašības",
-ButtonProp : "Pogas īpašības",
-CheckboxProp : "Atzīmēšanas kastītes īpašības",
-HiddenFieldProp : "PaslÄ“ptÄs teksta rindas Ä«pašības",
-RadioButtonProp : "Izvēles poga īpašības",
-ImageButtonProp : "Attēlpogas īpašības",
-TextFieldProp : "Teksta rindas īpašības",
-SelectionFieldProp : "Iezīmēšanas lauka īpašības",
-TextareaProp : "Teksta laukuma īpašības",
-FormProp : "Formas īpašības",
-
-FontFormats : "NormÄls teksts;FormatÄ“ts teksts;Adrese;Virsraksts 1;Virsraksts 2;Virsraksts 3;Virsraksts 4;Virsraksts 5;Virsraksts 6;Rindkopa (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Tiek apstrÄdÄts XHTML. LÅ«dzu uzgaidiet...",
-Done : "Darīts",
-PasteWordConfirm : "Teksta fragments, kas tiek ievietots, izskatÄs, ka bÅ«tu sagatavots Word'Ä. Vai vÄ“laties to apstrÄdÄt pirms ievietoÅ¡anas?",
-NotCompatiblePaste : "Å Ä« darbÄ«ba ir pieejama Internet Explorer'Ä«, kas jaunÄks par 5.5 versiju. Vai vÄ“laties ievietot bez apstrÄdes?",
-UnknownToolbarItem : "NezinÄms rÄ«ku joslas objekts \"%1\"",
-UnknownCommand : "NezinÄmas darbÄ«bas nosaukums \"%1\"",
-NotImplemented : "Darbība netika paveikta",
-UnknownToolbarSet : "Rīku joslas komplekts \"%1\" neeksistē",
-NoActiveX : "Interneta pÄrlÅ«kprogrammas drošības uzstÄdÄ«jumi varÄ“tu ietekmÄ“t dažas no redaktora Ä«pašībÄm. JÄbÅ«t aktivizÄ“tai sadaļai \"Run ActiveX controls and plug-ins\". SavÄdÄk ir iespÄ“jamas kļūdas darbÄ«bÄ un kļūdu paziņojumu parÄdīšanÄs.",
-BrowseServerBlocked : "Resursu pÄrlÅ«ks nevar tikt atvÄ“rts. PÄrliecinieties, ka uznirstoÅ¡o logu bloÄ·Ä“tÄji ir atslÄ“gti.",
-DialogBlocked : "Nav iespÄ“jams atvÄ“rt dialoglogu. PÄrliecinieties, ka uznirstoÅ¡o logu bloÄ·Ä“tÄji ir atslÄ“gti.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "Darīts!",
-DlgBtnCancel : "Atcelt",
-DlgBtnClose : "Aizvērt",
-DlgBtnBrowseServer : "Skatīt servera saturu",
-DlgAdvancedTag : "Izvērstais",
-DlgOpOther : "<Cits>",
-DlgInfoTab : "InformÄcija",
-DlgAlertUrl : "Lūdzu, ievietojiet hipersaiti",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nav iestatīts>",
-DlgGenId : "Id",
-DlgGenLangDir : "Valodas lasīšanas virziens",
-DlgGenLangDirLtr : "No kreisÄs uz labo (LTR)",
-DlgGenLangDirRtl : "No labÄs uz kreiso (RTL)",
-DlgGenLangCode : "Valodas kods",
-DlgGenAccessKey : "Pieejas kods",
-DlgGenName : "Nosaukums",
-DlgGenTabIndex : "Ciļņu indekss",
-DlgGenLongDescr : "Gara apraksta Hipersaite",
-DlgGenClass : "Stilu saraksta klases",
-DlgGenTitle : "Konsultatīvs virsraksts",
-DlgGenContType : "Konsultatīvs satura tips",
-DlgGenLinkCharset : "PievienotÄ resursa kodu tabula",
-DlgGenStyle : "Stils",
-
-// Image Dialog
-DlgImgTitle : "Attēla īpašības",
-DlgImgInfoTab : "InformÄcija par attÄ“lu",
-DlgImgBtnUpload : "Nosūtīt serverim",
-DlgImgURL : "URL",
-DlgImgUpload : "AugÅ¡upielÄdÄ“t",
-DlgImgAlt : "Alternatīvais teksts",
-DlgImgWidth : "Platums",
-DlgImgHeight : "Augstums",
-DlgImgLockRatio : "Nemainīga Augstuma/Platuma attiecība",
-DlgBtnResetSize : "Atjaunot sÄkotnÄ“jo izmÄ“ru",
-DlgImgBorder : "RÄmis",
-DlgImgHSpace : "HorizontÄlÄ telpa",
-DlgImgVSpace : "VertikÄlÄ telpa",
-DlgImgAlign : "NolÄ«dzinÄt",
-DlgImgAlignLeft : "Pa kreisi",
-DlgImgAlignAbsBottom: "AbsolÅ«ti apakÅ¡Ä",
-DlgImgAlignAbsMiddle: "AbsolÅ«ti vertikÄli centrÄ“ts",
-DlgImgAlignBaseline : "PamatrindÄ",
-DlgImgAlignBottom : "ApakÅ¡Ä",
-DlgImgAlignMiddle : "VertikÄli centrÄ“ts",
-DlgImgAlignRight : "Pa labi",
-DlgImgAlignTextTop : "Teksta augÅ¡Ä",
-DlgImgAlignTop : "AugÅ¡Ä",
-DlgImgPreview : "PÄrskats",
-DlgImgAlertUrl : "LÅ«dzu norÄdÄ«t attÄ“la hipersaiti",
-DlgImgLinkTab : "Hipersaite",
-
-// Flash Dialog
-DlgFlashTitle : "Flash īpašības",
-DlgFlashChkPlay : "AutomÄtiska atskaņoÅ¡ana",
-DlgFlashChkLoop : "NepÄrtraukti",
-DlgFlashChkMenu : "Atļaut Flash izvēlni",
-DlgFlashScale : "Mainīt izmēru",
-DlgFlashScaleAll : "RÄdÄ«t visu",
-DlgFlashScaleNoBorder : "Bez rÄmja",
-DlgFlashScaleFit : "Precīzs izmērs",
-
-// Link Dialog
-DlgLnkWindowTitle : "Hipersaite",
-DlgLnkInfoTab : "Hipersaites informÄcija",
-DlgLnkTargetTab : "Mērķis",
-
-DlgLnkType : "Hipersaites tips",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "IezÄ«me Å¡ajÄ lapÄ",
-DlgLnkTypeEMail : "E-pasts",
-DlgLnkProto : "Protokols",
-DlgLnkProtoOther : "<cits>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Izvēlēties iezīmi",
-DlgLnkAnchorByName : "Pēc iezīmes nosaukuma",
-DlgLnkAnchorById : "Pēc elementa ID",
-DlgLnkNoAnchors : "(Å ajÄ dokumentÄ nav iezÄ«mju)",
-DlgLnkEMail : "E-pasta adrese",
-DlgLnkEMailSubject : "Ziņas tēma",
-DlgLnkEMailBody : "Ziņas saturs",
-DlgLnkUpload : "AugÅ¡upielÄdÄ“t",
-DlgLnkBtnUpload : "Nosūtīt serverim",
-
-DlgLnkTarget : "Mērķis",
-DlgLnkTargetFrame : "<ietvars>",
-DlgLnkTargetPopup : "<uznirstoÅ¡Ä logÄ>",
-DlgLnkTargetBlank : "JaunÄ logÄ (_blank)",
-DlgLnkTargetParent : "EsoÅ¡ajÄ logÄ (_parent)",
-DlgLnkTargetSelf : "TajÄ paÅ¡Ä logÄ (_self)",
-DlgLnkTargetTop : "VisredzamÄkajÄ logÄ (_top)",
-DlgLnkTargetFrameName : "Mērķa ietvara nosaukums",
-DlgLnkPopWinName : "UznirstoÅ¡Ä loga nosaukums",
-DlgLnkPopWinFeat : "UznirstoÅ¡Ä loga nosaukums Ä«pašības",
-DlgLnkPopResize : "Ar mainÄmu izmÄ“ru",
-DlgLnkPopLocation : "AtraÅ¡anÄs vietas josla",
-DlgLnkPopMenu : "Izvēlnes josla",
-DlgLnkPopScroll : "Ritjoslas",
-DlgLnkPopStatus : "Statusa josla",
-DlgLnkPopToolbar : "Rīku josla",
-DlgLnkPopFullScrn : "PilnÄ ekrÄnÄ (IE)",
-DlgLnkPopDependent : "Atkarīgs (Netscape)",
-DlgLnkPopWidth : "Platums",
-DlgLnkPopHeight : "Augstums",
-DlgLnkPopLeft : "KreisÄ koordinÄte",
-DlgLnkPopTop : "AugšējÄ koordinÄte",
-
-DlnLnkMsgNoUrl : "LÅ«dzu norÄdi hipersaiti",
-DlnLnkMsgNoEMail : "LÅ«dzu norÄdi e-pasta adresi",
-DlnLnkMsgNoAnchor : "LÅ«dzu norÄdi iezÄ«mi",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "IzvÄ“lies krÄsu",
-DlgColorBtnClear : "Dzēst",
-DlgColorHighlight : "Izcelt",
-DlgColorSelected : "Iezīmētais",
-
-// Smiley Dialog
-DlgSmileyTitle : "Ievietot smaidiņu",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Ievietot īpašu simbolu",
-
-// Table Dialog
-DlgTableTitle : "Tabulas īpašības",
-DlgTableRows : "Rindas",
-DlgTableColumns : "Kolonnas",
-DlgTableBorder : "RÄmja izmÄ“rs",
-DlgTableAlign : "Novietojums",
-DlgTableAlignNotSet : "<nav norÄdÄ«ts>",
-DlgTableAlignLeft : "Pa kreisi",
-DlgTableAlignCenter : "Centrēti",
-DlgTableAlignRight : "Pa labi",
-DlgTableWidth : "Platums",
-DlgTableWidthPx : "pikseļos",
-DlgTableWidthPc : "procentuÄli",
-DlgTableHeight : "Augstums",
-DlgTableCellSpace : "Rūtiņu atstatums",
-DlgTableCellPad : "Rūtiņu nobīde",
-DlgTableCaption : "Leģenda",
-DlgTableSummary : "AnotÄcija",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Rūtiņas īpašības",
-DlgCellWidth : "Platums",
-DlgCellWidthPx : "pikseļi",
-DlgCellWidthPc : "procentos",
-DlgCellHeight : "Augstums",
-DlgCellWordWrap : "Teksta pÄrnese",
-DlgCellWordWrapNotSet : "<nav norÄdÄ«ta>",
-DlgCellWordWrapYes : "JÄ",
-DlgCellWordWrapNo : "NÄ“",
-DlgCellHorAlign : "HorizontÄla novietojums",
-DlgCellHorAlignNotSet : "<Nav norÄdÄ«ts>",
-DlgCellHorAlignLeft : "Pa kreisi",
-DlgCellHorAlignCenter : "Centrēti",
-DlgCellHorAlignRight: "Pa labi",
-DlgCellVerAlign : "VertikÄlais novietojums",
-DlgCellVerAlignNotSet : "<nav norÄdÄ«ts>",
-DlgCellVerAlignTop : "Augša",
-DlgCellVerAlignMiddle : "Vidus",
-DlgCellVerAlignBottom : "Apakša",
-DlgCellVerAlignBaseline : "PamatrindÄ",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Rindu pÄrnese",
-DlgCellCollSpan : "Kolonnu pÄrnese",
-DlgCellBackColor : "Fona krÄsa",
-DlgCellBorderColor : "RÄmja krÄsa",
-DlgCellBtnSelect : "Iezīmē...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "MeklÄ“tÄjs",
-DlgFindFindBtn : "Meklēt",
-DlgFindNotFoundMsg : "NorÄdÄ«tÄ frÄze netika atrasta.",
-
-// Replace Dialog
-DlgReplaceTitle : "Aizvietošana",
-DlgReplaceFindLbl : "Meklēt:",
-DlgReplaceReplaceLbl : "Nomainīt uz:",
-DlgReplaceCaseChk : "Reģistrjūtīgs",
-DlgReplaceReplaceBtn : "Aizvietot",
-DlgReplaceReplAllBtn : "Aizvietot visu",
-DlgReplaceWordChk : "JÄsakrÄ«t pilnÄ«bÄ",
-
-// Paste Operations / Dialog
-PasteErrorCut : "JÅ«su pÄrlÅ«kprogrammas drošības iestatÄ«jumi nepieļauj editoram automÄtiski veikt izgrieÅ¡anas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl+X, lai veiktu Å¡o darbÄ«bu.",
-PasteErrorCopy : "JÅ«su pÄrlÅ«kprogrammas drošības iestatÄ«jumi nepieļauj editoram automÄtiski veikt kopēšanas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl+C), lai veiktu Å¡o darbÄ«bu.",
-
-PasteAsText : "Ievietot kÄ vienkÄrÅ¡u tekstu",
-PasteFromWord : "Ievietot no Worda",
-
-DlgPasteMsg2 : "LÅ«dzu, ievietojiet tekstu Å¡ajÄ laukumÄ, izmantojot klaviatÅ«ru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>DarÄ«ts!</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "IgnorÄ“t iepriekÅ¡ norÄdÄ«tos fontus",
-DlgPasteRemoveStyles : "Noņemt norÄdÄ«tos stilus",
-
-// Color Picker
-ColorAutomatic : "AutomÄtiska",
-ColorMoreColors : "PlaÅ¡Äka palete...",
-
-// Document Properties
-DocProps : "Dokumenta īpašības",
-
-// Anchor Dialog
-DlgAnchorTitle : "Iezīmes īpašības",
-DlgAnchorName : "Iezīmes nosaukums",
-DlgAnchorErrorName : "LÅ«dzu norÄdiet iezÄ«mes nosaukumu",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Netika atrasts vÄrdnÄ«cÄ",
-DlgSpellChangeTo : "Nomainīt uz",
-DlgSpellBtnIgnore : "Ignorēt",
-DlgSpellBtnIgnoreAll : "Ignorēt visu",
-DlgSpellBtnReplace : "Aizvietot",
-DlgSpellBtnReplaceAll : "Aizvietot visu",
-DlgSpellBtnUndo : "Atcelt",
-DlgSpellNoSuggestions : "- Nav ieteikumu -",
-DlgSpellProgress : "Notiek pareizrakstÄ«bas pÄrbaude...",
-DlgSpellNoMispell : "PareizrakstÄ«bas pÄrbaude pabeigta: kļūdas netika atrastas",
-DlgSpellNoChanges : "PareizrakstÄ«bas pÄrbaude pabeigta: nekas netika labots",
-DlgSpellOneChange : "PareizrakstÄ«bas pÄrbaude pabeigta: 1 vÄrds izmainÄ«ts",
-DlgSpellManyChanges : "PareizrakstÄ«bas pÄrbaude pabeigta: %1 vÄrdi tika mainÄ«ti",
-
-IeSpellDownload : "PareizrakstÄ«bas pÄrbaudÄ«tÄjs nav pievienots. Vai vÄ“laties to lejupielÄdÄ“t tagad?",
-
-// Button Dialog
-DlgButtonText : "Teksts (vērtība)",
-DlgButtonType : "Tips",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nosaukums",
-DlgCheckboxValue : "Vērtība",
-DlgCheckboxSelected : "Iezīmēts",
-
-// Form Dialog
-DlgFormName : "Nosaukums",
-DlgFormAction : "Darbība",
-DlgFormMethod : "Metode",
-
-// Select Field Dialog
-DlgSelectName : "Nosaukums",
-DlgSelectValue : "Vērtība",
-DlgSelectSize : "Izmērs",
-DlgSelectLines : "rindas",
-DlgSelectChkMulti : "Atļaut vairÄkus iezÄ«mÄ“jumus",
-DlgSelectOpAvail : "PieejamÄs iespÄ“jas",
-DlgSelectOpText : "Teksts",
-DlgSelectOpValue : "Vērtība",
-DlgSelectBtnAdd : "Pievienot",
-DlgSelectBtnModify : "Veikt izmaiņas",
-DlgSelectBtnUp : "Augšup",
-DlgSelectBtnDown : "Lejup",
-DlgSelectBtnSetValue : "Noteikt kÄ iezÄ«mÄ“to vÄ“rtÄ«bu",
-DlgSelectBtnDelete : "Dzēst",
-
-// Textarea Dialog
-DlgTextareaName : "Nosaukums",
-DlgTextareaCols : "Kolonnas",
-DlgTextareaRows : "Rindas",
-
-// Text Field Dialog
-DlgTextName : "Nosaukums",
-DlgTextValue : "Vērtība",
-DlgTextCharWidth : "Simbolu platums",
-DlgTextMaxChars : "Simbolu maksimÄlais daudzums",
-DlgTextType : "Tips",
-DlgTextTypeText : "Teksts",
-DlgTextTypePass : "Parole",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nosaukums",
-DlgHiddenValue : "Vērtība",
-
-// Bulleted List Dialog
-BulletedListProp : "Aizzīmju saraksta īpašības",
-NumberedListProp : "NumerÄ“tÄ saraksta Ä«pašības",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Tips",
-DlgLstTypeCircle : "Aplis",
-DlgLstTypeDisc : "Disks",
-DlgLstTypeSquare : "KvadrÄts",
-DlgLstTypeNumbers : "Skaitļi (1, 2, 3)",
-DlgLstTypeLCase : "Maziem burtiem (a, b, c)",
-DlgLstTypeUCase : "Lieliem burtiem (A, B, C)",
-DlgLstTypeSRoman : "Maziem romiešu cipariem (i, ii, iii)",
-DlgLstTypeLRoman : "Lieliem romiešu cipariem (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "VispÄrÄ«ga informÄcija",
-DlgDocBackTab : "Fons",
-DlgDocColorsTab : "KrÄsas un robežu nobÄ«des",
-DlgDocMetaTab : "META dati",
-
-DlgDocPageTitle : "Dokumenta virsraksts <Title>",
-DlgDocLangDir : "Valodas lasīšanas virziens",
-DlgDocLangDirLTR : "No kreisÄs uz labo (LTR)",
-DlgDocLangDirRTL : "No labÄs uz kreiso (RTL)",
-DlgDocLangCode : "Valodas kods",
-DlgDocCharSet : "Simbolu kodējums",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Cits simbolu kodējums",
-
-DlgDocDocType : "Dokumenta tips",
-DlgDocDocTypeOther : "Cits dokumenta tips",
-DlgDocIncXHTML : "Ietvert XHTML deklarÄcijas",
-DlgDocBgColor : "Fona krÄsa",
-DlgDocBgImage : "Fona attēla hipersaite",
-DlgDocBgNoScroll : "Fona attēls ir fiksēts",
-DlgDocCText : "Teksts",
-DlgDocCLink : "Hipersaite",
-DlgDocCVisited : "Apmeklēta hipersaite",
-DlgDocCActive : "Aktīva hipersaite",
-DlgDocMargins : "Lapas robežas",
-DlgDocMaTop : "AugÅ¡Ä",
-DlgDocMaLeft : "Pa kreisi",
-DlgDocMaRight : "Pa labi",
-DlgDocMaBottom : "ApakÅ¡Ä",
-DlgDocMeIndex : "Dokumentu aprakstoÅ¡i atslÄ“gvÄrdi (atdalÄ«ti ar komatu)",
-DlgDocMeDescr : "Dokumenta apraksts",
-DlgDocMeAuthor : "Autors",
-DlgDocMeCopy : "Autortiesības",
-DlgDocPreview : "Priekšskats",
-
-// Templates Dialog
-Templates : "Sagataves",
-DlgTemplatesTitle : "Satura sagataves",
-DlgTemplatesSelMsg : "LÅ«dzu, norÄdiet sagatavi, ko atvÄ“rt editorÄ<br>(patreizÄ“jie dati tiks zaudÄ“ti):",
-DlgTemplatesLoading : "Notiek sagatavju saraksta ielÄde. LÅ«dzu, uzgaidiet...",
-DlgTemplatesNoTpl : "(Nav norÄdÄ«tas sagataves)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "Par",
-DlgAboutBrowserInfoTab : "InformÄcija par pÄrlÅ«kprogrammu",
-DlgAboutLicenseTab : "Licence",
-DlgAboutVersion : "versija",
-DlgAboutInfo : "Papildus informÄcija ir pieejama",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/mn.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/mn.js
deleted file mode 100644
index b3803fc23..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/mn.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Mongolian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Багажны Ñ…ÑÑÑг ÑвдÑÑ…",
-ToolbarExpand : "Багажны Ñ…ÑÑÑг өргөтгөх",
-
-// Toolbar Items and Context Menu
-Save : "Хадгалах",
-NewPage : "Ð¨Ð¸Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñ",
-Preview : "Уридчлан харах",
-Cut : "Хайчлах",
-Copy : "Хуулах",
-Paste : "Буулгах",
-PasteText : "plain text-ÑÑÑ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…",
-PasteWord : "Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…",
-Print : "Ð¥ÑвлÑÑ…",
-SelectAll : "Бүгдийг нь Ñонгох",
-RemoveFormat : "Формат авч хаÑÑ…",
-InsertLinkLbl : "Линк",
-InsertLink : "Линк Оруулах/ЗаÑварлах",
-RemoveLink : "Линк авч хаÑÑ…",
-VisitLink : "Open Link", //MISSING
-Anchor : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ ÐžÑ€ÑƒÑƒÐ»Ð°Ñ…/ЗаÑварлах",
-AnchorDelete : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ðвах",
-InsertImageLbl : "Зураг",
-InsertImage : "Зураг Оруулах/ЗаÑварлах",
-InsertFlashLbl : "Флаш",
-InsertFlash : "Флаш Оруулах/ЗаÑварлах",
-InsertTableLbl : "Ð¥Ò¯ÑнÑгт",
-InsertTable : "Ð¥Ò¯ÑнÑгт Оруулах/ЗаÑварлах",
-InsertLineLbl : "ЗурааÑ",
-InsertLine : "Хөндлөн Ð·ÑƒÑ€Ð°Ð°Ñ Ð¾Ñ€ÑƒÑƒÐ»Ð°Ñ…",
-InsertSpecialCharLbl: "Онцгой Ñ‚ÑмдÑгт",
-InsertSpecialChar : "Онцгой Ñ‚ÑмдÑгт оруулах",
-InsertSmileyLbl : "Тодорхойлолт",
-InsertSmiley : "Тодорхойлолт оруулах",
-About : "FCKeditor-н тухай",
-Bold : "Тод бүдүүн",
-Italic : "Ðалуу",
-Underline : "Доогуур нь зурааÑтай болгох",
-StrikeThrough : "Дундуур нь зурааÑтай болгох",
-Subscript : "Суурь болгох",
-Superscript : "ЗÑÑ€Ñг болгох",
-LeftJustify : "Зүүн талд байрлуулах",
-CenterJustify : "Төвд байрлуулах",
-RightJustify : "Баруун талд байрлуулах",
-BlockJustify : "Блок Ñ…ÑлбÑÑ€ÑÑÑ€ байрлуулах",
-DecreaseIndent : "Догол мөр нÑмÑÑ…",
-IncreaseIndent : "Догол мөр хаÑах",
-Blockquote : "Хайрцаглах",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Хүчингүй болгох",
-Redo : "Өмнөх үйлдлÑÑ ÑÑргÑÑÑ…",
-NumberedListLbl : "ДугаарлагдÑан жагÑаалт",
-NumberedList : "ДугаарлагдÑан жагÑаалт Оруулах/Ðвах",
-BulletedListLbl : "ЦÑгтÑй жагÑаалт",
-BulletedList : "ЦÑгтÑй жагÑаалт Оруулах/Ðвах",
-ShowTableBorders : "Ð¥Ò¯ÑнÑгтийн хүрÑÑг үзүүлÑÑ…",
-ShowDetails : "Деталчлан үзүүлÑÑ…",
-Style : "Загвар",
-FontFormat : "Формат",
-Font : "Фонт",
-FontSize : "Ð¥ÑмжÑÑ",
-TextColor : "Фонтны өнгө",
-BGColor : "Фонны өнгө",
-Source : "Код",
-Find : "Хайх",
-Replace : "Солих",
-SpellCheck : "Үгийн дүрÑÑ… шалгах",
-UniversalKeyboard : "УниварÑал гар",
-PageBreakLbl : "Ð¥ÑƒÑƒÐ´Ð°Ñ Ñ‚ÑƒÑгаарлах",
-PageBreak : "Ð¥ÑƒÑƒÐ´Ð°Ñ Ñ‚ÑƒÑгаарлагч оруулах",
-
-Form : "Форм",
-Checkbox : "ЧекбокÑ",
-RadioButton : "Радио товч",
-TextField : "Техт талбар",
-Textarea : "Техт орчин",
-HiddenField : "Ðууц талбар",
-Button : "Товч",
-SelectionField : "Сонгогч талбар",
-ImageButton : "Зурагтай товч",
-
-FitWindow : "editor-н Ñ…ÑмжÑÑг томруулах",
-ShowBlocks : "Block-уудыг үзүүлÑÑ…",
-
-// Context Menu
-EditLink : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð·Ð°Ñварлах",
-CellCM : "Ðүх/зай",
-RowCM : "Мөр",
-ColumnCM : "Багана",
-InsertRowAfter : "Мөр дараа нь оруулах",
-InsertRowBefore : "Мөр өмнө нь оруулах",
-DeleteRows : "Мөр уÑтгах",
-InsertColumnAfter : "Багана дараа нь оруулах",
-InsertColumnBefore : "Багана өмнө нь оруулах",
-DeleteColumns : "Багана уÑтгах",
-InsertCellAfter : "Ðүх/зай дараа нь оруулах",
-InsertCellBefore : "Ðүх/зай өмнө нь оруулах",
-DeleteCells : "Ðүх уÑтгах",
-MergeCells : "Ðүх нÑгтÑÑ…",
-MergeRight : "Баруун тийш нÑгтгÑÑ…",
-MergeDown : "Доош нÑгтгÑÑ…",
-HorizontalSplitCell : "Ðүх/зайг боÑоогоор нь туÑгаарлах",
-VerticalSplitCell : "Ðүх/зайг хөндлөнгөөр нь туÑгаарлах",
-TableDelete : "Ð¥Ò¯ÑнÑгт уÑтгах",
-CellProperties : "Ðүх/зай зайн шинж чанар",
-TableProperties : "Ð¥Ò¯ÑнÑгт",
-ImageProperties : "Зураг",
-FlashProperties : "Флаш шинж чанар",
-
-AnchorProp : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ ÑˆÐ¸Ð½Ð¶ чанар",
-ButtonProp : "Товчны шинж чанар",
-CheckboxProp : "ЧекбокÑны шинж чанар",
-HiddenFieldProp : "Ðууц талбарын шинж чанар",
-RadioButtonProp : "Радио товчны шинж чанар",
-ImageButtonProp : "Зурган товчны шинж чанар",
-TextFieldProp : "ТекÑÑ‚ талбарын шинж чанар",
-SelectionFieldProp : "Согогч талбарын шинж чанар",
-TextareaProp : "ТекÑÑ‚ орчны шинж чанар",
-FormProp : "Форм шинж чанар",
-
-FontFormats : "Ð¥Ñвийн;Formatted;ХаÑг;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML үйл Ñвц Ñвагдаж байна. ХүлÑÑÐ½Ñ Ò¯Ò¯...",
-Done : "Хийх",
-PasteWordConfirm : "Word-Ð¾Ð¾Ñ Ñ…ÑƒÑƒÐ»Ñан текÑÑ‚ÑÑ Ñанаж байгааг нь буулгахыг та Ñ…Ò¯Ñч байна уу. Та текÑÑ‚-ÑÑ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…Ñ‹Ð½ өмнө цÑвÑрлÑÑ… Ò¯Ò¯?",
-NotCompatiblePaste : "Ð­Ð½Ñ ÐºÐ¾Ð¼Ð¼Ð°Ð½Ð´ Internet Explorer-ын 5.5 буюу түүнÑÑÑ Ð´ÑÑш хувилбарт идвÑхшинÑ. Та цÑвÑрлÑхгүйгÑÑÑ€ буулгахыг Ñ…Ò¯Ñч байна?",
-UnknownToolbarItem : "Багажны Ñ…ÑÑгийн \"%1\" item мÑдÑгдÑхгүй байна",
-UnknownCommand : "\"%1\" комманд нÑÑ€ мÑдагдÑхгүй байна",
-NotImplemented : "Зөвшөөрөгдөхгүй комманд",
-UnknownToolbarSet : "Багажны Ñ…ÑÑÑгт \"%1\" оноох, Ò¯Ò¯ÑÑÑгүй байна",
-NoActiveX : "Таны үзүүлÑгч/browser-н хамгаалалтын тохиргоо editor-н зарим боломжийг Ñ…Ñзгаарлаж байна. Та \"Run ActiveX controls ба plug-ins\" Ñонголыг идвÑхитÑй болго.",
-BrowseServerBlocked : "Ðөөц үзүүгч нÑÑж чадÑангүй. Бүх popup blocker-г disabled болгоно уу.",
-DialogBlocked : "Харилцах цонхонд Ñнийг нÑÑÑ…Ñд боломжгүй ÑÑ. Бүх popup blocker-г disabled болгоно уу.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Болих",
-DlgBtnClose : "Хаах",
-DlgBtnBrowseServer : "Сервер харуулах",
-DlgAdvancedTag : "ÐÑмÑлт",
-DlgOpOther : "<БуÑад>",
-DlgInfoTab : "МÑдÑÑлÑл",
-DlgAlertUrl : "URL оруулна уу",
-
-// General Dialogs Labels
-DlgGenNotSet : "<Оноохгүй>",
-DlgGenId : "Id",
-DlgGenLangDir : "Ð¥Ñлний чиглÑл",
-DlgGenLangDirLtr : "ЗүүнÑÑÑ Ð±Ð°Ñ€ÑƒÑƒÐ½ (LTR)",
-DlgGenLangDirRtl : "Ð‘Ð°Ñ€ÑƒÑƒÐ½Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ (RTL)",
-DlgGenLangCode : "Ð¥Ñлний код",
-DlgGenAccessKey : "Холбох түлхүүр",
-DlgGenName : "ÐÑÑ€",
-DlgGenTabIndex : "Tab индекÑ",
-DlgGenLongDescr : "URL-ын тайлбар",
-DlgGenClass : "Stylesheet клаÑÑууд",
-DlgGenTitle : "Зөвлөлдөх гарчиг",
-DlgGenContType : "Зөвлөлдөх төрлийн агуулга",
-DlgGenLinkCharset : "ТÑмдÑгт оноох нөөцөд холбогдÑон",
-DlgGenStyle : "Загвар",
-
-// Image Dialog
-DlgImgTitle : "Зураг",
-DlgImgInfoTab : "Зурагны мÑдÑÑлÑл",
-DlgImgBtnUpload : "Үүнийг ÑервÑррүү илгÑÑ",
-DlgImgURL : "URL",
-DlgImgUpload : "Хуулах",
-DlgImgAlt : "Тайлбар текÑÑ‚",
-DlgImgWidth : "Өргөн",
-DlgImgHeight : "Өндөр",
-DlgImgLockRatio : "Радио түгжих",
-DlgBtnResetSize : "Ñ…ÑмжÑÑ Ð´Ð°Ñ…Ð¸Ð½ оноох",
-DlgImgBorder : "ХүрÑÑ",
-DlgImgHSpace : "Хөндлөн зай",
-DlgImgVSpace : "БоÑоо зай",
-DlgImgAlign : "ЭгнÑÑ",
-DlgImgAlignLeft : "Зүүн",
-DlgImgAlignAbsBottom: "Abs доод талд",
-DlgImgAlignAbsMiddle: "Abs Дунд талд",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Доод талд",
-DlgImgAlignMiddle : "Дунд талд",
-DlgImgAlignRight : "Баруун",
-DlgImgAlignTextTop : "ТекÑÑ‚ дÑÑÑ€",
-DlgImgAlignTop : "ДÑÑд талд",
-DlgImgPreview : "Уридчлан харах",
-DlgImgAlertUrl : "Зурагны URL-ын төрлийн Ñонгоно уу",
-DlgImgLinkTab : "Линк",
-
-// Flash Dialog
-DlgFlashTitle : "Флаш шинж чанар",
-DlgFlashChkPlay : "Ðвтоматаар тоглох",
-DlgFlashChkLoop : "Давтах",
-DlgFlashChkMenu : "Флаш цÑÑ Ð¸Ð´Ð²ÑхжүүлÑÑ…",
-DlgFlashScale : "Өргөгтгөх",
-DlgFlashScaleAll : "Бүгдийг харуулах",
-DlgFlashScaleNoBorder : "ХүрÑÑгүй",
-DlgFlashScaleFit : "Яг тааруулах",
-
-// Link Dialog
-DlgLnkWindowTitle : "Линк",
-DlgLnkInfoTab : "Линкийн мÑдÑÑлÑл",
-DlgLnkTargetTab : "Байрлал",
-
-DlgLnkType : "Линкийн төрөл",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñандах холбооÑ",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Протокол",
-DlgLnkProtoOther : "<буÑад>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ñонгох",
-DlgLnkAnchorByName : "ХолбооÑын нÑÑ€ÑÑÑ€",
-DlgLnkAnchorById : "ЭлемÑнт Id-гаар",
-DlgLnkNoAnchors : "(Баримт бичиг холбооÑгүй байна)",
-DlgLnkEMail : "E-Mail ХаÑг",
-DlgLnkEMailSubject : "Message гарчиг",
-DlgLnkEMailBody : "Message-ийн агуулга",
-DlgLnkUpload : "Хуулах",
-DlgLnkBtnUpload : "Үүнийг Ñерверрүү илгÑÑ",
-
-DlgLnkTarget : "Байрлал",
-DlgLnkTargetFrame : "<Ðгуулах хүрÑÑ>",
-DlgLnkTargetPopup : "<popup цонх>",
-DlgLnkTargetBlank : "Ð¨Ð¸Ð½Ñ Ñ†Ð¾Ð½Ñ… (_blank)",
-DlgLnkTargetParent : "ЭцÑг цонх (_parent)",
-DlgLnkTargetSelf : "ТөÑÑ‚Ñй цонх (_self)",
-DlgLnkTargetTop : "Хамгийн түрүүн байх цонх (_top)",
-DlgLnkTargetFrameName : "Очих фремын нÑÑ€",
-DlgLnkPopWinName : "Popup цонхны нÑÑ€",
-DlgLnkPopWinFeat : "Popup цонхны онцлог",
-DlgLnkPopResize : "Ð¥ÑмжÑÑ Ó©Ó©Ñ€Ñ‡Ð»Ó©Ñ…",
-DlgLnkPopLocation : "Location Ñ…ÑÑÑг",
-DlgLnkPopMenu : "Meню Ñ…ÑÑÑг",
-DlgLnkPopScroll : "Скрол Ñ…ÑÑÑгүүд",
-DlgLnkPopStatus : "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ…ÑÑÑг",
-DlgLnkPopToolbar : "Багажны Ñ…ÑÑÑг",
-DlgLnkPopFullScrn : "Цонх дүүргÑÑ… (IE)",
-DlgLnkPopDependent : "Хамаатай (Netscape)",
-DlgLnkPopWidth : "Өргөн",
-DlgLnkPopHeight : "Өндөр",
-DlgLnkPopLeft : "Зүүн байрлал",
-DlgLnkPopTop : "ДÑÑд байрлал",
-
-DlnLnkMsgNoUrl : "Линк URL-ÑÑ Ñ‚Ó©Ñ€Ó©Ð»Ð¶Ò¯Ò¯Ð»Ð½Ñ Ò¯Ò¯",
-DlnLnkMsgNoEMail : "Е-mail хаÑгаа Ñ‚Ó©Ñ€Ó©Ð»Ð¶Ò¯Ò¯Ð»Ð½Ñ Ò¯Ò¯",
-DlnLnkMsgNoAnchor : "ХолбооÑоо Ñонгоно уу",
-DlnLnkMsgInvPopName : "popup нÑÑ€ нь Ò¯ÑгÑн Ñ‚ÑмдÑгтÑÑÑ€ ÑÑ…ÑлÑÑн байх ба хооÑон зай агуулаагүй байх Ñ‘Ñтой.",
-
-// Color Dialog
-DlgColorTitle : "Өнгө Ñонгох",
-DlgColorBtnClear : "ЦÑвÑрлÑÑ…",
-DlgColorHighlight : "Өнгө",
-DlgColorSelected : "СонгогдÑон",
-
-// Smiley Dialog
-DlgSmileyTitle : "Тодорхойлолт оруулах",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Онцгой Ñ‚ÑмдÑгт Ñонгох",
-
-// Table Dialog
-DlgTableTitle : "Ð¥Ò¯ÑнÑгт",
-DlgTableRows : "Мөр",
-DlgTableColumns : "Багана",
-DlgTableBorder : "ХүрÑÑний Ñ…ÑмжÑÑ",
-DlgTableAlign : "ЭгнÑÑ",
-DlgTableAlignNotSet : "<Оноохгүй>",
-DlgTableAlignLeft : "Зүүн талд",
-DlgTableAlignCenter : "Төвд",
-DlgTableAlignRight : "Баруун талд",
-DlgTableWidth : "Өргөн",
-DlgTableWidthPx : "цÑг",
-DlgTableWidthPc : "хувь",
-DlgTableHeight : "Өндөр",
-DlgTableCellSpace : "Ðүх хоорондын зай (spacing)",
-DlgTableCellPad : "Ðүх доторлох(padding)",
-DlgTableCaption : "Тайлбар",
-DlgTableSummary : "Тайлбар",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "ХооÑон зайн шинж чанар",
-DlgCellWidth : "Өргөн",
-DlgCellWidthPx : "цÑг",
-DlgCellWidthPc : "хувь",
-DlgCellHeight : "Өндөр",
-DlgCellWordWrap : "Үг таÑлах",
-DlgCellWordWrapNotSet : "<Оноохгүй>",
-DlgCellWordWrapYes : "Тийм",
-DlgCellWordWrapNo : "Үгүй",
-DlgCellHorAlign : "БоÑоо ÑгнÑÑ",
-DlgCellHorAlignNotSet : "<Оноохгүй>",
-DlgCellHorAlignLeft : "Зүүн",
-DlgCellHorAlignCenter : "Төв",
-DlgCellHorAlignRight: "Баруун",
-DlgCellVerAlign : "Хөндлөн ÑгнÑÑ",
-DlgCellVerAlignNotSet : "<Оноохгүй>",
-DlgCellVerAlignTop : "ДÑÑд тал",
-DlgCellVerAlignMiddle : "Дунд",
-DlgCellVerAlignBottom : "Доод тал",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Ðийт мөр (span)",
-DlgCellCollSpan : "Ðийт багана (span)",
-DlgCellBackColor : "Фонны өнгө",
-DlgCellBorderColor : "ХүрÑÑний өнгө",
-DlgCellBtnSelect : "Сонго...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Хай мөн Дарж бич",
-
-// Find Dialog
-DlgFindTitle : "Хайх",
-DlgFindFindBtn : "Хайх",
-DlgFindNotFoundMsg : "ХайÑан текÑÑ‚ олÑонгүй.",
-
-// Replace Dialog
-DlgReplaceTitle : "Солих",
-DlgReplaceFindLbl : "Хайх үг/Ò¯ÑÑг:",
-DlgReplaceReplaceLbl : "Солих үг:",
-DlgReplaceCaseChk : "ТÑнцÑÑ… төлөв",
-DlgReplaceReplaceBtn : "Солих",
-DlgReplaceReplAllBtn : "Бүгдийг нь Солих",
-DlgReplaceWordChk : "ТÑнцÑÑ… бүтÑн үг",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хоÑлолыг ашиглана уу.",
-PasteErrorCopy : "Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хоÑлолыг ашиглана уу.",
-
-PasteAsText : "Plain Text-ÑÑÑ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…",
-PasteFromWord : "Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…",
-
-DlgPasteMsg2 : "(<strong>Ctrl+V</strong>) товчийг ашиглан paste Ñ…Ð¸Ð¹Ð½Ñ Ò¯Ò¯. Мөн <strong>OK</strong> дар.",
-DlgPasteSec : "Таны үзүүлÑгч/browser/-н хамгаалалтын Ñ‚Ð¾Ñ…Ð¸Ñ€Ð³Ð¾Ð¾Ð½Ð¾Ð¾Ñ Ð±Ð¾Ð»Ð¾Ð¾Ð´ editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Ð­Ð½Ñ Ñ†Ð¾Ð½Ñ…Ð¾Ð´ дахин paste хийхийг оролд.",
-DlgPasteIgnoreFont : "ТодорхойлогдÑон Font Face зөвшөөрнө",
-DlgPasteRemoveStyles : "ТодорхойлогдÑон загварыг авах",
-
-// Color Picker
-ColorAutomatic : "Ðвтоматаар",
-ColorMoreColors : "ÐÑмÑлт өнгөнүүд...",
-
-// Document Properties
-DocProps : "Баримт бичиг шинж чанар",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ ÑˆÐ¸Ð½Ð¶ чанар",
-DlgAnchorName : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð½ÑÑ€",
-DlgAnchorErrorName : "Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ñ‚Ó©Ñ€Ó©Ð» оруулна уу",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Толь бичиггүй",
-DlgSpellChangeTo : "Өөрчлөх",
-DlgSpellBtnIgnore : "Зөвшөөрөх",
-DlgSpellBtnIgnoreAll : "Бүгдийг зөвшөөрөх",
-DlgSpellBtnReplace : "Дарж бичих",
-DlgSpellBtnReplaceAll : "Бүгдийг Дарж бичих",
-DlgSpellBtnUndo : "Буцаах",
-DlgSpellNoSuggestions : "- Тайлбаргүй -",
-DlgSpellProgress : "ДүрÑм шалгаж байгаа үйл Ñвц...",
-DlgSpellNoMispell : "ДүрÑм шалгаад дууÑÑан: Ðлдаа олдÑонгүй",
-DlgSpellNoChanges : "ДүрÑм шалгаад дууÑÑан: үг өөрчлөгдөөгүй",
-DlgSpellOneChange : "ДүрÑм шалгаад дууÑÑан: 1 үг өөрчлөгдÑөн",
-DlgSpellManyChanges : "ДүрÑм шалгаад дууÑÑан: %1 үг өөрчлөгдÑөн",
-
-IeSpellDownload : "ДүрÑм шалгагч Ñуугаагүй байна. Татаж авахыг Ñ…Ò¯Ñч байна уу?",
-
-// Button Dialog
-DlgButtonText : "ТÑкÑÑ‚ (Утга)",
-DlgButtonType : "Төрөл",
-DlgButtonTypeBtn : "Товч",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Болих",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "ÐÑÑ€",
-DlgCheckboxValue : "Утга",
-DlgCheckboxSelected : "СонгогдÑон",
-
-// Form Dialog
-DlgFormName : "ÐÑÑ€",
-DlgFormAction : "ҮйлдÑл",
-DlgFormMethod : "Ðрга",
-
-// Select Field Dialog
-DlgSelectName : "ÐÑÑ€",
-DlgSelectValue : "Утга",
-DlgSelectSize : "Ð¥ÑмжÑÑ",
-DlgSelectLines : "Мөр",
-DlgSelectChkMulti : "Олон Ñонголт зөвшөөрөх",
-DlgSelectOpAvail : "ИдвÑÑ…Ñ‚Ñй Ñонголт",
-DlgSelectOpText : "ТÑкÑÑ‚",
-DlgSelectOpValue : "Утга",
-DlgSelectBtnAdd : "ÐÑмÑÑ…",
-DlgSelectBtnModify : "Өөрчлөх",
-DlgSelectBtnUp : "ДÑÑш",
-DlgSelectBtnDown : "Доош",
-DlgSelectBtnSetValue : "СонгогдÑан утга оноох",
-DlgSelectBtnDelete : "УÑтгах",
-
-// Textarea Dialog
-DlgTextareaName : "ÐÑÑ€",
-DlgTextareaCols : "Багана",
-DlgTextareaRows : "Мөр",
-
-// Text Field Dialog
-DlgTextName : "ÐÑÑ€",
-DlgTextValue : "Утга",
-DlgTextCharWidth : "ТÑмдÑгтын өргөн",
-DlgTextMaxChars : "Хамгийн их Ñ‚ÑмдÑгт",
-DlgTextType : "Төрөл",
-DlgTextTypeText : "ТекÑÑ‚",
-DlgTextTypePass : "Ðууц үг",
-
-// Hidden Field Dialog
-DlgHiddenName : "ÐÑÑ€",
-DlgHiddenValue : "Утга",
-
-// Bulleted List Dialog
-BulletedListProp : "Bulleted жагÑаалын шинж чанар",
-NumberedListProp : "ДугаарлаÑан жагÑаалын шинж чанар",
-DlgLstStart : "ЭхлÑÑ…",
-DlgLstType : "Төрөл",
-DlgLstTypeCircle : "Тойрог",
-DlgLstTypeDisc : "Тайлбар",
-DlgLstTypeSquare : "Square",
-DlgLstTypeNumbers : "Тоо (1, 2, 3)",
-DlgLstTypeLCase : "Жижиг Ò¯ÑÑг (a, b, c)",
-DlgLstTypeUCase : "Том Ò¯ÑÑг (A, B, C)",
-DlgLstTypeSRoman : "Жижиг Ром тоо (i, ii, iii)",
-DlgLstTypeLRoman : "Том Ром тоо (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Ерөнхий",
-DlgDocBackTab : "Фоно",
-DlgDocColorsTab : "Захын зай ба Өнгө",
-DlgDocMetaTab : "Meta өгөгдөл",
-
-DlgDocPageTitle : "ХуудаÑны гарчиг",
-DlgDocLangDir : "Ð¥Ñлний чиглÑл",
-DlgDocLangDirLTR : "ЗүүнÑÑÑ Ð±Ð°Ñ€ÑƒÑƒÐ½Ñ€ÑƒÑƒ (LTR)",
-DlgDocLangDirRTL : "Ð‘Ð°Ñ€ÑƒÑƒÐ½Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½Ñ€Ò¯Ò¯ (RTL)",
-DlgDocLangCode : "Ð¥Ñлний код",
-DlgDocCharSet : "Encoding Ñ‚ÑмдÑгт",
-DlgDocCharSetCE : "Төв европ",
-DlgDocCharSetCT : "Ð¥Ñтадын уламжлалт (Big5)",
-DlgDocCharSetCR : "Крил",
-DlgDocCharSetGR : "Гред",
-DlgDocCharSetJP : "Япон",
-DlgDocCharSetKR : "СолонгоÑ",
-DlgDocCharSetTR : "Tурк",
-DlgDocCharSetUN : "Юникод (UTF-8)",
-DlgDocCharSetWE : "Баруун европ",
-DlgDocCharSetOther : "Encoding-д Ó©Ó©Ñ€ Ñ‚ÑмдÑгт оноох",
-
-DlgDocDocType : "Баримт бичгийн төрөл Heading",
-DlgDocDocTypeOther : "БуÑад баримт бичгийн төрөл Heading",
-DlgDocIncXHTML : "XHTML агуулж зарлах",
-DlgDocBgColor : "Фоно өнгө",
-DlgDocBgImage : "Фоно зурагны URL",
-DlgDocBgNoScroll : "ГүйдÑггүй фоно",
-DlgDocCText : "ТекÑÑ‚",
-DlgDocCLink : "Линк",
-DlgDocCVisited : "ЗочилÑон линк",
-DlgDocCActive : "ИдвÑхитÑй линк",
-DlgDocMargins : "ХуудаÑны захын зай",
-DlgDocMaTop : "ДÑÑд тал",
-DlgDocMaLeft : "Зүүн тал",
-DlgDocMaRight : "Баруун тал",
-DlgDocMaBottom : "Доод тал",
-DlgDocMeIndex : "Баримт бичгийн Ð¸Ð½Ð´ÐµÐºÑ Ñ‚Ò¯Ð»Ñ…Ò¯Ò¯Ñ€ үг (таÑлалаар туÑгаарлагдана)",
-DlgDocMeDescr : "Баримт бичгийн тайлбар",
-DlgDocMeAuthor : "Зохиогч",
-DlgDocMeCopy : "Зохиогчийн Ñрх",
-DlgDocPreview : "Харах",
-
-// Templates Dialog
-Templates : "Загварууд",
-DlgTemplatesTitle : "Загварын агуулга",
-DlgTemplatesSelMsg : "Загварыг нÑÑж editor-Ñ€Ò¯Ò¯ Ñонгож оруулна уу<br />(Одоогийн агууллагыг уÑтаж магадгүй):",
-DlgTemplatesLoading : "Загваруудыг ачааллаж байна. Түр хүлÑÑÐ½Ñ Ò¯Ò¯...",
-DlgTemplatesNoTpl : "(Загвар тодорхойлогдоогүй байна)",
-DlgTemplatesReplace : "Одоогийн агууллагыг дарж бичих",
-
-// About Dialog
-DlgAboutAboutTab : "Тухай",
-DlgAboutBrowserInfoTab : "МÑдÑÑлÑл үзүүлÑгч",
-DlgAboutLicenseTab : "Лиценз",
-DlgAboutVersion : "Хувилбар",
-DlgAboutInfo : "МÑдÑÑллÑÑÑ€ туÑлах",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ms.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ms.js
deleted file mode 100644
index 307a1fbbb..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ms.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Malay language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Collapse Toolbar",
-ToolbarExpand : "Expand Toolbar",
-
-// Toolbar Items and Context Menu
-Save : "Simpan",
-NewPage : "Helaian Baru",
-Preview : "Prebiu",
-Cut : "Potong",
-Copy : "Salin",
-Paste : "Tampal",
-PasteText : "Tampal sebagai Text Biasa",
-PasteWord : "Tampal dari Word",
-Print : "Cetak",
-SelectAll : "Pilih Semua",
-RemoveFormat : "Buang Format",
-InsertLinkLbl : "Sambungan",
-InsertLink : "Masukkan/Sunting Sambungan",
-RemoveLink : "Buang Sambungan",
-VisitLink : "Open Link", //MISSING
-Anchor : "Masukkan/Sunting Pautan",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Gambar",
-InsertImage : "Masukkan/Sunting Gambar",
-InsertFlashLbl : "Flash", //MISSING
-InsertFlash : "Insert/Edit Flash", //MISSING
-InsertTableLbl : "Jadual",
-InsertTable : "Masukkan/Sunting Jadual",
-InsertLineLbl : "Garisan",
-InsertLine : "Masukkan Garisan Membujur",
-InsertSpecialCharLbl: "Huruf Istimewa",
-InsertSpecialChar : "Masukkan Huruf Istimewa",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Masukkan Smiley",
-About : "Tentang FCKeditor",
-Bold : "Bold",
-Italic : "Italic",
-Underline : "Underline",
-StrikeThrough : "Strike Through",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Jajaran Kiri",
-CenterJustify : "Jajaran Tengah",
-RightJustify : "Jajaran Kanan",
-BlockJustify : "Jajaran Blok",
-DecreaseIndent : "Kurangkan Inden",
-IncreaseIndent : "Tambahkan Inden",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Batalkan",
-Redo : "Ulangkan",
-NumberedListLbl : "Senarai bernombor",
-NumberedList : "Masukkan/Sunting Senarai bernombor",
-BulletedListLbl : "Senarai tidak bernombor",
-BulletedList : "Masukkan/Sunting Senarai tidak bernombor",
-ShowTableBorders : "Tunjukkan Border Jadual",
-ShowDetails : "Tunjukkan Butiran",
-Style : "Stail",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "Saiz",
-TextColor : "Warna Text",
-BGColor : "Warna Latarbelakang",
-Source : "Sumber",
-Find : "Cari",
-Replace : "Ganti",
-SpellCheck : "Semak Ejaan",
-UniversalKeyboard : "Papan Kekunci Universal",
-PageBreakLbl : "Page Break", //MISSING
-PageBreak : "Insert Page Break", //MISSING
-
-Form : "Borang",
-Checkbox : "Checkbox",
-RadioButton : "Butang Radio",
-TextField : "Text Field",
-Textarea : "Textarea",
-HiddenField : "Field Tersembunyi",
-Button : "Butang",
-SelectionField : "Field Pilihan",
-ImageButton : "Butang Bergambar",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Sunting Sambungan",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Buangkan Baris",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Buangkan Lajur",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Buangkan Sel-sel",
-MergeCells : "Cantumkan Sel-sel",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Delete Table", //MISSING
-CellProperties : "Ciri-ciri Sel",
-TableProperties : "Ciri-ciri Jadual",
-ImageProperties : "Ciri-ciri Gambar",
-FlashProperties : "Flash Properties", //MISSING
-
-AnchorProp : "Ciri-ciri Pautan",
-ButtonProp : "Ciri-ciri Butang",
-CheckboxProp : "Ciri-ciri Checkbox",
-HiddenFieldProp : "Ciri-ciri Field Tersembunyi",
-RadioButtonProp : "Ciri-ciri Butang Radio",
-ImageButtonProp : "Ciri-ciri Butang Bergambar",
-TextFieldProp : "Ciri-ciri Text Field",
-SelectionFieldProp : "Ciri-ciri Selection Field",
-TextareaProp : "Ciri-ciri Textarea",
-FormProp : "Ciri-ciri Borang",
-
-FontFormats : "Normal;Telah Diformat;Alamat;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Perenggan (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Memproses XHTML. Sila tunggu...",
-Done : "Siap",
-PasteWordConfirm : "Text yang anda hendak tampal adalah berasal dari Word. Adakah anda mahu membuang semua format Word sebelum tampal ke dalam text?",
-NotCompatiblePaste : "Arahan ini bole dilakukan jika anda mempuunyai Internet Explorer version 5.5 atau yang lebih tinggi. Adakah anda hendak tampal text tanpa membuang format Word?",
-UnknownToolbarItem : "Toolbar item tidak diketahui\"%1\"",
-UnknownCommand : "Arahan tidak diketahui \"%1\"",
-NotImplemented : "Arahan tidak terdapat didalam sistem",
-UnknownToolbarSet : "Set toolbar \"%1\" tidak wujud",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Batal",
-DlgBtnClose : "Tutup",
-DlgBtnBrowseServer : "Browse Server",
-DlgAdvancedTag : "Advanced",
-DlgOpOther : "<Lain-lain>",
-DlgInfoTab : "Info", //MISSING
-DlgAlertUrl : "Please insert the URL", //MISSING
-
-// General Dialogs Labels
-DlgGenNotSet : "<tidak di set>",
-DlgGenId : "Id",
-DlgGenLangDir : "Arah Tulisan",
-DlgGenLangDirLtr : "Kiri ke Kanan (LTR)",
-DlgGenLangDirRtl : "Kanan ke Kiri (RTL)",
-DlgGenLangCode : "Kod Bahasa",
-DlgGenAccessKey : "Kunci Akses",
-DlgGenName : "Nama",
-DlgGenTabIndex : "Indeks Tab ",
-DlgGenLongDescr : "Butiran Panjang URL",
-DlgGenClass : "Kelas-kelas Stylesheet",
-DlgGenTitle : "Tajuk Makluman",
-DlgGenContType : "Jenis Kandungan Makluman",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Stail",
-
-// Image Dialog
-DlgImgTitle : "Ciri-ciri Imej",
-DlgImgInfoTab : "Info Imej",
-DlgImgBtnUpload : "Hantar ke Server",
-DlgImgURL : "URL",
-DlgImgUpload : "Muat Naik",
-DlgImgAlt : "Text Alternatif",
-DlgImgWidth : "Lebar",
-DlgImgHeight : "Tinggi",
-DlgImgLockRatio : "Tetapkan Nisbah",
-DlgBtnResetSize : "Saiz Set Semula",
-DlgImgBorder : "Border",
-DlgImgHSpace : "Ruang Melintang",
-DlgImgVSpace : "Ruang Menegak",
-DlgImgAlign : "Jajaran",
-DlgImgAlignLeft : "Kiri",
-DlgImgAlignAbsBottom: "Bawah Mutlak",
-DlgImgAlignAbsMiddle: "Pertengahan Mutlak",
-DlgImgAlignBaseline : "Garis Dasar",
-DlgImgAlignBottom : "Bawah",
-DlgImgAlignMiddle : "Pertengahan",
-DlgImgAlignRight : "Kanan",
-DlgImgAlignTextTop : "Atas Text",
-DlgImgAlignTop : "Atas",
-DlgImgPreview : "Prebiu",
-DlgImgAlertUrl : "Sila taip URL untuk fail gambar",
-DlgImgLinkTab : "Sambungan",
-
-// Flash Dialog
-DlgFlashTitle : "Flash Properties", //MISSING
-DlgFlashChkPlay : "Auto Play", //MISSING
-DlgFlashChkLoop : "Loop", //MISSING
-DlgFlashChkMenu : "Enable Flash Menu", //MISSING
-DlgFlashScale : "Scale", //MISSING
-DlgFlashScaleAll : "Show all", //MISSING
-DlgFlashScaleNoBorder : "No Border", //MISSING
-DlgFlashScaleFit : "Exact Fit", //MISSING
-
-// Link Dialog
-DlgLnkWindowTitle : "Sambungan",
-DlgLnkInfoTab : "Butiran Sambungan",
-DlgLnkTargetTab : "Sasaran",
-
-DlgLnkType : "Jenis Sambungan",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Pautan dalam muka surat ini",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<lain-lain>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Sila pilih pautan",
-DlgLnkAnchorByName : "dengan menggunakan nama pautan",
-DlgLnkAnchorById : "dengan menggunakan ID elemen",
-DlgLnkNoAnchors : "(Tiada pautan terdapat dalam dokumen ini)",
-DlgLnkEMail : "Alamat E-Mail",
-DlgLnkEMailSubject : "Subjek Mesej",
-DlgLnkEMailBody : "Isi Kandungan Mesej",
-DlgLnkUpload : "Muat Naik",
-DlgLnkBtnUpload : "Hantar ke Server",
-
-DlgLnkTarget : "Sasaran",
-DlgLnkTargetFrame : "<bingkai>",
-DlgLnkTargetPopup : "<tetingkap popup>",
-DlgLnkTargetBlank : "Tetingkap Baru (_blank)",
-DlgLnkTargetParent : "Tetingkap Parent (_parent)",
-DlgLnkTargetSelf : "Tetingkap yang Sama (_self)",
-DlgLnkTargetTop : "Tetingkap yang paling atas (_top)",
-DlgLnkTargetFrameName : "Nama Bingkai Sasaran",
-DlgLnkPopWinName : "Nama Tetingkap Popup",
-DlgLnkPopWinFeat : "Ciri Tetingkap Popup",
-DlgLnkPopResize : "Saiz bolehubah",
-DlgLnkPopLocation : "Bar Lokasi",
-DlgLnkPopMenu : "Bar Menu",
-DlgLnkPopScroll : "Bar-bar skrol",
-DlgLnkPopStatus : "Bar Status",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Skrin Penuh (IE)",
-DlgLnkPopDependent : "Bergantungan (Netscape)",
-DlgLnkPopWidth : "Lebar",
-DlgLnkPopHeight : "Tinggi",
-DlgLnkPopLeft : "Posisi Kiri",
-DlgLnkPopTop : "Posisi Atas",
-
-DlnLnkMsgNoUrl : "Sila taip sambungan URL",
-DlnLnkMsgNoEMail : "Sila taip alamat e-mail",
-DlnLnkMsgNoAnchor : "Sila pilih pautan berkenaaan",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Pilihan Warna",
-DlgColorBtnClear : "Nyahwarna",
-DlgColorHighlight : "Terang",
-DlgColorSelected : "Dipilih",
-
-// Smiley Dialog
-DlgSmileyTitle : "Masukkan Smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Sila pilih huruf istimewa",
-
-// Table Dialog
-DlgTableTitle : "Ciri-ciri Jadual",
-DlgTableRows : "Barisan",
-DlgTableColumns : "Jaluran",
-DlgTableBorder : "Saiz Border",
-DlgTableAlign : "Penjajaran",
-DlgTableAlignNotSet : "<Tidak diset>",
-DlgTableAlignLeft : "Kiri",
-DlgTableAlignCenter : "Tengah",
-DlgTableAlignRight : "Kanan",
-DlgTableWidth : "Lebar",
-DlgTableWidthPx : "piksel-piksel",
-DlgTableWidthPc : "peratus",
-DlgTableHeight : "Tinggi",
-DlgTableCellSpace : "Ruangan Antara Sel",
-DlgTableCellPad : "Tambahan Ruang Sel",
-DlgTableCaption : "Keterangan",
-DlgTableSummary : "Summary", //MISSING
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Ciri-ciri Sel",
-DlgCellWidth : "Lebar",
-DlgCellWidthPx : "piksel-piksel",
-DlgCellWidthPc : "peratus",
-DlgCellHeight : "Tinggi",
-DlgCellWordWrap : "Mengulung Perkataan",
-DlgCellWordWrapNotSet : "<Tidak diset>",
-DlgCellWordWrapYes : "Ya",
-DlgCellWordWrapNo : "Tidak",
-DlgCellHorAlign : "Jajaran Membujur",
-DlgCellHorAlignNotSet : "<Tidak diset>",
-DlgCellHorAlignLeft : "Kiri",
-DlgCellHorAlignCenter : "Tengah",
-DlgCellHorAlignRight: "Kanan",
-DlgCellVerAlign : "Jajaran Menegak",
-DlgCellVerAlignNotSet : "<Tidak diset>",
-DlgCellVerAlignTop : "Atas",
-DlgCellVerAlignMiddle : "Tengah",
-DlgCellVerAlignBottom : "Bawah",
-DlgCellVerAlignBaseline : "Garis Dasar",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Penggunaan Baris",
-DlgCellCollSpan : "Penggunaan Lajur",
-DlgCellBackColor : "Warna Latarbelakang",
-DlgCellBorderColor : "Warna Border",
-DlgCellBtnSelect : "Pilih...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Carian",
-DlgFindFindBtn : "Cari",
-DlgFindNotFoundMsg : "Text yang dicari tidak dijumpai.",
-
-// Replace Dialog
-DlgReplaceTitle : "Gantian",
-DlgReplaceFindLbl : "Perkataan yang dicari:",
-DlgReplaceReplaceLbl : "Diganti dengan:",
-DlgReplaceCaseChk : "Padanan case huruf",
-DlgReplaceReplaceBtn : "Ganti",
-DlgReplaceReplAllBtn : "Ganti semua",
-DlgReplaceWordChk : "Padana Keseluruhan perkataan",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).",
-PasteErrorCopy : "Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).",
-
-PasteAsText : "Tampal sebagai text biasa",
-PasteFromWord : "Tampal dari perisian \"Word\"",
-
-DlgPasteMsg2 : "Please paste inside the following box using the keyboard (<strong>Ctrl+V</strong>) and hit <strong>OK</strong>.", //MISSING
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignore Font Face definitions", //MISSING
-DlgPasteRemoveStyles : "Remove Styles definitions", //MISSING
-
-// Color Picker
-ColorAutomatic : "Otomatik",
-ColorMoreColors : "Warna lain-lain...",
-
-// Document Properties
-DocProps : "Ciri-ciri dokumen",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ciri-ciri Pautan",
-DlgAnchorName : "Nama Pautan",
-DlgAnchorErrorName : "Sila taip nama pautan",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Tidak terdapat didalam kamus",
-DlgSpellChangeTo : "Tukarkan kepada",
-DlgSpellBtnIgnore : "Biar",
-DlgSpellBtnIgnoreAll : "Biarkan semua",
-DlgSpellBtnReplace : "Ganti",
-DlgSpellBtnReplaceAll : "Gantikan Semua",
-DlgSpellBtnUndo : "Batalkan",
-DlgSpellNoSuggestions : "- Tiada cadangan -",
-DlgSpellProgress : "Pemeriksaan ejaan sedang diproses...",
-DlgSpellNoMispell : "Pemeriksaan ejaan siap: Tiada salah ejaan",
-DlgSpellNoChanges : "Pemeriksaan ejaan siap: Tiada perkataan diubah",
-DlgSpellOneChange : "Pemeriksaan ejaan siap: Satu perkataan telah diubah",
-DlgSpellManyChanges : "Pemeriksaan ejaan siap: %1 perkataan diubah",
-
-IeSpellDownload : "Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?",
-
-// Button Dialog
-DlgButtonText : "Teks (Nilai)",
-DlgButtonType : "Jenis",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nama",
-DlgCheckboxValue : "Nilai",
-DlgCheckboxSelected : "Dipilih",
-
-// Form Dialog
-DlgFormName : "Nama",
-DlgFormAction : "Tindakan borang",
-DlgFormMethod : "Cara borang dihantar",
-
-// Select Field Dialog
-DlgSelectName : "Nama",
-DlgSelectValue : "Nilai",
-DlgSelectSize : "Saiz",
-DlgSelectLines : "garisan",
-DlgSelectChkMulti : "Benarkan pilihan pelbagai",
-DlgSelectOpAvail : "Pilihan sediada",
-DlgSelectOpText : "Teks",
-DlgSelectOpValue : "Nilai",
-DlgSelectBtnAdd : "Tambah Pilihan",
-DlgSelectBtnModify : "Ubah Pilihan",
-DlgSelectBtnUp : "Naik ke atas",
-DlgSelectBtnDown : "Turun ke bawah",
-DlgSelectBtnSetValue : "Set sebagai nilai terpilih",
-DlgSelectBtnDelete : "Padam",
-
-// Textarea Dialog
-DlgTextareaName : "Nama",
-DlgTextareaCols : "Lajur",
-DlgTextareaRows : "Baris",
-
-// Text Field Dialog
-DlgTextName : "Nama",
-DlgTextValue : "Nilai",
-DlgTextCharWidth : "Lebar isian",
-DlgTextMaxChars : "Isian Maksimum",
-DlgTextType : "Jenis",
-DlgTextTypeText : "Teks",
-DlgTextTypePass : "Kata Laluan",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nama",
-DlgHiddenValue : "Nilai",
-
-// Bulleted List Dialog
-BulletedListProp : "Ciri-ciri senarai berpeluru",
-NumberedListProp : "Ciri-ciri senarai bernombor",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Jenis",
-DlgLstTypeCircle : "Circle",
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "Square",
-DlgLstTypeNumbers : "Nombor-nombor (1, 2, 3)",
-DlgLstTypeLCase : "Huruf-huruf kecil (a, b, c)",
-DlgLstTypeUCase : "Huruf-huruf besar (A, B, C)",
-DlgLstTypeSRoman : "Nombor Roman Kecil (i, ii, iii)",
-DlgLstTypeLRoman : "Nombor Roman Besar (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Umum",
-DlgDocBackTab : "Latarbelakang",
-DlgDocColorsTab : "Warna dan margin",
-DlgDocMetaTab : "Data Meta",
-
-DlgDocPageTitle : "Tajuk Muka Surat",
-DlgDocLangDir : "Arah Tulisan",
-DlgDocLangDirLTR : "Kiri ke Kanan (LTR)",
-DlgDocLangDirRTL : "Kanan ke Kiri (RTL)",
-DlgDocLangCode : "Kod Bahasa",
-DlgDocCharSet : "Enkod Set Huruf",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Enkod Set Huruf yang Lain",
-
-DlgDocDocType : "Jenis Kepala Dokumen",
-DlgDocDocTypeOther : "Jenis Kepala Dokumen yang Lain",
-DlgDocIncXHTML : "Masukkan pemula kod XHTML",
-DlgDocBgColor : "Warna Latarbelakang",
-DlgDocBgImage : "URL Gambar Latarbelakang",
-DlgDocBgNoScroll : "Imej Latarbelakang tanpa Skrol",
-DlgDocCText : "Teks",
-DlgDocCLink : "Sambungan",
-DlgDocCVisited : "Sambungan telah Dilawati",
-DlgDocCActive : "Sambungan Aktif",
-DlgDocMargins : "Margin Muka Surat",
-DlgDocMaTop : "Atas",
-DlgDocMaLeft : "Kiri",
-DlgDocMaRight : "Kanan",
-DlgDocMaBottom : "Bawah",
-DlgDocMeIndex : "Kata Kunci Indeks Dokumen (dipisahkan oleh koma)",
-DlgDocMeDescr : "Keterangan Dokumen",
-DlgDocMeAuthor : "Penulis",
-DlgDocMeCopy : "Hakcipta",
-DlgDocPreview : "Prebiu",
-
-// Templates Dialog
-Templates : "Templat",
-DlgTemplatesTitle : "Templat Kandungan",
-DlgTemplatesSelMsg : "Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):",
-DlgTemplatesLoading : "Senarai Templat sedang diproses. Sila Tunggu...",
-DlgTemplatesNoTpl : "(Tiada Templat Disimpan)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "Tentang",
-DlgAboutBrowserInfoTab : "Maklumat Perisian Browser",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "versi",
-DlgAboutInfo : "Untuk maklumat lanjut sila pergi ke",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nb.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nb.js
deleted file mode 100644
index fef2a7dfc..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nb.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Norwegian Bokmål language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Skjul verktøylinje",
-ToolbarExpand : "Vis verktøylinje",
-
-// Toolbar Items and Context Menu
-Save : "Lagre",
-NewPage : "Ny Side",
-Preview : "Forhåndsvis",
-Cut : "Klipp ut",
-Copy : "Kopier",
-Paste : "Lim inn",
-PasteText : "Lim inn som ren tekst",
-PasteWord : "Lim inn fra Word",
-Print : "Skriv ut",
-SelectAll : "Merk alt",
-RemoveFormat : "Fjern format",
-InsertLinkLbl : "Lenke",
-InsertLink : "Sett inn/Rediger lenke",
-RemoveLink : "Fjern lenke",
-VisitLink : "Ã…pne lenke",
-Anchor : "Sett inn/Rediger anker",
-AnchorDelete : "Fjern anker",
-InsertImageLbl : "Bilde",
-InsertImage : "Sett inn/Rediger bilde",
-InsertFlashLbl : "Flash",
-InsertFlash : "Sett inn/Rediger Flash",
-InsertTableLbl : "Tabell",
-InsertTable : "Sett inn/Rediger tabell",
-InsertLineLbl : "Linje",
-InsertLine : "Sett inn horisontal linje",
-InsertSpecialCharLbl: "Spesielt tegn",
-InsertSpecialChar : "Sett inn spesielt tegn",
-InsertSmileyLbl : "Smil",
-InsertSmiley : "Sett inn smil",
-About : "Om FCKeditor",
-Bold : "Fet",
-Italic : "Kursiv",
-Underline : "Understrek",
-StrikeThrough : "Gjennomstrek",
-Subscript : "Senket skrift",
-Superscript : "Hevet skrift",
-LeftJustify : "Venstrejuster",
-CenterJustify : "Midtjuster",
-RightJustify : "Høyrejuster",
-BlockJustify : "Blokkjuster",
-DecreaseIndent : "Senk nivå",
-IncreaseIndent : "Øk nivå",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Angre",
-Redo : "Gjør om",
-NumberedListLbl : "Nummerert liste",
-NumberedList : "Sett inn/Fjern nummerert liste",
-BulletedListLbl : "Uordnet liste",
-BulletedList : "Sett inn/Fjern uordnet liste",
-ShowTableBorders : "Vis tabellrammer",
-ShowDetails : "Vis detaljer",
-Style : "Stil",
-FontFormat : "Format",
-Font : "Skrift",
-FontSize : "Størrelse",
-TextColor : "Tekstfarge",
-BGColor : "Bakgrunnsfarge",
-Source : "Kilde",
-Find : "Søk",
-Replace : "Erstatt",
-SpellCheck : "Stavekontroll",
-UniversalKeyboard : "Universelt tastatur",
-PageBreakLbl : "Sideskift",
-PageBreak : "Sett inn sideskift",
-
-Form : "Skjema",
-Checkbox : "Avmerkingsboks",
-RadioButton : "Alternativknapp",
-TextField : "Tekstboks",
-Textarea : "Tekstområde",
-HiddenField : "Skjult felt",
-Button : "Knapp",
-SelectionField : "Rullegardinliste",
-ImageButton : "Bildeknapp",
-
-FitWindow : "Maksimer størrelsen på redigeringsverktøyet",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Rediger lenke",
-CellCM : "Celle",
-RowCM : "Rader",
-ColumnCM : "Kolonne",
-InsertRowAfter : "Sett inn rad etter",
-InsertRowBefore : "Sett inn rad før",
-DeleteRows : "Slett rader",
-InsertColumnAfter : "Sett inn kolonne etter",
-InsertColumnBefore : "Sett inn kolonne før",
-DeleteColumns : "Slett kolonner",
-InsertCellAfter : "Sett inn celle etter",
-InsertCellBefore : "Sett inn celle før",
-DeleteCells : "Slett celler",
-MergeCells : "Slå sammen celler",
-MergeRight : "Slå sammen høyre",
-MergeDown : "Slå sammen ned",
-HorizontalSplitCell : "Del celle horisontalt",
-VerticalSplitCell : "Del celle vertikalt",
-TableDelete : "Slett tabell",
-CellProperties : "Egenskaper for celle",
-TableProperties : "Egenskaper for tabell",
-ImageProperties : "Egenskaper for bilde",
-FlashProperties : "Egenskaper for Flash-objekt",
-
-AnchorProp : "Egenskaper for anker",
-ButtonProp : "Egenskaper for knapp",
-CheckboxProp : "Egenskaper for avmerkingsboks",
-HiddenFieldProp : "Egenskaper for skjult felt",
-RadioButtonProp : "Egenskaper for alternativknapp",
-ImageButtonProp : "Egenskaper for bildeknapp",
-TextFieldProp : "Egenskaper for tekstfelt",
-SelectionFieldProp : "Egenskaper for rullegardinliste",
-TextareaProp : "Egenskaper for tekstområde",
-FormProp : "Egenskaper for skjema",
-
-FontFormats : "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Lager XHTML. Vennligst vent...",
-Done : "Ferdig",
-PasteWordConfirm : "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?",
-NotCompatiblePaste : "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)",
-UnknownToolbarItem : "Ukjent menyvalg \"%1\"",
-UnknownCommand : "Ukjent kommando \"%1\"",
-NotImplemented : "Kommando ikke implimentert",
-UnknownToolbarSet : "Verktøylinjesett \"%1\" finnes ikke",
-NoActiveX : "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner",
-BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.",
-DialogBlocked : "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.",
-VisitLinkBlocked : "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Avbryt",
-DlgBtnClose : "Lukk",
-DlgBtnBrowseServer : "Bla igjennom server",
-DlgAdvancedTag : "Avansert",
-DlgOpOther : "<Annet>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Vennligst skriv inn URL-en",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ikke satt>",
-DlgGenId : "Id",
-DlgGenLangDir : "Språkretning",
-DlgGenLangDirLtr : "Venstre til høyre (VTH)",
-DlgGenLangDirRtl : "Høyre til venstre (HTV)",
-DlgGenLangCode : "Språkkode",
-DlgGenAccessKey : "Aksessknapp",
-DlgGenName : "Navn",
-DlgGenTabIndex : "Tab Indeks",
-DlgGenLongDescr : "Utvidet beskrivelse",
-DlgGenClass : "Stilarkklasser",
-DlgGenTitle : "Tittel",
-DlgGenContType : "Type",
-DlgGenLinkCharset : "Lenket språkkart",
-DlgGenStyle : "Stil",
-
-// Image Dialog
-DlgImgTitle : "Bildeegenskaper",
-DlgImgInfoTab : "Bildeinformasjon",
-DlgImgBtnUpload : "Send det til serveren",
-DlgImgURL : "URL",
-DlgImgUpload : "Last opp",
-DlgImgAlt : "Alternativ tekst",
-DlgImgWidth : "Bredde",
-DlgImgHeight : "Høyde",
-DlgImgLockRatio : "LÃ¥s forhold",
-DlgBtnResetSize : "Tilbakestill størrelse",
-DlgImgBorder : "Ramme",
-DlgImgHSpace : "HMarg",
-DlgImgVSpace : "VMarg",
-DlgImgAlign : "Juster",
-DlgImgAlignLeft : "Venstre",
-DlgImgAlignAbsBottom: "Abs bunn",
-DlgImgAlignAbsMiddle: "Abs midten",
-DlgImgAlignBaseline : "Bunnlinje",
-DlgImgAlignBottom : "Bunn",
-DlgImgAlignMiddle : "Midten",
-DlgImgAlignRight : "Høyre",
-DlgImgAlignTextTop : "Tekst topp",
-DlgImgAlignTop : "Topp",
-DlgImgPreview : "Forhåndsvis",
-DlgImgAlertUrl : "Vennligst skriv bilde-urlen",
-DlgImgLinkTab : "Lenke",
-
-// Flash Dialog
-DlgFlashTitle : "Flash-egenskaper",
-DlgFlashChkPlay : "Autospill",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Slå på Flash-meny",
-DlgFlashScale : "Skaler",
-DlgFlashScaleAll : "Vis alt",
-DlgFlashScaleNoBorder : "Ingen ramme",
-DlgFlashScaleFit : "Skaler til å passe",
-
-// Link Dialog
-DlgLnkWindowTitle : "Lenke",
-DlgLnkInfoTab : "Lenkeinfo",
-DlgLnkTargetTab : "MÃ¥l",
-
-DlgLnkType : "Lenketype",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Lenke til anker i teksten",
-DlgLnkTypeEMail : "E-post",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<annet>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Velg et anker",
-DlgLnkAnchorByName : "Anker etter navn",
-DlgLnkAnchorById : "Element etter ID",
-DlgLnkNoAnchors : "(Ingen anker i dokumentet)",
-DlgLnkEMail : "E-postadresse",
-DlgLnkEMailSubject : "Meldingsemne",
-DlgLnkEMailBody : "Melding",
-DlgLnkUpload : "Last opp",
-DlgLnkBtnUpload : "Send til server",
-
-DlgLnkTarget : "MÃ¥l",
-DlgLnkTargetFrame : "<ramme>",
-DlgLnkTargetPopup : "<popup vindu>",
-DlgLnkTargetBlank : "Nytt vindu (_blank)",
-DlgLnkTargetParent : "Foreldrevindu (_parent)",
-DlgLnkTargetSelf : "Samme vindu (_self)",
-DlgLnkTargetTop : "Hele vindu (_top)",
-DlgLnkTargetFrameName : "MÃ¥lramme",
-DlgLnkPopWinName : "Navn på popup-vindus",
-DlgLnkPopWinFeat : "Egenskaper for popup-vindu",
-DlgLnkPopResize : "Endre størrelse",
-DlgLnkPopLocation : "Adresselinje",
-DlgLnkPopMenu : "Menylinje",
-DlgLnkPopScroll : "Scrollbar",
-DlgLnkPopStatus : "Statuslinje",
-DlgLnkPopToolbar : "Verktøylinje",
-DlgLnkPopFullScrn : "Full skjerm (IE)",
-DlgLnkPopDependent : "Avhenging (Netscape)",
-DlgLnkPopWidth : "Bredde",
-DlgLnkPopHeight : "Høyde",
-DlgLnkPopLeft : "Venstre posisjon",
-DlgLnkPopTop : "Topp-posisjon",
-
-DlnLnkMsgNoUrl : "Vennligst skriv inn lenkens url",
-DlnLnkMsgNoEMail : "Vennligst skriv inn e-postadressen",
-DlnLnkMsgNoAnchor : "Vennligst velg et anker",
-DlnLnkMsgInvPopName : "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
-
-// Color Dialog
-DlgColorTitle : "Velg farge",
-DlgColorBtnClear : "Tøm",
-DlgColorHighlight : "Marker",
-DlgColorSelected : "Valgt",
-
-// Smiley Dialog
-DlgSmileyTitle : "Sett inn smil",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Velg spesielt tegn",
-
-// Table Dialog
-DlgTableTitle : "Egenskaper for tabell",
-DlgTableRows : "Rader",
-DlgTableColumns : "Kolonner",
-DlgTableBorder : "Rammestørrelse",
-DlgTableAlign : "Justering",
-DlgTableAlignNotSet : "<Ikke satt>",
-DlgTableAlignLeft : "Venstre",
-DlgTableAlignCenter : "Midtjuster",
-DlgTableAlignRight : "Høyre",
-DlgTableWidth : "Bredde",
-DlgTableWidthPx : "piksler",
-DlgTableWidthPc : "prosent",
-DlgTableHeight : "Høyde",
-DlgTableCellSpace : "Cellemarg",
-DlgTableCellPad : "Cellepolstring",
-DlgTableCaption : "Tittel",
-DlgTableSummary : "Sammendrag",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Celleegenskaper",
-DlgCellWidth : "Bredde",
-DlgCellWidthPx : "piksler",
-DlgCellWidthPc : "prosent",
-DlgCellHeight : "Høyde",
-DlgCellWordWrap : "Tekstbrytning",
-DlgCellWordWrapNotSet : "<Ikke satt>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nei",
-DlgCellHorAlign : "Horisontal justering",
-DlgCellHorAlignNotSet : "<Ikke satt>",
-DlgCellHorAlignLeft : "Venstre",
-DlgCellHorAlignCenter : "Midtjuster",
-DlgCellHorAlignRight: "Høyre",
-DlgCellVerAlign : "Vertikal justering",
-DlgCellVerAlignNotSet : "<Ikke satt>",
-DlgCellVerAlignTop : "Topp",
-DlgCellVerAlignMiddle : "Midten",
-DlgCellVerAlignBottom : "Bunn",
-DlgCellVerAlignBaseline : "Bunnlinje",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Radspenn",
-DlgCellCollSpan : "Kolonnespenn",
-DlgCellBackColor : "Bakgrunnsfarge",
-DlgCellBorderColor : "Rammefarge",
-DlgCellBtnSelect : "Velg...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Søk og erstatt",
-
-// Find Dialog
-DlgFindTitle : "Søk",
-DlgFindFindBtn : "Søk",
-DlgFindNotFoundMsg : "Fant ikke søketeksten.",
-
-// Replace Dialog
-DlgReplaceTitle : "Erstatt",
-DlgReplaceFindLbl : "Søk etter:",
-DlgReplaceReplaceLbl : "Erstatt med:",
-DlgReplaceCaseChk : "Skill mellom store og små bokstaver",
-DlgReplaceReplaceBtn : "Erstatt",
-DlgReplaceReplAllBtn : "Erstatt alle",
-DlgReplaceWordChk : "Bare hele ord",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).",
-PasteErrorCopy : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).",
-
-PasteAsText : "Lim inn som ren tekst",
-PasteFromWord : "Lim inn fra Word",
-
-DlgPasteMsg2 : "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
-DlgPasteSec : "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.",
-DlgPasteIgnoreFont : "Fjern skrifttyper",
-DlgPasteRemoveStyles : "Fjern stildefinisjoner",
-
-// Color Picker
-ColorAutomatic : "Automatisk",
-ColorMoreColors : "Flere farger...",
-
-// Document Properties
-DocProps : "Dokumentegenskaper",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ankeregenskaper",
-DlgAnchorName : "Ankernavn",
-DlgAnchorErrorName : "Vennligst skriv inn ankernavnet",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ikke i ordboken",
-DlgSpellChangeTo : "Endre til",
-DlgSpellBtnIgnore : "Ignorer",
-DlgSpellBtnIgnoreAll : "Ignorer alle",
-DlgSpellBtnReplace : "Erstatt",
-DlgSpellBtnReplaceAll : "Erstatt alle",
-DlgSpellBtnUndo : "Angre",
-DlgSpellNoSuggestions : "- Ingen forslag -",
-DlgSpellProgress : "Stavekontroll pågår...",
-DlgSpellNoMispell : "Stavekontroll fullført: ingen feilstavinger funnet",
-DlgSpellNoChanges : "Stavekontroll fullført: ingen ord endret",
-DlgSpellOneChange : "Stavekontroll fullført: Ett ord endret",
-DlgSpellManyChanges : "Stavekontroll fullført: %1 ord endret",
-
-IeSpellDownload : "Stavekontroll er ikke installert. Vil du laste den ned nå?",
-
-// Button Dialog
-DlgButtonText : "Tekst (verdi)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Knapp",
-DlgButtonTypeSbm : "Send",
-DlgButtonTypeRst : "Nullstill",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Navn",
-DlgCheckboxValue : "Verdi",
-DlgCheckboxSelected : "Valgt",
-
-// Form Dialog
-DlgFormName : "Navn",
-DlgFormAction : "Handling",
-DlgFormMethod : "Metode",
-
-// Select Field Dialog
-DlgSelectName : "Navn",
-DlgSelectValue : "Verdi",
-DlgSelectSize : "Størrelse",
-DlgSelectLines : "Linjer",
-DlgSelectChkMulti : "Tillat flervalg",
-DlgSelectOpAvail : "Tilgjenglige alternativer",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Verdi",
-DlgSelectBtnAdd : "Legg til",
-DlgSelectBtnModify : "Endre",
-DlgSelectBtnUp : "Opp",
-DlgSelectBtnDown : "Ned",
-DlgSelectBtnSetValue : "Sett som valgt",
-DlgSelectBtnDelete : "Slett",
-
-// Textarea Dialog
-DlgTextareaName : "Navn",
-DlgTextareaCols : "Kolonner",
-DlgTextareaRows : "Rader",
-
-// Text Field Dialog
-DlgTextName : "Navn",
-DlgTextValue : "Verdi",
-DlgTextCharWidth : "Tegnbredde",
-DlgTextMaxChars : "Maks antall tegn",
-DlgTextType : "Type",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Passord",
-
-// Hidden Field Dialog
-DlgHiddenName : "Navn",
-DlgHiddenValue : "Verdi",
-
-// Bulleted List Dialog
-BulletedListProp : "Egenskaper for uordnet liste",
-NumberedListProp : "Egenskaper for ordnet liste",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Sirkel",
-DlgLstTypeDisc : "Hel sirkel",
-DlgLstTypeSquare : "Firkant",
-DlgLstTypeNumbers : "Numre (1, 2, 3)",
-DlgLstTypeLCase : "Små bokstaver (a, b, c)",
-DlgLstTypeUCase : "Store bokstaver (A, B, C)",
-DlgLstTypeSRoman : "Små romerske tall (i, ii, iii)",
-DlgLstTypeLRoman : "Store romerske tall (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Generelt",
-DlgDocBackTab : "Bakgrunn",
-DlgDocColorsTab : "Farger og marginer",
-DlgDocMetaTab : "Meta-data",
-
-DlgDocPageTitle : "Sidetittel",
-DlgDocLangDir : "Språkretning",
-DlgDocLangDirLTR : "Venstre til høyre (LTR)",
-DlgDocLangDirRTL : "Høyre til venstre (RTL)",
-DlgDocLangCode : "Språkkode",
-DlgDocCharSet : "Tegnsett",
-DlgDocCharSetCE : "Sentraleuropeisk",
-DlgDocCharSetCT : "Tradisonell kinesisk(Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Gresk",
-DlgDocCharSetJP : "Japansk",
-DlgDocCharSetKR : "Koreansk",
-DlgDocCharSetTR : "Tyrkisk",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Vesteuropeisk",
-DlgDocCharSetOther : "Annet tegnsett",
-
-DlgDocDocType : "Dokumenttype header",
-DlgDocDocTypeOther : "Annet dokumenttype header",
-DlgDocIncXHTML : "Inkluder XHTML-deklarasjon",
-DlgDocBgColor : "Bakgrunnsfarge",
-DlgDocBgImage : "URL for bakgrunnsbilde",
-DlgDocBgNoScroll : "LÃ¥s bakgrunnsbilde",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Besøkt lenke",
-DlgDocCActive : "Aktiv lenke",
-DlgDocMargins : "Sidemargin",
-DlgDocMaTop : "Topp",
-DlgDocMaLeft : "Venstre",
-DlgDocMaRight : "Høyre",
-DlgDocMaBottom : "Bunn",
-DlgDocMeIndex : "Dokument nøkkelord (kommaseparert)",
-DlgDocMeDescr : "Dokumentbeskrivelse",
-DlgDocMeAuthor : "Forfatter",
-DlgDocMeCopy : "Kopirett",
-DlgDocPreview : "Forhåndsvising",
-
-// Templates Dialog
-Templates : "Maler",
-DlgTemplatesTitle : "Innholdsmaler",
-DlgTemplatesSelMsg : "Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):",
-DlgTemplatesLoading : "Laster malliste. Vennligst vent...",
-DlgTemplatesNoTpl : "(Ingen maler definert)",
-DlgTemplatesReplace : "Erstatt faktisk innold",
-
-// About Dialog
-DlgAboutAboutTab : "Om",
-DlgAboutBrowserInfoTab : "Nettleserinfo",
-DlgAboutLicenseTab : "Lisens",
-DlgAboutVersion : "versjon",
-DlgAboutInfo : "For mer informasjon, se",
-
-// Div Dialog
-DlgDivGeneralTab : "Generelt",
-DlgDivAdvancedTab : "Avansert",
-DlgDivStyle : "Stil",
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nl.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nl.js
deleted file mode 100644
index 1adb83453..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/nl.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Dutch language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Menubalk inklappen",
-ToolbarExpand : "Menubalk uitklappen",
-
-// Toolbar Items and Context Menu
-Save : "Opslaan",
-NewPage : "Nieuwe pagina",
-Preview : "Voorbeeld",
-Cut : "Knippen",
-Copy : "Kopiëren",
-Paste : "Plakken",
-PasteText : "Plakken als platte tekst",
-PasteWord : "Plakken als Word-gegevens",
-Print : "Printen",
-SelectAll : "Alles selecteren",
-RemoveFormat : "Opmaak verwijderen",
-InsertLinkLbl : "Link",
-InsertLink : "Link invoegen/wijzigen",
-RemoveLink : "Link verwijderen",
-VisitLink : "Link volgen",
-Anchor : "Interne link",
-AnchorDelete : "Anker verwijderen",
-InsertImageLbl : "Afbeelding",
-InsertImage : "Afbeelding invoegen/wijzigen",
-InsertFlashLbl : "Flash",
-InsertFlash : "Flash invoegen/wijzigen",
-InsertTableLbl : "Tabel",
-InsertTable : "Tabel invoegen/wijzigen",
-InsertLineLbl : "Lijn",
-InsertLine : "Horizontale lijn invoegen",
-InsertSpecialCharLbl: "Speciale tekens",
-InsertSpecialChar : "Speciaal teken invoegen",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Smiley invoegen",
-About : "Over FCKeditor",
-Bold : "Vet",
-Italic : "Schuingedrukt",
-Underline : "Onderstreept",
-StrikeThrough : "Doorhalen",
-Subscript : "Subscript",
-Superscript : "Superscript",
-LeftJustify : "Links uitlijnen",
-CenterJustify : "Centreren",
-RightJustify : "Rechts uitlijnen",
-BlockJustify : "Uitvullen",
-DecreaseIndent : "Inspringen verkleinen",
-IncreaseIndent : "Inspringen vergroten",
-Blockquote : "Citaatblok",
-CreateDiv : "DIV aanmaken",
-EditDiv : "DIV wijzigen",
-DeleteDiv : "DIV verwijderen",
-Undo : "Ongedaan maken",
-Redo : "Opnieuw uitvoeren",
-NumberedListLbl : "Genummerde lijst",
-NumberedList : "Genummerde lijst invoegen/verwijderen",
-BulletedListLbl : "Opsomming",
-BulletedList : "Opsomming invoegen/verwijderen",
-ShowTableBorders : "Randen tabel weergeven",
-ShowDetails : "Details weergeven",
-Style : "Stijl",
-FontFormat : "Opmaak",
-Font : "Lettertype",
-FontSize : "Grootte",
-TextColor : "Tekstkleur",
-BGColor : "Achtergrondkleur",
-Source : "Code",
-Find : "Zoeken",
-Replace : "Vervangen",
-SpellCheck : "Spellingscontrole",
-UniversalKeyboard : "Universeel toetsenbord",
-PageBreakLbl : "Pagina-einde",
-PageBreak : "Pagina-einde invoegen",
-
-Form : "Formulier",
-Checkbox : "Aanvinkvakje",
-RadioButton : "Selectievakje",
-TextField : "Tekstveld",
-Textarea : "Tekstvak",
-HiddenField : "Verborgen veld",
-Button : "Knop",
-SelectionField : "Selectieveld",
-ImageButton : "Afbeeldingsknop",
-
-FitWindow : "De editor maximaliseren",
-ShowBlocks : "Toon blokken",
-
-// Context Menu
-EditLink : "Link wijzigen",
-CellCM : "Cel",
-RowCM : "Rij",
-ColumnCM : "Kolom",
-InsertRowAfter : "Voeg rij in achter",
-InsertRowBefore : "Voeg rij in voor",
-DeleteRows : "Rijen verwijderen",
-InsertColumnAfter : "Voeg kolom in achter",
-InsertColumnBefore : "Voeg kolom in voor",
-DeleteColumns : "Kolommen verwijderen",
-InsertCellAfter : "Voeg cel in achter",
-InsertCellBefore : "Voeg cel in voor",
-DeleteCells : "Cellen verwijderen",
-MergeCells : "Cellen samenvoegen",
-MergeRight : "Voeg samen naar rechts",
-MergeDown : "Voeg samen naar beneden",
-HorizontalSplitCell : "Splits cellen horizontaal",
-VerticalSplitCell : "Splits cellen verticaal",
-TableDelete : "Tabel verwijderen",
-CellProperties : "Eigenschappen cel",
-TableProperties : "Eigenschappen tabel",
-ImageProperties : "Eigenschappen afbeelding",
-FlashProperties : "Eigenschappen Flash",
-
-AnchorProp : "Eigenschappen interne link",
-ButtonProp : "Eigenschappen knop",
-CheckboxProp : "Eigenschappen aanvinkvakje",
-HiddenFieldProp : "Eigenschappen verborgen veld",
-RadioButtonProp : "Eigenschappen selectievakje",
-ImageButtonProp : "Eigenschappen afbeeldingsknop",
-TextFieldProp : "Eigenschappen tekstveld",
-SelectionFieldProp : "Eigenschappen selectieveld",
-TextareaProp : "Eigenschappen tekstvak",
-FormProp : "Eigenschappen formulier",
-
-FontFormats : "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6;Normaal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Bezig met verwerken XHTML. Even geduld aub...",
-Done : "Klaar",
-PasteWordConfirm : "De tekst die u plakte lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?",
-NotCompatiblePaste : "Deze opdracht is beschikbaar voor Internet Explorer versie 5.5 of hoger. Wilt u plakken zonder op te schonen?",
-UnknownToolbarItem : "Onbekend item op menubalk \"%1\"",
-UnknownCommand : "Onbekende opdrachtnaam: \"%1\"",
-NotImplemented : "Opdracht niet geïmplementeerd.",
-UnknownToolbarSet : "Menubalk \"%1\" bestaat niet.",
-NoActiveX : "De beveilingsinstellingen van uw browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.",
-BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.",
-DialogBlocked : "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.",
-VisitLinkBlocked : "Het was niet mogelijk een nieuw venster te openen. Controleer of er geen pop-up-blocker aktief is.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Annuleren",
-DlgBtnClose : "Afsluiten",
-DlgBtnBrowseServer : "Bladeren op server",
-DlgAdvancedTag : "Geavanceerd",
-DlgOpOther : "<Anders>",
-DlgInfoTab : "Informatie",
-DlgAlertUrl : "Geef URL op",
-
-// General Dialogs Labels
-DlgGenNotSet : "<niet ingevuld>",
-DlgGenId : "Kenmerk",
-DlgGenLangDir : "Schrijfrichting",
-DlgGenLangDirLtr : "Links naar rechts (LTR)",
-DlgGenLangDirRtl : "Rechts naar links (RTL)",
-DlgGenLangCode : "Taalcode",
-DlgGenAccessKey : "Toegangstoets",
-DlgGenName : "Naam",
-DlgGenTabIndex : "Tabvolgorde",
-DlgGenLongDescr : "Lange URL-omschrijving",
-DlgGenClass : "Stylesheet-klassen",
-DlgGenTitle : "Aanbevolen titel",
-DlgGenContType : "Aanbevolen content-type",
-DlgGenLinkCharset : "Karakterset van gelinkte bron",
-DlgGenStyle : "Stijl",
-
-// Image Dialog
-DlgImgTitle : "Eigenschappen afbeelding",
-DlgImgInfoTab : "Informatie afbeelding",
-DlgImgBtnUpload : "Naar server verzenden",
-DlgImgURL : "URL",
-DlgImgUpload : "Upload",
-DlgImgAlt : "Alternatieve tekst",
-DlgImgWidth : "Breedte",
-DlgImgHeight : "Hoogte",
-DlgImgLockRatio : "Afmetingen vergrendelen",
-DlgBtnResetSize : "Afmetingen resetten",
-DlgImgBorder : "Rand",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Uitlijning",
-DlgImgAlignLeft : "Links",
-DlgImgAlignAbsBottom: "Absoluut-onder",
-DlgImgAlignAbsMiddle: "Absoluut-midden",
-DlgImgAlignBaseline : "Basislijn",
-DlgImgAlignBottom : "Beneden",
-DlgImgAlignMiddle : "Midden",
-DlgImgAlignRight : "Rechts",
-DlgImgAlignTextTop : "Boven tekst",
-DlgImgAlignTop : "Boven",
-DlgImgPreview : "Voorbeeld",
-DlgImgAlertUrl : "Geef de URL van de afbeelding",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Eigenschappen Flash",
-DlgFlashChkPlay : "Automatisch afspelen",
-DlgFlashChkLoop : "Herhalen",
-DlgFlashChkMenu : "Flashmenu\'s inschakelen",
-DlgFlashScale : "Schaal",
-DlgFlashScaleAll : "Alles tonen",
-DlgFlashScaleNoBorder : "Geen rand",
-DlgFlashScaleFit : "Precies passend",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Linkomschrijving",
-DlgLnkTargetTab : "Doel",
-
-DlgLnkType : "Linktype",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Interne link in pagina",
-DlgLnkTypeEMail : "E-mail",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<anders>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Kies een interne link",
-DlgLnkAnchorByName : "Op naam interne link",
-DlgLnkAnchorById : "Op kenmerk interne link",
-DlgLnkNoAnchors : "(Geen interne links in document gevonden)",
-DlgLnkEMail : "E-mailadres",
-DlgLnkEMailSubject : "Onderwerp bericht",
-DlgLnkEMailBody : "Inhoud bericht",
-DlgLnkUpload : "Upload",
-DlgLnkBtnUpload : "Naar de server versturen",
-
-DlgLnkTarget : "Doel",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<popup window>",
-DlgLnkTargetBlank : "Nieuw venster (_blank)",
-DlgLnkTargetParent : "Origineel venster (_parent)",
-DlgLnkTargetSelf : "Zelfde venster (_self)",
-DlgLnkTargetTop : "Hele venster (_top)",
-DlgLnkTargetFrameName : "Naam doelframe",
-DlgLnkPopWinName : "Naam popupvenster",
-DlgLnkPopWinFeat : "Instellingen popupvenster",
-DlgLnkPopResize : "Grootte wijzigen",
-DlgLnkPopLocation : "Locatiemenu",
-DlgLnkPopMenu : "Menubalk",
-DlgLnkPopScroll : "Schuifbalken",
-DlgLnkPopStatus : "Statusbalk",
-DlgLnkPopToolbar : "Menubalk",
-DlgLnkPopFullScrn : "Volledig scherm (IE)",
-DlgLnkPopDependent : "Afhankelijk (Netscape)",
-DlgLnkPopWidth : "Breedte",
-DlgLnkPopHeight : "Hoogte",
-DlgLnkPopLeft : "Positie links",
-DlgLnkPopTop : "Positie boven",
-
-DlnLnkMsgNoUrl : "Geef de link van de URL",
-DlnLnkMsgNoEMail : "Geef een e-mailadres",
-DlnLnkMsgNoAnchor : "Selecteer een interne link",
-DlnLnkMsgInvPopName : "De naam van de popup moet met een alfa-numerieke waarde beginnen, en mag geen spaties bevatten.",
-
-// Color Dialog
-DlgColorTitle : "Selecteer kleur",
-DlgColorBtnClear : "Opschonen",
-DlgColorHighlight : "Accentueren",
-DlgColorSelected : "Geselecteerd",
-
-// Smiley Dialog
-DlgSmileyTitle : "Smiley invoegen",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Selecteer speciaal teken",
-
-// Table Dialog
-DlgTableTitle : "Eigenschappen tabel",
-DlgTableRows : "Rijen",
-DlgTableColumns : "Kolommen",
-DlgTableBorder : "Breedte rand",
-DlgTableAlign : "Uitlijning",
-DlgTableAlignNotSet : "<Niet ingevoerd>",
-DlgTableAlignLeft : "Links",
-DlgTableAlignCenter : "Centreren",
-DlgTableAlignRight : "Rechts",
-DlgTableWidth : "Breedte",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "procent",
-DlgTableHeight : "Hoogte",
-DlgTableCellSpace : "Afstand tussen cellen",
-DlgTableCellPad : "Afstand vanaf rand cel",
-DlgTableCaption : "Naam",
-DlgTableSummary : "Samenvatting",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Eigenschappen cel",
-DlgCellWidth : "Breedte",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "procent",
-DlgCellHeight : "Hoogte",
-DlgCellWordWrap : "Afbreken woorden",
-DlgCellWordWrapNotSet : "<Niet ingevoerd>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nee",
-DlgCellHorAlign : "Horizontale uitlijning",
-DlgCellHorAlignNotSet : "<Niet ingevoerd>",
-DlgCellHorAlignLeft : "Links",
-DlgCellHorAlignCenter : "Centreren",
-DlgCellHorAlignRight: "Rechts",
-DlgCellVerAlign : "Verticale uitlijning",
-DlgCellVerAlignNotSet : "<Niet ingevoerd>",
-DlgCellVerAlignTop : "Boven",
-DlgCellVerAlignMiddle : "Midden",
-DlgCellVerAlignBottom : "Beneden",
-DlgCellVerAlignBaseline : "Basislijn",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Overkoepeling rijen",
-DlgCellCollSpan : "Overkoepeling kolommen",
-DlgCellBackColor : "Achtergrondkleur",
-DlgCellBorderColor : "Randkleur",
-DlgCellBtnSelect : "Selecteren...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Zoeken en vervangen",
-
-// Find Dialog
-DlgFindTitle : "Zoeken",
-DlgFindFindBtn : "Zoeken",
-DlgFindNotFoundMsg : "De opgegeven tekst is niet gevonden.",
-
-// Replace Dialog
-DlgReplaceTitle : "Vervangen",
-DlgReplaceFindLbl : "Zoeken naar:",
-DlgReplaceReplaceLbl : "Vervangen met:",
-DlgReplaceCaseChk : "Hoofdlettergevoelig",
-DlgReplaceReplaceBtn : "Vervangen",
-DlgReplaceReplAllBtn : "Alles vervangen",
-DlgReplaceWordChk : "Hele woord moet voorkomen",
-
-// Paste Operations / Dialog
-PasteErrorCut : "De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.",
-PasteErrorCopy : "De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.",
-
-PasteAsText : "Plakken als platte tekst",
-PasteFromWord : "Plakken als Word-gegevens",
-
-DlgPasteMsg2 : "Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl+V</strong>) en klik op <strong>OK</strong>.",
-DlgPasteSec : "Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.",
-DlgPasteIgnoreFont : "Negeer \"Font Face\"-definities",
-DlgPasteRemoveStyles : "Verwijder \"Style\"-definities",
-
-// Color Picker
-ColorAutomatic : "Automatisch",
-ColorMoreColors : "Meer kleuren...",
-
-// Document Properties
-DocProps : "Eigenschappen document",
-
-// Anchor Dialog
-DlgAnchorTitle : "Eigenschappen interne link",
-DlgAnchorName : "Naam interne link",
-DlgAnchorErrorName : "Geef de naam van de interne link op",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Niet in het woordenboek",
-DlgSpellChangeTo : "Wijzig in",
-DlgSpellBtnIgnore : "Negeren",
-DlgSpellBtnIgnoreAll : "Alles negeren",
-DlgSpellBtnReplace : "Vervangen",
-DlgSpellBtnReplaceAll : "Alles vervangen",
-DlgSpellBtnUndo : "Ongedaan maken",
-DlgSpellNoSuggestions : "-Geen suggesties-",
-DlgSpellProgress : "Bezig met spellingscontrole...",
-DlgSpellNoMispell : "Klaar met spellingscontrole: geen fouten gevonden",
-DlgSpellNoChanges : "Klaar met spellingscontrole: geen woorden aangepast",
-DlgSpellOneChange : "Klaar met spellingscontrole: één woord aangepast",
-DlgSpellManyChanges : "Klaar met spellingscontrole: %1 woorden aangepast",
-
-IeSpellDownload : "De spellingscontrole niet geïnstalleerd. Wilt u deze nu downloaden?",
-
-// Button Dialog
-DlgButtonText : "Tekst (waarde)",
-DlgButtonType : "Soort",
-DlgButtonTypeBtn : "Knop",
-DlgButtonTypeSbm : "Versturen",
-DlgButtonTypeRst : "Leegmaken",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Naam",
-DlgCheckboxValue : "Waarde",
-DlgCheckboxSelected : "Geselecteerd",
-
-// Form Dialog
-DlgFormName : "Naam",
-DlgFormAction : "Actie",
-DlgFormMethod : "Methode",
-
-// Select Field Dialog
-DlgSelectName : "Naam",
-DlgSelectValue : "Waarde",
-DlgSelectSize : "Grootte",
-DlgSelectLines : "Regels",
-DlgSelectChkMulti : "Gecombineerde selecties toestaan",
-DlgSelectOpAvail : "Beschikbare opties",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Waarde",
-DlgSelectBtnAdd : "Toevoegen",
-DlgSelectBtnModify : "Wijzigen",
-DlgSelectBtnUp : "Omhoog",
-DlgSelectBtnDown : "Omlaag",
-DlgSelectBtnSetValue : "Als geselecteerde waarde instellen",
-DlgSelectBtnDelete : "Verwijderen",
-
-// Textarea Dialog
-DlgTextareaName : "Naam",
-DlgTextareaCols : "Kolommen",
-DlgTextareaRows : "Rijen",
-
-// Text Field Dialog
-DlgTextName : "Naam",
-DlgTextValue : "Waarde",
-DlgTextCharWidth : "Breedte (tekens)",
-DlgTextMaxChars : "Maximum aantal tekens",
-DlgTextType : "Soort",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Wachtwoord",
-
-// Hidden Field Dialog
-DlgHiddenName : "Naam",
-DlgHiddenValue : "Waarde",
-
-// Bulleted List Dialog
-BulletedListProp : "Eigenschappen opsommingslijst",
-NumberedListProp : "Eigenschappen genummerde opsommingslijst",
-DlgLstStart : "Start",
-DlgLstType : "Soort",
-DlgLstTypeCircle : "Cirkel",
-DlgLstTypeDisc : "Schijf",
-DlgLstTypeSquare : "Vierkant",
-DlgLstTypeNumbers : "Nummers (1, 2, 3)",
-DlgLstTypeLCase : "Kleine letters (a, b, c)",
-DlgLstTypeUCase : "Hoofdletters (A, B, C)",
-DlgLstTypeSRoman : "Klein Romeins (i, ii, iii)",
-DlgLstTypeLRoman : "Groot Romeins (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Algemeen",
-DlgDocBackTab : "Achtergrond",
-DlgDocColorsTab : "Kleuring en marges",
-DlgDocMetaTab : "META-data",
-
-DlgDocPageTitle : "Paginatitel",
-DlgDocLangDir : "Schrijfrichting",
-DlgDocLangDirLTR : "Links naar rechts",
-DlgDocLangDirRTL : "Rechts naar links",
-DlgDocLangCode : "Taalcode",
-DlgDocCharSet : "Karakterset-encoding",
-DlgDocCharSetCE : "Centraal Europees",
-DlgDocCharSetCT : "Traditioneel Chinees (Big5)",
-DlgDocCharSetCR : "Cyriliaans",
-DlgDocCharSetGR : "Grieks",
-DlgDocCharSetJP : "Japans",
-DlgDocCharSetKR : "Koreaans",
-DlgDocCharSetTR : "Turks",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "West europees",
-DlgDocCharSetOther : "Andere karakterset-encoding",
-
-DlgDocDocType : "Opschrift documentsoort",
-DlgDocDocTypeOther : "Ander opschrift documentsoort",
-DlgDocIncXHTML : "XHTML-declaraties meenemen",
-DlgDocBgColor : "Achtergrondkleur",
-DlgDocBgImage : "URL achtergrondplaatje",
-DlgDocBgNoScroll : "Vaste achtergrond",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Bezochte link",
-DlgDocCActive : "Active link",
-DlgDocMargins : "Afstandsinstellingen document",
-DlgDocMaTop : "Boven",
-DlgDocMaLeft : "Links",
-DlgDocMaRight : "Rechts",
-DlgDocMaBottom : "Onder",
-DlgDocMeIndex : "Trefwoorden betreffende document (kommagescheiden)",
-DlgDocMeDescr : "Beschrijving document",
-DlgDocMeAuthor : "Auteur",
-DlgDocMeCopy : "Copyright",
-DlgDocPreview : "Voorbeeld",
-
-// Templates Dialog
-Templates : "Sjablonen",
-DlgTemplatesTitle : "Inhoud sjabonen",
-DlgTemplatesSelMsg : "Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):",
-DlgTemplatesLoading : "Bezig met laden sjabonen. Even geduld alstublieft...",
-DlgTemplatesNoTpl : "(Geen sjablonen gedefinieerd)",
-DlgTemplatesReplace : "Vervang de huidige inhoud",
-
-// About Dialog
-DlgAboutAboutTab : "Over",
-DlgAboutBrowserInfoTab : "Browserinformatie",
-DlgAboutLicenseTab : "Licentie",
-DlgAboutVersion : "Versie",
-DlgAboutInfo : "Voor meer informatie ga naar ",
-
-// Div Dialog
-DlgDivGeneralTab : "Algemeen",
-DlgDivAdvancedTab : "Geavanceerd",
-DlgDivStyle : "Style",
-DlgDivInlineStyle : "Inline Style"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/no.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/no.js
deleted file mode 100644
index 600d7bd47..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/no.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Norwegian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Skjul verktøylinje",
-ToolbarExpand : "Vis verktøylinje",
-
-// Toolbar Items and Context Menu
-Save : "Lagre",
-NewPage : "Ny Side",
-Preview : "Forhåndsvis",
-Cut : "Klipp ut",
-Copy : "Kopier",
-Paste : "Lim inn",
-PasteText : "Lim inn som ren tekst",
-PasteWord : "Lim inn fra Word",
-Print : "Skriv ut",
-SelectAll : "Merk alt",
-RemoveFormat : "Fjern format",
-InsertLinkLbl : "Lenke",
-InsertLink : "Sett inn/Rediger lenke",
-RemoveLink : "Fjern lenke",
-VisitLink : "Ã…pne lenke",
-Anchor : "Sett inn/Rediger anker",
-AnchorDelete : "Fjern anker",
-InsertImageLbl : "Bilde",
-InsertImage : "Sett inn/Rediger bilde",
-InsertFlashLbl : "Flash",
-InsertFlash : "Sett inn/Rediger Flash",
-InsertTableLbl : "Tabell",
-InsertTable : "Sett inn/Rediger tabell",
-InsertLineLbl : "Linje",
-InsertLine : "Sett inn horisontal linje",
-InsertSpecialCharLbl: "Spesielt tegn",
-InsertSpecialChar : "Sett inn spesielt tegn",
-InsertSmileyLbl : "Smil",
-InsertSmiley : "Sett inn smil",
-About : "Om FCKeditor",
-Bold : "Fet",
-Italic : "Kursiv",
-Underline : "Understrek",
-StrikeThrough : "Gjennomstrek",
-Subscript : "Senket skrift",
-Superscript : "Hevet skrift",
-LeftJustify : "Venstrejuster",
-CenterJustify : "Midtjuster",
-RightJustify : "Høyrejuster",
-BlockJustify : "Blokkjuster",
-DecreaseIndent : "Senk nivå",
-IncreaseIndent : "Øk nivå",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Angre",
-Redo : "Gjør om",
-NumberedListLbl : "Nummerert liste",
-NumberedList : "Sett inn/Fjern nummerert liste",
-BulletedListLbl : "Uordnet liste",
-BulletedList : "Sett inn/Fjern uordnet liste",
-ShowTableBorders : "Vis tabellrammer",
-ShowDetails : "Vis detaljer",
-Style : "Stil",
-FontFormat : "Format",
-Font : "Skrift",
-FontSize : "Størrelse",
-TextColor : "Tekstfarge",
-BGColor : "Bakgrunnsfarge",
-Source : "Kilde",
-Find : "Søk",
-Replace : "Erstatt",
-SpellCheck : "Stavekontroll",
-UniversalKeyboard : "Universelt tastatur",
-PageBreakLbl : "Sideskift",
-PageBreak : "Sett inn sideskift",
-
-Form : "Skjema",
-Checkbox : "Avmerkingsboks",
-RadioButton : "Alternativknapp",
-TextField : "Tekstboks",
-Textarea : "Tekstområde",
-HiddenField : "Skjult felt",
-Button : "Knapp",
-SelectionField : "Rullegardinliste",
-ImageButton : "Bildeknapp",
-
-FitWindow : "Maksimer størrelsen på redigeringsverktøyet",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Rediger lenke",
-CellCM : "Celle",
-RowCM : "Rader",
-ColumnCM : "Kolonne",
-InsertRowAfter : "Sett inn rad etter",
-InsertRowBefore : "Sett inn rad før",
-DeleteRows : "Slett rader",
-InsertColumnAfter : "Sett inn kolonne etter",
-InsertColumnBefore : "Sett inn kolonne før",
-DeleteColumns : "Slett kolonner",
-InsertCellAfter : "Sett inn celle etter",
-InsertCellBefore : "Sett inn celle før",
-DeleteCells : "Slett celler",
-MergeCells : "Slå sammen celler",
-MergeRight : "Slå sammen høyre",
-MergeDown : "Slå sammen ned",
-HorizontalSplitCell : "Del celle horisontalt",
-VerticalSplitCell : "Del celle vertikalt",
-TableDelete : "Slett tabell",
-CellProperties : "Egenskaper for celle",
-TableProperties : "Egenskaper for tabell",
-ImageProperties : "Egenskaper for bilde",
-FlashProperties : "Egenskaper for Flash-objekt",
-
-AnchorProp : "Egenskaper for anker",
-ButtonProp : "Egenskaper for knapp",
-CheckboxProp : "Egenskaper for avmerkingsboks",
-HiddenFieldProp : "Egenskaper for skjult felt",
-RadioButtonProp : "Egenskaper for alternativknapp",
-ImageButtonProp : "Egenskaper for bildeknapp",
-TextFieldProp : "Egenskaper for tekstfelt",
-SelectionFieldProp : "Egenskaper for rullegardinliste",
-TextareaProp : "Egenskaper for tekstområde",
-FormProp : "Egenskaper for skjema",
-
-FontFormats : "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Lager XHTML. Vennligst vent...",
-Done : "Ferdig",
-PasteWordConfirm : "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?",
-NotCompatiblePaste : "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)",
-UnknownToolbarItem : "Ukjent menyvalg \"%1\"",
-UnknownCommand : "Ukjent kommando \"%1\"",
-NotImplemented : "Kommando ikke implimentert",
-UnknownToolbarSet : "Verktøylinjesett \"%1\" finnes ikke",
-NoActiveX : "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner",
-BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.",
-DialogBlocked : "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.",
-VisitLinkBlocked : "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Avbryt",
-DlgBtnClose : "Lukk",
-DlgBtnBrowseServer : "Bla igjennom server",
-DlgAdvancedTag : "Avansert",
-DlgOpOther : "<Annet>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Vennligst skriv inn URL-en",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ikke satt>",
-DlgGenId : "Id",
-DlgGenLangDir : "Språkretning",
-DlgGenLangDirLtr : "Venstre til høyre (VTH)",
-DlgGenLangDirRtl : "Høyre til venstre (HTV)",
-DlgGenLangCode : "Språkkode",
-DlgGenAccessKey : "Aksessknapp",
-DlgGenName : "Navn",
-DlgGenTabIndex : "Tab Indeks",
-DlgGenLongDescr : "Utvidet beskrivelse",
-DlgGenClass : "Stilarkklasser",
-DlgGenTitle : "Tittel",
-DlgGenContType : "Type",
-DlgGenLinkCharset : "Lenket språkkart",
-DlgGenStyle : "Stil",
-
-// Image Dialog
-DlgImgTitle : "Bildeegenskaper",
-DlgImgInfoTab : "Bildeinformasjon",
-DlgImgBtnUpload : "Send det til serveren",
-DlgImgURL : "URL",
-DlgImgUpload : "Last opp",
-DlgImgAlt : "Alternativ tekst",
-DlgImgWidth : "Bredde",
-DlgImgHeight : "Høyde",
-DlgImgLockRatio : "LÃ¥s forhold",
-DlgBtnResetSize : "Tilbakestill størrelse",
-DlgImgBorder : "Ramme",
-DlgImgHSpace : "HMarg",
-DlgImgVSpace : "VMarg",
-DlgImgAlign : "Juster",
-DlgImgAlignLeft : "Venstre",
-DlgImgAlignAbsBottom: "Abs bunn",
-DlgImgAlignAbsMiddle: "Abs midten",
-DlgImgAlignBaseline : "Bunnlinje",
-DlgImgAlignBottom : "Bunn",
-DlgImgAlignMiddle : "Midten",
-DlgImgAlignRight : "Høyre",
-DlgImgAlignTextTop : "Tekst topp",
-DlgImgAlignTop : "Topp",
-DlgImgPreview : "Forhåndsvis",
-DlgImgAlertUrl : "Vennligst skriv bilde-urlen",
-DlgImgLinkTab : "Lenke",
-
-// Flash Dialog
-DlgFlashTitle : "Flash-egenskaper",
-DlgFlashChkPlay : "Autospill",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Slå på Flash-meny",
-DlgFlashScale : "Skaler",
-DlgFlashScaleAll : "Vis alt",
-DlgFlashScaleNoBorder : "Ingen ramme",
-DlgFlashScaleFit : "Skaler til å passe",
-
-// Link Dialog
-DlgLnkWindowTitle : "Lenke",
-DlgLnkInfoTab : "Lenkeinfo",
-DlgLnkTargetTab : "MÃ¥l",
-
-DlgLnkType : "Lenketype",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Lenke til anker i teksten",
-DlgLnkTypeEMail : "E-post",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<annet>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Velg et anker",
-DlgLnkAnchorByName : "Anker etter navn",
-DlgLnkAnchorById : "Element etter ID",
-DlgLnkNoAnchors : "(Ingen anker i dokumentet)",
-DlgLnkEMail : "E-postadresse",
-DlgLnkEMailSubject : "Meldingsemne",
-DlgLnkEMailBody : "Melding",
-DlgLnkUpload : "Last opp",
-DlgLnkBtnUpload : "Send til server",
-
-DlgLnkTarget : "MÃ¥l",
-DlgLnkTargetFrame : "<ramme>",
-DlgLnkTargetPopup : "<popup vindu>",
-DlgLnkTargetBlank : "Nytt vindu (_blank)",
-DlgLnkTargetParent : "Foreldrevindu (_parent)",
-DlgLnkTargetSelf : "Samme vindu (_self)",
-DlgLnkTargetTop : "Hele vindu (_top)",
-DlgLnkTargetFrameName : "MÃ¥lramme",
-DlgLnkPopWinName : "Navn på popup-vindus",
-DlgLnkPopWinFeat : "Egenskaper for popup-vindu",
-DlgLnkPopResize : "Endre størrelse",
-DlgLnkPopLocation : "Adresselinje",
-DlgLnkPopMenu : "Menylinje",
-DlgLnkPopScroll : "Scrollbar",
-DlgLnkPopStatus : "Statuslinje",
-DlgLnkPopToolbar : "Verktøylinje",
-DlgLnkPopFullScrn : "Full skjerm (IE)",
-DlgLnkPopDependent : "Avhenging (Netscape)",
-DlgLnkPopWidth : "Bredde",
-DlgLnkPopHeight : "Høyde",
-DlgLnkPopLeft : "Venstre posisjon",
-DlgLnkPopTop : "Topp-posisjon",
-
-DlnLnkMsgNoUrl : "Vennligst skriv inn lenkens url",
-DlnLnkMsgNoEMail : "Vennligst skriv inn e-postadressen",
-DlnLnkMsgNoAnchor : "Vennligst velg et anker",
-DlnLnkMsgInvPopName : "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom",
-
-// Color Dialog
-DlgColorTitle : "Velg farge",
-DlgColorBtnClear : "Tøm",
-DlgColorHighlight : "Marker",
-DlgColorSelected : "Valgt",
-
-// Smiley Dialog
-DlgSmileyTitle : "Sett inn smil",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Velg spesielt tegn",
-
-// Table Dialog
-DlgTableTitle : "Egenskaper for tabell",
-DlgTableRows : "Rader",
-DlgTableColumns : "Kolonner",
-DlgTableBorder : "Rammestørrelse",
-DlgTableAlign : "Justering",
-DlgTableAlignNotSet : "<Ikke satt>",
-DlgTableAlignLeft : "Venstre",
-DlgTableAlignCenter : "Midtjuster",
-DlgTableAlignRight : "Høyre",
-DlgTableWidth : "Bredde",
-DlgTableWidthPx : "piksler",
-DlgTableWidthPc : "prosent",
-DlgTableHeight : "Høyde",
-DlgTableCellSpace : "Cellemarg",
-DlgTableCellPad : "Cellepolstring",
-DlgTableCaption : "Tittel",
-DlgTableSummary : "Sammendrag",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Celleegenskaper",
-DlgCellWidth : "Bredde",
-DlgCellWidthPx : "piksler",
-DlgCellWidthPc : "prosent",
-DlgCellHeight : "Høyde",
-DlgCellWordWrap : "Tekstbrytning",
-DlgCellWordWrapNotSet : "<Ikke satt>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nei",
-DlgCellHorAlign : "Horisontal justering",
-DlgCellHorAlignNotSet : "<Ikke satt>",
-DlgCellHorAlignLeft : "Venstre",
-DlgCellHorAlignCenter : "Midtjuster",
-DlgCellHorAlignRight: "Høyre",
-DlgCellVerAlign : "Vertikal justering",
-DlgCellVerAlignNotSet : "<Ikke satt>",
-DlgCellVerAlignTop : "Topp",
-DlgCellVerAlignMiddle : "Midten",
-DlgCellVerAlignBottom : "Bunn",
-DlgCellVerAlignBaseline : "Bunnlinje",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Radspenn",
-DlgCellCollSpan : "Kolonnespenn",
-DlgCellBackColor : "Bakgrunnsfarge",
-DlgCellBorderColor : "Rammefarge",
-DlgCellBtnSelect : "Velg...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Søk og erstatt",
-
-// Find Dialog
-DlgFindTitle : "Søk",
-DlgFindFindBtn : "Søk",
-DlgFindNotFoundMsg : "Fant ikke søketeksten.",
-
-// Replace Dialog
-DlgReplaceTitle : "Erstatt",
-DlgReplaceFindLbl : "Søk etter:",
-DlgReplaceReplaceLbl : "Erstatt med:",
-DlgReplaceCaseChk : "Skill mellom store og små bokstaver",
-DlgReplaceReplaceBtn : "Erstatt",
-DlgReplaceReplAllBtn : "Erstatt alle",
-DlgReplaceWordChk : "Bare hele ord",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).",
-PasteErrorCopy : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).",
-
-PasteAsText : "Lim inn som ren tekst",
-PasteFromWord : "Lim inn fra Word",
-
-DlgPasteMsg2 : "Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.",
-DlgPasteSec : "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.",
-DlgPasteIgnoreFont : "Fjern skrifttyper",
-DlgPasteRemoveStyles : "Fjern stildefinisjoner",
-
-// Color Picker
-ColorAutomatic : "Automatisk",
-ColorMoreColors : "Flere farger...",
-
-// Document Properties
-DocProps : "Dokumentegenskaper",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ankeregenskaper",
-DlgAnchorName : "Ankernavn",
-DlgAnchorErrorName : "Vennligst skriv inn ankernavnet",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ikke i ordboken",
-DlgSpellChangeTo : "Endre til",
-DlgSpellBtnIgnore : "Ignorer",
-DlgSpellBtnIgnoreAll : "Ignorer alle",
-DlgSpellBtnReplace : "Erstatt",
-DlgSpellBtnReplaceAll : "Erstatt alle",
-DlgSpellBtnUndo : "Angre",
-DlgSpellNoSuggestions : "- Ingen forslag -",
-DlgSpellProgress : "Stavekontroll pågår...",
-DlgSpellNoMispell : "Stavekontroll fullført: ingen feilstavinger funnet",
-DlgSpellNoChanges : "Stavekontroll fullført: ingen ord endret",
-DlgSpellOneChange : "Stavekontroll fullført: Ett ord endret",
-DlgSpellManyChanges : "Stavekontroll fullført: %1 ord endret",
-
-IeSpellDownload : "Stavekontroll er ikke installert. Vil du laste den ned nå?",
-
-// Button Dialog
-DlgButtonText : "Tekst (verdi)",
-DlgButtonType : "Type",
-DlgButtonTypeBtn : "Knapp",
-DlgButtonTypeSbm : "Send",
-DlgButtonTypeRst : "Nullstill",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Navn",
-DlgCheckboxValue : "Verdi",
-DlgCheckboxSelected : "Valgt",
-
-// Form Dialog
-DlgFormName : "Navn",
-DlgFormAction : "Handling",
-DlgFormMethod : "Metode",
-
-// Select Field Dialog
-DlgSelectName : "Navn",
-DlgSelectValue : "Verdi",
-DlgSelectSize : "Størrelse",
-DlgSelectLines : "Linjer",
-DlgSelectChkMulti : "Tillat flervalg",
-DlgSelectOpAvail : "Tilgjenglige alternativer",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Verdi",
-DlgSelectBtnAdd : "Legg til",
-DlgSelectBtnModify : "Endre",
-DlgSelectBtnUp : "Opp",
-DlgSelectBtnDown : "Ned",
-DlgSelectBtnSetValue : "Sett som valgt",
-DlgSelectBtnDelete : "Slett",
-
-// Textarea Dialog
-DlgTextareaName : "Navn",
-DlgTextareaCols : "Kolonner",
-DlgTextareaRows : "Rader",
-
-// Text Field Dialog
-DlgTextName : "Navn",
-DlgTextValue : "Verdi",
-DlgTextCharWidth : "Tegnbredde",
-DlgTextMaxChars : "Maks antall tegn",
-DlgTextType : "Type",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Passord",
-
-// Hidden Field Dialog
-DlgHiddenName : "Navn",
-DlgHiddenValue : "Verdi",
-
-// Bulleted List Dialog
-BulletedListProp : "Egenskaper for uordnet liste",
-NumberedListProp : "Egenskaper for ordnet liste",
-DlgLstStart : "Start",
-DlgLstType : "Type",
-DlgLstTypeCircle : "Sirkel",
-DlgLstTypeDisc : "Hel sirkel",
-DlgLstTypeSquare : "Firkant",
-DlgLstTypeNumbers : "Numre (1, 2, 3)",
-DlgLstTypeLCase : "Små bokstaver (a, b, c)",
-DlgLstTypeUCase : "Store bokstaver (A, B, C)",
-DlgLstTypeSRoman : "Små romerske tall (i, ii, iii)",
-DlgLstTypeLRoman : "Store romerske tall (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Generelt",
-DlgDocBackTab : "Bakgrunn",
-DlgDocColorsTab : "Farger og marginer",
-DlgDocMetaTab : "Meta-data",
-
-DlgDocPageTitle : "Sidetittel",
-DlgDocLangDir : "Språkretning",
-DlgDocLangDirLTR : "Venstre til høyre (LTR)",
-DlgDocLangDirRTL : "Høyre til venstre (RTL)",
-DlgDocLangCode : "Språkkode",
-DlgDocCharSet : "Tegnsett",
-DlgDocCharSetCE : "Sentraleuropeisk",
-DlgDocCharSetCT : "Tradisonell kinesisk(Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Gresk",
-DlgDocCharSetJP : "Japansk",
-DlgDocCharSetKR : "Koreansk",
-DlgDocCharSetTR : "Tyrkisk",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Vesteuropeisk",
-DlgDocCharSetOther : "Annet tegnsett",
-
-DlgDocDocType : "Dokumenttype header",
-DlgDocDocTypeOther : "Annet dokumenttype header",
-DlgDocIncXHTML : "Inkluder XHTML-deklarasjon",
-DlgDocBgColor : "Bakgrunnsfarge",
-DlgDocBgImage : "URL for bakgrunnsbilde",
-DlgDocBgNoScroll : "LÃ¥s bakgrunnsbilde",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Besøkt lenke",
-DlgDocCActive : "Aktiv lenke",
-DlgDocMargins : "Sidemargin",
-DlgDocMaTop : "Topp",
-DlgDocMaLeft : "Venstre",
-DlgDocMaRight : "Høyre",
-DlgDocMaBottom : "Bunn",
-DlgDocMeIndex : "Dokument nøkkelord (kommaseparert)",
-DlgDocMeDescr : "Dokumentbeskrivelse",
-DlgDocMeAuthor : "Forfatter",
-DlgDocMeCopy : "Kopirett",
-DlgDocPreview : "Forhåndsvising",
-
-// Templates Dialog
-Templates : "Maler",
-DlgTemplatesTitle : "Innholdsmaler",
-DlgTemplatesSelMsg : "Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):",
-DlgTemplatesLoading : "Laster malliste. Vennligst vent...",
-DlgTemplatesNoTpl : "(Ingen maler definert)",
-DlgTemplatesReplace : "Erstatt faktisk innold",
-
-// About Dialog
-DlgAboutAboutTab : "Om",
-DlgAboutBrowserInfoTab : "Nettleserinfo",
-DlgAboutLicenseTab : "Lisens",
-DlgAboutVersion : "versjon",
-DlgAboutInfo : "For mer informasjon, se",
-
-// Div Dialog
-DlgDivGeneralTab : "Generelt",
-DlgDivAdvancedTab : "Avansert",
-DlgDivStyle : "Stil",
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pl.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pl.js
deleted file mode 100644
index de1bc3bd5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pl.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Polish language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Zwiń pasek narzędzi",
-ToolbarExpand : "Rozwiń pasek narzędzi",
-
-// Toolbar Items and Context Menu
-Save : "Zapisz",
-NewPage : "Nowa strona",
-Preview : "PodglÄ…d",
-Cut : "Wytnij",
-Copy : "Kopiuj",
-Paste : "Wklej",
-PasteText : "Wklej jako czysty tekst",
-PasteWord : "Wklej z Worda",
-Print : "Drukuj",
-SelectAll : "Zaznacz wszystko",
-RemoveFormat : "Usuń formatowanie",
-InsertLinkLbl : "Hiperłącze",
-InsertLink : "Wstaw/edytuj hiperłącze",
-RemoveLink : "Usuń hiperłącze",
-VisitLink : "Open Link", //MISSING
-Anchor : "Wstaw/edytuj kotwicÄ™",
-AnchorDelete : "Usuń kotwicę",
-InsertImageLbl : "Obrazek",
-InsertImage : "Wstaw/edytuj obrazek",
-InsertFlashLbl : "Flash",
-InsertFlash : "Dodaj/Edytuj element Flash",
-InsertTableLbl : "Tabela",
-InsertTable : "Wstaw/edytuj tabelÄ™",
-InsertLineLbl : "Linia pozioma",
-InsertLine : "Wstaw poziomÄ… liniÄ™",
-InsertSpecialCharLbl: "Znak specjalny",
-InsertSpecialChar : "Wstaw znak specjalny",
-InsertSmileyLbl : "Emotikona",
-InsertSmiley : "Wstaw emotikonÄ™",
-About : "O programie FCKeditor",
-Bold : "Pogrubienie",
-Italic : "Kursywa",
-Underline : "Podkreślenie",
-StrikeThrough : "Przekreślenie",
-Subscript : "Indeks dolny",
-Superscript : "Indeks górny",
-LeftJustify : "Wyrównaj do lewej",
-CenterJustify : "Wyrównaj do środka",
-RightJustify : "Wyrównaj do prawej",
-BlockJustify : "Wyrównaj do lewej i prawej",
-DecreaseIndent : "Zmniejsz wcięcie",
-IncreaseIndent : "Zwiększ wcięcie",
-Blockquote : "Cytat",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Cofnij",
-Redo : "Ponów",
-NumberedListLbl : "Lista numerowana",
-NumberedList : "Wstaw/usuń numerowanie listy",
-BulletedListLbl : "Lista wypunktowana",
-BulletedList : "Wstaw/usuń wypunktowanie listy",
-ShowTableBorders : "Pokazuj ramkÄ™ tabeli",
-ShowDetails : "Pokaż szczegóły",
-Style : "Styl",
-FontFormat : "Format",
-Font : "Czcionka",
-FontSize : "Rozmiar",
-TextColor : "Kolor tekstu",
-BGColor : "Kolor tła",
-Source : "Źródło dokumentu",
-Find : "Znajdź",
-Replace : "Zamień",
-SpellCheck : "Sprawdź pisownię",
-UniversalKeyboard : "Klawiatura Uniwersalna",
-PageBreakLbl : "Odstęp",
-PageBreak : "Wstaw odstęp",
-
-Form : "Formularz",
-Checkbox : "Pole wyboru (checkbox)",
-RadioButton : "Pole wyboru (radio)",
-TextField : "Pole tekstowe",
-Textarea : "Obszar tekstowy",
-HiddenField : "Pole ukryte",
-Button : "Przycisk",
-SelectionField : "Lista wyboru",
-ImageButton : "Przycisk-obrazek",
-
-FitWindow : "Maksymalizuj rozmiar edytora",
-ShowBlocks : "Pokaż bloki",
-
-// Context Menu
-EditLink : "Edytuj hiperłącze",
-CellCM : "Komórka",
-RowCM : "Wiersz",
-ColumnCM : "Kolumna",
-InsertRowAfter : "Wstaw wiersz poniżej",
-InsertRowBefore : "Wstaw wiersz powyżej",
-DeleteRows : "Usuń wiersze",
-InsertColumnAfter : "Wstaw kolumnÄ™ z prawej",
-InsertColumnBefore : "Wstaw kolumnÄ™ z lewej",
-DeleteColumns : "Usuń kolumny",
-InsertCellAfter : "Wstaw komórkę z prawej",
-InsertCellBefore : "Wstaw komórkę z lewej",
-DeleteCells : "Usuń komórki",
-MergeCells : "Połącz komórki",
-MergeRight : "Połącz z komórką z prawej",
-MergeDown : "Połącz z komórką poniżej",
-HorizontalSplitCell : "Podziel komórkę poziomo",
-VerticalSplitCell : "Podziel komórkę pionowo",
-TableDelete : "Usuń tabelę",
-CellProperties : "Właściwości komórki",
-TableProperties : "Właściwości tabeli",
-ImageProperties : "Właściwości obrazka",
-FlashProperties : "Właściwości elementu Flash",
-
-AnchorProp : "Właściwości kotwicy",
-ButtonProp : "Właściwości przycisku",
-CheckboxProp : "Właściwości pola wyboru (checkbox)",
-HiddenFieldProp : "Właściwości pola ukrytego",
-RadioButtonProp : "Właściwości pola wyboru (radio)",
-ImageButtonProp : "Właściwości przycisku obrazka",
-TextFieldProp : "Właściwości pola tekstowego",
-SelectionFieldProp : "Właściwości listy wyboru",
-TextareaProp : "Właściwości obszaru tekstowego",
-FormProp : "Właściwości formularza",
-
-FontFormats : "Normalny;Tekst sformatowany;Adres;Nagłówek 1;Nagłówek 2;Nagłówek 3;Nagłówek 4;Nagłówek 5;Nagłówek 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Przetwarzanie XHTML. Proszę czekać...",
-Done : "Gotowe",
-PasteWordConfirm : "Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Word. Czy chcesz go wyczyścic przed wklejeniem?",
-NotCompatiblePaste : "Ta funkcja jest dostępna w programie Internet Explorer w wersji 5.5 lub wyższej. Czy chcesz wkleić tekst bez czyszczenia?",
-UnknownToolbarItem : "Nieznany element paska narzędzi \"%1\"",
-UnknownCommand : "Nieznana komenda \"%1\"",
-NotImplemented : "Komenda niezaimplementowana",
-UnknownToolbarSet : "Pasek narzędzi \"%1\" nie istnieje",
-NoActiveX : "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.",
-BrowseServerBlocked : "Nie można otworzyć okno menadżera plików. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.",
-DialogBlocked : "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Anuluj",
-DlgBtnClose : "Zamknij",
-DlgBtnBrowseServer : "PrzeglÄ…daj",
-DlgAdvancedTag : "Zaawansowane",
-DlgOpOther : "<Inny>",
-DlgInfoTab : "Informacje",
-DlgAlertUrl : "Proszę podać URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nie ustawione>",
-DlgGenId : "Id",
-DlgGenLangDir : "Kierunek tekstu",
-DlgGenLangDirLtr : "Od lewej do prawej (LTR)",
-DlgGenLangDirRtl : "Od prawej do lewej (RTL)",
-DlgGenLangCode : "Kod języka",
-DlgGenAccessKey : "Klawisz dostępu",
-DlgGenName : "Nazwa",
-DlgGenTabIndex : "Indeks tabeli",
-DlgGenLongDescr : "Długi opis hiperłącza",
-DlgGenClass : "Nazwa klasy CSS",
-DlgGenTitle : "Opis obiektu docelowego",
-DlgGenContType : "Typ MIME obiektu docelowego",
-DlgGenLinkCharset : "Kodowanie znaków obiektu docelowego",
-DlgGenStyle : "Styl",
-
-// Image Dialog
-DlgImgTitle : "Właściwości obrazka",
-DlgImgInfoTab : "Informacje o obrazku",
-DlgImgBtnUpload : "Wyślij",
-DlgImgURL : "Adres URL",
-DlgImgUpload : "Wyślij",
-DlgImgAlt : "Tekst zastępczy",
-DlgImgWidth : "Szerokość",
-DlgImgHeight : "Wysokość",
-DlgImgLockRatio : "Zablokuj proporcje",
-DlgBtnResetSize : "Przywróć rozmiar",
-DlgImgBorder : "Ramka",
-DlgImgHSpace : "Odstęp poziomy",
-DlgImgVSpace : "Odstęp pionowy",
-DlgImgAlign : "Wyrównaj",
-DlgImgAlignLeft : "Do lewej",
-DlgImgAlignAbsBottom: "Do dołu",
-DlgImgAlignAbsMiddle: "Do środka w pionie",
-DlgImgAlignBaseline : "Do linii bazowej",
-DlgImgAlignBottom : "Do dołu",
-DlgImgAlignMiddle : "Do środka",
-DlgImgAlignRight : "Do prawej",
-DlgImgAlignTextTop : "Do góry tekstu",
-DlgImgAlignTop : "Do góry",
-DlgImgPreview : "PodglÄ…d",
-DlgImgAlertUrl : "Podaj adres obrazka.",
-DlgImgLinkTab : "Hiperłącze",
-
-// Flash Dialog
-DlgFlashTitle : "Właściwości elementu Flash",
-DlgFlashChkPlay : "Auto Odtwarzanie",
-DlgFlashChkLoop : "Pętla",
-DlgFlashChkMenu : "Włącz menu",
-DlgFlashScale : "Skaluj",
-DlgFlashScaleAll : "Pokaż wszystko",
-DlgFlashScaleNoBorder : "Bez Ramki",
-DlgFlashScaleFit : "Dokładne dopasowanie",
-
-// Link Dialog
-DlgLnkWindowTitle : "Hiperłącze",
-DlgLnkInfoTab : "Informacje ",
-DlgLnkTargetTab : "Cel",
-
-DlgLnkType : "Typ hiperłącza",
-DlgLnkTypeURL : "Adres URL",
-DlgLnkTypeAnchor : "Odnośnik wewnątrz strony",
-DlgLnkTypeEMail : "Adres e-mail",
-DlgLnkProto : "Protokół",
-DlgLnkProtoOther : "<inny>",
-DlgLnkURL : "Adres URL",
-DlgLnkAnchorSel : "Wybierz etykietÄ™",
-DlgLnkAnchorByName : "Wg etykiety",
-DlgLnkAnchorById : "Wg identyfikatora elementu",
-DlgLnkNoAnchors : "(W dokumencie nie zdefiniowano żadnych etykiet)",
-DlgLnkEMail : "Adres e-mail",
-DlgLnkEMailSubject : "Temat",
-DlgLnkEMailBody : "Treść",
-DlgLnkUpload : "Wyślij",
-DlgLnkBtnUpload : "Wyślij",
-
-DlgLnkTarget : "Cel",
-DlgLnkTargetFrame : "<ramka>",
-DlgLnkTargetPopup : "<wyskakujÄ…ce okno>",
-DlgLnkTargetBlank : "Nowe okno (_blank)",
-DlgLnkTargetParent : "Okno nadrzędne (_parent)",
-DlgLnkTargetSelf : "To samo okno (_self)",
-DlgLnkTargetTop : "Okno najwyższe w hierarchii (_top)",
-DlgLnkTargetFrameName : "Nazwa Ramki Docelowej",
-DlgLnkPopWinName : "Nazwa wyskakujÄ…cego okna",
-DlgLnkPopWinFeat : "Właściwości wyskakującego okna",
-DlgLnkPopResize : "Możliwa zmiana rozmiaru",
-DlgLnkPopLocation : "Pasek adresu",
-DlgLnkPopMenu : "Pasek menu",
-DlgLnkPopScroll : "Paski przewijania",
-DlgLnkPopStatus : "Pasek statusu",
-DlgLnkPopToolbar : "Pasek narzędzi",
-DlgLnkPopFullScrn : "Pełny ekran (IE)",
-DlgLnkPopDependent : "Okno zależne (Netscape)",
-DlgLnkPopWidth : "Szerokość",
-DlgLnkPopHeight : "Wysokość",
-DlgLnkPopLeft : "Pozycja w poziomie",
-DlgLnkPopTop : "Pozycja w pionie",
-
-DlnLnkMsgNoUrl : "Podaj adres URL",
-DlnLnkMsgNoEMail : "Podaj adres e-mail",
-DlnLnkMsgNoAnchor : "Wybierz etykietÄ™",
-DlnLnkMsgInvPopName : "Nazwa wyskakującego okienka musi zaczynać się od znaku alfanumerycznego i nie może zawierać spacji",
-
-// Color Dialog
-DlgColorTitle : "Wybierz kolor",
-DlgColorBtnClear : "Wyczyść",
-DlgColorHighlight : "PodglÄ…d",
-DlgColorSelected : "Wybrane",
-
-// Smiley Dialog
-DlgSmileyTitle : "Wstaw emotikonÄ™",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Wybierz znak specjalny",
-
-// Table Dialog
-DlgTableTitle : "Właściwości tabeli",
-DlgTableRows : "Liczba wierszy",
-DlgTableColumns : "Liczba kolumn",
-DlgTableBorder : "Grubość ramki",
-DlgTableAlign : "Wyrównanie",
-DlgTableAlignNotSet : "<brak ustawień>",
-DlgTableAlignLeft : "Do lewej",
-DlgTableAlignCenter : "Do środka",
-DlgTableAlignRight : "Do prawej",
-DlgTableWidth : "Szerokość",
-DlgTableWidthPx : "piksele",
-DlgTableWidthPc : "%",
-DlgTableHeight : "Wysokość",
-DlgTableCellSpace : "Odstęp pomiędzy komórkami",
-DlgTableCellPad : "Margines wewnętrzny komórek",
-DlgTableCaption : "Tytuł",
-DlgTableSummary : "Podsumowanie",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Właściwości komórki",
-DlgCellWidth : "Szerokość",
-DlgCellWidthPx : "piksele",
-DlgCellWidthPc : "%",
-DlgCellHeight : "Wysokość",
-DlgCellWordWrap : "Zawijanie tekstu",
-DlgCellWordWrapNotSet : "<brak ustawień>",
-DlgCellWordWrapYes : "Tak",
-DlgCellWordWrapNo : "Nie",
-DlgCellHorAlign : "Wyrównanie poziome",
-DlgCellHorAlignNotSet : "<brak ustawień>",
-DlgCellHorAlignLeft : "Do lewej",
-DlgCellHorAlignCenter : "Do środka",
-DlgCellHorAlignRight: "Do prawej",
-DlgCellVerAlign : "Wyrównanie pionowe",
-DlgCellVerAlignNotSet : "<brak ustawień>",
-DlgCellVerAlignTop : "Do góry",
-DlgCellVerAlignMiddle : "Do środka",
-DlgCellVerAlignBottom : "Do dołu",
-DlgCellVerAlignBaseline : "Do linii bazowej",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Zajętość wierszy",
-DlgCellCollSpan : "Zajętość kolumn",
-DlgCellBackColor : "Kolor tła",
-DlgCellBorderColor : "Kolor ramki",
-DlgCellBtnSelect : "Wybierz...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Znajdź i zamień",
-
-// Find Dialog
-DlgFindTitle : "Znajdź",
-DlgFindFindBtn : "Znajdź",
-DlgFindNotFoundMsg : "Nie znaleziono szukanego hasła.",
-
-// Replace Dialog
-DlgReplaceTitle : "Zamień",
-DlgReplaceFindLbl : "Znajdź:",
-DlgReplaceReplaceLbl : "ZastÄ…p przez:",
-DlgReplaceCaseChk : "Uwzględnij wielkość liter",
-DlgReplaceReplaceBtn : "ZastÄ…p",
-DlgReplaceReplAllBtn : "ZastÄ…p wszystko",
-DlgReplaceWordChk : "Całe słowa",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.",
-PasteErrorCopy : "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.",
-
-PasteAsText : "Wklej jako czysty tekst",
-PasteFromWord : "Wklej z Worda",
-
-DlgPasteMsg2 : "Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.",
-DlgPasteSec : "Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.",
-DlgPasteIgnoreFont : "Ignoruj definicje 'Font Face'",
-DlgPasteRemoveStyles : "Usuń definicje Stylów",
-
-// Color Picker
-ColorAutomatic : "Automatycznie",
-ColorMoreColors : "Więcej kolorów...",
-
-// Document Properties
-DocProps : "Właściwości dokumentu",
-
-// Anchor Dialog
-DlgAnchorTitle : "Właściwości kotwicy",
-DlgAnchorName : "Nazwa kotwicy",
-DlgAnchorErrorName : "Wpisz nazwÄ™ kotwicy",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Słowa nie ma w słowniku",
-DlgSpellChangeTo : "Zmień na",
-DlgSpellBtnIgnore : "Ignoruj",
-DlgSpellBtnIgnoreAll : "Ignoruj wszystkie",
-DlgSpellBtnReplace : "Zmień",
-DlgSpellBtnReplaceAll : "Zmień wszystkie",
-DlgSpellBtnUndo : "Cofnij",
-DlgSpellNoSuggestions : "- Brak sugestii -",
-DlgSpellProgress : "Trwa sprawdzanie ...",
-DlgSpellNoMispell : "Sprawdzanie zakończone: nie znaleziono błędów",
-DlgSpellNoChanges : "Sprawdzanie zakończone: nie zmieniono żadnego słowa",
-DlgSpellOneChange : "Sprawdzanie zakończone: zmieniono jedno słowo",
-DlgSpellManyChanges : "Sprawdzanie zakończone: zmieniono %l słów",
-
-IeSpellDownload : "Słownik nie jest zainstalowany. Chcesz go ściągnąć?",
-
-// Button Dialog
-DlgButtonText : "Tekst (Wartość)",
-DlgButtonType : "Typ",
-DlgButtonTypeBtn : "Przycisk",
-DlgButtonTypeSbm : "Wyślij",
-DlgButtonTypeRst : "Wyzeruj",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nazwa",
-DlgCheckboxValue : "Wartość",
-DlgCheckboxSelected : "Zaznaczone",
-
-// Form Dialog
-DlgFormName : "Nazwa",
-DlgFormAction : "Akcja",
-DlgFormMethod : "Metoda",
-
-// Select Field Dialog
-DlgSelectName : "Nazwa",
-DlgSelectValue : "Wartość",
-DlgSelectSize : "Rozmiar",
-DlgSelectLines : "linii",
-DlgSelectChkMulti : "Wielokrotny wybór",
-DlgSelectOpAvail : "Dostępne opcje",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Wartość",
-DlgSelectBtnAdd : "Dodaj",
-DlgSelectBtnModify : "Zmień",
-DlgSelectBtnUp : "Do góry",
-DlgSelectBtnDown : "Do dołu",
-DlgSelectBtnSetValue : "Ustaw wartość zaznaczoną",
-DlgSelectBtnDelete : "Usuń",
-
-// Textarea Dialog
-DlgTextareaName : "Nazwa",
-DlgTextareaCols : "Kolumnu",
-DlgTextareaRows : "Wiersze",
-
-// Text Field Dialog
-DlgTextName : "Nazwa",
-DlgTextValue : "Wartość",
-DlgTextCharWidth : "Szerokość w znakach",
-DlgTextMaxChars : "Max. szerokość",
-DlgTextType : "Typ",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Hasło",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nazwa",
-DlgHiddenValue : "Wartość",
-
-// Bulleted List Dialog
-BulletedListProp : "Właściwości listy punktowanej",
-NumberedListProp : "Właściwości listy numerowanej",
-DlgLstStart : "PoczÄ…tek",
-DlgLstType : "Typ",
-DlgLstTypeCircle : "Koło",
-DlgLstTypeDisc : "Dysk",
-DlgLstTypeSquare : "Kwadrat",
-DlgLstTypeNumbers : "Cyfry (1, 2, 3)",
-DlgLstTypeLCase : "Małe litery (a, b, c)",
-DlgLstTypeUCase : "Duże litery (A, B, C)",
-DlgLstTypeSRoman : "Numeracja rzymska (i, ii, iii)",
-DlgLstTypeLRoman : "Numeracja rzymska (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Ogólne",
-DlgDocBackTab : "Tło",
-DlgDocColorsTab : "Kolory i marginesy",
-DlgDocMetaTab : "Meta Dane",
-
-DlgDocPageTitle : "Tytuł strony",
-DlgDocLangDir : "Kierunek pisania",
-DlgDocLangDirLTR : "Od lewej do prawej (LTR)",
-DlgDocLangDirRTL : "Od prawej do lewej (RTL)",
-DlgDocLangCode : "Kod języka",
-DlgDocCharSet : "Kodowanie znaków",
-DlgDocCharSetCE : "Åšrodkowoeuropejskie",
-DlgDocCharSetCT : "Chińskie tradycyjne (Big5)",
-DlgDocCharSetCR : "Cyrylica",
-DlgDocCharSetGR : "Greckie",
-DlgDocCharSetJP : "Japońskie",
-DlgDocCharSetKR : "Koreańskie",
-DlgDocCharSetTR : "Tureckie",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Zachodnioeuropejskie",
-DlgDocCharSetOther : "Inne kodowanie znaków",
-
-DlgDocDocType : "Nagłówek typu dokumentu",
-DlgDocDocTypeOther : "Inny typ dokumentu",
-DlgDocIncXHTML : "Dołącz deklarację XHTML",
-DlgDocBgColor : "Kolor tła",
-DlgDocBgImage : "Obrazek tła",
-DlgDocBgNoScroll : "Tło nieruchome",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Hiperłącze",
-DlgDocCVisited : "Odwiedzane hiperłącze",
-DlgDocCActive : "Aktywne hiperłącze",
-DlgDocMargins : "Marginesy strony",
-DlgDocMaTop : "Górny",
-DlgDocMaLeft : "Lewy",
-DlgDocMaRight : "Prawy",
-DlgDocMaBottom : "Dolny",
-DlgDocMeIndex : "Słowa kluczowe (oddzielone przecinkami)",
-DlgDocMeDescr : "Opis dokumentu",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Prawa autorskie",
-DlgDocPreview : "PodglÄ…d",
-
-// Templates Dialog
-Templates : "Sablony",
-DlgTemplatesTitle : "Szablony zawartości",
-DlgTemplatesSelMsg : "Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):",
-DlgTemplatesLoading : "Åadowanie listy szablonów. ProszÄ™ czekać...",
-DlgTemplatesNoTpl : "(Brak zdefiniowanych szablonów)",
-DlgTemplatesReplace : "Zastąp aktualną zawartość",
-
-// About Dialog
-DlgAboutAboutTab : "O ...",
-DlgAboutBrowserInfoTab : "O przeglÄ…darce",
-DlgAboutLicenseTab : "Licencja",
-DlgAboutVersion : "wersja",
-DlgAboutInfo : "Więcej informacji uzyskasz pod adresem",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt-br.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt-br.js
deleted file mode 100644
index 6da14d964..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt-br.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Brazilian Portuguese language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Ocultar Barra de Ferramentas",
-ToolbarExpand : "Exibir Barra de Ferramentas",
-
-// Toolbar Items and Context Menu
-Save : "Salvar",
-NewPage : "Novo",
-Preview : "Visualizar",
-Cut : "Recortar",
-Copy : "Copiar",
-Paste : "Colar",
-PasteText : "Colar como Texto sem Formatação",
-PasteWord : "Colar do Word",
-Print : "Imprimir",
-SelectAll : "Selecionar Tudo",
-RemoveFormat : "Remover Formatação",
-InsertLinkLbl : "Hiperlink",
-InsertLink : "Inserir/Editar Hiperlink",
-RemoveLink : "Remover Hiperlink",
-VisitLink : "Open Link", //MISSING
-Anchor : "Inserir/Editar Âncora",
-AnchorDelete : "Remover Âncora",
-InsertImageLbl : "Figura",
-InsertImage : "Inserir/Editar Figura",
-InsertFlashLbl : "Flash",
-InsertFlash : "Insere/Edita Flash",
-InsertTableLbl : "Tabela",
-InsertTable : "Inserir/Editar Tabela",
-InsertLineLbl : "Linha",
-InsertLine : "Inserir Linha Horizontal",
-InsertSpecialCharLbl: "Caracteres Especiais",
-InsertSpecialChar : "Inserir Caractere Especial",
-InsertSmileyLbl : "Emoticon",
-InsertSmiley : "Inserir Emoticon",
-About : "Sobre FCKeditor",
-Bold : "Negrito",
-Italic : "Itálico",
-Underline : "Sublinhado",
-StrikeThrough : "Tachado",
-Subscript : "Subscrito",
-Superscript : "Sobrescrito",
-LeftJustify : "Alinhar Esquerda",
-CenterJustify : "Centralizar",
-RightJustify : "Alinhar Direita",
-BlockJustify : "Justificado",
-DecreaseIndent : "Diminuir Recuo",
-IncreaseIndent : "Aumentar Recuo",
-Blockquote : "Recuo",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Desfazer",
-Redo : "Refazer",
-NumberedListLbl : "Numeração",
-NumberedList : "Inserir/Remover Numeração",
-BulletedListLbl : "Marcadores",
-BulletedList : "Inserir/Remover Marcadores",
-ShowTableBorders : "Exibir Bordas da Tabela",
-ShowDetails : "Exibir Detalhes",
-Style : "Estilo",
-FontFormat : "Formatação",
-Font : "Fonte",
-FontSize : "Tamanho",
-TextColor : "Cor do Texto",
-BGColor : "Cor do Plano de Fundo",
-Source : "Código-Fonte",
-Find : "Localizar",
-Replace : "Substituir",
-SpellCheck : "Verificar Ortografia",
-UniversalKeyboard : "Teclado Universal",
-PageBreakLbl : "Quebra de Página",
-PageBreak : "Inserir Quebra de Página",
-
-Form : "Formulário",
-Checkbox : "Caixa de Seleção",
-RadioButton : "Botão de Opção",
-TextField : "Caixa de Texto",
-Textarea : "Ãrea de Texto",
-HiddenField : "Campo Oculto",
-Button : "Botão",
-SelectionField : "Caixa de Listagem",
-ImageButton : "Botão de Imagem",
-
-FitWindow : "Maximizar o tamanho do editor",
-ShowBlocks : "Mostrar blocos",
-
-// Context Menu
-EditLink : "Editar Hiperlink",
-CellCM : "Célula",
-RowCM : "Linha",
-ColumnCM : "Coluna",
-InsertRowAfter : "Inserir linha abaixo",
-InsertRowBefore : "Inserir linha acima",
-DeleteRows : "Remover Linhas",
-InsertColumnAfter : "Inserir coluna à direita",
-InsertColumnBefore : "Inserir coluna à esquerda",
-DeleteColumns : "Remover Colunas",
-InsertCellAfter : "Inserir célula à direita",
-InsertCellBefore : "Inserir célula à esquerda",
-DeleteCells : "Remover Células",
-MergeCells : "Mesclar Células",
-MergeRight : "Mesclar com célula à direita",
-MergeDown : "Mesclar com célula abaixo",
-HorizontalSplitCell : "Dividir célula horizontalmente",
-VerticalSplitCell : "Dividir célula verticalmente",
-TableDelete : "Apagar Tabela",
-CellProperties : "Formatar Célula",
-TableProperties : "Formatar Tabela",
-ImageProperties : "Formatar Figura",
-FlashProperties : "Propriedades Flash",
-
-AnchorProp : "Formatar Âncora",
-ButtonProp : "Formatar Botão",
-CheckboxProp : "Formatar Caixa de Seleção",
-HiddenFieldProp : "Formatar Campo Oculto",
-RadioButtonProp : "Formatar Botão de Opção",
-ImageButtonProp : "Formatar Botão de Imagem",
-TextFieldProp : "Formatar Caixa de Texto",
-SelectionFieldProp : "Formatar Caixa de Listagem",
-TextareaProp : "Formatar Ãrea de Texto",
-FormProp : "Formatar Formulário",
-
-FontFormats : "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Processando XHTML. Por favor, aguarde...",
-Done : "Pronto",
-PasteWordConfirm : "O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?",
-NotCompatiblePaste : "Este comando está disponível para o navegador Internet Explorer 5.5 ou superior. Você gostaria de colar sem remover a formatação?",
-UnknownToolbarItem : "O item da barra de ferramentas \"%1\" não é reconhecido",
-UnknownCommand : "O comando \"%1\" não é reconhecido",
-NotImplemented : "O comando não foi implementado",
-UnknownToolbarSet : "A barra de ferramentas \"%1\" não existe",
-NoActiveX : "As configurações de segurança do seu browser podem limitar algumas características do editor. Você precisa habilitar a opção \"Executar controles e plug-ins ActiveX\". Você pode experimentar erros e alertas de características faltantes.",
-BrowseServerBlocked : "Os recursos do browser não puderam ser abertos. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
-DialogBlocked : "Não foi possível abrir a janela de diálogo. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancelar",
-DlgBtnClose : "Fechar",
-DlgBtnBrowseServer : "Localizar no Servidor",
-DlgAdvancedTag : "Avançado",
-DlgOpOther : "<Outros>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Inserir a URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<não ajustado>",
-DlgGenId : "Id",
-DlgGenLangDir : "Direção do idioma",
-DlgGenLangDirLtr : "Esquerda para Direita (LTR)",
-DlgGenLangDirRtl : "Direita para Esquerda (RTL)",
-DlgGenLangCode : "Idioma",
-DlgGenAccessKey : "Chave de Acesso",
-DlgGenName : "Nome",
-DlgGenTabIndex : "Ãndice de Tabulação",
-DlgGenLongDescr : "Descrição da URL",
-DlgGenClass : "Classe de Folhas de Estilo",
-DlgGenTitle : "Título",
-DlgGenContType : "Tipo de Conteúdo",
-DlgGenLinkCharset : "Conjunto de Caracteres do Hiperlink",
-DlgGenStyle : "Estilos",
-
-// Image Dialog
-DlgImgTitle : "Formatar Figura",
-DlgImgInfoTab : "Informações da Figura",
-DlgImgBtnUpload : "Enviar para o Servidor",
-DlgImgURL : "URL",
-DlgImgUpload : "Submeter",
-DlgImgAlt : "Texto Alternativo",
-DlgImgWidth : "Largura",
-DlgImgHeight : "Altura",
-DlgImgLockRatio : "Manter proporções",
-DlgBtnResetSize : "Redefinir para o Tamanho Original",
-DlgImgBorder : "Borda",
-DlgImgHSpace : "Horizontal",
-DlgImgVSpace : "Vertical",
-DlgImgAlign : "Alinhamento",
-DlgImgAlignLeft : "Esquerda",
-DlgImgAlignAbsBottom: "Inferior Absoluto",
-DlgImgAlignAbsMiddle: "Centralizado Absoluto",
-DlgImgAlignBaseline : "Baseline",
-DlgImgAlignBottom : "Inferior",
-DlgImgAlignMiddle : "Centralizado",
-DlgImgAlignRight : "Direita",
-DlgImgAlignTextTop : "Superior Absoluto",
-DlgImgAlignTop : "Superior",
-DlgImgPreview : "Visualização",
-DlgImgAlertUrl : "Por favor, digite o URL da figura.",
-DlgImgLinkTab : "Hiperlink",
-
-// Flash Dialog
-DlgFlashTitle : "Propriedades Flash",
-DlgFlashChkPlay : "Tocar Automaticamente",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Habilita Menu Flash",
-DlgFlashScale : "Escala",
-DlgFlashScaleAll : "Mostrar tudo",
-DlgFlashScaleNoBorder : "Sem Borda",
-DlgFlashScaleFit : "Escala Exata",
-
-// Link Dialog
-DlgLnkWindowTitle : "Hiperlink",
-DlgLnkInfoTab : "Informações",
-DlgLnkTargetTab : "Destino",
-
-DlgLnkType : "Tipo de hiperlink",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Âncora nesta página",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocolo",
-DlgLnkProtoOther : "<outro>",
-DlgLnkURL : "URL do hiperlink",
-DlgLnkAnchorSel : "Selecione uma âncora",
-DlgLnkAnchorByName : "Pelo Nome da âncora",
-DlgLnkAnchorById : "Pelo Id do Elemento",
-DlgLnkNoAnchors : "(Não há âncoras disponíveis neste documento)",
-DlgLnkEMail : "Endereço E-Mail",
-DlgLnkEMailSubject : "Assunto da Mensagem",
-DlgLnkEMailBody : "Corpo da Mensagem",
-DlgLnkUpload : "Enviar ao Servidor",
-DlgLnkBtnUpload : "Enviar ao Servidor",
-
-DlgLnkTarget : "Destino",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<janela popup>",
-DlgLnkTargetBlank : "Nova Janela (_blank)",
-DlgLnkTargetParent : "Janela Pai (_parent)",
-DlgLnkTargetSelf : "Mesma Janela (_self)",
-DlgLnkTargetTop : "Janela Superior (_top)",
-DlgLnkTargetFrameName : "Nome do Frame de Destino",
-DlgLnkPopWinName : "Nome da Janela Pop-up",
-DlgLnkPopWinFeat : "Atributos da Janela Pop-up",
-DlgLnkPopResize : "Redimensionável",
-DlgLnkPopLocation : "Barra de Endereços",
-DlgLnkPopMenu : "Barra de Menus",
-DlgLnkPopScroll : "Barras de Rolagem",
-DlgLnkPopStatus : "Barra de Status",
-DlgLnkPopToolbar : "Barra de Ferramentas",
-DlgLnkPopFullScrn : "Modo Tela Cheia (IE)",
-DlgLnkPopDependent : "Dependente (Netscape)",
-DlgLnkPopWidth : "Largura",
-DlgLnkPopHeight : "Altura",
-DlgLnkPopLeft : "Esquerda",
-DlgLnkPopTop : "Superior",
-
-DlnLnkMsgNoUrl : "Por favor, digite o endereço do Hiperlink",
-DlnLnkMsgNoEMail : "Por favor, digite o endereço de e-mail",
-DlnLnkMsgNoAnchor : "Por favor, selecione uma âncora",
-DlnLnkMsgInvPopName : "O nome da janela popup deve começar com uma letra ou sublinhado (_) e não pode conter espaços",
-
-// Color Dialog
-DlgColorTitle : "Selecione uma Cor",
-DlgColorBtnClear : "Limpar",
-DlgColorHighlight : "Visualização",
-DlgColorSelected : "Selecionada",
-
-// Smiley Dialog
-DlgSmileyTitle : "Inserir Emoticon",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Selecione um Caractere Especial",
-
-// Table Dialog
-DlgTableTitle : "Formatar Tabela",
-DlgTableRows : "Linhas",
-DlgTableColumns : "Colunas",
-DlgTableBorder : "Borda",
-DlgTableAlign : "Alinhamento",
-DlgTableAlignNotSet : "<Não ajustado>",
-DlgTableAlignLeft : "Esquerda",
-DlgTableAlignCenter : "Centralizado",
-DlgTableAlignRight : "Direita",
-DlgTableWidth : "Largura",
-DlgTableWidthPx : "pixels",
-DlgTableWidthPc : "%",
-DlgTableHeight : "Altura",
-DlgTableCellSpace : "Espaçamento",
-DlgTableCellPad : "Enchimento",
-DlgTableCaption : "Legenda",
-DlgTableSummary : "Resumo",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Formatar célula",
-DlgCellWidth : "Largura",
-DlgCellWidthPx : "pixels",
-DlgCellWidthPc : "%",
-DlgCellHeight : "Altura",
-DlgCellWordWrap : "Quebra de Linha",
-DlgCellWordWrapNotSet : "<Não ajustado>",
-DlgCellWordWrapYes : "Sim",
-DlgCellWordWrapNo : "Não",
-DlgCellHorAlign : "Alinhamento Horizontal",
-DlgCellHorAlignNotSet : "<Não ajustado>",
-DlgCellHorAlignLeft : "Esquerda",
-DlgCellHorAlignCenter : "Centralizado",
-DlgCellHorAlignRight: "Direita",
-DlgCellVerAlign : "Alinhamento Vertical",
-DlgCellVerAlignNotSet : "<Não ajustado>",
-DlgCellVerAlignTop : "Superior",
-DlgCellVerAlignMiddle : "Centralizado",
-DlgCellVerAlignBottom : "Inferior",
-DlgCellVerAlignBaseline : "Baseline",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Transpor Linhas",
-DlgCellCollSpan : "Transpor Colunas",
-DlgCellBackColor : "Cor do Plano de Fundo",
-DlgCellBorderColor : "Cor da Borda",
-DlgCellBtnSelect : "Selecionar...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Localizar e Substituir",
-
-// Find Dialog
-DlgFindTitle : "Localizar...",
-DlgFindFindBtn : "Localizar",
-DlgFindNotFoundMsg : "O texto especificado não foi encontrado.",
-
-// Replace Dialog
-DlgReplaceTitle : "Substituir",
-DlgReplaceFindLbl : "Procurar por:",
-DlgReplaceReplaceLbl : "Substituir por:",
-DlgReplaceCaseChk : "Coincidir Maiúsculas/Minúsculas",
-DlgReplaceReplaceBtn : "Substituir",
-DlgReplaceReplAllBtn : "Substituir Tudo",
-DlgReplaceWordChk : "Coincidir a palavra inteira",
-
-// Paste Operations / Dialog
-PasteErrorCut : "As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).",
-PasteErrorCopy : "As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).",
-
-PasteAsText : "Colar como Texto sem Formatação",
-PasteFromWord : "Colar do Word",
-
-DlgPasteMsg2 : "Transfira o link usado no box usando o teclado com (<STRONG>Ctrl+V</STRONG>) e <STRONG>OK</STRONG>.",
-DlgPasteSec : "As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.",
-DlgPasteIgnoreFont : "Ignorar definições de fonte",
-DlgPasteRemoveStyles : "Remove definições de estilo",
-
-// Color Picker
-ColorAutomatic : "Automático",
-ColorMoreColors : "Mais Cores...",
-
-// Document Properties
-DocProps : "Propriedades Documento",
-
-// Anchor Dialog
-DlgAnchorTitle : "Formatar Âncora",
-DlgAnchorName : "Nome da Âncora",
-DlgAnchorErrorName : "Por favor, digite o nome da âncora",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Não encontrada",
-DlgSpellChangeTo : "Alterar para",
-DlgSpellBtnIgnore : "Ignorar uma vez",
-DlgSpellBtnIgnoreAll : "Ignorar Todas",
-DlgSpellBtnReplace : "Alterar",
-DlgSpellBtnReplaceAll : "Alterar Todas",
-DlgSpellBtnUndo : "Desfazer",
-DlgSpellNoSuggestions : "-sem sugestões de ortografia-",
-DlgSpellProgress : "Verificação ortográfica em andamento...",
-DlgSpellNoMispell : "Verificação encerrada: Não foram encontrados erros de ortografia",
-DlgSpellNoChanges : "Verificação ortográfica encerrada: Não houve alterações",
-DlgSpellOneChange : "Verificação ortográfica encerrada: Uma palavra foi alterada",
-DlgSpellManyChanges : "Verificação ortográfica encerrada: %1 foram alteradas",
-
-IeSpellDownload : "A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?",
-
-// Button Dialog
-DlgButtonText : "Texto (Valor)",
-DlgButtonType : "Tipo",
-DlgButtonTypeBtn : "Botão",
-DlgButtonTypeSbm : "Enviar",
-DlgButtonTypeRst : "Limpar",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nome",
-DlgCheckboxValue : "Valor",
-DlgCheckboxSelected : "Selecionado",
-
-// Form Dialog
-DlgFormName : "Nome",
-DlgFormAction : "Action",
-DlgFormMethod : "Método",
-
-// Select Field Dialog
-DlgSelectName : "Nome",
-DlgSelectValue : "Valor",
-DlgSelectSize : "Tamanho",
-DlgSelectLines : "linhas",
-DlgSelectChkMulti : "Permitir múltiplas seleções",
-DlgSelectOpAvail : "Opções disponíveis",
-DlgSelectOpText : "Texto",
-DlgSelectOpValue : "Valor",
-DlgSelectBtnAdd : "Adicionar",
-DlgSelectBtnModify : "Modificar",
-DlgSelectBtnUp : "Para cima",
-DlgSelectBtnDown : "Para baixo",
-DlgSelectBtnSetValue : "Definir como selecionado",
-DlgSelectBtnDelete : "Remover",
-
-// Textarea Dialog
-DlgTextareaName : "Nome",
-DlgTextareaCols : "Colunas",
-DlgTextareaRows : "Linhas",
-
-// Text Field Dialog
-DlgTextName : "Nome",
-DlgTextValue : "Valor",
-DlgTextCharWidth : "Comprimento (em caracteres)",
-DlgTextMaxChars : "Número Máximo de Caracteres",
-DlgTextType : "Tipo",
-DlgTextTypeText : "Texto",
-DlgTextTypePass : "Senha",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nome",
-DlgHiddenValue : "Valor",
-
-// Bulleted List Dialog
-BulletedListProp : "Formatar Marcadores",
-NumberedListProp : "Formatar Numeração",
-DlgLstStart : "Iniciar",
-DlgLstType : "Tipo",
-DlgLstTypeCircle : "Círculo",
-DlgLstTypeDisc : "Disco",
-DlgLstTypeSquare : "Quadrado",
-DlgLstTypeNumbers : "Números (1, 2, 3)",
-DlgLstTypeLCase : "Letras Minúsculas (a, b, c)",
-DlgLstTypeUCase : "Letras Maiúsculas (A, B, C)",
-DlgLstTypeSRoman : "Números Romanos Minúsculos (i, ii, iii)",
-DlgLstTypeLRoman : "Números Romanos Maiúsculos (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Geral",
-DlgDocBackTab : "Plano de Fundo",
-DlgDocColorsTab : "Cores e Margens",
-DlgDocMetaTab : "Meta Dados",
-
-DlgDocPageTitle : "Título da Página",
-DlgDocLangDir : "Direção do Idioma",
-DlgDocLangDirLTR : "Esquerda para Direita (LTR)",
-DlgDocLangDirRTL : "Direita para Esquerda (RTL)",
-DlgDocLangCode : "Código do Idioma",
-DlgDocCharSet : "Codificação de Caracteres",
-DlgDocCharSetCE : "Europa Central",
-DlgDocCharSetCT : "Chinês Tradicional (Big5)",
-DlgDocCharSetCR : "Cirílico",
-DlgDocCharSetGR : "Grego",
-DlgDocCharSetJP : "Japonês",
-DlgDocCharSetKR : "Coreano",
-DlgDocCharSetTR : "Turco",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Europa Ocidental",
-DlgDocCharSetOther : "Outra Codificação de Caracteres",
-
-DlgDocDocType : "Cabeçalho Tipo de Documento",
-DlgDocDocTypeOther : "Other Document Type Heading",
-DlgDocIncXHTML : "Incluir Declarações XHTML",
-DlgDocBgColor : "Cor do Plano de Fundo",
-DlgDocBgImage : "URL da Imagem de Plano de Fundo",
-DlgDocBgNoScroll : "Plano de Fundo Fixo",
-DlgDocCText : "Texto",
-DlgDocCLink : "Hiperlink",
-DlgDocCVisited : "Hiperlink Visitado",
-DlgDocCActive : "Hiperlink Ativo",
-DlgDocMargins : "Margens da Página",
-DlgDocMaTop : "Superior",
-DlgDocMaLeft : "Inferior",
-DlgDocMaRight : "Direita",
-DlgDocMaBottom : "Inferior",
-DlgDocMeIndex : "Palavras-chave de Indexação do Documento (separadas por vírgula)",
-DlgDocMeDescr : "Descrição do Documento",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Direitos Autorais",
-DlgDocPreview : "Visualizar",
-
-// Templates Dialog
-Templates : "Modelos de layout",
-DlgTemplatesTitle : "Modelo de layout do conteúdo",
-DlgTemplatesSelMsg : "Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):",
-DlgTemplatesLoading : "Carregando a lista de modelos de layout. Aguarde...",
-DlgTemplatesNoTpl : "(Não foram definidos modelos de layout)",
-DlgTemplatesReplace : "Substituir o conteúdo atual",
-
-// About Dialog
-DlgAboutAboutTab : "Sobre",
-DlgAboutBrowserInfoTab : "Informações do Navegador",
-DlgAboutLicenseTab : "Licença",
-DlgAboutVersion : "versão",
-DlgAboutInfo : "Para maiores informações visite",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt.js
deleted file mode 100644
index 0ae67a7c9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/pt.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Portuguese language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Fechar Barra",
-ToolbarExpand : "Expandir Barra",
-
-// Toolbar Items and Context Menu
-Save : "Guardar",
-NewPage : "Nova Página",
-Preview : "Pré-visualizar",
-Cut : "Cortar",
-Copy : "Copiar",
-Paste : "Colar",
-PasteText : "Colar como texto não formatado",
-PasteWord : "Colar do Word",
-Print : "Imprimir",
-SelectAll : "Seleccionar Tudo",
-RemoveFormat : "Eliminar Formato",
-InsertLinkLbl : "Hiperligação",
-InsertLink : "Inserir/Editar Hiperligação",
-RemoveLink : "Eliminar Hiperligação",
-VisitLink : "Open Link", //MISSING
-Anchor : " Inserir/Editar Âncora",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Imagem",
-InsertImage : "Inserir/Editar Imagem",
-InsertFlashLbl : "Flash",
-InsertFlash : "Inserir/Editar Flash",
-InsertTableLbl : "Tabela",
-InsertTable : "Inserir/Editar Tabela",
-InsertLineLbl : "Linha",
-InsertLine : "Inserir Linha Horizontal",
-InsertSpecialCharLbl: "Caracter Especial",
-InsertSpecialChar : "Inserir Caracter Especial",
-InsertSmileyLbl : "Emoticons",
-InsertSmiley : "Inserir Emoticons",
-About : "Acerca do FCKeditor",
-Bold : "Negrito",
-Italic : "Itálico",
-Underline : "Sublinhado",
-StrikeThrough : "Rasurado",
-Subscript : "Superior à Linha",
-Superscript : "Inferior à Linha",
-LeftJustify : "Alinhar à Esquerda",
-CenterJustify : "Alinhar ao Centro",
-RightJustify : "Alinhar à Direita",
-BlockJustify : "Justificado",
-DecreaseIndent : "Diminuir Avanço",
-IncreaseIndent : "Aumentar Avanço",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Anular",
-Redo : "Repetir",
-NumberedListLbl : "Numeração",
-NumberedList : "Inserir/Eliminar Numeração",
-BulletedListLbl : "Marcas",
-BulletedList : "Inserir/Eliminar Marcas",
-ShowTableBorders : "Mostrar Limites da Tabelas",
-ShowDetails : "Mostrar Parágrafo",
-Style : "Estilo",
-FontFormat : "Formato",
-Font : "Tipo de Letra",
-FontSize : "Tamanho",
-TextColor : "Cor do Texto",
-BGColor : "Cor de Fundo",
-Source : "Fonte",
-Find : "Procurar",
-Replace : "Substituir",
-SpellCheck : "Verificação Ortográfica",
-UniversalKeyboard : "Teclado Universal",
-PageBreakLbl : "Quebra de Página",
-PageBreak : "Inserir Quebra de Página",
-
-Form : "Formulário",
-Checkbox : "Caixa de Verificação",
-RadioButton : "Botão de Opção",
-TextField : "Campo de Texto",
-Textarea : "Ãrea de Texto",
-HiddenField : "Campo Escondido",
-Button : "Botão",
-SelectionField : "Caixa de Combinação",
-ImageButton : "Botão de Imagem",
-
-FitWindow : "Maximizar o tamanho do editor",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Editar Hiperligação",
-CellCM : "Célula",
-RowCM : "Linha",
-ColumnCM : "Coluna",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Eliminar Linhas",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Eliminar Coluna",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Eliminar Célula",
-MergeCells : "Unir Células",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Eliminar Tabela",
-CellProperties : "Propriedades da Célula",
-TableProperties : "Propriedades da Tabela",
-ImageProperties : "Propriedades da Imagem",
-FlashProperties : "Propriedades do Flash",
-
-AnchorProp : "Propriedades da Âncora",
-ButtonProp : "Propriedades do Botão",
-CheckboxProp : "Propriedades da Caixa de Verificação",
-HiddenFieldProp : "Propriedades do Campo Escondido",
-RadioButtonProp : "Propriedades do Botão de Opção",
-ImageButtonProp : "Propriedades do Botão de imagens",
-TextFieldProp : "Propriedades do Campo de Texto",
-SelectionFieldProp : "Propriedades da Caixa de Combinação",
-TextareaProp : "Propriedades da Ãrea de Texto",
-FormProp : "Propriedades do Formulário",
-
-FontFormats : "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6",
-
-// Alerts and Messages
-ProcessingXHTML : "A Processar XHTML. Por favor, espere...",
-Done : "Concluído",
-PasteWordConfirm : "O texto que deseja parece ter sido copiado do Word. Deseja limpar a formatação antes de colar?",
-NotCompatiblePaste : "Este comando só está disponível para Internet Explorer versão 5.5 ou superior. Deseja colar sem limpar a formatação?",
-UnknownToolbarItem : "Item de barra desconhecido \"%1\"",
-UnknownCommand : "Nome de comando desconhecido \"%1\"",
-NotImplemented : "Comando não implementado",
-UnknownToolbarSet : "Nome de barra \"%1\" não definido",
-NoActiveX : "As definições de segurança do navegador podem limitar algumas potencalidades do editr. Deve activar a opção \"Executar controlos e extensões ActiveX\". Pode ocorrer erros ou verificar que faltam potencialidades.",
-BrowseServerBlocked : "Não foi possível abrir o navegador de recursos. Certifique-se que todos os bloqueadores de popup estão desactivados.",
-DialogBlocked : "Não foi possível abrir a janela de diálogo. Certifique-se que todos os bloqueadores de popup estão desactivados.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Cancelar",
-DlgBtnClose : "Fechar",
-DlgBtnBrowseServer : "Navegar no Servidor",
-DlgAdvancedTag : "Avançado",
-DlgOpOther : "<Outro>",
-DlgInfoTab : "Informação",
-DlgAlertUrl : "Por favor introduza o URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<Não definido>",
-DlgGenId : "Id",
-DlgGenLangDir : "Orientação de idioma",
-DlgGenLangDirLtr : "Esquerda à Direita (LTR)",
-DlgGenLangDirRtl : "Direita a Esquerda (RTL)",
-DlgGenLangCode : "Código de Idioma",
-DlgGenAccessKey : "Chave de Acesso",
-DlgGenName : "Nome",
-DlgGenTabIndex : "Ãndice de Tubulação",
-DlgGenLongDescr : "Descrição Completa do URL",
-DlgGenClass : "Classes de Estilo de Folhas Classes",
-DlgGenTitle : "Título",
-DlgGenContType : "Tipo de Conteúdo",
-DlgGenLinkCharset : "Fonte de caracteres vinculado",
-DlgGenStyle : "Estilo",
-
-// Image Dialog
-DlgImgTitle : "Propriedades da Imagem",
-DlgImgInfoTab : "Informação da Imagem",
-DlgImgBtnUpload : "Enviar para o Servidor",
-DlgImgURL : "URL",
-DlgImgUpload : "Carregar",
-DlgImgAlt : "Texto Alternativo",
-DlgImgWidth : "Largura",
-DlgImgHeight : "Altura",
-DlgImgLockRatio : "Proporcional",
-DlgBtnResetSize : "Tamanho Original",
-DlgImgBorder : "Limite",
-DlgImgHSpace : "Esp.Horiz",
-DlgImgVSpace : "Esp.Vert",
-DlgImgAlign : "Alinhamento",
-DlgImgAlignLeft : "Esquerda",
-DlgImgAlignAbsBottom: "Abs inferior",
-DlgImgAlignAbsMiddle: "Abs centro",
-DlgImgAlignBaseline : "Linha de base",
-DlgImgAlignBottom : "Fundo",
-DlgImgAlignMiddle : "Centro",
-DlgImgAlignRight : "Direita",
-DlgImgAlignTextTop : "Topo do texto",
-DlgImgAlignTop : "Topo",
-DlgImgPreview : "Pré-visualizar",
-DlgImgAlertUrl : "Por favor introduza o URL da imagem",
-DlgImgLinkTab : "Hiperligação",
-
-// Flash Dialog
-DlgFlashTitle : "Propriedades do Flash",
-DlgFlashChkPlay : "Reproduzir automaticamente",
-DlgFlashChkLoop : "Loop",
-DlgFlashChkMenu : "Permitir Menu do Flash",
-DlgFlashScale : "Escala",
-DlgFlashScaleAll : "Mostrar tudo",
-DlgFlashScaleNoBorder : "Sem Limites",
-DlgFlashScaleFit : "Tamanho Exacto",
-
-// Link Dialog
-DlgLnkWindowTitle : "Hiperligação",
-DlgLnkInfoTab : "Informação de Hiperligação",
-DlgLnkTargetTab : "Destino",
-
-DlgLnkType : "Tipo de Hiperligação",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Referência a esta página",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocolo",
-DlgLnkProtoOther : "<outro>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Seleccionar una referência",
-DlgLnkAnchorByName : "Por Nome de Referência",
-DlgLnkAnchorById : "Por ID de elemento",
-DlgLnkNoAnchors : "(Não há referências disponíveis no documento)",
-DlgLnkEMail : "Endereço de E-Mail",
-DlgLnkEMailSubject : "Título de Mensagem",
-DlgLnkEMailBody : "Corpo da Mensagem",
-DlgLnkUpload : "Carregar",
-DlgLnkBtnUpload : "Enviar ao Servidor",
-
-DlgLnkTarget : "Destino",
-DlgLnkTargetFrame : "<Frame>",
-DlgLnkTargetPopup : "<Janela de popup>",
-DlgLnkTargetBlank : "Nova Janela(_blank)",
-DlgLnkTargetParent : "Janela Pai (_parent)",
-DlgLnkTargetSelf : "Mesma janela (_self)",
-DlgLnkTargetTop : "Janela primaria (_top)",
-DlgLnkTargetFrameName : "Nome do Frame Destino",
-DlgLnkPopWinName : "Nome da Janela de Popup",
-DlgLnkPopWinFeat : "Características de Janela de Popup",
-DlgLnkPopResize : "Ajustável",
-DlgLnkPopLocation : "Barra de localização",
-DlgLnkPopMenu : "Barra de Menu",
-DlgLnkPopScroll : "Barras de deslocamento",
-DlgLnkPopStatus : "Barra de Estado",
-DlgLnkPopToolbar : "Barra de Ferramentas",
-DlgLnkPopFullScrn : "Janela Completa (IE)",
-DlgLnkPopDependent : "Dependente (Netscape)",
-DlgLnkPopWidth : "Largura",
-DlgLnkPopHeight : "Altura",
-DlgLnkPopLeft : "Posição Esquerda",
-DlgLnkPopTop : "Posição Direita",
-
-DlnLnkMsgNoUrl : "Por favor introduza a hiperligação URL",
-DlnLnkMsgNoEMail : "Por favor introduza o endereço de e-mail",
-DlnLnkMsgNoAnchor : "Por favor seleccione uma referência",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Seleccionar Cor",
-DlgColorBtnClear : "Nenhuma",
-DlgColorHighlight : "Destacado",
-DlgColorSelected : "Seleccionado",
-
-// Smiley Dialog
-DlgSmileyTitle : "Inserir um Emoticon",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Seleccione um caracter especial",
-
-// Table Dialog
-DlgTableTitle : "Propriedades da Tabela",
-DlgTableRows : "Linhas",
-DlgTableColumns : "Colunas",
-DlgTableBorder : "Tamanho do Limite",
-DlgTableAlign : "Alinhamento",
-DlgTableAlignNotSet : "<Não definido>",
-DlgTableAlignLeft : "Esquerda",
-DlgTableAlignCenter : "Centrado",
-DlgTableAlignRight : "Direita",
-DlgTableWidth : "Largura",
-DlgTableWidthPx : "pixeis",
-DlgTableWidthPc : "percentagem",
-DlgTableHeight : "Altura",
-DlgTableCellSpace : "Esp. e/células",
-DlgTableCellPad : "Esp. interior",
-DlgTableCaption : "Título",
-DlgTableSummary : "Sumário",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Propriedades da Célula",
-DlgCellWidth : "Largura",
-DlgCellWidthPx : "pixeis",
-DlgCellWidthPc : "percentagem",
-DlgCellHeight : "Altura",
-DlgCellWordWrap : "Moldar Texto",
-DlgCellWordWrapNotSet : "<Não definido>",
-DlgCellWordWrapYes : "Sim",
-DlgCellWordWrapNo : "Não",
-DlgCellHorAlign : "Alinhamento Horizontal",
-DlgCellHorAlignNotSet : "<Não definido>",
-DlgCellHorAlignLeft : "Esquerda",
-DlgCellHorAlignCenter : "Centrado",
-DlgCellHorAlignRight: "Direita",
-DlgCellVerAlign : "Alinhamento Vertical",
-DlgCellVerAlignNotSet : "<Não definido>",
-DlgCellVerAlignTop : "Topo",
-DlgCellVerAlignMiddle : "Médio",
-DlgCellVerAlignBottom : "Fundi",
-DlgCellVerAlignBaseline : "Linha de Base",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Unir Linhas",
-DlgCellCollSpan : "Unir Colunas",
-DlgCellBackColor : "Cor do Fundo",
-DlgCellBorderColor : "Cor do Limite",
-DlgCellBtnSelect : "Seleccione...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Procurar",
-DlgFindFindBtn : "Procurar",
-DlgFindNotFoundMsg : "O texto especificado não foi encontrado.",
-
-// Replace Dialog
-DlgReplaceTitle : "Substituir",
-DlgReplaceFindLbl : "Texto a Procurar:",
-DlgReplaceReplaceLbl : "Substituir por:",
-DlgReplaceCaseChk : "Maiúsculas/Minúsculas",
-DlgReplaceReplaceBtn : "Substituir",
-DlgReplaceReplAllBtn : "Substituir Tudo",
-DlgReplaceWordChk : "Coincidir com toda a palavra",
-
-// Paste Operations / Dialog
-PasteErrorCut : "A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl+X).",
-PasteErrorCopy : "A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).",
-
-PasteAsText : "Colar como Texto Simples",
-PasteFromWord : "Colar do Word",
-
-DlgPasteMsg2 : "Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl+V</STRONG>) e prima <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignorar da definições do Tipo de Letra ",
-DlgPasteRemoveStyles : "Remover as definições de Estilos",
-
-// Color Picker
-ColorAutomatic : "Automático",
-ColorMoreColors : "Mais Cores...",
-
-// Document Properties
-DocProps : "Propriedades do Documento",
-
-// Anchor Dialog
-DlgAnchorTitle : "Propriedades da Âncora",
-DlgAnchorName : "Nome da Âncora",
-DlgAnchorErrorName : "Por favor, introduza o nome da âncora",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Não está num directório",
-DlgSpellChangeTo : "Mudar para",
-DlgSpellBtnIgnore : "Ignorar",
-DlgSpellBtnIgnoreAll : "Ignorar Tudo",
-DlgSpellBtnReplace : "Substituir",
-DlgSpellBtnReplaceAll : "Substituir Tudo",
-DlgSpellBtnUndo : "Anular",
-DlgSpellNoSuggestions : "- Sem sugestões -",
-DlgSpellProgress : "Verificação ortográfica em progresso…",
-DlgSpellNoMispell : "Verificação ortográfica completa: não foram encontrados erros",
-DlgSpellNoChanges : "Verificação ortográfica completa: não houve alteração de palavras",
-DlgSpellOneChange : "Verificação ortográfica completa: uma palavra alterada",
-DlgSpellManyChanges : "Verificação ortográfica completa: %1 palavras alteradas",
-
-IeSpellDownload : " Verificação ortográfica não instalada. Quer descarregar agora?",
-
-// Button Dialog
-DlgButtonText : "Texto (Valor)",
-DlgButtonType : "Tipo",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nome",
-DlgCheckboxValue : "Valor",
-DlgCheckboxSelected : "Seleccionado",
-
-// Form Dialog
-DlgFormName : "Nome",
-DlgFormAction : "Acção",
-DlgFormMethod : "Método",
-
-// Select Field Dialog
-DlgSelectName : "Nome",
-DlgSelectValue : "Valor",
-DlgSelectSize : "Tamanho",
-DlgSelectLines : "linhas",
-DlgSelectChkMulti : "Permitir selecções múltiplas",
-DlgSelectOpAvail : "Opções Possíveis",
-DlgSelectOpText : "Texto",
-DlgSelectOpValue : "Valor",
-DlgSelectBtnAdd : "Adicionar",
-DlgSelectBtnModify : "Modificar",
-DlgSelectBtnUp : "Para cima",
-DlgSelectBtnDown : "Para baixo",
-DlgSelectBtnSetValue : "Definir um valor por defeito",
-DlgSelectBtnDelete : "Apagar",
-
-// Textarea Dialog
-DlgTextareaName : "Nome",
-DlgTextareaCols : "Colunas",
-DlgTextareaRows : "Linhas",
-
-// Text Field Dialog
-DlgTextName : "Nome",
-DlgTextValue : "Valor",
-DlgTextCharWidth : "Tamanho do caracter",
-DlgTextMaxChars : "Nr. Máximo de Caracteres",
-DlgTextType : "Tipo",
-DlgTextTypeText : "Texto",
-DlgTextTypePass : "Palavra-chave",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nome",
-DlgHiddenValue : "Valor",
-
-// Bulleted List Dialog
-BulletedListProp : "Propriedades da Marca",
-NumberedListProp : "Propriedades da Numeração",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Tipo",
-DlgLstTypeCircle : "Circulo",
-DlgLstTypeDisc : "Disco",
-DlgLstTypeSquare : "Quadrado",
-DlgLstTypeNumbers : "Números (1, 2, 3)",
-DlgLstTypeLCase : "Letras Minúsculas (a, b, c)",
-DlgLstTypeUCase : "Letras Maiúsculas (A, B, C)",
-DlgLstTypeSRoman : "Numeração Romana em Minúsculas (i, ii, iii)",
-DlgLstTypeLRoman : "Numeração Romana em Maiúsculas (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Geral",
-DlgDocBackTab : "Fundo",
-DlgDocColorsTab : "Cores e Margens",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Título da Página",
-DlgDocLangDir : "Orientação de idioma",
-DlgDocLangDirLTR : "Esquerda à Direita (LTR)",
-DlgDocLangDirRTL : "Direita à Esquerda (RTL)",
-DlgDocLangCode : "Código de Idioma",
-DlgDocCharSet : "Codificação de Caracteres",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Outra Codificação de Caracteres",
-
-DlgDocDocType : "Tipo de Cabeçalho do Documento",
-DlgDocDocTypeOther : "Outro Tipo de Cabeçalho do Documento",
-DlgDocIncXHTML : "Incluir Declarações XHTML",
-DlgDocBgColor : "Cor de Fundo",
-DlgDocBgImage : "Caminho para a Imagem de Fundo",
-DlgDocBgNoScroll : "Fundo Fixo",
-DlgDocCText : "Texto",
-DlgDocCLink : "Hiperligação",
-DlgDocCVisited : "Hiperligação Visitada",
-DlgDocCActive : "Hiperligação Activa",
-DlgDocMargins : "Margem das Páginas",
-DlgDocMaTop : "Topo",
-DlgDocMaLeft : "Esquerda",
-DlgDocMaRight : "Direita",
-DlgDocMaBottom : "Fundo",
-DlgDocMeIndex : "Palavras de Indexação do Documento (separadas por virgula)",
-DlgDocMeDescr : "Descrição do Documento",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Direitos de Autor",
-DlgDocPreview : "Pré-visualizar",
-
-// Templates Dialog
-Templates : "Modelos",
-DlgTemplatesTitle : "Modelo de Conteúdo",
-DlgTemplatesSelMsg : "Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):",
-DlgTemplatesLoading : "A carregar a lista de modelos. Aguarde por favor...",
-DlgTemplatesNoTpl : "(Sem modelos definidos)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "Acerca",
-DlgAboutBrowserInfoTab : "Informação do Nevegador",
-DlgAboutLicenseTab : "Licença",
-DlgAboutVersion : "versão",
-DlgAboutInfo : "Para mais informações por favor dirija-se a",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ro.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ro.js
deleted file mode 100644
index 9cd31ba38..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ro.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Romanian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Ascunde bara cu opţiuni",
-ToolbarExpand : "Expandează bara cu opţiuni",
-
-// Toolbar Items and Context Menu
-Save : "Salvează",
-NewPage : "Pagină nouă",
-Preview : "Previzualizare",
-Cut : "Taie",
-Copy : "Copiază",
-Paste : "Adaugă",
-PasteText : "Adaugă ca text simplu",
-PasteWord : "Adaugă din Word",
-Print : "Printează",
-SelectAll : "Selectează tot",
-RemoveFormat : "Înlătură formatarea",
-InsertLinkLbl : "Link (Legătură web)",
-InsertLink : "Inserează/Editează link (legătură web)",
-RemoveLink : "Înlătură link (legătură web)",
-VisitLink : "Open Link", //MISSING
-Anchor : "Inserează/Editează ancoră",
-AnchorDelete : "Şterge ancoră",
-InsertImageLbl : "Imagine",
-InsertImage : "Inserează/Editează imagine",
-InsertFlashLbl : "Flash",
-InsertFlash : "Inserează/Editează flash",
-InsertTableLbl : "Tabel",
-InsertTable : "Inserează/Editează tabel",
-InsertLineLbl : "Linie",
-InsertLine : "Inserează linie orizontă",
-InsertSpecialCharLbl: "Caracter special",
-InsertSpecialChar : "Inserează caracter special",
-InsertSmileyLbl : "Figură expresivă (Emoticon)",
-InsertSmiley : "Inserează Figură expresivă (Emoticon)",
-About : "Despre FCKeditor",
-Bold : "ÃŽngroÅŸat (bold)",
-Italic : "ÃŽnclinat (italic)",
-Underline : "Subliniat (underline)",
-StrikeThrough : "Tăiat (strike through)",
-Subscript : "Indice (subscript)",
-Superscript : "Putere (superscript)",
-LeftJustify : "Aliniere la stânga",
-CenterJustify : "Aliniere centrală",
-RightJustify : "Aliniere la dreapta",
-BlockJustify : "Aliniere în bloc (Block Justify)",
-DecreaseIndent : "Scade indentarea",
-IncreaseIndent : "CreÅŸte indentarea",
-Blockquote : "Citat",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Starea anterioară (undo)",
-Redo : "Starea ulterioară (redo)",
-NumberedListLbl : "Listă numerotată",
-NumberedList : "Inserează/Şterge listă numerotată",
-BulletedListLbl : "Listă cu puncte",
-BulletedList : "Inserează/Şterge listă cu puncte",
-ShowTableBorders : "Arată marginile tabelului",
-ShowDetails : "Arată detalii",
-Style : "Stil",
-FontFormat : "Formatare",
-Font : "Font",
-FontSize : "Mărime",
-TextColor : "Culoarea textului",
-BGColor : "Coloarea fundalului",
-Source : "Sursa",
-Find : "Găseşte",
-Replace : "ÃŽnlocuieÅŸte",
-SpellCheck : "Verifică text",
-UniversalKeyboard : "Tastatură universală",
-PageBreakLbl : "Separator de pagină (Page Break)",
-PageBreak : "Inserează separator de pagină (Page Break)",
-
-Form : "Formular (Form)",
-Checkbox : "Bifă (Checkbox)",
-RadioButton : "Buton radio (RadioButton)",
-TextField : "Câmp text (TextField)",
-Textarea : "Suprafaţă text (Textarea)",
-HiddenField : "Câmp ascuns (HiddenField)",
-Button : "Buton",
-SelectionField : "Câmp selecţie (SelectionField)",
-ImageButton : "Buton imagine (ImageButton)",
-
-FitWindow : "Maximizează mărimea editorului",
-ShowBlocks : "Arată blocurile",
-
-// Context Menu
-EditLink : "Editează Link",
-CellCM : "Celulă",
-RowCM : "Linie",
-ColumnCM : "Coloană",
-InsertRowAfter : "Inserează linie după",
-InsertRowBefore : "Inserează linie înainte",
-DeleteRows : "Åžterge linii",
-InsertColumnAfter : "Inserează coloană după",
-InsertColumnBefore : "Inserează coloană înainte",
-DeleteColumns : "Åžterge celule",
-InsertCellAfter : "Inserează celulă după",
-InsertCellBefore : "Inserează celulă înainte",
-DeleteCells : "Åžterge celule",
-MergeCells : "UneÅŸte celule",
-MergeRight : "UneÅŸte la dreapta",
-MergeDown : "UneÅŸte jos",
-HorizontalSplitCell : "Împarte celula pe orizontală",
-VerticalSplitCell : "Împarte celula pe verticală",
-TableDelete : "Åžterge tabel",
-CellProperties : "Proprietăţile celulei",
-TableProperties : "Proprietăţile tabelului",
-ImageProperties : "Proprietăţile imaginii",
-FlashProperties : "Proprietăţile flash-ului",
-
-AnchorProp : "Proprietăţi ancoră",
-ButtonProp : "Proprietăţi buton",
-CheckboxProp : "Proprietăţi bifă (Checkbox)",
-HiddenFieldProp : "Proprietăţi câmp ascuns (Hidden Field)",
-RadioButtonProp : "Proprietăţi buton radio (Radio Button)",
-ImageButtonProp : "Proprietăţi buton imagine (Image Button)",
-TextFieldProp : "Proprietăţi câmp text (Text Field)",
-SelectionFieldProp : "Proprietăţi câmp selecţie (Selection Field)",
-TextareaProp : "Proprietăţi suprafaţă text (Textarea)",
-FormProp : "Proprietăţi formular (Form)",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //MISSING
-
-// Alerts and Messages
-ProcessingXHTML : "Procesăm XHTML. Vă rugăm aşteptaţi...",
-Done : "Am terminat",
-PasteWordConfirm : "Textul pe care doriţi să-l adăugaţi pare a fi formatat pentru Word. Doriţi să-l curăţaţi de această formatare înainte de a-l adăuga?",
-NotCompatiblePaste : "Această facilitate e disponibilă doar pentru Microsoft Internet Explorer, versiunea 5.5 sau ulterioară. Vreţi să-l adăugaţi fără a-i fi înlăturat formatarea?",
-UnknownToolbarItem : "Obiectul \"%1\" din bara cu opţiuni necunoscut",
-UnknownCommand : "Comanda \"%1\" necunoscută",
-NotImplemented : "Comandă neimplementată",
-UnknownToolbarSet : "Grupul din bara cu opţiuni \"%1\" nu există",
-NoActiveX : "Setările de securitate ale programului dvs. cu care navigaţi pe internet (browser) pot limita anumite funcţionalităţi ale editorului. Pentru a evita asta, trebuie să activaţi opţiunea \"Run ActiveX controls and plug-ins\". Poate veţi întâlni erori sau veţi observa funcţionalităţi lipsă.",
-BrowseServerBlocked : "The resources browser could not be opened. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
-DialogBlocked : "Nu a fost posibilă deschiderea unei ferestre de dialog. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "Bine",
-DlgBtnCancel : "Anulare",
-DlgBtnClose : "ÃŽnchidere",
-DlgBtnBrowseServer : "Răsfoieşte server",
-DlgAdvancedTag : "Avansat",
-DlgOpOther : "<Altul>",
-DlgInfoTab : "Informaţii",
-DlgAlertUrl : "Vă rugăm să scrieţi URL-ul",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nesetat>",
-DlgGenId : "Id",
-DlgGenLangDir : "Direcţia cuvintelor",
-DlgGenLangDirLtr : "stânga-dreapta (LTR)",
-DlgGenLangDirRtl : "dreapta-stânga (RTL)",
-DlgGenLangCode : "Codul limbii",
-DlgGenAccessKey : "Tasta de acces",
-DlgGenName : "Nume",
-DlgGenTabIndex : "Indexul tabului",
-DlgGenLongDescr : "Descrierea lungă URL",
-DlgGenClass : "Clasele cu stilul paginii (CSS)",
-DlgGenTitle : "Titlul consultativ",
-DlgGenContType : "Tipul consultativ al titlului",
-DlgGenLinkCharset : "Setul de caractere al resursei legate",
-DlgGenStyle : "Stil",
-
-// Image Dialog
-DlgImgTitle : "Proprietăţile imaginii",
-DlgImgInfoTab : "Informaţii despre imagine",
-DlgImgBtnUpload : "Trimite la server",
-DlgImgURL : "URL",
-DlgImgUpload : "Încarcă",
-DlgImgAlt : "Text alternativ",
-DlgImgWidth : "Lăţime",
-DlgImgHeight : "Înălţime",
-DlgImgLockRatio : "Păstrează proporţiile",
-DlgBtnResetSize : "Resetează mărimea",
-DlgImgBorder : "Margine",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Aliniere",
-DlgImgAlignLeft : "Stânga",
-DlgImgAlignAbsBottom: "Jos absolut (Abs Bottom)",
-DlgImgAlignAbsMiddle: "Mijloc absolut (Abs Middle)",
-DlgImgAlignBaseline : "Linia de jos (Baseline)",
-DlgImgAlignBottom : "Jos",
-DlgImgAlignMiddle : "Mijloc",
-DlgImgAlignRight : "Dreapta",
-DlgImgAlignTextTop : "Text sus",
-DlgImgAlignTop : "Sus",
-DlgImgPreview : "Previzualizare",
-DlgImgAlertUrl : "Vă rugăm să scrieţi URL-ul imaginii",
-DlgImgLinkTab : "Link (Legătură web)",
-
-// Flash Dialog
-DlgFlashTitle : "Proprietăţile flash-ului",
-DlgFlashChkPlay : "Rulează automat",
-DlgFlashChkLoop : "Repetă (Loop)",
-DlgFlashChkMenu : "Activează meniul flash",
-DlgFlashScale : "Scală",
-DlgFlashScaleAll : "Arată tot",
-DlgFlashScaleNoBorder : "Fără margini (No border)",
-DlgFlashScaleFit : "PotriveÅŸte",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link (Legătură web)",
-DlgLnkInfoTab : "Informaţii despre link (Legătură web)",
-DlgLnkTargetTab : "Ţintă (Target)",
-
-DlgLnkType : "Tipul link-ului (al legăturii web)",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ancoră în această pagină",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protocol",
-DlgLnkProtoOther : "<altul>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Selectaţi o ancoră",
-DlgLnkAnchorByName : "după numele ancorei",
-DlgLnkAnchorById : "după Id-ul elementului",
-DlgLnkNoAnchors : "(Nicio ancoră disponibilă în document)",
-DlgLnkEMail : "Adresă de e-mail",
-DlgLnkEMailSubject : "Subiectul mesajului",
-DlgLnkEMailBody : "Conţinutul mesajului",
-DlgLnkUpload : "Încarcă",
-DlgLnkBtnUpload : "Trimite la server",
-
-DlgLnkTarget : "Ţintă (Target)",
-DlgLnkTargetFrame : "<frame>",
-DlgLnkTargetPopup : "<fereastra popup>",
-DlgLnkTargetBlank : "Fereastră nouă (_blank)",
-DlgLnkTargetParent : "Fereastra părinte (_parent)",
-DlgLnkTargetSelf : "Aceeaşi fereastră (_self)",
-DlgLnkTargetTop : "Fereastra din topul ierarhiei (_top)",
-DlgLnkTargetFrameName : "Numele frame-ului ţintă",
-DlgLnkPopWinName : "Numele ferestrei popup",
-DlgLnkPopWinFeat : "Proprietăţile ferestrei popup",
-DlgLnkPopResize : "Scalabilă",
-DlgLnkPopLocation : "Bara de locaţie",
-DlgLnkPopMenu : "Bara de meniu",
-DlgLnkPopScroll : "Scroll Bars",
-DlgLnkPopStatus : "Bara de status",
-DlgLnkPopToolbar : "Bara de opţiuni",
-DlgLnkPopFullScrn : "Tot ecranul (Full Screen)(IE)",
-DlgLnkPopDependent : "Dependent (Netscape)",
-DlgLnkPopWidth : "Lăţime",
-DlgLnkPopHeight : "Înălţime",
-DlgLnkPopLeft : "Poziţia la stânga",
-DlgLnkPopTop : "Poziţia la dreapta",
-
-DlnLnkMsgNoUrl : "Vă rugăm să scrieţi URL-ul",
-DlnLnkMsgNoEMail : "Vă rugăm să scrieţi adresa de e-mail",
-DlnLnkMsgNoAnchor : "Vă rugăm să selectaţi o ancoră",
-DlnLnkMsgInvPopName : "Numele 'popup'-ului trebuie să înceapă cu un caracter alfabetic şi trebuie să nu conţină spaţii",
-
-// Color Dialog
-DlgColorTitle : "Selectează culoare",
-DlgColorBtnClear : "Curăţă",
-DlgColorHighlight : "Subliniază (Highlight)",
-DlgColorSelected : "Selectat",
-
-// Smiley Dialog
-DlgSmileyTitle : "Inserează o figură expresivă (Emoticon)",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Selectează caracter special",
-
-// Table Dialog
-DlgTableTitle : "Proprietăţile tabelului",
-DlgTableRows : "Linii",
-DlgTableColumns : "Coloane",
-DlgTableBorder : "Mărimea marginii",
-DlgTableAlign : "Aliniament",
-DlgTableAlignNotSet : "<Nesetat>",
-DlgTableAlignLeft : "Stânga",
-DlgTableAlignCenter : "Centru",
-DlgTableAlignRight : "Dreapta",
-DlgTableWidth : "Lăţime",
-DlgTableWidthPx : "pixeli",
-DlgTableWidthPc : "procente",
-DlgTableHeight : "Înălţime",
-DlgTableCellSpace : "Spaţiu între celule",
-DlgTableCellPad : "Spaţiu în cadrul celulei",
-DlgTableCaption : "Titlu (Caption)",
-DlgTableSummary : "Rezumat",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Proprietăţile celulei",
-DlgCellWidth : "Lăţime",
-DlgCellWidthPx : "pixeli",
-DlgCellWidthPc : "procente",
-DlgCellHeight : "Înălţime",
-DlgCellWordWrap : "Desparte cuvintele (Wrap)",
-DlgCellWordWrapNotSet : "<Nesetat>",
-DlgCellWordWrapYes : "Da",
-DlgCellWordWrapNo : "Nu",
-DlgCellHorAlign : "Aliniament orizontal",
-DlgCellHorAlignNotSet : "<Nesetat>",
-DlgCellHorAlignLeft : "Stânga",
-DlgCellHorAlignCenter : "Centru",
-DlgCellHorAlignRight: "Dreapta",
-DlgCellVerAlign : "Aliniament vertical",
-DlgCellVerAlignNotSet : "<Nesetat>",
-DlgCellVerAlignTop : "Sus",
-DlgCellVerAlignMiddle : "Mijloc",
-DlgCellVerAlignBottom : "Jos",
-DlgCellVerAlignBaseline : "Linia de jos (Baseline)",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Lungimea în linii (Span)",
-DlgCellCollSpan : "Lungimea în coloane (Span)",
-DlgCellBackColor : "Culoarea fundalului",
-DlgCellBorderColor : "Culoarea marginii",
-DlgCellBtnSelect : "Selectaţi...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Găseşte şi înlocuieşte",
-
-// Find Dialog
-DlgFindTitle : "Găseşte",
-DlgFindFindBtn : "Găseşte",
-DlgFindNotFoundMsg : "Textul specificat nu a fost găsit.",
-
-// Replace Dialog
-DlgReplaceTitle : "Replace",
-DlgReplaceFindLbl : "Găseşte:",
-DlgReplaceReplaceLbl : "ÃŽnlocuieÅŸte cu:",
-DlgReplaceCaseChk : "DeosebeÅŸte majuscule de minuscule (Match case)",
-DlgReplaceReplaceBtn : "ÃŽnlocuieÅŸte",
-DlgReplaceReplAllBtn : "ÃŽnlocuieÅŸte tot",
-DlgReplaceWordChk : "Doar cuvintele întregi",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl+X).",
-PasteErrorCopy : "Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl+C).",
-
-PasteAsText : "Adaugă ca text simplu (Plain Text)",
-PasteFromWord : "Adaugă din Word",
-
-DlgPasteMsg2 : "Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.",
-DlgPasteSec : "Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.",
-DlgPasteIgnoreFont : "Ignoră definiţiile Font Face",
-DlgPasteRemoveStyles : "Şterge definiţiile stilurilor",
-
-// Color Picker
-ColorAutomatic : "Automatic",
-ColorMoreColors : "Mai multe culori...",
-
-// Document Properties
-DocProps : "Proprietăţile documentului",
-
-// Anchor Dialog
-DlgAnchorTitle : "Proprietăţile ancorei",
-DlgAnchorName : "Numele ancorei",
-DlgAnchorErrorName : "Vă rugăm scrieţi numele ancorei",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nu e în dicţionar",
-DlgSpellChangeTo : "Schimbă în",
-DlgSpellBtnIgnore : "Ignoră",
-DlgSpellBtnIgnoreAll : "Ignoră toate",
-DlgSpellBtnReplace : "ÃŽnlocuieÅŸte",
-DlgSpellBtnReplaceAll : "ÃŽnlocuieÅŸte tot",
-DlgSpellBtnUndo : "Starea anterioară (undo)",
-DlgSpellNoSuggestions : "- Fără sugestii -",
-DlgSpellProgress : "Verificarea textului în desfăşurare...",
-DlgSpellNoMispell : "Verificarea textului terminată: Nicio greşeală găsită",
-DlgSpellNoChanges : "Verificarea textului terminată: Niciun cuvânt modificat",
-DlgSpellOneChange : "Verificarea textului terminată: Un cuvânt modificat",
-DlgSpellManyChanges : "Verificarea textului terminată: 1% cuvinte modificate",
-
-IeSpellDownload : "Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?",
-
-// Button Dialog
-DlgButtonText : "Text (Valoare)",
-DlgButtonType : "Tip",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Nume",
-DlgCheckboxValue : "Valoare",
-DlgCheckboxSelected : "Selectat",
-
-// Form Dialog
-DlgFormName : "Nume",
-DlgFormAction : "Acţiune",
-DlgFormMethod : "Metodă",
-
-// Select Field Dialog
-DlgSelectName : "Nume",
-DlgSelectValue : "Valoare",
-DlgSelectSize : "Mărime",
-DlgSelectLines : "linii",
-DlgSelectChkMulti : "Permite selecţii multiple",
-DlgSelectOpAvail : "Opţiuni disponibile",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Valoare",
-DlgSelectBtnAdd : "Adaugă",
-DlgSelectBtnModify : "Modifică",
-DlgSelectBtnUp : "Sus",
-DlgSelectBtnDown : "Jos",
-DlgSelectBtnSetValue : "Setează ca valoare selectată",
-DlgSelectBtnDelete : "Åžterge",
-
-// Textarea Dialog
-DlgTextareaName : "Nume",
-DlgTextareaCols : "Coloane",
-DlgTextareaRows : "Linii",
-
-// Text Field Dialog
-DlgTextName : "Nume",
-DlgTextValue : "Valoare",
-DlgTextCharWidth : "Lărgimea caracterului",
-DlgTextMaxChars : "Caractere maxime",
-DlgTextType : "Tip",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Parolă",
-
-// Hidden Field Dialog
-DlgHiddenName : "Nume",
-DlgHiddenValue : "Valoare",
-
-// Bulleted List Dialog
-BulletedListProp : "Proprietăţile listei punctate (Bulleted List)",
-NumberedListProp : "Proprietăţile listei numerotate (Numbered List)",
-DlgLstStart : "Start",
-DlgLstType : "Tip",
-DlgLstTypeCircle : "Cerc",
-DlgLstTypeDisc : "Disc",
-DlgLstTypeSquare : "Pătrat",
-DlgLstTypeNumbers : "Numere (1, 2, 3)",
-DlgLstTypeLCase : "Minuscule-litere mici (a, b, c)",
-DlgLstTypeUCase : "Majuscule (A, B, C)",
-DlgLstTypeSRoman : "Cifre romane mici (i, ii, iii)",
-DlgLstTypeLRoman : "Cifre romane mari (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "General",
-DlgDocBackTab : "Fundal",
-DlgDocColorsTab : "Culori si margini",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Titlul paginii",
-DlgDocLangDir : "Descrierea limbii",
-DlgDocLangDirLTR : "stânga-dreapta (LTR)",
-DlgDocLangDirRTL : "dreapta-stânga (RTL)",
-DlgDocLangCode : "Codul limbii",
-DlgDocCharSet : "Encoding setului de caractere",
-DlgDocCharSetCE : "Central european",
-DlgDocCharSetCT : "Chinezesc tradiţional (Big5)",
-DlgDocCharSetCR : "Chirilic",
-DlgDocCharSetGR : "Grecesc",
-DlgDocCharSetJP : "Japonez",
-DlgDocCharSetKR : "Corean",
-DlgDocCharSetTR : "Turcesc",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Vest european",
-DlgDocCharSetOther : "Alt encoding al setului de caractere",
-
-DlgDocDocType : "Document Type Heading",
-DlgDocDocTypeOther : "Alt Document Type Heading",
-DlgDocIncXHTML : "Include declaraţii XHTML",
-DlgDocBgColor : "Culoarea fundalului (Background Color)",
-DlgDocBgImage : "URL-ul imaginii din fundal (Background Image URL)",
-DlgDocBgNoScroll : "Fundal neflotant, fix (Nonscrolling Background)",
-DlgDocCText : "Text",
-DlgDocCLink : "Link (Legătură web)",
-DlgDocCVisited : "Link (Legătură web) vizitat",
-DlgDocCActive : "Link (Legătură web) activ",
-DlgDocMargins : "Marginile paginii",
-DlgDocMaTop : "Sus",
-DlgDocMaLeft : "Stânga",
-DlgDocMaRight : "Dreapta",
-DlgDocMaBottom : "Jos",
-DlgDocMeIndex : "Cuvinte cheie după care se va indexa documentul (separate prin virgulă)",
-DlgDocMeDescr : "Descrierea documentului",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Drepturi de autor",
-DlgDocPreview : "Previzualizare",
-
-// Templates Dialog
-Templates : "Template-uri (ÅŸabloane)",
-DlgTemplatesTitle : "Template-uri (şabloane) de conţinut",
-DlgTemplatesSelMsg : "Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):",
-DlgTemplatesLoading : "Se încarcă lista cu template-uri (şabloane). Vă rugăm aşteptaţi...",
-DlgTemplatesNoTpl : "(Niciun template (ÅŸablon) definit)",
-DlgTemplatesReplace : "ÃŽnlocuieÅŸte cuprinsul actual",
-
-// About Dialog
-DlgAboutAboutTab : "Despre",
-DlgAboutBrowserInfoTab : "Informaţii browser",
-DlgAboutLicenseTab : "Licenţă",
-DlgAboutVersion : "versiune",
-DlgAboutInfo : "Pentru informaţii amănunţite, vizitaţi",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ru.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ru.js
deleted file mode 100644
index 513ebe4d6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/ru.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Russian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Свернуть панель инÑтрументов",
-ToolbarExpand : "Развернуть панель инÑтрументов",
-
-// Toolbar Items and Context Menu
-Save : "Сохранить",
-NewPage : "ÐÐ¾Ð²Ð°Ñ Ñтраница",
-Preview : "Предварительный проÑмотр",
-Cut : "Вырезать",
-Copy : "Копировать",
-Paste : "Ð’Ñтавить",
-PasteText : "Ð’Ñтавить только текÑÑ‚",
-PasteWord : "Ð’Ñтавить из Word",
-Print : "Печать",
-SelectAll : "Выделить вÑе",
-RemoveFormat : "Убрать форматирование",
-InsertLinkLbl : "СÑылка",
-InsertLink : "Ð’Ñтавить/Редактировать ÑÑылку",
-RemoveLink : "Убрать ÑÑылку",
-VisitLink : "Перейти по ÑÑылке",
-Anchor : "Ð’Ñтавить/Редактировать Ñкорь",
-AnchorDelete : "Убрать Ñкорь",
-InsertImageLbl : "Изображение",
-InsertImage : "Ð’Ñтавить/Редактировать изображение",
-InsertFlashLbl : "Flash",
-InsertFlash : "Ð’Ñтавить/Редактировать Flash",
-InsertTableLbl : "Таблица",
-InsertTable : "Ð’Ñтавить/Редактировать таблицу",
-InsertLineLbl : "ЛиниÑ",
-InsertLine : "Ð’Ñтавить горизонтальную линию",
-InsertSpecialCharLbl: "Специальный Ñимвол",
-InsertSpecialChar : "Ð’Ñтавить Ñпециальный Ñимвол",
-InsertSmileyLbl : "Смайлик",
-InsertSmiley : "Ð’Ñтавить Ñмайлик",
-About : "О FCKeditor",
-Bold : "Жирный",
-Italic : "КурÑив",
-Underline : "Подчеркнутый",
-StrikeThrough : "Зачеркнутый",
-Subscript : "ПодÑтрочный индекÑ",
-Superscript : "ÐадÑтрочный индекÑ",
-LeftJustify : "По левому краю",
-CenterJustify : "По центру",
-RightJustify : "По правому краю",
-BlockJustify : "По ширине",
-DecreaseIndent : "Уменьшить отÑтуп",
-IncreaseIndent : "Увеличить отÑтуп",
-Blockquote : "Цитата",
-CreateDiv : "Создать Div контейнер",
-EditDiv : "Редактировать Div контейнер",
-DeleteDiv : "Удалить Div контейнер",
-Undo : "Отменить",
-Redo : "Повторить",
-NumberedListLbl : "Ðумерованный ÑпиÑок",
-NumberedList : "Ð’Ñтавить/Удалить нумерованный ÑпиÑок",
-BulletedListLbl : "Маркированный ÑпиÑок",
-BulletedList : "Ð’Ñтавить/Удалить маркированный ÑпиÑок",
-ShowTableBorders : "Показать бордюры таблицы",
-ShowDetails : "Показать детали",
-Style : "Стиль",
-FontFormat : "Форматирование",
-Font : "Шрифт",
-FontSize : "Размер",
-TextColor : "Цвет текÑта",
-BGColor : "Цвет фона",
-Source : "ИÑточник",
-Find : "Ðайти",
-Replace : "Заменить",
-SpellCheck : "Проверить орфографию",
-UniversalKeyboard : "УниверÑÐ°Ð»ÑŒÐ½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð°",
-PageBreakLbl : "Разрыв Ñтраницы",
-PageBreak : "Ð’Ñтавить разрыв Ñтраницы",
-
-Form : "Форма",
-Checkbox : "Ð¤Ð»Ð°Ð³Ð¾Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°",
-RadioButton : "Кнопка выбора",
-TextField : "ТекÑтовое поле",
-Textarea : "ТекÑÑ‚Ð¾Ð²Ð°Ñ Ð¾Ð±Ð»Ð°Ñть",
-HiddenField : "Скрытое поле",
-Button : "Кнопка",
-SelectionField : "СпиÑок",
-ImageButton : "Кнопка Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼",
-
-FitWindow : "Развернуть окно редактора",
-ShowBlocks : "Показать блоки",
-
-// Context Menu
-EditLink : "Ð’Ñтавить ÑÑылку",
-CellCM : "Ячейка",
-RowCM : "Строка",
-ColumnCM : "Колонка",
-InsertRowAfter : "Ð’Ñтавить Ñтроку поÑле",
-InsertRowBefore : "Ð’Ñтавить Ñтроку до",
-DeleteRows : "Удалить Ñтроки",
-InsertColumnAfter : "Ð’Ñтавить колонку поÑле",
-InsertColumnBefore : "Ð’Ñтавить колонку до",
-DeleteColumns : "Удалить колонки",
-InsertCellAfter : "Ð’Ñтавить Ñчейку поÑле",
-InsertCellBefore : "Ð’Ñтавить Ñчейку до",
-DeleteCells : "Удалить Ñчейки",
-MergeCells : "Соединить Ñчейки",
-MergeRight : "Соединить вправо",
-MergeDown : "Соединить вниз",
-HorizontalSplitCell : "Разбить Ñчейку горизонтально",
-VerticalSplitCell : "Разбить Ñчейку вертикально",
-TableDelete : "Удалить таблицу",
-CellProperties : "СвойÑтва Ñчейки",
-TableProperties : "СвойÑтва таблицы",
-ImageProperties : "СвойÑтва изображениÑ",
-FlashProperties : "СвойÑтва Flash",
-
-AnchorProp : "СвойÑтва ÑкорÑ",
-ButtonProp : "СвойÑтва кнопки",
-CheckboxProp : "СвойÑтва флаговой кнопки",
-HiddenFieldProp : "СвойÑтва Ñкрытого полÑ",
-RadioButtonProp : "СвойÑтва кнопки выбора",
-ImageButtonProp : "СвойÑтва кнопки Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼",
-TextFieldProp : "СвойÑтва текÑтового полÑ",
-SelectionFieldProp : "СвойÑтва ÑпиÑка",
-TextareaProp : "СвойÑтва текÑтовой облаÑти",
-FormProp : "СвойÑтва формы",
-
-FontFormats : "Ðормальный;Форматированный;ÐдреÑ;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Ðормальный (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Обработка XHTML. ПожалуйÑта, подождите...",
-Done : "Сделано",
-PasteWordConfirm : "ТекÑÑ‚, который вы хотите вÑтавить, похож на копируемый из Word. Ð’Ñ‹ хотите очиÑтить его перед вÑтавкой?",
-NotCompatiblePaste : "Эта команда доÑтупна Ð´Ð»Ñ Internet Explorer верÑии 5.5 или выше. Ð’Ñ‹ хотите вÑтавить без очиÑтки?",
-UnknownToolbarItem : "Ðе извеÑтный Ñлемент панели инÑтрументов \"%1\"",
-UnknownCommand : "Ðе извеÑтное Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ \"%1\"",
-NotImplemented : "Команда не реализована",
-UnknownToolbarSet : "Панель инÑтрументов \"%1\" не ÑущеÑтвует",
-NoActiveX : "ÐаÑтройки безопаÑноÑти вашего браузера могут ограничивать некоторые ÑвойÑтва редактора. Ð’Ñ‹ должны включить опцию \"ЗапуÑкать Ñлементы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ActiveX и плугины\". Ð’Ñ‹ можете видеть ошибки и замечать отÑутÑтвие возможноÑтей.",
-BrowseServerBlocked : "РеÑурÑÑ‹ браузера не могут быть открыты. Проверьте что блокировки вÑплывающих окон выключены.",
-DialogBlocked : "Ðевозможно открыть окно диалога. Проверьте что блокировки вÑплывающих окон выключены.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "ОК",
-DlgBtnCancel : "Отмена",
-DlgBtnClose : "Закрыть",
-DlgBtnBrowseServer : "ПроÑмотреть на Ñервере",
-DlgAdvancedTag : "РаÑширенный",
-DlgOpOther : "<Другое>",
-DlgInfoTab : "ИнформациÑ",
-DlgAlertUrl : "ПожалуйÑта, вÑтавьте URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<не определено>",
-DlgGenId : "Идентификатор",
-DlgGenLangDir : "Ðаправление Ñзыка",
-DlgGenLangDirLtr : "Слева на право (LTR)",
-DlgGenLangDirRtl : "Справа на лево (RTL)",
-DlgGenLangCode : "Язык",
-DlgGenAccessKey : "ГорÑÑ‡Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ°",
-DlgGenName : "ИмÑ",
-DlgGenTabIndex : "ПоÑледовательноÑть перехода",
-DlgGenLongDescr : "Длинное опиÑание URL",
-DlgGenClass : "КлаÑÑ CSS",
-DlgGenTitle : "Заголовок",
-DlgGenContType : "Тип Ñодержимого",
-DlgGenLinkCharset : "Кодировка",
-DlgGenStyle : "Стиль CSS",
-
-// Image Dialog
-DlgImgTitle : "СвойÑтва изображениÑ",
-DlgImgInfoTab : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ изображении",
-DlgImgBtnUpload : "ПоÑлать на Ñервер",
-DlgImgURL : "URL",
-DlgImgUpload : "Закачать",
-DlgImgAlt : "Ðльтернативный текÑÑ‚",
-DlgImgWidth : "Ширина",
-DlgImgHeight : "Ð’Ñ‹Ñота",
-DlgImgLockRatio : "СохранÑть пропорции",
-DlgBtnResetSize : "СброÑить размер",
-DlgImgBorder : "Бордюр",
-DlgImgHSpace : "Горизонтальный отÑтуп",
-DlgImgVSpace : "Вертикальный отÑтуп",
-DlgImgAlign : "Выравнивание",
-DlgImgAlignLeft : "По левому краю",
-DlgImgAlignAbsBottom: "ÐÐ±Ñ Ð¿Ð¾Ð½Ð¸Ð·Ñƒ",
-DlgImgAlignAbsMiddle: "ÐÐ±Ñ Ð¿Ð¾Ñередине",
-DlgImgAlignBaseline : "По базовой линии",
-DlgImgAlignBottom : "Понизу",
-DlgImgAlignMiddle : "ПоÑередине",
-DlgImgAlignRight : "По правому краю",
-DlgImgAlignTextTop : "ТекÑÑ‚ наверху",
-DlgImgAlignTop : "По верху",
-DlgImgPreview : "Предварительный проÑмотр",
-DlgImgAlertUrl : "ПожалуйÑта, введите URL изображениÑ",
-DlgImgLinkTab : "СÑылка",
-
-// Flash Dialog
-DlgFlashTitle : "СвойÑтва Flash",
-DlgFlashChkPlay : "Ðвто проигрывание",
-DlgFlashChkLoop : "Повтор",
-DlgFlashChkMenu : "Включить меню Flash",
-DlgFlashScale : "МаÑштабировать",
-DlgFlashScaleAll : "Показывать вÑе",
-DlgFlashScaleNoBorder : "Без бордюра",
-DlgFlashScaleFit : "Точное Ñовпадение",
-
-// Link Dialog
-DlgLnkWindowTitle : "СÑылка",
-DlgLnkInfoTab : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑÑылки",
-DlgLnkTargetTab : "Цель",
-
-DlgLnkType : "Тип ÑÑылки",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Якорь на Ñту Ñтраницу",
-DlgLnkTypeEMail : "Эл. почта",
-DlgLnkProto : "Протокол",
-DlgLnkProtoOther : "<другое>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Выберите Ñкорь",
-DlgLnkAnchorByName : "По имени ÑкорÑ",
-DlgLnkAnchorById : "По идентификатору Ñлемента",
-DlgLnkNoAnchors : "(Ðет Ñкорей доÑтупных в Ñтом документе)",
-DlgLnkEMail : "ÐÐ´Ñ€ÐµÑ Ñл. почты",
-DlgLnkEMailSubject : "Заголовок ÑообщениÑ",
-DlgLnkEMailBody : "Тело ÑообщениÑ",
-DlgLnkUpload : "Закачать",
-DlgLnkBtnUpload : "ПоÑлать на Ñервер",
-
-DlgLnkTarget : "Цель",
-DlgLnkTargetFrame : "<фрейм>",
-DlgLnkTargetPopup : "<вÑплывающее окно>",
-DlgLnkTargetBlank : "Ðовое окно (_blank)",
-DlgLnkTargetParent : "РодительÑкое окно (_parent)",
-DlgLnkTargetSelf : "Тоже окно (_self)",
-DlgLnkTargetTop : "Самое верхнее окно (_top)",
-DlgLnkTargetFrameName : "Ð˜Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ фрейма",
-DlgLnkPopWinName : "Ð˜Ð¼Ñ Ð²Ñплывающего окна",
-DlgLnkPopWinFeat : "СвойÑтва вÑплывающего окна",
-DlgLnkPopResize : "ИзменÑющееÑÑ Ð² размерах",
-DlgLnkPopLocation : "Панель локации",
-DlgLnkPopMenu : "Панель меню",
-DlgLnkPopScroll : "ПолоÑÑ‹ прокрутки",
-DlgLnkPopStatus : "Строка ÑоÑтоÑниÑ",
-DlgLnkPopToolbar : "Панель инÑтрументов",
-DlgLnkPopFullScrn : "Полный Ñкран (IE)",
-DlgLnkPopDependent : "ЗавиÑимый (Netscape)",
-DlgLnkPopWidth : "Ширина",
-DlgLnkPopHeight : "Ð’Ñ‹Ñота",
-DlgLnkPopLeft : "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñлева",
-DlgLnkPopTop : "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñверху",
-
-DlnLnkMsgNoUrl : "ПожалуйÑта, введите URL ÑÑылки",
-DlnLnkMsgNoEMail : "ПожалуйÑта, введите Ð°Ð´Ñ€ÐµÑ Ñл. почты",
-DlnLnkMsgNoAnchor : "ПожалуйÑта, выберете Ñкорь",
-DlnLnkMsgInvPopName : "Ðазвание вÑпывающего окна должно начинатьÑÑ Ð±ÑƒÐºÐ²Ñ‹ и не может Ñодержать пробелов",
-
-// Color Dialog
-DlgColorTitle : "Выберите цвет",
-DlgColorBtnClear : "ОчиÑтить",
-DlgColorHighlight : "ПодÑвеченный",
-DlgColorSelected : "Выбранный",
-
-// Smiley Dialog
-DlgSmileyTitle : "Ð’Ñтавить Ñмайлик",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Выберите Ñпециальный Ñимвол",
-
-// Table Dialog
-DlgTableTitle : "СвойÑтва таблицы",
-DlgTableRows : "Строки",
-DlgTableColumns : "Колонки",
-DlgTableBorder : "Размер бордюра",
-DlgTableAlign : "Выравнивание",
-DlgTableAlignNotSet : "<Ðе уÑÑ‚.>",
-DlgTableAlignLeft : "Слева",
-DlgTableAlignCenter : "По центру",
-DlgTableAlignRight : "Справа",
-DlgTableWidth : "Ширина",
-DlgTableWidthPx : "пикÑелей",
-DlgTableWidthPc : "процентов",
-DlgTableHeight : "Ð’Ñ‹Ñота",
-DlgTableCellSpace : "Промежуток (spacing)",
-DlgTableCellPad : "ОтÑтуп (padding)",
-DlgTableCaption : "Заголовок",
-DlgTableSummary : "Резюме",
-DlgTableHeaders : "Заголовки",
-DlgTableHeadersNone : "Ðет",
-DlgTableHeadersColumn : "Первый Ñтолбец",
-DlgTableHeadersRow : "ÐŸÐµÑ€Ð²Ð°Ñ Ñтрока",
-DlgTableHeadersBoth : "Оба варианта",
-
-// Table Cell Dialog
-DlgCellTitle : "СвойÑтва Ñчейки",
-DlgCellWidth : "Ширина",
-DlgCellWidthPx : "пикÑелей",
-DlgCellWidthPc : "процентов",
-DlgCellHeight : "Ð’Ñ‹Ñота",
-DlgCellWordWrap : "Заворачивание текÑта",
-DlgCellWordWrapNotSet : "<Ðе уÑÑ‚.>",
-DlgCellWordWrapYes : "Да",
-DlgCellWordWrapNo : "Ðет",
-DlgCellHorAlign : "Гор. выравнивание",
-DlgCellHorAlignNotSet : "<Ðе уÑÑ‚.>",
-DlgCellHorAlignLeft : "Слева",
-DlgCellHorAlignCenter : "По центру",
-DlgCellHorAlignRight: "Справа",
-DlgCellVerAlign : "Верт. выравнивание",
-DlgCellVerAlignNotSet : "<Ðе уÑÑ‚.>",
-DlgCellVerAlignTop : "Сверху",
-DlgCellVerAlignMiddle : "ПоÑередине",
-DlgCellVerAlignBottom : "Снизу",
-DlgCellVerAlignBaseline : "По базовой линии",
-DlgCellType : "Тип Ñчейки",
-DlgCellTypeData : "Данные",
-DlgCellTypeHeader : "Заголовок",
-DlgCellRowSpan : "Диапазон Ñтрок (span)",
-DlgCellCollSpan : "Диапазон колонок (span)",
-DlgCellBackColor : "Цвет фона",
-DlgCellBorderColor : "Цвет бордюра",
-DlgCellBtnSelect : "Выберите...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Ðайти и заменить",
-
-// Find Dialog
-DlgFindTitle : "Ðайти",
-DlgFindFindBtn : "Ðайти",
-DlgFindNotFoundMsg : "Указанный текÑÑ‚ не найден.",
-
-// Replace Dialog
-DlgReplaceTitle : "Заменить",
-DlgReplaceFindLbl : "Ðайти:",
-DlgReplaceReplaceLbl : "Заменить на:",
-DlgReplaceCaseChk : "Учитывать региÑтр",
-DlgReplaceReplaceBtn : "Заменить",
-DlgReplaceReplAllBtn : "Заменить вÑе",
-DlgReplaceWordChk : "Совпадение целых Ñлов",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ÐаÑтройки безопаÑноÑти вашего браузера не позволÑÑŽÑ‚ редактору автоматичеÑки выполнÑть операции вырезаниÑ. ПожалуйÑта, иÑпользуйте клавиатуру Ð´Ð»Ñ Ñтого (Ctrl+X).",
-PasteErrorCopy : "ÐаÑтройки безопаÑноÑти вашего браузера не позволÑÑŽÑ‚ редактору автоматичеÑки выполнÑть операции копированиÑ. ПожалуйÑта, иÑпользуйте клавиатуру Ð´Ð»Ñ Ñтого (Ctrl+C).",
-
-PasteAsText : "Ð’Ñтавить только текÑÑ‚",
-PasteFromWord : "Ð’Ñтавить из Word",
-
-DlgPasteMsg2 : "ПожалуйÑта, вÑтавьте текÑÑ‚ в прÑмоугольник, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñочетание клавиш (<STRONG>Ctrl+V</STRONG>), и нажмите <STRONG>OK</STRONG>.",
-DlgPasteSec : "По причине наÑтроек безопаÑноÑти браузера, редактор не имеет доÑтупа к данным буфера обмена напрÑмую. Вам необходимо вÑтавить текÑÑ‚ Ñнова в Ñто окно.",
-DlgPasteIgnoreFont : "Игнорировать Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð³Ð°Ñ€Ð½Ð¸Ñ‚ÑƒÑ€Ñ‹",
-DlgPasteRemoveStyles : "Убрать Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñтилей",
-
-// Color Picker
-ColorAutomatic : "ÐвтоматичеÑкий",
-ColorMoreColors : "Цвета...",
-
-// Document Properties
-DocProps : "СвойÑтва документа",
-
-// Anchor Dialog
-DlgAnchorTitle : "СвойÑтва ÑкорÑ",
-DlgAnchorName : "Ð˜Ð¼Ñ ÑкорÑ",
-DlgAnchorErrorName : "ПожалуйÑта, введите Ð¸Ð¼Ñ ÑкорÑ",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ðет в Ñловаре",
-DlgSpellChangeTo : "Заменить на",
-DlgSpellBtnIgnore : "Игнорировать",
-DlgSpellBtnIgnoreAll : "Игнорировать вÑе",
-DlgSpellBtnReplace : "Заменить",
-DlgSpellBtnReplaceAll : "Заменить вÑе",
-DlgSpellBtnUndo : "Отменить",
-DlgSpellNoSuggestions : "- Ðет предположений -",
-DlgSpellProgress : "Идет проверка орфографии...",
-DlgSpellNoMispell : "Проверка орфографии закончена: ошибок не найдено",
-DlgSpellNoChanges : "Проверка орфографии закончена: ни одного Ñлова не изменено",
-DlgSpellOneChange : "Проверка орфографии закончена: одно Ñлово изменено",
-DlgSpellManyChanges : "Проверка орфографии закончена: 1% Ñлов изменен",
-
-IeSpellDownload : "Модуль проверки орфографии не уÑтановлен. Хотите Ñкачать его ÑейчаÑ?",
-
-// Button Dialog
-DlgButtonText : "ТекÑÑ‚ (Значение)",
-DlgButtonType : "Тип",
-DlgButtonTypeBtn : "Кнопка",
-DlgButtonTypeSbm : "Отправить",
-DlgButtonTypeRst : "СброÑить",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "ИмÑ",
-DlgCheckboxValue : "Значение",
-DlgCheckboxSelected : "ВыбраннаÑ",
-
-// Form Dialog
-DlgFormName : "ИмÑ",
-DlgFormAction : "ДейÑтвие",
-DlgFormMethod : "Метод",
-
-// Select Field Dialog
-DlgSelectName : "ИмÑ",
-DlgSelectValue : "Значение",
-DlgSelectSize : "Размер",
-DlgSelectLines : "линии",
-DlgSelectChkMulti : "Разрешить множеÑтвенный выбор",
-DlgSelectOpAvail : "ДоÑтупные варианты",
-DlgSelectOpText : "ТекÑÑ‚",
-DlgSelectOpValue : "Значение",
-DlgSelectBtnAdd : "Добавить",
-DlgSelectBtnModify : "Модифицировать",
-DlgSelectBtnUp : "Вверх",
-DlgSelectBtnDown : "Вниз",
-DlgSelectBtnSetValue : "УÑтановить как выбранное значение",
-DlgSelectBtnDelete : "Удалить",
-
-// Textarea Dialog
-DlgTextareaName : "ИмÑ",
-DlgTextareaCols : "Колонки",
-DlgTextareaRows : "Строки",
-
-// Text Field Dialog
-DlgTextName : "ИмÑ",
-DlgTextValue : "Значение",
-DlgTextCharWidth : "Ширина",
-DlgTextMaxChars : "МакÑ. кол-во Ñимволов",
-DlgTextType : "Тип",
-DlgTextTypeText : "ТекÑÑ‚",
-DlgTextTypePass : "Пароль",
-
-// Hidden Field Dialog
-DlgHiddenName : "ИмÑ",
-DlgHiddenValue : "Значение",
-
-// Bulleted List Dialog
-BulletedListProp : "СвойÑтва маркированного ÑпиÑка",
-NumberedListProp : "СвойÑтва нумерованного ÑпиÑка",
-DlgLstStart : "Ðачало",
-DlgLstType : "Тип",
-DlgLstTypeCircle : "Круг",
-DlgLstTypeDisc : "ДиÑк",
-DlgLstTypeSquare : "Квадрат",
-DlgLstTypeNumbers : "Ðомера (1, 2, 3)",
-DlgLstTypeLCase : "Буквы нижнего региÑтра (a, b, c)",
-DlgLstTypeUCase : "Буквы верхнего региÑтра (A, B, C)",
-DlgLstTypeSRoman : "Малые римÑкие буквы (i, ii, iii)",
-DlgLstTypeLRoman : "Большие римÑкие буквы (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Общие",
-DlgDocBackTab : "Задний фон",
-DlgDocColorsTab : "Цвета и отÑтупы",
-DlgDocMetaTab : "Мета данные",
-
-DlgDocPageTitle : "Заголовок Ñтраницы",
-DlgDocLangDir : "Ðаправление текÑта",
-DlgDocLangDirLTR : "Слева направо (LTR)",
-DlgDocLangDirRTL : "Справа налево (RTL)",
-DlgDocLangCode : "Код Ñзыка",
-DlgDocCharSet : "Кодировка набора Ñимволов",
-DlgDocCharSetCE : "Центрально-европейÑкаÑ",
-DlgDocCharSetCT : "КитайÑÐºÐ°Ñ Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ (Big5)",
-DlgDocCharSetCR : "Кириллица",
-DlgDocCharSetGR : "ГречеÑкаÑ",
-DlgDocCharSetJP : "ЯпонÑкаÑ",
-DlgDocCharSetKR : "КорейÑкаÑ",
-DlgDocCharSetTR : "ТурецкаÑ",
-DlgDocCharSetUN : "Юникод (UTF-8)",
-DlgDocCharSetWE : "Западно-европейÑкаÑ",
-DlgDocCharSetOther : "Ð”Ñ€ÑƒÐ³Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° набора Ñимволов",
-
-DlgDocDocType : "Заголовок типа документа",
-DlgDocDocTypeOther : "Другой заголовок типа документа",
-DlgDocIncXHTML : "Включить XHTML объÑвлениÑ",
-DlgDocBgColor : "Цвет фона",
-DlgDocBgImage : "URL Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ„Ð¾Ð½Ð°",
-DlgDocBgNoScroll : "ÐеÑкроллируемый фон",
-DlgDocCText : "ТекÑÑ‚",
-DlgDocCLink : "СÑылка",
-DlgDocCVisited : "ПоÑÐµÑ‰ÐµÐ½Ð½Ð°Ñ ÑÑылка",
-DlgDocCActive : "ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ ÑÑылка",
-DlgDocMargins : "ОтÑтупы Ñтраницы",
-DlgDocMaTop : "Верхний",
-DlgDocMaLeft : "Левый",
-DlgDocMaRight : "Правый",
-DlgDocMaBottom : "Ðижний",
-DlgDocMeIndex : "Ключевые Ñлова документа (разделенные запÑтой)",
-DlgDocMeDescr : "ОпиÑание документа",
-DlgDocMeAuthor : "Ðвтор",
-DlgDocMeCopy : "ÐвторÑкие права",
-DlgDocPreview : "Предварительный проÑмотр",
-
-// Templates Dialog
-Templates : "Шаблоны",
-DlgTemplatesTitle : "Шаблоны Ñодержимого",
-DlgTemplatesSelMsg : "ПожалуйÑта, выберете шаблон Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð² редакторе<br>(текущее Ñодержимое будет потерÑно):",
-DlgTemplatesLoading : "Загрузка ÑпиÑка шаблонов. ПожалуйÑта, подождите...",
-DlgTemplatesNoTpl : "(Ðи одного шаблона не определено)",
-DlgTemplatesReplace : "Заменить текущее Ñодержание",
-
-// About Dialog
-DlgAboutAboutTab : "О программе",
-DlgAboutBrowserInfoTab : "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°",
-DlgAboutLicenseTab : "ЛицензиÑ",
-DlgAboutVersion : "ВерÑиÑ",
-DlgAboutInfo : "Ð”Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ информации, поÑетите",
-
-// Div Dialog
-DlgDivGeneralTab : "ИнформациÑ",
-DlgDivAdvancedTab : "РаÑширенные наÑтройки",
-DlgDivStyle : "Стиль",
-DlgDivInlineStyle : "Ð’Ñтроенные Ñтили"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sk.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sk.js
deleted file mode 100644
index 9c4bfda31..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sk.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Slovak language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Skryť panel nástrojov",
-ToolbarExpand : "Zobraziť panel nástrojov",
-
-// Toolbar Items and Context Menu
-Save : "Uložiť",
-NewPage : "Nová stránka",
-Preview : "Náhľad",
-Cut : "Vystrihnúť",
-Copy : "Kopírovať",
-Paste : "Vložiť",
-PasteText : "VložiÅ¥ ako Äistý text",
-PasteWord : "Vložiť z Wordu",
-Print : "TlaÄ",
-SelectAll : "Vybrať všetko",
-RemoveFormat : "Odstrániť formátovanie",
-InsertLinkLbl : "Odkaz",
-InsertLink : "Vložiť/zmeniť odkaz",
-RemoveLink : "Odstrániť odkaz",
-VisitLink : "ÃsÅ¥ na odkaz",
-Anchor : "Vložiť/zmeniť kotvu",
-AnchorDelete : "Odstrániť kotvu",
-InsertImageLbl : "Obrázok",
-InsertImage : "Vložiť/zmeniť obrázok",
-InsertFlashLbl : "Flash",
-InsertFlash : "Vložiť/zmeniť Flash",
-InsertTableLbl : "Tabuľka",
-InsertTable : "Vložiť/zmeniť tabuľku",
-InsertLineLbl : "ÄŒiara",
-InsertLine : "VložiÅ¥ vodorovnú Äiaru",
-InsertSpecialCharLbl: "Špeciálne znaky",
-InsertSpecialChar : "Vložiť špeciálne znaky",
-InsertSmileyLbl : "Smajlíky",
-InsertSmiley : "Vložiť smajlíka",
-About : "O aplikácii FCKeditor",
-Bold : "TuÄné",
-Italic : "Kurzíva",
-Underline : "PodÄiarknuté",
-StrikeThrough : "PreÄiarknuté",
-Subscript : "Dolný index",
-Superscript : "Horný index",
-LeftJustify : "Zarovnať vľavo",
-CenterJustify : "Zarovnať na stred",
-RightJustify : "Zarovnať vpravo",
-BlockJustify : "Zarovnať do bloku",
-DecreaseIndent : "Zmenšiť odsadenie",
-IncreaseIndent : "ZväÄÅ¡iÅ¥ odsadenie",
-Blockquote : "Citácia",
-CreateDiv : "Vytvoriť Div kontajner",
-EditDiv : "Editovať Div kontajner",
-DeleteDiv : "Odstrániť Div kontajner",
-Undo : "Späť",
-Redo : "Znovu",
-NumberedListLbl : "Číslovanie",
-NumberedList : "VložiÅ¥/odstrániÅ¥ Äíslovanie",
-BulletedListLbl : "Odrážky",
-BulletedList : "Vložiť/odstraniť odrážky",
-ShowTableBorders : "Zobraziť okraje tabuliek",
-ShowDetails : "Zobraziť podrobnosti",
-Style : "Štýl",
-FontFormat : "Formát",
-Font : "Písmo",
-FontSize : "Veľkosť",
-TextColor : "Farba textu",
-BGColor : "Farba pozadia",
-Source : "Zdroj",
-Find : "Hľadať",
-Replace : "Nahradiť",
-SpellCheck : "Kontrola pravopisu",
-UniversalKeyboard : "Univerzálna klávesnica",
-PageBreakLbl : "OddeľovaÄ stránky",
-PageBreak : "VložiÅ¥ oddeľovaÄ stránky",
-
-Form : "Formulár",
-Checkbox : "ZaÅ¡krtávacie políÄko",
-RadioButton : "PrepínaÄ",
-TextField : "Textové pole",
-Textarea : "Textová oblasť",
-HiddenField : "Skryté pole",
-Button : "TlaÄidlo",
-SelectionField : "Rozbaľovací zoznam",
-ImageButton : "Obrázkové tlaÄidlo",
-
-FitWindow : "Maximalizovať veľkosť okna editora",
-ShowBlocks : "Ukázať bloky",
-
-// Context Menu
-EditLink : "Zmeniť odkaz",
-CellCM : "Bunka",
-RowCM : "Riadok",
-ColumnCM : "Stĺpec",
-InsertRowAfter : "Vložiť riadok pred",
-InsertRowBefore : "Vložiť riadok za",
-DeleteRows : "Vymazať riadok",
-InsertColumnAfter : "Vložiť stĺpec pred",
-InsertColumnBefore : "Vložiť stĺpec za",
-DeleteColumns : "Zmazať stĺpec",
-InsertCellAfter : "Vložiť bunku za",
-InsertCellBefore : "Vložiť bunku pred",
-DeleteCells : "Vymazať bunky",
-MergeCells : "ZlúÄiÅ¥ bunky",
-MergeRight : "ZlúÄiÅ¥ doprava",
-MergeDown : "ZlúÄiÅ¥ dole",
-HorizontalSplitCell : "Rozdeliť bunky horizontálne",
-VerticalSplitCell : "Rozdeliť bunky vertikálne",
-TableDelete : "Vymazať tabuľku",
-CellProperties : "Vlastnosti bunky",
-TableProperties : "Vlastnosti tabuľky",
-ImageProperties : "Vlastnosti obrázku",
-FlashProperties : "Vlastnosti Flashu",
-
-AnchorProp : "Vlastnosti kotvy",
-ButtonProp : "Vlastnosti tlaÄidla",
-CheckboxProp : "Vlastnosti zaÅ¡krtávacieho políÄka",
-HiddenFieldProp : "Vlastnosti skrytého poľa",
-RadioButtonProp : "Vlastnosti prepínaÄa",
-ImageButtonProp : "Vlastnosti obrázkového tlaÄidla",
-TextFieldProp : "Vlastnosti textového poľa",
-SelectionFieldProp : "Vlastnosti rozbaľovacieho zoznamu",
-TextareaProp : "Vlastnosti textovej oblasti",
-FormProp : "Vlastnosti formulára",
-
-FontFormats : "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Prebieha spracovanie XHTML. Čakajte prosím...",
-Done : "DokonÄené.",
-PasteWordConfirm : "Vyzerá to tak, že vkladaný text je kopírovaný z Wordu. Chcete ho pred vložením vyÄistiÅ¥?",
-NotCompatiblePaste : "Tento príkaz je dostupný len v prehliadaÄi Internet Explorer verzie 5.5 alebo vyššej. Chcete vložiÅ¥ text bez vyÄistenia?",
-UnknownToolbarItem : "Neznáma položka panela nástrojov \"%1\"",
-UnknownCommand : "Neznámy príkaz \"%1\"",
-NotImplemented : "Príkaz nie je implementovaný",
-UnknownToolbarSet : "Panel nástrojov \"%1\" neexistuje",
-NoActiveX : "BezpeÄnostné nastavenia vášho prehliadaÄa môžu obmedzovaÅ¥ niektoré funkcie editora. Pre ich plnú funkÄnosÅ¥ musíte zapnúť voľbu \"SpúšťaÅ¥ ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkÄnosÅ¥ou niektorých funkcií.",
-BrowseServerBlocked : "PrehliadaÄ zdrojových prvkov nebolo možné otvoriÅ¥. Uistite sa, že máte vypnutú službu blokovania popup okien.",
-DialogBlocked : "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnutú službu blokovania popup okien.",
-VisitLinkBlocked : "Nebolo možné otvoriť nové okno. Uistite sa, že máte vypnutú službu blokovania popup okien.",
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Zrušiť",
-DlgBtnClose : "Zavrieť",
-DlgBtnBrowseServer : "Prechádzať server",
-DlgAdvancedTag : "Rozšírené",
-DlgOpOther : "<Ďalšie>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Prosím vložte URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nenastavené>",
-DlgGenId : "Id",
-DlgGenLangDir : "Orientácia jazyka",
-DlgGenLangDirLtr : "Zľava doprava (LTR)",
-DlgGenLangDirRtl : "Sprava doľava (RTL)",
-DlgGenLangCode : "Kód jazyka",
-DlgGenAccessKey : "Prístupový kľúÄ",
-DlgGenName : "Meno",
-DlgGenTabIndex : "Poradie prvku",
-DlgGenLongDescr : "Dlhý popis URL",
-DlgGenClass : "Trieda štýlu",
-DlgGenTitle : "Pomocný titulok",
-DlgGenContType : "Pomocný typ obsahu",
-DlgGenLinkCharset : "Priradená znaková sada",
-DlgGenStyle : "Štýl",
-
-// Image Dialog
-DlgImgTitle : "Vlastnosti obrázku",
-DlgImgInfoTab : "Informácie o obrázku",
-DlgImgBtnUpload : "Odoslať na server",
-DlgImgURL : "URL",
-DlgImgUpload : "Odoslať",
-DlgImgAlt : "Alternatívny text",
-DlgImgWidth : "Šírka",
-DlgImgHeight : "Výška",
-DlgImgLockRatio : "Zámok",
-DlgBtnResetSize : "Pôvodná veľkosť",
-DlgImgBorder : "Okraje",
-DlgImgHSpace : "H-medzera",
-DlgImgVSpace : "V-medzera",
-DlgImgAlign : "Zarovnanie",
-DlgImgAlignLeft : "Vľavo",
-DlgImgAlignAbsBottom: "Úplne dole",
-DlgImgAlignAbsMiddle: "Do stredu",
-DlgImgAlignBaseline : "Na základňu",
-DlgImgAlignBottom : "Dole",
-DlgImgAlignMiddle : "Na stred",
-DlgImgAlignRight : "Vpravo",
-DlgImgAlignTextTop : "Na horný okraj textu",
-DlgImgAlignTop : "Nahor",
-DlgImgPreview : "Náhľad",
-DlgImgAlertUrl : "Zadajte prosím URL obrázku",
-DlgImgLinkTab : "Odkaz",
-
-// Flash Dialog
-DlgFlashTitle : "Vlastnosti Flashu",
-DlgFlashChkPlay : "Automatické prehrávanie",
-DlgFlashChkLoop : "Opakovanie",
-DlgFlashChkMenu : "Povoliť Flash Menu",
-DlgFlashScale : "Mierka",
-DlgFlashScaleAll : "Zobraziť mierku",
-DlgFlashScaleNoBorder : "Bez okrajov",
-DlgFlashScaleFit : "Roztiahnuť na celé",
-
-// Link Dialog
-DlgLnkWindowTitle : "Odkaz",
-DlgLnkInfoTab : "Informácie o odkaze",
-DlgLnkTargetTab : "Cieľ",
-
-DlgLnkType : "Typ odkazu",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Kotva v tejto stránke",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<iný>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Vybrať kotvu",
-DlgLnkAnchorByName : "Podľa mena kotvy",
-DlgLnkAnchorById : "Podľa Id objektu",
-DlgLnkNoAnchors : "(V stránke nie je definovaná žiadna kotva)",
-DlgLnkEMail : "E-Mailová adresa",
-DlgLnkEMailSubject : "Predmet správy",
-DlgLnkEMailBody : "Telo správy",
-DlgLnkUpload : "Odoslať",
-DlgLnkBtnUpload : "Odoslať na server",
-
-DlgLnkTarget : "Cieľ",
-DlgLnkTargetFrame : "<rámec>",
-DlgLnkTargetPopup : "<vyskakovacie okno>",
-DlgLnkTargetBlank : "Nové okno (_blank)",
-DlgLnkTargetParent : "RodiÄovské okno (_parent)",
-DlgLnkTargetSelf : "Rovnaké okno (_self)",
-DlgLnkTargetTop : "Hlavné okno (_top)",
-DlgLnkTargetFrameName : "Meno rámu cieľa",
-DlgLnkPopWinName : "Názov vyskakovacieho okna",
-DlgLnkPopWinFeat : "Vlastnosti vyskakovacieho okna",
-DlgLnkPopResize : "Meniteľná veľkosť",
-DlgLnkPopLocation : "Panel umiestnenia",
-DlgLnkPopMenu : "Panel ponuky",
-DlgLnkPopScroll : "Posuvníky",
-DlgLnkPopStatus : "Stavový riadok",
-DlgLnkPopToolbar : "Panel nástrojov",
-DlgLnkPopFullScrn : "Celá obrazovka (IE)",
-DlgLnkPopDependent : "Závislosť (Netscape)",
-DlgLnkPopWidth : "Šírka",
-DlgLnkPopHeight : "Výška",
-DlgLnkPopLeft : "Ľavý okraj",
-DlgLnkPopTop : "Horný okraj",
-
-DlnLnkMsgNoUrl : "Zadajte prosím URL odkazu",
-DlnLnkMsgNoEMail : "Zadajte prosím e-mailovú adresu",
-DlnLnkMsgNoAnchor : "Vyberte prosím kotvu",
-DlnLnkMsgInvPopName : "Názov vyskakovacieho okna sa musá zaÄínaÅ¥ písmenom a nemôže obsahovaÅ¥ medzery",
-
-// Color Dialog
-DlgColorTitle : "Výber farby",
-DlgColorBtnClear : "Vymazať",
-DlgColorHighlight : "Zvýraznená",
-DlgColorSelected : "Vybraná",
-
-// Smiley Dialog
-DlgSmileyTitle : "Vkladanie smajlíkov",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Výber špeciálneho znaku",
-
-// Table Dialog
-DlgTableTitle : "Vlastnosti tabuľky",
-DlgTableRows : "Riadky",
-DlgTableColumns : "Stĺpce",
-DlgTableBorder : "OhraniÄenie",
-DlgTableAlign : "Zarovnanie",
-DlgTableAlignNotSet : "<nenastavené>",
-DlgTableAlignLeft : "Vľavo",
-DlgTableAlignCenter : "Na stred",
-DlgTableAlignRight : "Vpravo",
-DlgTableWidth : "Šírka",
-DlgTableWidthPx : "pixelov",
-DlgTableWidthPc : "percent",
-DlgTableHeight : "Výška",
-DlgTableCellSpace : "Vzdialenosť buniek",
-DlgTableCellPad : "Odsadenie obsahu",
-DlgTableCaption : "Popis",
-DlgTableSummary : "Prehľad",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Vlastnosti bunky",
-DlgCellWidth : "Šírka",
-DlgCellWidthPx : "bodov",
-DlgCellWidthPc : "percent",
-DlgCellHeight : "Výška",
-DlgCellWordWrap : "Zalamovannie",
-DlgCellWordWrapNotSet : "<nenastavené>",
-DlgCellWordWrapYes : "Ãno",
-DlgCellWordWrapNo : "Nie",
-DlgCellHorAlign : "Vodorovné zarovnanie",
-DlgCellHorAlignNotSet : "<nenastavené>",
-DlgCellHorAlignLeft : "Vľavo",
-DlgCellHorAlignCenter : "Na stred",
-DlgCellHorAlignRight: "Vpravo",
-DlgCellVerAlign : "Zvislé zarovnanie",
-DlgCellVerAlignNotSet : "<nenastavené>",
-DlgCellVerAlignTop : "Nahor",
-DlgCellVerAlignMiddle : "Doprostred",
-DlgCellVerAlignBottom : "Dole",
-DlgCellVerAlignBaseline : "Na základňu",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "ZlúÄené riadky",
-DlgCellCollSpan : "ZlúÄené stĺpce",
-DlgCellBackColor : "Farba pozadia",
-DlgCellBorderColor : "Farba ohraniÄenia",
-DlgCellBtnSelect : "Výber...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Nájsť a nahradiť",
-
-// Find Dialog
-DlgFindTitle : "Hľadať",
-DlgFindFindBtn : "Hľadať",
-DlgFindNotFoundMsg : "Hľadaný text nebol nájdený.",
-
-// Replace Dialog
-DlgReplaceTitle : "Nahradiť",
-DlgReplaceFindLbl : "Čo hľadať:",
-DlgReplaceReplaceLbl : "Čím nahradiť:",
-DlgReplaceCaseChk : "Rozlišovať malé/veľké písmená",
-DlgReplaceReplaceBtn : "Nahradiť",
-DlgReplaceReplAllBtn : "Nahradiť všetko",
-DlgReplaceWordChk : "Len celé slová",
-
-// Paste Operations / Dialog
-PasteErrorCut : "BezpeÄnostné nastavenia Vášho prehliadaÄa nedovoľujú editoru spustiÅ¥ funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).",
-PasteErrorCopy : "BezpeÄnostné nastavenia Vášho prehliadaÄa nedovoľujú editoru spustiÅ¥ funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).",
-
-PasteAsText : "VložiÅ¥ ako Äistý text",
-PasteFromWord : "Vložiť text z Wordu",
-
-DlgPasteMsg2 : "Prosím vložte nasledovný rámÄek použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlaÄte <STRONG>OK</STRONG>.",
-DlgPasteSec : "BezpeÄnostné nastavenia Vášho prehliadaÄa nedovoľujú editoru pristupovaÅ¥ priamo k datám v schránke. Musíte ich vložiÅ¥ znovu do tohto okna.",
-DlgPasteIgnoreFont : "Ignorovať nastavenia typu písma",
-DlgPasteRemoveStyles : "Odstrániť formátovanie",
-
-// Color Picker
-ColorAutomatic : "Automaticky",
-ColorMoreColors : "Viac farieb...",
-
-// Document Properties
-DocProps : "Vlastnosti dokumentu",
-
-// Anchor Dialog
-DlgAnchorTitle : "Vlastnosti kotvy",
-DlgAnchorName : "Meno kotvy",
-DlgAnchorErrorName : "Zadajte prosím meno kotvy",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nie je v slovníku",
-DlgSpellChangeTo : "Zmeniť na",
-DlgSpellBtnIgnore : "Ignorovať",
-DlgSpellBtnIgnoreAll : "Ignorovať všetko",
-DlgSpellBtnReplace : "Prepísat",
-DlgSpellBtnReplaceAll : "Prepísat všetko",
-DlgSpellBtnUndo : "Späť",
-DlgSpellNoSuggestions : "- Žiadny návrh -",
-DlgSpellProgress : "Prebieha kontrola pravopisu...",
-DlgSpellNoMispell : "Kontrola pravopisu dokonÄená: bez chýb",
-DlgSpellNoChanges : "Kontrola pravopisu dokonÄená: žiadne slová nezmenené",
-DlgSpellOneChange : "Kontrola pravopisu dokonÄená: zmenené jedno slovo",
-DlgSpellManyChanges : "Kontrola pravopisu dokonÄená: zmenených %1 slov",
-
-IeSpellDownload : "Kontrola pravopisu nie je naiÅ¡talovaná. Chcete ju hneÄ stiahnuÅ¥?",
-
-// Button Dialog
-DlgButtonText : "Text",
-DlgButtonType : "Typ",
-DlgButtonTypeBtn : "TlaÄidlo",
-DlgButtonTypeSbm : "Odoslať",
-DlgButtonTypeRst : "Vymazať",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Názov",
-DlgCheckboxValue : "Hodnota",
-DlgCheckboxSelected : "Vybrané",
-
-// Form Dialog
-DlgFormName : "Názov",
-DlgFormAction : "Akcie",
-DlgFormMethod : "Metóda",
-
-// Select Field Dialog
-DlgSelectName : "Názov",
-DlgSelectValue : "Hodnota",
-DlgSelectSize : "Veľkosť",
-DlgSelectLines : "riadkov",
-DlgSelectChkMulti : "Povoliť viacnásobný výber",
-DlgSelectOpAvail : "Dostupné možnosti",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Hodnota",
-DlgSelectBtnAdd : "Pridať",
-DlgSelectBtnModify : "Zmeniť",
-DlgSelectBtnUp : "Hore",
-DlgSelectBtnDown : "Dole",
-DlgSelectBtnSetValue : "Nastaviť ako vybranú hodnotu",
-DlgSelectBtnDelete : "Zmazať",
-
-// Textarea Dialog
-DlgTextareaName : "Názov",
-DlgTextareaCols : "Stĺpce",
-DlgTextareaRows : "Riadky",
-
-// Text Field Dialog
-DlgTextName : "Názov",
-DlgTextValue : "Hodnota",
-DlgTextCharWidth : "Šírka pola (znakov)",
-DlgTextMaxChars : "Maximálny poÄet znakov",
-DlgTextType : "Typ",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Heslo",
-
-// Hidden Field Dialog
-DlgHiddenName : "Názov",
-DlgHiddenValue : "Hodnota",
-
-// Bulleted List Dialog
-BulletedListProp : "Vlastnosti odrážok",
-NumberedListProp : "Vlastnosti Äíslovania",
-DlgLstStart : "Å tart",
-DlgLstType : "Typ",
-DlgLstTypeCircle : "Krúžok",
-DlgLstTypeDisc : "Disk",
-DlgLstTypeSquare : "Å tvorec",
-DlgLstTypeNumbers : "Číslovanie (1, 2, 3)",
-DlgLstTypeLCase : "Malé písmená (a, b, c)",
-DlgLstTypeUCase : "Veľké písmená (A, B, C)",
-DlgLstTypeSRoman : "Malé rímske Äíslice (i, ii, iii)",
-DlgLstTypeLRoman : "Veľké rímske Äíslice (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Všeobecné",
-DlgDocBackTab : "Pozadie",
-DlgDocColorsTab : "Farby a okraje",
-DlgDocMetaTab : "Meta Data",
-
-DlgDocPageTitle : "Titulok",
-DlgDocLangDir : "Orientácie jazyka",
-DlgDocLangDirLTR : "Zľava doprava (LTR)",
-DlgDocLangDirRTL : "Sprava doľava (RTL)",
-DlgDocLangCode : "Kód jazyka",
-DlgDocCharSet : "Kódová stránka",
-DlgDocCharSetCE : "Stredoeurópske",
-DlgDocCharSetCT : "ČínÅ¡tina tradiÄná (Big5)",
-DlgDocCharSetCR : "Cyrillika",
-DlgDocCharSetGR : "GréÄtina",
-DlgDocCharSetJP : "JaponÄina",
-DlgDocCharSetKR : "KorejÄina",
-DlgDocCharSetTR : "TureÄtina",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Západná európa",
-DlgDocCharSetOther : "Iná kódová stránka",
-
-DlgDocDocType : "Typ záhlavia dokumentu",
-DlgDocDocTypeOther : "Iný typ záhlavia dokumentu",
-DlgDocIncXHTML : "Obsahuje deklarácie XHTML",
-DlgDocBgColor : "Farba pozadia",
-DlgDocBgImage : "URL adresa obrázku na pozadí",
-DlgDocBgNoScroll : "Fixné pozadie",
-DlgDocCText : "Text",
-DlgDocCLink : "Odkaz",
-DlgDocCVisited : "Navštívený odkaz",
-DlgDocCActive : "Aktívny odkaz",
-DlgDocMargins : "Okraje stránky",
-DlgDocMaTop : "Horný",
-DlgDocMaLeft : "Ľavý",
-DlgDocMaRight : "Pravý",
-DlgDocMaBottom : "Dolný",
-DlgDocMeIndex : "KľúÄové slová pre indexovanie (oddelené Äiarkou)",
-DlgDocMeDescr : "Popis stránky",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Autorské práva",
-DlgDocPreview : "Náhľad",
-
-// Templates Dialog
-Templates : "Šablóny",
-DlgTemplatesTitle : "Šablóny obsahu",
-DlgTemplatesSelMsg : "Prosím vyberte šablóny na otvorenie v editore<br>(súšasný obsah bude stratený):",
-DlgTemplatesLoading : "Nahrávam zoznam šablón. Čakajte prosím...",
-DlgTemplatesNoTpl : "(žiadne šablóny nenájdené)",
-DlgTemplatesReplace : "Nahradiť aktuálny obsah",
-
-// About Dialog
-DlgAboutAboutTab : "O aplikáci",
-DlgAboutBrowserInfoTab : "Informácie o prehliadaÄi",
-DlgAboutLicenseTab : "Licencia",
-DlgAboutVersion : "verzia",
-DlgAboutInfo : "Viac informácií získate na",
-
-// Div Dialog
-DlgDivGeneralTab : "Hlavné",
-DlgDivAdvancedTab : "Rozšírené",
-DlgDivStyle : "Štýl",
-DlgDivInlineStyle : "Inline štýl"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sl.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sl.js
deleted file mode 100644
index c00fbf6d0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sl.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Slovenian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Zloži orodno vrstico",
-ToolbarExpand : "Razširi orodno vrstico",
-
-// Toolbar Items and Context Menu
-Save : "Shrani",
-NewPage : "Nova stran",
-Preview : "Predogled",
-Cut : "Izreži",
-Copy : "Kopiraj",
-Paste : "Prilepi",
-PasteText : "Prilepi kot golo besedilo",
-PasteWord : "Prilepi iz Worda",
-Print : "Natisni",
-SelectAll : "Izberi vse",
-RemoveFormat : "Odstrani oblikovanje",
-InsertLinkLbl : "Povezava",
-InsertLink : "Vstavi/uredi povezavo",
-RemoveLink : "Odstrani povezavo",
-VisitLink : "Open Link", //MISSING
-Anchor : "Vstavi/uredi zaznamek",
-AnchorDelete : "Odstrani zaznamek",
-InsertImageLbl : "Slika",
-InsertImage : "Vstavi/uredi sliko",
-InsertFlashLbl : "Flash",
-InsertFlash : "Vstavi/Uredi Flash",
-InsertTableLbl : "Tabela",
-InsertTable : "Vstavi/uredi tabelo",
-InsertLineLbl : "ÄŒrta",
-InsertLine : "Vstavi vodoravno Ärto",
-InsertSpecialCharLbl: "Posebni znak",
-InsertSpecialChar : "Vstavi posebni znak",
-InsertSmileyLbl : "Smeško",
-InsertSmiley : "Vstavi smeška",
-About : "O FCKeditorju",
-Bold : "Krepko",
-Italic : "LežeÄe",
-Underline : "PodÄrtano",
-StrikeThrough : "PreÄrtano",
-Subscript : "Podpisano",
-Superscript : "Nadpisano",
-LeftJustify : "Leva poravnava",
-CenterJustify : "Sredinska poravnava",
-RightJustify : "Desna poravnava",
-BlockJustify : "Obojestranska poravnava",
-DecreaseIndent : "Zmanjšaj zamik",
-IncreaseIndent : "PoveÄaj zamik",
-Blockquote : "Citat",
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Razveljavi",
-Redo : "Ponovi",
-NumberedListLbl : "OÅ¡tevilÄen seznam",
-NumberedList : "Vstavi/odstrani oÅ¡tevilÄevanje",
-BulletedListLbl : "OznaÄen seznam",
-BulletedList : "Vstavi/odstrani oznaÄevanje",
-ShowTableBorders : "Pokaži meje tabele",
-ShowDetails : "Pokaži podrobnosti",
-Style : "Slog",
-FontFormat : "Oblika",
-Font : "Pisava",
-FontSize : "Velikost",
-TextColor : "Barva besedila",
-BGColor : "Barva ozadja",
-Source : "Izvorna koda",
-Find : "Najdi",
-Replace : "Zamenjaj",
-SpellCheck : "Preveri Ärkovanje",
-UniversalKeyboard : "VeÄjeziÄna tipkovnica",
-PageBreakLbl : "Prelom strani",
-PageBreak : "Vstavi prelom strani",
-
-Form : "Obrazec",
-Checkbox : "Potrditveno polje",
-RadioButton : "Izbirno polje",
-TextField : "Vnosno polje",
-Textarea : "Vnosno obmoÄje",
-HiddenField : "Skrito polje",
-Button : "Gumb",
-SelectionField : "Spustni seznam",
-ImageButton : "Gumb s sliko",
-
-FitWindow : "RazÅ¡iri velikost urejevalnika Äez cel zaslon",
-ShowBlocks : "Prikaži ograde",
-
-// Context Menu
-EditLink : "Uredi povezavo",
-CellCM : "Celica",
-RowCM : "Vrstica",
-ColumnCM : "Stolpec",
-InsertRowAfter : "Vstavi vrstico za",
-InsertRowBefore : "Vstavi vrstico pred",
-DeleteRows : "Izbriši vrstice",
-InsertColumnAfter : "Vstavi stolpec za",
-InsertColumnBefore : "Vstavi stolpec pred",
-DeleteColumns : "Izbriši stolpce",
-InsertCellAfter : "Vstavi celico za",
-InsertCellBefore : "Vstavi celico pred",
-DeleteCells : "Izbriši celice",
-MergeCells : "Združi celice",
-MergeRight : "Združi desno",
-MergeDown : "Druži navzdol",
-HorizontalSplitCell : "Razdeli celico vodoravno",
-VerticalSplitCell : "Razdeli celico navpiÄno",
-TableDelete : "Izbriši tabelo",
-CellProperties : "Lastnosti celice",
-TableProperties : "Lastnosti tabele",
-ImageProperties : "Lastnosti slike",
-FlashProperties : "Lastnosti Flash",
-
-AnchorProp : "Lastnosti zaznamka",
-ButtonProp : "Lastnosti gumba",
-CheckboxProp : "Lastnosti potrditvenega polja",
-HiddenFieldProp : "Lastnosti skritega polja",
-RadioButtonProp : "Lastnosti izbirnega polja",
-ImageButtonProp : "Lastnosti gumba s sliko",
-TextFieldProp : "Lastnosti vnosnega polja",
-SelectionFieldProp : "Lastnosti spustnega seznama",
-TextareaProp : "Lastnosti vnosnega obmoÄja",
-FormProp : "Lastnosti obrazca",
-
-FontFormats : "Navaden;Oblikovan;Napis;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Obdelujem XHTML. Prosim poÄakajte...",
-Done : "Narejeno",
-PasteWordConfirm : "Izgleda, da želite prilepiti besedilo iz Worda. Ali ga želite oÄistiti, preden ga prilepite?",
-NotCompatiblePaste : "Ta ukaz deluje le v Internet Explorerje razliÄice 5.5 ali viÅ¡je. Ali želite prilepiti brez ÄiÅ¡Äenja?",
-UnknownToolbarItem : "Neznan element orodne vrstice \"%1\"",
-UnknownCommand : "Neznano ime ukaza \"%1\"",
-NotImplemented : "Ukaz ni izdelan",
-UnknownToolbarSet : "Skupina orodnih vrstic \"%1\" ne obstoja",
-NoActiveX : "Varnostne nastavitve vaÅ¡ega brskalnika lahko omejijo delovanje nekaterih zmožnosti urejevalnika. ÄŒe ne želite zaznavati napak in sporoÄil o manjkajoÄih zmožnostih, omogoÄite možnost \"Zaženi ActiveX kontrolnike in vtiÄnike\".",
-BrowseServerBlocked : "Brskalnik virov se ne more odpreti. PrepriÄajte se, da je prepreÄevanje pojavnih oken onemogoÄeno.",
-DialogBlocked : "Pogovorno okno se ni moglo odpreti. PrepriÄajte se, da je prepreÄevanje pojavnih oken onemogoÄeno.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "V redu",
-DlgBtnCancel : "PrekliÄi",
-DlgBtnClose : "Zapri",
-DlgBtnBrowseServer : "Prebrskaj na strežniku",
-DlgAdvancedTag : "Napredno",
-DlgOpOther : "<Ostalo>",
-DlgInfoTab : "Podatki",
-DlgAlertUrl : "Prosim vpiši spletni naslov",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ni postavljen>",
-DlgGenId : "Id",
-DlgGenLangDir : "Smer jezika",
-DlgGenLangDirLtr : "Od leve proti desni (LTR)",
-DlgGenLangDirRtl : "Od desne proti levi (RTL)",
-DlgGenLangCode : "Oznaka jezika",
-DlgGenAccessKey : "Vstopno geslo",
-DlgGenName : "Ime",
-DlgGenTabIndex : "Å tevilka tabulatorja",
-DlgGenLongDescr : "Dolg opis URL-ja",
-DlgGenClass : "Razred stilne predloge",
-DlgGenTitle : "Predlagani naslov",
-DlgGenContType : "Predlagani tip vsebine (content-type)",
-DlgGenLinkCharset : "Kodna tabela povezanega vira",
-DlgGenStyle : "Slog",
-
-// Image Dialog
-DlgImgTitle : "Lastnosti slike",
-DlgImgInfoTab : "Podatki o sliki",
-DlgImgBtnUpload : "Pošlji na strežnik",
-DlgImgURL : "URL",
-DlgImgUpload : "Pošlji",
-DlgImgAlt : "Nadomestno besedilo",
-DlgImgWidth : "Å irina",
-DlgImgHeight : "Višina",
-DlgImgLockRatio : "Zakleni razmerje",
-DlgBtnResetSize : "Ponastavi velikost",
-DlgImgBorder : "Obroba",
-DlgImgHSpace : "Vodoravni razmik",
-DlgImgVSpace : "NavpiÄni razmik",
-DlgImgAlign : "Poravnava",
-DlgImgAlignLeft : "Levo",
-DlgImgAlignAbsBottom: "Popolnoma na dno",
-DlgImgAlignAbsMiddle: "Popolnoma v sredino",
-DlgImgAlignBaseline : "Na osnovno Ärto",
-DlgImgAlignBottom : "Na dno",
-DlgImgAlignMiddle : "V sredino",
-DlgImgAlignRight : "Desno",
-DlgImgAlignTextTop : "Besedilo na vrh",
-DlgImgAlignTop : "Na vrh",
-DlgImgPreview : "Predogled",
-DlgImgAlertUrl : "Vnesite URL slike",
-DlgImgLinkTab : "Povezava",
-
-// Flash Dialog
-DlgFlashTitle : "Lastnosti Flash",
-DlgFlashChkPlay : "Samodejno predvajaj",
-DlgFlashChkLoop : "Ponavljanje",
-DlgFlashChkMenu : "OmogoÄi Flash Meni",
-DlgFlashScale : "PoveÄava",
-DlgFlashScaleAll : "Pokaži vse",
-DlgFlashScaleNoBorder : "Brez obrobe",
-DlgFlashScaleFit : "NatanÄno prileganje",
-
-// Link Dialog
-DlgLnkWindowTitle : "Povezava",
-DlgLnkInfoTab : "Podatki o povezavi",
-DlgLnkTargetTab : "Cilj",
-
-DlgLnkType : "Vrsta povezave",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Zaznamek na tej strani",
-DlgLnkTypeEMail : "Elektronski naslov",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<drugo>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Izberi zaznamek",
-DlgLnkAnchorByName : "Po imenu zaznamka",
-DlgLnkAnchorById : "Po ID-ju elementa",
-DlgLnkNoAnchors : "(V tem dokumentu ni zaznamkov)",
-DlgLnkEMail : "Elektronski naslov",
-DlgLnkEMailSubject : "Predmet sporoÄila",
-DlgLnkEMailBody : "Vsebina sporoÄila",
-DlgLnkUpload : "Prenesi",
-DlgLnkBtnUpload : "Pošlji na strežnik",
-
-DlgLnkTarget : "Cilj",
-DlgLnkTargetFrame : "<okvir>",
-DlgLnkTargetPopup : "<pojavno okno>",
-DlgLnkTargetBlank : "Novo okno (_blank)",
-DlgLnkTargetParent : "Starševsko okno (_parent)",
-DlgLnkTargetSelf : "Isto okno (_self)",
-DlgLnkTargetTop : "Najvišje okno (_top)",
-DlgLnkTargetFrameName : "Ime ciljnega okvirja",
-DlgLnkPopWinName : "Ime pojavnega okna",
-DlgLnkPopWinFeat : "ZnaÄilnosti pojavnega okna",
-DlgLnkPopResize : "Spremenljive velikosti",
-DlgLnkPopLocation : "Naslovna vrstica",
-DlgLnkPopMenu : "Menijska vrstica",
-DlgLnkPopScroll : "Drsniki",
-DlgLnkPopStatus : "Vrstica stanja",
-DlgLnkPopToolbar : "Orodna vrstica",
-DlgLnkPopFullScrn : "Celozaslonska slika (IE)",
-DlgLnkPopDependent : "Podokno (Netscape)",
-DlgLnkPopWidth : "Å irina",
-DlgLnkPopHeight : "Višina",
-DlgLnkPopLeft : "Lega levo",
-DlgLnkPopTop : "Lega na vrhu",
-
-DlnLnkMsgNoUrl : "Vnesite URL povezave",
-DlnLnkMsgNoEMail : "Vnesite elektronski naslov",
-DlnLnkMsgNoAnchor : "Izberite zaznamek",
-DlnLnkMsgInvPopName : "Ime pojavnega okna se mora zaÄeti s Ärko ali Å¡tevilko in ne sme vsebovati presledkov",
-
-// Color Dialog
-DlgColorTitle : "Izberite barvo",
-DlgColorBtnClear : "PoÄisti",
-DlgColorHighlight : "OznaÄi",
-DlgColorSelected : "Izbrano",
-
-// Smiley Dialog
-DlgSmileyTitle : "Vstavi smeška",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Izberi posebni znak",
-
-// Table Dialog
-DlgTableTitle : "Lastnosti tabele",
-DlgTableRows : "Vrstice",
-DlgTableColumns : "Stolpci",
-DlgTableBorder : "Velikost obrobe",
-DlgTableAlign : "Poravnava",
-DlgTableAlignNotSet : "<Ni nastavljeno>",
-DlgTableAlignLeft : "Levo",
-DlgTableAlignCenter : "Sredinsko",
-DlgTableAlignRight : "Desno",
-DlgTableWidth : "Å irina",
-DlgTableWidthPx : "pik",
-DlgTableWidthPc : "procentov",
-DlgTableHeight : "Višina",
-DlgTableCellSpace : "Razmik med celicami",
-DlgTableCellPad : "Polnilo med celicami",
-DlgTableCaption : "Naslov",
-DlgTableSummary : "Povzetek",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Lastnosti celice",
-DlgCellWidth : "Å irina",
-DlgCellWidthPx : "pik",
-DlgCellWidthPc : "procentov",
-DlgCellHeight : "Višina",
-DlgCellWordWrap : "Pomikanje besedila",
-DlgCellWordWrapNotSet : "<Ni nastavljeno>",
-DlgCellWordWrapYes : "Da",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Vodoravna poravnava",
-DlgCellHorAlignNotSet : "<Ni nastavljeno>",
-DlgCellHorAlignLeft : "Levo",
-DlgCellHorAlignCenter : "Sredinsko",
-DlgCellHorAlignRight: "Desno",
-DlgCellVerAlign : "NavpiÄna poravnava",
-DlgCellVerAlignNotSet : "<Ni nastavljeno>",
-DlgCellVerAlignTop : "Na vrh",
-DlgCellVerAlignMiddle : "V sredino",
-DlgCellVerAlignBottom : "Na dno",
-DlgCellVerAlignBaseline : "Na osnovno Ärto",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Spojenih vrstic (row-span)",
-DlgCellCollSpan : "Spojenih stolpcev (col-span)",
-DlgCellBackColor : "Barva ozadja",
-DlgCellBorderColor : "Barva obrobe",
-DlgCellBtnSelect : "Izberi...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Najdi in zamenjaj",
-
-// Find Dialog
-DlgFindTitle : "Najdi",
-DlgFindFindBtn : "Najdi",
-DlgFindNotFoundMsg : "Navedeno besedilo ni bilo najdeno.",
-
-// Replace Dialog
-DlgReplaceTitle : "Zamenjaj",
-DlgReplaceFindLbl : "Najdi:",
-DlgReplaceReplaceLbl : "Zamenjaj z:",
-DlgReplaceCaseChk : "Razlikuj velike in male Ärke",
-DlgReplaceReplaceBtn : "Zamenjaj",
-DlgReplaceReplAllBtn : "Zamenjaj vse",
-DlgReplaceWordChk : "Samo cele besede",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).",
-PasteErrorCopy : "Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).",
-
-PasteAsText : "Prilepi kot golo besedilo",
-PasteFromWord : "Prilepi iz Worda",
-
-DlgPasteMsg2 : "Prosim prilepite v sleÄi okvir s pomoÄjo tipkovnice (<STRONG>Ctrl+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.",
-DlgPasteSec : "Zaradi varnostnih nastavitev vaÅ¡ega brskalnika urejevalnik ne more neposredno dostopati do odložiÅ¡Äa. Vsebino odložiÅ¡Äa ponovno prilepite v to okno.",
-DlgPasteIgnoreFont : "Prezri obliko pisave",
-DlgPasteRemoveStyles : "Odstrani nastavitve stila",
-
-// Color Picker
-ColorAutomatic : "Samodejno",
-ColorMoreColors : "VeÄ barv...",
-
-// Document Properties
-DocProps : "Lastnosti dokumenta",
-
-// Anchor Dialog
-DlgAnchorTitle : "Lastnosti zaznamka",
-DlgAnchorName : "Ime zaznamka",
-DlgAnchorErrorName : "Prosim vnesite ime zaznamka",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ni v slovarju",
-DlgSpellChangeTo : "Spremeni v",
-DlgSpellBtnIgnore : "Prezri",
-DlgSpellBtnIgnoreAll : "Prezri vse",
-DlgSpellBtnReplace : "Zamenjaj",
-DlgSpellBtnReplaceAll : "Zamenjaj vse",
-DlgSpellBtnUndo : "Razveljavi",
-DlgSpellNoSuggestions : "- Ni predlogov -",
-DlgSpellProgress : "Preverjanje Ärkovanja se izvaja...",
-DlgSpellNoMispell : "ÄŒrkovanje je konÄano: Brez napak",
-DlgSpellNoChanges : "ÄŒrkovanje je konÄano: Nobena beseda ni bila spremenjena",
-DlgSpellOneChange : "ÄŒrkovanje je konÄano: Spremenjena je bila ena beseda",
-DlgSpellManyChanges : "ÄŒrkovanje je konÄano: Spremenjenih je bilo %1 besed",
-
-IeSpellDownload : "ÄŒrkovalnik ni nameÅ¡Äen. Ali ga želite prenesti sedaj?",
-
-// Button Dialog
-DlgButtonText : "Besedilo (Vrednost)",
-DlgButtonType : "Tip",
-DlgButtonTypeBtn : "Gumb",
-DlgButtonTypeSbm : "Potrdi",
-DlgButtonTypeRst : "Ponastavi",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Ime",
-DlgCheckboxValue : "Vrednost",
-DlgCheckboxSelected : "Izbrano",
-
-// Form Dialog
-DlgFormName : "Ime",
-DlgFormAction : "Akcija",
-DlgFormMethod : "Metoda",
-
-// Select Field Dialog
-DlgSelectName : "Ime",
-DlgSelectValue : "Vrednost",
-DlgSelectSize : "Velikost",
-DlgSelectLines : "vrstic",
-DlgSelectChkMulti : "Dovoli izbor veÄih vrstic",
-DlgSelectOpAvail : "Razpoložljive izbire",
-DlgSelectOpText : "Besedilo",
-DlgSelectOpValue : "Vrednost",
-DlgSelectBtnAdd : "Dodaj",
-DlgSelectBtnModify : "Spremeni",
-DlgSelectBtnUp : "Gor",
-DlgSelectBtnDown : "Dol",
-DlgSelectBtnSetValue : "Postavi kot privzeto izbiro",
-DlgSelectBtnDelete : "Izbriši",
-
-// Textarea Dialog
-DlgTextareaName : "Ime",
-DlgTextareaCols : "Stolpcev",
-DlgTextareaRows : "Vrstic",
-
-// Text Field Dialog
-DlgTextName : "Ime",
-DlgTextValue : "Vrednost",
-DlgTextCharWidth : "Dolžina",
-DlgTextMaxChars : "NajveÄje Å¡tevilo znakov",
-DlgTextType : "Tip",
-DlgTextTypeText : "Besedilo",
-DlgTextTypePass : "Geslo",
-
-// Hidden Field Dialog
-DlgHiddenName : "Ime",
-DlgHiddenValue : "Vrednost",
-
-// Bulleted List Dialog
-BulletedListProp : "Lastnosti oznaÄenega seznama",
-NumberedListProp : "Lastnosti oÅ¡tevilÄenega seznama",
-DlgLstStart : "ZaÄetek",
-DlgLstType : "Tip",
-DlgLstTypeCircle : "Pikica",
-DlgLstTypeDisc : "Kroglica",
-DlgLstTypeSquare : "Kvadratek",
-DlgLstTypeNumbers : "Å tevilke (1, 2, 3)",
-DlgLstTypeLCase : "Male Ärke (a, b, c)",
-DlgLstTypeUCase : "Velike Ärke (A, B, C)",
-DlgLstTypeSRoman : "Male rimske številke (i, ii, iii)",
-DlgLstTypeLRoman : "Velike rimske številke (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Splošno",
-DlgDocBackTab : "Ozadje",
-DlgDocColorsTab : "Barve in zamiki",
-DlgDocMetaTab : "Meta podatki",
-
-DlgDocPageTitle : "Naslov strani",
-DlgDocLangDir : "Smer jezika",
-DlgDocLangDirLTR : "Od leve proti desni (LTR)",
-DlgDocLangDirRTL : "Od desne proti levi (RTL)",
-DlgDocLangCode : "Oznaka jezika",
-DlgDocCharSet : "Kodna tabela",
-DlgDocCharSetCE : "Srednjeevropsko",
-DlgDocCharSetCT : "Tradicionalno Kitajsko (Big5)",
-DlgDocCharSetCR : "Cirilica",
-DlgDocCharSetGR : "Grško",
-DlgDocCharSetJP : "Japonsko",
-DlgDocCharSetKR : "Korejsko",
-DlgDocCharSetTR : "Turško",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Zahodnoevropsko",
-DlgDocCharSetOther : "Druga kodna tabela",
-
-DlgDocDocType : "Glava tipa dokumenta",
-DlgDocDocTypeOther : "Druga glava tipa dokumenta",
-DlgDocIncXHTML : "Vstavi XHTML deklaracije",
-DlgDocBgColor : "Barva ozadja",
-DlgDocBgImage : "URL slike za ozadje",
-DlgDocBgNoScroll : "NepremiÄno ozadje",
-DlgDocCText : "Besedilo",
-DlgDocCLink : "Povezava",
-DlgDocCVisited : "Obiskana povezava",
-DlgDocCActive : "Aktivna povezava",
-DlgDocMargins : "Zamiki strani",
-DlgDocMaTop : "Na vrhu",
-DlgDocMaLeft : "Levo",
-DlgDocMaRight : "Desno",
-DlgDocMaBottom : "Spodaj",
-DlgDocMeIndex : "KljuÄne besede (loÄene z vejicami)",
-DlgDocMeDescr : "Opis strani",
-DlgDocMeAuthor : "Avtor",
-DlgDocMeCopy : "Avtorske pravice",
-DlgDocPreview : "Predogled",
-
-// Templates Dialog
-Templates : "Predloge",
-DlgTemplatesTitle : "Vsebinske predloge",
-DlgTemplatesSelMsg : "Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):",
-DlgTemplatesLoading : "Nalagam seznam predlog. Prosim poÄakajte...",
-DlgTemplatesNoTpl : "(Ni pripravljenih predlog)",
-DlgTemplatesReplace : "Zamenjaj trenutno vsebino",
-
-// About Dialog
-DlgAboutAboutTab : "Vizitka",
-DlgAboutBrowserInfoTab : "Informacije o brskalniku",
-DlgAboutLicenseTab : "Dovoljenja",
-DlgAboutVersion : "razliÄica",
-DlgAboutInfo : "Za veÄ informacij obiÅ¡Äite",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr-latn.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr-latn.js
deleted file mode 100644
index 8770605a1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr-latn.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Serbian (Latin) language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Smanji liniju sa alatkama",
-ToolbarExpand : "Proiri liniju sa alatkama",
-
-// Toolbar Items and Context Menu
-Save : "SaÄuvaj",
-NewPage : "Nova stranica",
-Preview : "Izgled stranice",
-Cut : "Iseci",
-Copy : "Kopiraj",
-Paste : "Zalepi",
-PasteText : "Zalepi kao neformatiran tekst",
-PasteWord : "Zalepi iz Worda",
-Print : "Å tampa",
-SelectAll : "OznaÄi sve",
-RemoveFormat : "Ukloni formatiranje",
-InsertLinkLbl : "Link",
-InsertLink : "Unesi/izmeni link",
-RemoveLink : "Ukloni link",
-VisitLink : "Open Link", //MISSING
-Anchor : "Unesi/izmeni sidro",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Slika",
-InsertImage : "Unesi/izmeni sliku",
-InsertFlashLbl : "Fleš",
-InsertFlash : "Unesi/izmeni fleš",
-InsertTableLbl : "Tabela",
-InsertTable : "Unesi/izmeni tabelu",
-InsertLineLbl : "Linija",
-InsertLine : "Unesi horizontalnu liniju",
-InsertSpecialCharLbl: "Specijalni karakteri",
-InsertSpecialChar : "Unesi specijalni karakter",
-InsertSmileyLbl : "Smajli",
-InsertSmiley : "Unesi smajlija",
-About : "O FCKeditoru",
-Bold : "Podebljano",
-Italic : "Kurziv",
-Underline : "PodvuÄeno",
-StrikeThrough : "Precrtano",
-Subscript : "Indeks",
-Superscript : "Stepen",
-LeftJustify : "Levo ravnanje",
-CenterJustify : "Centriran tekst",
-RightJustify : "Desno ravnanje",
-BlockJustify : "Obostrano ravnanje",
-DecreaseIndent : "Smanji levu marginu",
-IncreaseIndent : "Uvećaj levu marginu",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Poni�ti akciju",
-Redo : "Ponovi akciju",
-NumberedListLbl : "Nabrojiva lista",
-NumberedList : "Unesi/ukloni nabrojivu listu",
-BulletedListLbl : "Nenabrojiva lista",
-BulletedList : "Unesi/ukloni nenabrojivu listu",
-ShowTableBorders : "Prikaži okvir tabele",
-ShowDetails : "Prikaži detalje",
-Style : "Stil",
-FontFormat : "Format",
-Font : "Font",
-FontSize : "VeliÄina fonta",
-TextColor : "Boja teksta",
-BGColor : "Boja pozadine",
-Source : "Kôd",
-Find : "Pretraga",
-Replace : "Zamena",
-SpellCheck : "Proveri spelovanje",
-UniversalKeyboard : "Univerzalna tastatura",
-PageBreakLbl : "Page Break", //MISSING
-PageBreak : "Insert Page Break", //MISSING
-
-Form : "Forma",
-Checkbox : "Polje za potvrdu",
-RadioButton : "Radio-dugme",
-TextField : "Tekstualno polje",
-Textarea : "Zona teksta",
-HiddenField : "Skriveno polje",
-Button : "Dugme",
-SelectionField : "Izborno polje",
-ImageButton : "Dugme sa slikom",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Izmeni link",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Obriši redove",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Obriši kolone",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Obriši ćelije",
-MergeCells : "Spoj celije",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Delete Table", //MISSING
-CellProperties : "Osobine celije",
-TableProperties : "Osobine tabele",
-ImageProperties : "Osobine slike",
-FlashProperties : "Osobine fleša",
-
-AnchorProp : "Osobine sidra",
-ButtonProp : "Osobine dugmeta",
-CheckboxProp : "Osobine polja za potvrdu",
-HiddenFieldProp : "Osobine skrivenog polja",
-RadioButtonProp : "Osobine radio-dugmeta",
-ImageButtonProp : "Osobine dugmeta sa slikom",
-TextFieldProp : "Osobine tekstualnog polja",
-SelectionFieldProp : "Osobine izbornog polja",
-TextareaProp : "Osobine zone teksta",
-FormProp : "Osobine forme",
-
-FontFormats : "Normal;Formatirano;Adresa;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Obradujem XHTML. Malo strpljenja...",
-Done : "Završio",
-PasteWordConfirm : "Tekst koji želite da nalepite kopiran je iz Worda. Da li želite da bude oÄišćen od formata pre lepljenja?",
-NotCompatiblePaste : "Ova komanda je dostupna samo za Internet Explorer od verzije 5.5. Da li želite da nalepim tekst bez Äišćenja?",
-UnknownToolbarItem : "Nepoznata stavka toolbara \"%1\"",
-UnknownCommand : "Nepoznata naredba \"%1\"",
-NotImplemented : "Naredba nije implementirana",
-UnknownToolbarSet : "Toolbar \"%1\" ne postoji",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Otkaži",
-DlgBtnClose : "Zatvori",
-DlgBtnBrowseServer : "Pretraži server",
-DlgAdvancedTag : "Napredni tagovi",
-DlgOpOther : "<Ostali>",
-DlgInfoTab : "Info",
-DlgAlertUrl : "Molimo Vas, unesite URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<nije postavljeno>",
-DlgGenId : "Id",
-DlgGenLangDir : "Smer jezika",
-DlgGenLangDirLtr : "S leva na desno (LTR)",
-DlgGenLangDirRtl : "S desna na levo (RTL)",
-DlgGenLangCode : "Kôd jezika",
-DlgGenAccessKey : "Pristupni taster",
-DlgGenName : "Naziv",
-DlgGenTabIndex : "Tab indeks",
-DlgGenLongDescr : "Pun opis URL",
-DlgGenClass : "Stylesheet klase",
-DlgGenTitle : "Advisory naslov",
-DlgGenContType : "Advisory vrsta sadržaja",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Stil",
-
-// Image Dialog
-DlgImgTitle : "Osobine slika",
-DlgImgInfoTab : "Info slike",
-DlgImgBtnUpload : "Pošalji na server",
-DlgImgURL : "URL",
-DlgImgUpload : "Pošalji",
-DlgImgAlt : "Alternativni tekst",
-DlgImgWidth : "Å irina",
-DlgImgHeight : "Visina",
-DlgImgLockRatio : "ZakljuÄaj odnos",
-DlgBtnResetSize : "Resetuj veliÄinu",
-DlgImgBorder : "Okvir",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Ravnanje",
-DlgImgAlignLeft : "Levo",
-DlgImgAlignAbsBottom: "Abs dole",
-DlgImgAlignAbsMiddle: "Abs sredina",
-DlgImgAlignBaseline : "Bazno",
-DlgImgAlignBottom : "Dole",
-DlgImgAlignMiddle : "Sredina",
-DlgImgAlignRight : "Desno",
-DlgImgAlignTextTop : "Vrh teksta",
-DlgImgAlignTop : "Vrh",
-DlgImgPreview : "Izgled",
-DlgImgAlertUrl : "Unesite URL slike",
-DlgImgLinkTab : "Link",
-
-// Flash Dialog
-DlgFlashTitle : "Osobine fleša",
-DlgFlashChkPlay : "Automatski start",
-DlgFlashChkLoop : "Ponavljaj",
-DlgFlashChkMenu : "UkljuÄi fleÅ¡ meni",
-DlgFlashScale : "Skaliraj",
-DlgFlashScaleAll : "Prikaži sve",
-DlgFlashScaleNoBorder : "Bez ivice",
-DlgFlashScaleFit : "Popuni površinu",
-
-// Link Dialog
-DlgLnkWindowTitle : "Link",
-DlgLnkInfoTab : "Link Info",
-DlgLnkTargetTab : "Meta",
-
-DlgLnkType : "Vrsta linka",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Sidro na ovoj stranici",
-DlgLnkTypeEMail : "E-Mail",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<drugo>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Odaberi sidro",
-DlgLnkAnchorByName : "Po nazivu sidra",
-DlgLnkAnchorById : "Po Id-ju elementa",
-DlgLnkNoAnchors : "(Nema dostupnih sidra)",
-DlgLnkEMail : "E-Mail adresa",
-DlgLnkEMailSubject : "Naslov",
-DlgLnkEMailBody : "Sadržaj poruke",
-DlgLnkUpload : "Pošalji",
-DlgLnkBtnUpload : "Pošalji na server",
-
-DlgLnkTarget : "Meta",
-DlgLnkTargetFrame : "<okvir>",
-DlgLnkTargetPopup : "<popup prozor>",
-DlgLnkTargetBlank : "Novi prozor (_blank)",
-DlgLnkTargetParent : "Roditeljski prozor (_parent)",
-DlgLnkTargetSelf : "Isti prozor (_self)",
-DlgLnkTargetTop : "Prozor na vrhu (_top)",
-DlgLnkTargetFrameName : "Naziv odredišnog frejma",
-DlgLnkPopWinName : "Naziv popup prozora",
-DlgLnkPopWinFeat : "Mogućnosti popup prozora",
-DlgLnkPopResize : "Promenljiva velicina",
-DlgLnkPopLocation : "Lokacija",
-DlgLnkPopMenu : "Kontekstni meni",
-DlgLnkPopScroll : "Scroll bar",
-DlgLnkPopStatus : "Statusna linija",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Prikaz preko celog ekrana (IE)",
-DlgLnkPopDependent : "Zavisno (Netscape)",
-DlgLnkPopWidth : "Å irina",
-DlgLnkPopHeight : "Visina",
-DlgLnkPopLeft : "Od leve ivice ekrana (px)",
-DlgLnkPopTop : "Od vrha ekrana (px)",
-
-DlnLnkMsgNoUrl : "Unesite URL linka",
-DlnLnkMsgNoEMail : "Otkucajte adresu elektronske pote",
-DlnLnkMsgNoAnchor : "Odaberite sidro",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Odaberite boju",
-DlgColorBtnClear : "Obriši",
-DlgColorHighlight : "Posvetli",
-DlgColorSelected : "Odaberi",
-
-// Smiley Dialog
-DlgSmileyTitle : "Unesi smajlija",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Odaberite specijalni karakter",
-
-// Table Dialog
-DlgTableTitle : "Osobine tabele",
-DlgTableRows : "Redova",
-DlgTableColumns : "Kolona",
-DlgTableBorder : "VeliÄina okvira",
-DlgTableAlign : "Ravnanje",
-DlgTableAlignNotSet : "<nije postavljeno>",
-DlgTableAlignLeft : "Levo",
-DlgTableAlignCenter : "Sredina",
-DlgTableAlignRight : "Desno",
-DlgTableWidth : "Å irina",
-DlgTableWidthPx : "piksela",
-DlgTableWidthPc : "procenata",
-DlgTableHeight : "Visina",
-DlgTableCellSpace : "Ćelijski prostor",
-DlgTableCellPad : "Razmak ćelija",
-DlgTableCaption : "Naslov tabele",
-DlgTableSummary : "Summary", //MISSING
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Osobine ćelije",
-DlgCellWidth : "Å irina",
-DlgCellWidthPx : "piksela",
-DlgCellWidthPc : "procenata",
-DlgCellHeight : "Visina",
-DlgCellWordWrap : "Deljenje reÄi",
-DlgCellWordWrapNotSet : "<nije postavljeno>",
-DlgCellWordWrapYes : "Da",
-DlgCellWordWrapNo : "Ne",
-DlgCellHorAlign : "Vodoravno ravnanje",
-DlgCellHorAlignNotSet : "<nije postavljeno>",
-DlgCellHorAlignLeft : "Levo",
-DlgCellHorAlignCenter : "Sredina",
-DlgCellHorAlignRight: "Desno",
-DlgCellVerAlign : "Vertikalno ravnanje",
-DlgCellVerAlignNotSet : "<nije postavljeno>",
-DlgCellVerAlignTop : "Gornje",
-DlgCellVerAlignMiddle : "Sredina",
-DlgCellVerAlignBottom : "Donje",
-DlgCellVerAlignBaseline : "Bazno",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Spajanje redova",
-DlgCellCollSpan : "Spajanje kolona",
-DlgCellBackColor : "Boja pozadine",
-DlgCellBorderColor : "Boja okvira",
-DlgCellBtnSelect : "Odaberi...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Pronađi",
-DlgFindFindBtn : "Pronađi",
-DlgFindNotFoundMsg : "Traženi tekst nije pronađen.",
-
-// Replace Dialog
-DlgReplaceTitle : "Zameni",
-DlgReplaceFindLbl : "Pronadi:",
-DlgReplaceReplaceLbl : "Zameni sa:",
-DlgReplaceCaseChk : "Razlikuj mala i velika slova",
-DlgReplaceReplaceBtn : "Zameni",
-DlgReplaceReplAllBtn : "Zameni sve",
-DlgReplaceWordChk : "Uporedi cele reci",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl+X).",
-PasteErrorCopy : "Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl+C).",
-
-PasteAsText : "Zalepi kao Äist tekst",
-PasteFromWord : "Zalepi iz Worda",
-
-DlgPasteMsg2 : "Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu preÄicu (<STRONG>Ctrl+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Ignoriši definicije fontova",
-DlgPasteRemoveStyles : "Ukloni definicije stilova",
-
-// Color Picker
-ColorAutomatic : "Automatski",
-ColorMoreColors : "Više boja...",
-
-// Document Properties
-DocProps : "Osobine dokumenta",
-
-// Anchor Dialog
-DlgAnchorTitle : "Osobine sidra",
-DlgAnchorName : "Ime sidra",
-DlgAnchorErrorName : "Unesite ime sidra",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Nije u reÄniku",
-DlgSpellChangeTo : "Izmeni",
-DlgSpellBtnIgnore : "Ignoriši",
-DlgSpellBtnIgnoreAll : "Ignoriši sve",
-DlgSpellBtnReplace : "Zameni",
-DlgSpellBtnReplaceAll : "Zameni sve",
-DlgSpellBtnUndo : "Vrati akciju",
-DlgSpellNoSuggestions : "- Bez sugestija -",
-DlgSpellProgress : "Provera spelovanja u toku...",
-DlgSpellNoMispell : "Provera spelovanja završena: greške nisu pronadene",
-DlgSpellNoChanges : "Provera spelovanja završena: Nije izmenjena nijedna rec",
-DlgSpellOneChange : "Provera spelovanja zavrÅ¡ena: Izmenjena je jedna reÄ",
-DlgSpellManyChanges : "Provera spelovanja zavrÅ¡ena: %1 reÄ(i) je izmenjeno",
-
-IeSpellDownload : "Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?",
-
-// Button Dialog
-DlgButtonText : "Tekst (vrednost)",
-DlgButtonType : "Tip",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Naziv",
-DlgCheckboxValue : "Vrednost",
-DlgCheckboxSelected : "OznaÄeno",
-
-// Form Dialog
-DlgFormName : "Naziv",
-DlgFormAction : "Akcija",
-DlgFormMethod : "Metoda",
-
-// Select Field Dialog
-DlgSelectName : "Naziv",
-DlgSelectValue : "Vrednost",
-DlgSelectSize : "VeliÄina",
-DlgSelectLines : "linija",
-DlgSelectChkMulti : "Dozvoli višestruku selekciju",
-DlgSelectOpAvail : "Dostupne opcije",
-DlgSelectOpText : "Tekst",
-DlgSelectOpValue : "Vrednost",
-DlgSelectBtnAdd : "Dodaj",
-DlgSelectBtnModify : "Izmeni",
-DlgSelectBtnUp : "Gore",
-DlgSelectBtnDown : "Dole",
-DlgSelectBtnSetValue : "Podesi kao oznaÄenu vrednost",
-DlgSelectBtnDelete : "Obriši",
-
-// Textarea Dialog
-DlgTextareaName : "Naziv",
-DlgTextareaCols : "Broj kolona",
-DlgTextareaRows : "Broj redova",
-
-// Text Field Dialog
-DlgTextName : "Naziv",
-DlgTextValue : "Vrednost",
-DlgTextCharWidth : "Å irina (karaktera)",
-DlgTextMaxChars : "Maksimalno karaktera",
-DlgTextType : "Tip",
-DlgTextTypeText : "Tekst",
-DlgTextTypePass : "Lozinka",
-
-// Hidden Field Dialog
-DlgHiddenName : "Naziv",
-DlgHiddenValue : "Vrednost",
-
-// Bulleted List Dialog
-BulletedListProp : "Osobine nenabrojive liste",
-NumberedListProp : "Osobine nabrojive liste",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Tip",
-DlgLstTypeCircle : "Krug",
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "Kvadrat",
-DlgLstTypeNumbers : "Brojevi (1, 2, 3)",
-DlgLstTypeLCase : "mala slova (a, b, c)",
-DlgLstTypeUCase : "VELIKA slova (A, B, C)",
-DlgLstTypeSRoman : "Male rimske cifre (i, ii, iii)",
-DlgLstTypeLRoman : "Velike rimske cifre (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Opšte osobine",
-DlgDocBackTab : "Pozadina",
-DlgDocColorsTab : "Boje i margine",
-DlgDocMetaTab : "Metapodaci",
-
-DlgDocPageTitle : "Naslov stranice",
-DlgDocLangDir : "Smer jezika",
-DlgDocLangDirLTR : "Sleva nadesno (LTR)",
-DlgDocLangDirRTL : "Zdesna nalevo (RTL)",
-DlgDocLangCode : "Å ifra jezika",
-DlgDocCharSet : "Kodiranje skupa karaktera",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "Ostala kodiranja skupa karaktera",
-
-DlgDocDocType : "Zaglavlje tipa dokumenta",
-DlgDocDocTypeOther : "Ostala zaglavlja tipa dokumenta",
-DlgDocIncXHTML : "Ukljuci XHTML deklaracije",
-DlgDocBgColor : "Boja pozadine",
-DlgDocBgImage : "URL pozadinske slike",
-DlgDocBgNoScroll : "Fiksirana pozadina",
-DlgDocCText : "Tekst",
-DlgDocCLink : "Link",
-DlgDocCVisited : "Posećeni link",
-DlgDocCActive : "Aktivni link",
-DlgDocMargins : "Margine stranice",
-DlgDocMaTop : "Gornja",
-DlgDocMaLeft : "Leva",
-DlgDocMaRight : "Desna",
-DlgDocMaBottom : "Donja",
-DlgDocMeIndex : "KljuÄne reci za indeksiranje dokumenta (razdvojene zarezima)",
-DlgDocMeDescr : "Opis dokumenta",
-DlgDocMeAuthor : "Autor",
-DlgDocMeCopy : "Autorska prava",
-DlgDocPreview : "Izgled stranice",
-
-// Templates Dialog
-Templates : "Obrasci",
-DlgTemplatesTitle : "Obrasci za sadržaj",
-DlgTemplatesSelMsg : "Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):",
-DlgTemplatesLoading : "UÄitavam listu obrazaca. Malo strpljenja...",
-DlgTemplatesNoTpl : "(Nema definisanih obrazaca)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "O editoru",
-DlgAboutBrowserInfoTab : "Informacije o pretraživacu",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "verzija",
-DlgAboutInfo : "Za više informacija posetite",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr.js
deleted file mode 100644
index 86353e069..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sr.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Serbian (Cyrillic) language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Смањи линију Ñа алаткама",
-ToolbarExpand : "Прошири линију Ñа алаткама",
-
-// Toolbar Items and Context Menu
-Save : "Сачувај",
-NewPage : "Ðова Ñтраница",
-Preview : "Изглед Ñтранице",
-Cut : "ИÑеци",
-Copy : "Копирај",
-Paste : "Залепи",
-PasteText : "Залепи као неформатиран текÑÑ‚",
-PasteWord : "Залепи из Worda",
-Print : "Штампа",
-SelectAll : "Означи Ñве",
-RemoveFormat : "Уклони форматирање",
-InsertLinkLbl : "Линк",
-InsertLink : "УнеÑи/измени линк",
-RemoveLink : "Уклони линк",
-VisitLink : "Open Link", //MISSING
-Anchor : "УнеÑи/измени Ñидро",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "Слика",
-InsertImage : "УнеÑи/измени Ñлику",
-InsertFlashLbl : "Флеш елемент",
-InsertFlash : "УнеÑи/измени флеш",
-InsertTableLbl : "Табела",
-InsertTable : "УнеÑи/измени табелу",
-InsertLineLbl : "Линија",
-InsertLine : "УнеÑи хоризонталну линију",
-InsertSpecialCharLbl: "Специјални карактери",
-InsertSpecialChar : "УнеÑи Ñпецијални карактер",
-InsertSmileyLbl : "Смајли",
-InsertSmiley : "УнеÑи Ñмајлија",
-About : "О ФЦКедитору",
-Bold : "Подебљано",
-Italic : "Курзив",
-Underline : "Подвучено",
-StrikeThrough : "Прецртано",
-Subscript : "ИндекÑ",
-Superscript : "Степен",
-LeftJustify : "Лево равнање",
-CenterJustify : "Центриран текÑÑ‚",
-RightJustify : "ДеÑно равнање",
-BlockJustify : "ОбоÑтрано равнање",
-DecreaseIndent : "Смањи леву маргину",
-IncreaseIndent : "Увећај леву маргину",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Поништи акцију",
-Redo : "Понови акцију",
-NumberedListLbl : "Ðабројиву лиÑту",
-NumberedList : "УнеÑи/уклони набројиву лиÑту",
-BulletedListLbl : "Ðенабројива лиÑта",
-BulletedList : "УнеÑи/уклони ненабројиву лиÑту",
-ShowTableBorders : "Прикажи оквир табеле",
-ShowDetails : "Прикажи детаље",
-Style : "Стил",
-FontFormat : "Формат",
-Font : "Фонт",
-FontSize : "Величина фонта",
-TextColor : "Боја текÑта",
-BGColor : "Боја позадине",
-Source : "Kôд",
-Find : "Претрага",
-Replace : "Замена",
-SpellCheck : "Провери Ñпеловање",
-UniversalKeyboard : "Универзална таÑтатура",
-PageBreakLbl : "Page Break", //MISSING
-PageBreak : "Insert Page Break", //MISSING
-
-Form : "Форма",
-Checkbox : "Поље за потврду",
-RadioButton : "Радио-дугме",
-TextField : "ТекÑтуално поље",
-Textarea : "Зона текÑта",
-HiddenField : "Скривено поље",
-Button : "Дугме",
-SelectionField : "Изборно поље",
-ImageButton : "Дугме Ñа Ñликом",
-
-FitWindow : "Maximize the editor size", //MISSING
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Промени линк",
-CellCM : "Cell", //MISSING
-RowCM : "Row", //MISSING
-ColumnCM : "Column", //MISSING
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "Обриши редове",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "Обриши колоне",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "Обриши ћелије",
-MergeCells : "Спој ћелије",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "Delete Table", //MISSING
-CellProperties : "ОÑобине ћелије",
-TableProperties : "ОÑобине табеле",
-ImageProperties : "ОÑобине Ñлике",
-FlashProperties : "ОÑобине Флеша",
-
-AnchorProp : "ОÑобине Ñидра",
-ButtonProp : "ОÑобине дугмета",
-CheckboxProp : "ОÑобине поља за потврду",
-HiddenFieldProp : "ОÑобине Ñкривеног поља",
-RadioButtonProp : "ОÑобине радио-дугмета",
-ImageButtonProp : "ОÑобине дугмета Ñа Ñликом",
-TextFieldProp : "ОÑобине текÑтуалног поља",
-SelectionFieldProp : "ОÑобине изборног поља",
-TextareaProp : "ОÑобине зоне текÑта",
-FormProp : "ОÑобине форме",
-
-FontFormats : "Normal;Formatirano;Adresa;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
-
-// Alerts and Messages
-ProcessingXHTML : "Обрађујем XHTML. Maлo Ñтрпљења...",
-Done : "Завршио",
-PasteWordConfirm : "ТекÑÑ‚ који желите да налепите копиран је из Worda. Да ли желите да буде очишћен од формата пре лепљења?",
-NotCompatiblePaste : "Ова команда је доÑтупна Ñамо за Интернет Екплорер од верзије 5.5. Да ли желите да налепим текÑÑ‚ без чишћења?",
-UnknownToolbarItem : "Ðепозната Ñтавка toolbara \"%1\"",
-UnknownCommand : "Ðепозната наредба \"%1\"",
-NotImplemented : "Ðаредба није имплементирана",
-UnknownToolbarSet : "Toolbar \"%1\" не поÑтоји",
-NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING
-BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING
-DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Oткажи",
-DlgBtnClose : "Затвори",
-DlgBtnBrowseServer : "Претражи Ñервер",
-DlgAdvancedTag : "Ðапредни тагови",
-DlgOpOther : "<ОÑтали>",
-DlgInfoTab : "Инфо",
-DlgAlertUrl : "Молимо ВаÑ, унеÑите УРЛ",
-
-// General Dialogs Labels
-DlgGenNotSet : "<није поÑтављено>",
-DlgGenId : "Ид",
-DlgGenLangDir : "Смер језика",
-DlgGenLangDirLtr : "С лева на деÑно (LTR)",
-DlgGenLangDirRtl : "С деÑна на лево (RTL)",
-DlgGenLangCode : "Kôд језика",
-DlgGenAccessKey : "ПриÑтупни таÑтер",
-DlgGenName : "Ðазив",
-DlgGenTabIndex : "Таб индекÑ",
-DlgGenLongDescr : "Пун Ð¾Ð¿Ð¸Ñ Ð£Ð Ð›",
-DlgGenClass : "Stylesheet клаÑе",
-DlgGenTitle : "Advisory наÑлов",
-DlgGenContType : "Advisory врÑта Ñадржаја",
-DlgGenLinkCharset : "Linked Resource Charset",
-DlgGenStyle : "Стил",
-
-// Image Dialog
-DlgImgTitle : "ОÑобине Ñлика",
-DlgImgInfoTab : "Инфо Ñлике",
-DlgImgBtnUpload : "Пошаљи на Ñервер",
-DlgImgURL : "УРЛ",
-DlgImgUpload : "Пошаљи",
-DlgImgAlt : "Ðлтернативни текÑÑ‚",
-DlgImgWidth : "Ширина",
-DlgImgHeight : "ВиÑина",
-DlgImgLockRatio : "Закључај одноÑ",
-DlgBtnResetSize : "РеÑетуј величину",
-DlgImgBorder : "Оквир",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Равнање",
-DlgImgAlignLeft : "Лево",
-DlgImgAlignAbsBottom: "Abs доле",
-DlgImgAlignAbsMiddle: "Abs Ñредина",
-DlgImgAlignBaseline : "Базно",
-DlgImgAlignBottom : "Доле",
-DlgImgAlignMiddle : "Средина",
-DlgImgAlignRight : "ДеÑно",
-DlgImgAlignTextTop : "Врх текÑта",
-DlgImgAlignTop : "Врх",
-DlgImgPreview : "Изглед",
-DlgImgAlertUrl : "УнеÑите УРЛ Ñлике",
-DlgImgLinkTab : "Линк",
-
-// Flash Dialog
-DlgFlashTitle : "ОÑобине флеша",
-DlgFlashChkPlay : "ÐутоматÑки Ñтарт",
-DlgFlashChkLoop : "Понављај",
-DlgFlashChkMenu : "Укључи флеш мени",
-DlgFlashScale : "Скалирај",
-DlgFlashScaleAll : "Прикажи Ñве",
-DlgFlashScaleNoBorder : "Без ивице",
-DlgFlashScaleFit : "Попуни површину",
-
-// Link Dialog
-DlgLnkWindowTitle : "Линк",
-DlgLnkInfoTab : "Линк инфо",
-DlgLnkTargetTab : "Мета",
-
-DlgLnkType : "Ð’Ñ€Ñта линка",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Сидро на овој Ñтраници",
-DlgLnkTypeEMail : "EлектронÑка пошта",
-DlgLnkProto : "Протокол",
-DlgLnkProtoOther : "<друго>",
-DlgLnkURL : "УРЛ",
-DlgLnkAnchorSel : "Одабери Ñидро",
-DlgLnkAnchorByName : "По називу Ñидра",
-DlgLnkAnchorById : "Пo Ид-jу елемента",
-DlgLnkNoAnchors : "(Ðема доÑтупних Ñидра)",
-DlgLnkEMail : "ÐдреÑа електронÑке поште",
-DlgLnkEMailSubject : "ÐаÑлов",
-DlgLnkEMailBody : "Садржај поруке",
-DlgLnkUpload : "Пошаљи",
-DlgLnkBtnUpload : "Пошаљи на Ñервер",
-
-DlgLnkTarget : "Meтa",
-DlgLnkTargetFrame : "<оквир>",
-DlgLnkTargetPopup : "<иÑкачући прозор>",
-DlgLnkTargetBlank : "Ðови прозор (_blank)",
-DlgLnkTargetParent : "РодитељÑки прозор (_parent)",
-DlgLnkTargetSelf : "ИÑти прозор (_self)",
-DlgLnkTargetTop : "Прозор на врху (_top)",
-DlgLnkTargetFrameName : "Ðазив одредишног фрејма",
-DlgLnkPopWinName : "Ðазив иÑкачућег прозора",
-DlgLnkPopWinFeat : "МогућноÑти иÑкачућег прозора",
-DlgLnkPopResize : "Променљива величина",
-DlgLnkPopLocation : "Локација",
-DlgLnkPopMenu : "КонтекÑтни мени",
-DlgLnkPopScroll : "Скрол бар",
-DlgLnkPopStatus : "СтатуÑна линија",
-DlgLnkPopToolbar : "Toolbar",
-DlgLnkPopFullScrn : "Приказ преко целог екрана (ИE)",
-DlgLnkPopDependent : "ЗавиÑно (Netscape)",
-DlgLnkPopWidth : "Ширина",
-DlgLnkPopHeight : "ВиÑина",
-DlgLnkPopLeft : "Од леве ивице екрана (пикÑела)",
-DlgLnkPopTop : "Од врха екрана (пикÑела)",
-
-DlnLnkMsgNoUrl : "УнеÑите УРЛ линка",
-DlnLnkMsgNoEMail : "Откуцајте адреÑу електронÑке поште",
-DlnLnkMsgNoAnchor : "Одаберите Ñидро",
-DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING
-
-// Color Dialog
-DlgColorTitle : "Одаберите боју",
-DlgColorBtnClear : "Обриши",
-DlgColorHighlight : "ПоÑветли",
-DlgColorSelected : "Одабери",
-
-// Smiley Dialog
-DlgSmileyTitle : "УнеÑи Ñмајлија",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Одаберите Ñпецијални карактер",
-
-// Table Dialog
-DlgTableTitle : "ОÑобине табеле",
-DlgTableRows : "Редова",
-DlgTableColumns : "Kолона",
-DlgTableBorder : "Величина оквира",
-DlgTableAlign : "Равнање",
-DlgTableAlignNotSet : "<није поÑтављено>",
-DlgTableAlignLeft : "Лево",
-DlgTableAlignCenter : "Средина",
-DlgTableAlignRight : "ДеÑно",
-DlgTableWidth : "Ширина",
-DlgTableWidthPx : "пикÑела",
-DlgTableWidthPc : "процената",
-DlgTableHeight : "ВиÑина",
-DlgTableCellSpace : "ЋелијÑки проÑтор",
-DlgTableCellPad : "Размак ћелија",
-DlgTableCaption : "ÐаÑлов табеле",
-DlgTableSummary : "Summary", //MISSING
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "ОÑобине ћелије",
-DlgCellWidth : "Ширина",
-DlgCellWidthPx : "пикÑела",
-DlgCellWidthPc : "процената",
-DlgCellHeight : "ВиÑина",
-DlgCellWordWrap : "Дељење речи",
-DlgCellWordWrapNotSet : "<није поÑтављено>",
-DlgCellWordWrapYes : "Да",
-DlgCellWordWrapNo : "Ðе",
-DlgCellHorAlign : "Водоравно равнање",
-DlgCellHorAlignNotSet : "<није поÑтављено>",
-DlgCellHorAlignLeft : "Лево",
-DlgCellHorAlignCenter : "Средина",
-DlgCellHorAlignRight: "ДеÑно",
-DlgCellVerAlign : "Вертикално равнање",
-DlgCellVerAlignNotSet : "<није поÑтављено>",
-DlgCellVerAlignTop : "Горње",
-DlgCellVerAlignMiddle : "Средина",
-DlgCellVerAlignBottom : "Доње",
-DlgCellVerAlignBaseline : "Базно",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Спајање редова",
-DlgCellCollSpan : "Спајање колона",
-DlgCellBackColor : "Боја позадине",
-DlgCellBorderColor : "Боја оквира",
-DlgCellBtnSelect : "Oдабери...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "Пронађи",
-DlgFindFindBtn : "Пронађи",
-DlgFindNotFoundMsg : "Тражени текÑÑ‚ није пронађен.",
-
-// Replace Dialog
-DlgReplaceTitle : "Замени",
-DlgReplaceFindLbl : "Пронађи:",
-DlgReplaceReplaceLbl : "Замени Ñа:",
-DlgReplaceCaseChk : "Разликуј велика и мала Ñлова",
-DlgReplaceReplaceBtn : "Замени",
-DlgReplaceReplAllBtn : "Замени Ñве",
-DlgReplaceWordChk : "Упореди целе речи",
-
-// Paste Operations / Dialog
-PasteErrorCut : "СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког иÑецања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl+X).",
-PasteErrorCopy : "СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког копирања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl+C).",
-
-PasteAsText : "Залепи као чиÑÑ‚ текÑÑ‚",
-PasteFromWord : "Залепи из Worda",
-
-DlgPasteMsg2 : "Молимо Ð’Ð°Ñ Ð´Ð° залепите унутар доње површине кориÑтећи таÑтатурну пречицу (<STRONG>Ctrl+V</STRONG>) и да притиÑнете <STRONG>OK</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Игнориши Font Face дефиниције",
-DlgPasteRemoveStyles : "Уклони дефиниције Ñтилова",
-
-// Color Picker
-ColorAutomatic : "ÐутоматÑки",
-ColorMoreColors : "Више боја...",
-
-// Document Properties
-DocProps : "ОÑобине документа",
-
-// Anchor Dialog
-DlgAnchorTitle : "ОÑобине Ñидра",
-DlgAnchorName : "Име Ñидра",
-DlgAnchorErrorName : "Молимо Ð’Ð°Ñ Ð´Ð° унеÑете име Ñидра",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ðије у речнику",
-DlgSpellChangeTo : "Измени",
-DlgSpellBtnIgnore : "Игнориши",
-DlgSpellBtnIgnoreAll : "Игнориши Ñве",
-DlgSpellBtnReplace : "Замени",
-DlgSpellBtnReplaceAll : "Замени Ñве",
-DlgSpellBtnUndo : "Врати акцију",
-DlgSpellNoSuggestions : "- Без ÑугеÑтија -",
-DlgSpellProgress : "Провера Ñпеловања у току...",
-DlgSpellNoMispell : "Провера Ñпеловања завршена: грешке ниÑу пронађене",
-DlgSpellNoChanges : "Провера Ñпеловања завршена: Ðије измењена ниједна реч",
-DlgSpellOneChange : "Провера Ñпеловања завршена: Измењена је једна реч",
-DlgSpellManyChanges : "Провера Ñпеловања завршена: %1 реч(и) је измењено",
-
-IeSpellDownload : "Провера Ñпеловања није инÑталирана. Да ли желите да је Ñкинете Ñа Интернета?",
-
-// Button Dialog
-DlgButtonText : "ТекÑÑ‚ (вредноÑÑ‚)",
-DlgButtonType : "Tип",
-DlgButtonTypeBtn : "Button", //MISSING
-DlgButtonTypeSbm : "Submit", //MISSING
-DlgButtonTypeRst : "Reset", //MISSING
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Ðазив",
-DlgCheckboxValue : "ВредноÑÑ‚",
-DlgCheckboxSelected : "Означено",
-
-// Form Dialog
-DlgFormName : "Ðазив",
-DlgFormAction : "Aкција",
-DlgFormMethod : "Mетода",
-
-// Select Field Dialog
-DlgSelectName : "Ðазив",
-DlgSelectValue : "ВредноÑÑ‚",
-DlgSelectSize : "Величина",
-DlgSelectLines : "линија",
-DlgSelectChkMulti : "Дозволи вишеÑтруку Ñелекцију",
-DlgSelectOpAvail : "ДоÑтупне опције",
-DlgSelectOpText : "ТекÑÑ‚",
-DlgSelectOpValue : "ВредноÑÑ‚",
-DlgSelectBtnAdd : "Додај",
-DlgSelectBtnModify : "Измени",
-DlgSelectBtnUp : "Горе",
-DlgSelectBtnDown : "Доле",
-DlgSelectBtnSetValue : "ПодеÑи као означену вредноÑÑ‚",
-DlgSelectBtnDelete : "Обриши",
-
-// Textarea Dialog
-DlgTextareaName : "Ðазив",
-DlgTextareaCols : "Број колона",
-DlgTextareaRows : "Број редова",
-
-// Text Field Dialog
-DlgTextName : "Ðазив",
-DlgTextValue : "ВредноÑÑ‚",
-DlgTextCharWidth : "Ширина (карактера)",
-DlgTextMaxChars : "МакÑимално карактера",
-DlgTextType : "Тип",
-DlgTextTypeText : "ТекÑÑ‚",
-DlgTextTypePass : "Лозинка",
-
-// Hidden Field Dialog
-DlgHiddenName : "Ðазив",
-DlgHiddenValue : "ВредноÑÑ‚",
-
-// Bulleted List Dialog
-BulletedListProp : "ОÑобине Bulleted лиÑте",
-NumberedListProp : "ОÑобине набројиве лиÑте",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "Тип",
-DlgLstTypeCircle : "Круг",
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "Квадрат",
-DlgLstTypeNumbers : "Бројеви (1, 2, 3)",
-DlgLstTypeLCase : "мала Ñлова (a, b, c)",
-DlgLstTypeUCase : "ВЕЛИКРСЛОВР(A, B, C)",
-DlgLstTypeSRoman : "Мале римÑке цифре (i, ii, iii)",
-DlgLstTypeLRoman : "Велике римÑке цифре (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Опште оÑобине",
-DlgDocBackTab : "Позадина",
-DlgDocColorsTab : "Боје и маргине",
-DlgDocMetaTab : "Метаподаци",
-
-DlgDocPageTitle : "ÐаÑлов Ñтранице",
-DlgDocLangDir : "Смер језика",
-DlgDocLangDirLTR : "Слева надеÑно (LTR)",
-DlgDocLangDirRTL : "ЗдеÑна налево (RTL)",
-DlgDocLangCode : "Шифра језика",
-DlgDocCharSet : "Кодирање Ñкупа карактера",
-DlgDocCharSetCE : "Central European", //MISSING
-DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING
-DlgDocCharSetCR : "Cyrillic", //MISSING
-DlgDocCharSetGR : "Greek", //MISSING
-DlgDocCharSetJP : "Japanese", //MISSING
-DlgDocCharSetKR : "Korean", //MISSING
-DlgDocCharSetTR : "Turkish", //MISSING
-DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING
-DlgDocCharSetWE : "Western European", //MISSING
-DlgDocCharSetOther : "ОÑтала кодирања Ñкупа карактера",
-
-DlgDocDocType : "Заглавље типа документа",
-DlgDocDocTypeOther : "ОÑтала заглавља типа документа",
-DlgDocIncXHTML : "Улључи XHTML декларације",
-DlgDocBgColor : "Боја позадине",
-DlgDocBgImage : "УРЛ позадинÑке Ñлике",
-DlgDocBgNoScroll : "ФикÑирана позадина",
-DlgDocCText : "ТекÑÑ‚",
-DlgDocCLink : "Линк",
-DlgDocCVisited : "ПоÑећени линк",
-DlgDocCActive : "Ðктивни линк",
-DlgDocMargins : "Маргине Ñтранице",
-DlgDocMaTop : "Горња",
-DlgDocMaLeft : "Лева",
-DlgDocMaRight : "ДеÑна",
-DlgDocMaBottom : "Доња",
-DlgDocMeIndex : "Кључне речи за индекÑирање документа (раздвојене зарезом)",
-DlgDocMeDescr : "ÐžÐ¿Ð¸Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°",
-DlgDocMeAuthor : "Ðутор",
-DlgDocMeCopy : "ÐуторÑка права",
-DlgDocPreview : "Изглед Ñтранице",
-
-// Templates Dialog
-Templates : "ОбраÑци",
-DlgTemplatesTitle : "ОбраÑци за Ñадржај",
-DlgTemplatesSelMsg : "Молимо Ð’Ð°Ñ Ð´Ð° одаберете образац који ће бити примењен на Ñтраницу (тренутни Ñадржај ће бити обриÑан):",
-DlgTemplatesLoading : "Учитавам лиÑту образаца. Мало Ñтрпљења...",
-DlgTemplatesNoTpl : "(Ðема дефиниÑаних образаца)",
-DlgTemplatesReplace : "Replace actual contents", //MISSING
-
-// About Dialog
-DlgAboutAboutTab : "О едитору",
-DlgAboutBrowserInfoTab : "Информације о претраживачу",
-DlgAboutLicenseTab : "License", //MISSING
-DlgAboutVersion : "верзија",
-DlgAboutInfo : "За више информација поÑетите",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sv.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sv.js
deleted file mode 100644
index 8a0217015..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/sv.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Swedish language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Dölj verktygsfält",
-ToolbarExpand : "Visa verktygsfält",
-
-// Toolbar Items and Context Menu
-Save : "Spara",
-NewPage : "Ny sida",
-Preview : "Förhandsgranska",
-Cut : "Klipp ut",
-Copy : "Kopiera",
-Paste : "Klistra in",
-PasteText : "Klistra in som text",
-PasteWord : "Klistra in från Word",
-Print : "Skriv ut",
-SelectAll : "Markera allt",
-RemoveFormat : "Radera formatering",
-InsertLinkLbl : "Länk",
-InsertLink : "Infoga/Redigera länk",
-RemoveLink : "Radera länk",
-VisitLink : "Open Link", //MISSING
-Anchor : "Infoga/Redigera ankarlänk",
-AnchorDelete : "Radera ankarlänk",
-InsertImageLbl : "Bild",
-InsertImage : "Infoga/Redigera bild",
-InsertFlashLbl : "Flash",
-InsertFlash : "Infoga/Redigera Flash",
-InsertTableLbl : "Tabell",
-InsertTable : "Infoga/Redigera tabell",
-InsertLineLbl : "Linje",
-InsertLine : "Infoga horisontal linje",
-InsertSpecialCharLbl: "Utökade tecken",
-InsertSpecialChar : "Klistra in utökat tecken",
-InsertSmileyLbl : "Smiley",
-InsertSmiley : "Infoga Smiley",
-About : "Om FCKeditor",
-Bold : "Fet",
-Italic : "Kursiv",
-Underline : "Understruken",
-StrikeThrough : "Genomstruken",
-Subscript : "Nedsänkta tecken",
-Superscript : "Upphöjda tecken",
-LeftJustify : "Vänsterjustera",
-CenterJustify : "Centrera",
-RightJustify : "Högerjustera",
-BlockJustify : "Justera till marginaler",
-DecreaseIndent : "Minska indrag",
-IncreaseIndent : "Öka indrag",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "Ã…ngra",
-Redo : "Gör om",
-NumberedListLbl : "Numrerad lista",
-NumberedList : "Infoga/Radera numrerad lista",
-BulletedListLbl : "Punktlista",
-BulletedList : "Infoga/Radera punktlista",
-ShowTableBorders : "Visa tabellkant",
-ShowDetails : "Visa radbrytningar",
-Style : "Anpassad stil",
-FontFormat : "Teckenformat",
-Font : "Typsnitt",
-FontSize : "Storlek",
-TextColor : "Textfärg",
-BGColor : "Bakgrundsfärg",
-Source : "Källa",
-Find : "Sök",
-Replace : "Ersätt",
-SpellCheck : "Stavningskontroll",
-UniversalKeyboard : "Universellt tangentbord",
-PageBreakLbl : "Sidbrytning",
-PageBreak : "Infoga sidbrytning",
-
-Form : "Formulär",
-Checkbox : "Kryssruta",
-RadioButton : "Alternativknapp",
-TextField : "Textfält",
-Textarea : "Textruta",
-HiddenField : "Dolt fält",
-Button : "Knapp",
-SelectionField : "Flervalslista",
-ImageButton : "Bildknapp",
-
-FitWindow : "Anpassa till fönstrets storlek",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "Redigera länk",
-CellCM : "Cell",
-RowCM : "Rad",
-ColumnCM : "Kolumn",
-InsertRowAfter : "Lägg till Rad Efter",
-InsertRowBefore : "Lägg till Rad Före",
-DeleteRows : "Radera rad",
-InsertColumnAfter : "Lägg till Kolumn Efter",
-InsertColumnBefore : "Lägg till Kolumn Före",
-DeleteColumns : "Radera kolumn",
-InsertCellAfter : "Lägg till Cell Efter",
-InsertCellBefore : "Lägg till Cell Före",
-DeleteCells : "Radera celler",
-MergeCells : "Sammanfoga celler",
-MergeRight : "Sammanfoga Höger",
-MergeDown : "Sammanfoga Ner",
-HorizontalSplitCell : "Dela Cell Horisontellt",
-VerticalSplitCell : "Dela Cell Vertikalt",
-TableDelete : "Radera tabell",
-CellProperties : "Cellegenskaper",
-TableProperties : "Tabellegenskaper",
-ImageProperties : "Bildegenskaper",
-FlashProperties : "Flashegenskaper",
-
-AnchorProp : "Egenskaper för ankarlänk",
-ButtonProp : "Egenskaper för knapp",
-CheckboxProp : "Egenskaper för kryssruta",
-HiddenFieldProp : "Egenskaper för dolt fält",
-RadioButtonProp : "Egenskaper för alternativknapp",
-ImageButtonProp : "Egenskaper för bildknapp",
-TextFieldProp : "Egenskaper för textfält",
-SelectionFieldProp : "Egenskaper för flervalslista",
-TextareaProp : "Egenskaper för textruta",
-FormProp : "Egenskaper för formulär",
-
-FontFormats : "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Bearbetar XHTML. Var god vänta...",
-Done : "Klar",
-PasteWordConfirm : "Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa innan du klistar in?",
-NotCompatiblePaste : "Denna åtgärd är inte tillgängligt för Internet Explorer version 5.5 eller högre. Vill du klistra in utan att rensa?",
-UnknownToolbarItem : "Okänt verktygsfält \"%1\"",
-UnknownCommand : "Okänt kommando \"%1\"",
-NotImplemented : "Kommandot finns ej",
-UnknownToolbarSet : "Verktygsfält \"%1\" finns ej",
-NoActiveX : "Din webläsares säkerhetsinställningar kan begränsa funktionaliteten. Du bör aktivera \"Kör ActiveX kontroller och plug-ins\". Fel och avsaknad av funktioner kan annars uppstå.",
-BrowseServerBlocked : "Kunde Ej öppna resursfönstret. Var god och avaktivera alla popup-blockerare.",
-DialogBlocked : "Kunde Ej öppna dialogfönstret. Var god och avaktivera alla popup-blockerare.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "OK",
-DlgBtnCancel : "Avbryt",
-DlgBtnClose : "Stäng",
-DlgBtnBrowseServer : "Bläddra på server",
-DlgAdvancedTag : "Avancerad",
-DlgOpOther : "Övrigt",
-DlgInfoTab : "Information",
-DlgAlertUrl : "Var god och ange en URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ej angivet>",
-DlgGenId : "Id",
-DlgGenLangDir : "Språkriktning",
-DlgGenLangDirLtr : "Vänster till Höger (VTH)",
-DlgGenLangDirRtl : "Höger till Vänster (HTV)",
-DlgGenLangCode : "Språkkod",
-DlgGenAccessKey : "Behörighetsnyckel",
-DlgGenName : "Namn",
-DlgGenTabIndex : "Tabindex",
-DlgGenLongDescr : "URL-beskrivning",
-DlgGenClass : "Stylesheet class",
-DlgGenTitle : "Titel",
-DlgGenContType : "Innehållstyp",
-DlgGenLinkCharset : "Teckenuppställning",
-DlgGenStyle : "Style",
-
-// Image Dialog
-DlgImgTitle : "Bildegenskaper",
-DlgImgInfoTab : "Bildinformation",
-DlgImgBtnUpload : "Skicka till server",
-DlgImgURL : "URL",
-DlgImgUpload : "Ladda upp",
-DlgImgAlt : "Alternativ text",
-DlgImgWidth : "Bredd",
-DlgImgHeight : "Höjd",
-DlgImgLockRatio : "Lås höjd/bredd förhållanden",
-DlgBtnResetSize : "Återställ storlek",
-DlgImgBorder : "Kant",
-DlgImgHSpace : "Horis. marginal",
-DlgImgVSpace : "Vert. marginal",
-DlgImgAlign : "Justering",
-DlgImgAlignLeft : "Vänster",
-DlgImgAlignAbsBottom: "Absolut nederkant",
-DlgImgAlignAbsMiddle: "Absolut centrering",
-DlgImgAlignBaseline : "Baslinje",
-DlgImgAlignBottom : "Nederkant",
-DlgImgAlignMiddle : "Mitten",
-DlgImgAlignRight : "Höger",
-DlgImgAlignTextTop : "Text överkant",
-DlgImgAlignTop : "Överkant",
-DlgImgPreview : "Förhandsgranska",
-DlgImgAlertUrl : "Var god och ange bildens URL",
-DlgImgLinkTab : "Länk",
-
-// Flash Dialog
-DlgFlashTitle : "Flashegenskaper",
-DlgFlashChkPlay : "Automatisk uppspelning",
-DlgFlashChkLoop : "Upprepa/Loopa",
-DlgFlashChkMenu : "Aktivera Flashmeny",
-DlgFlashScale : "Skala",
-DlgFlashScaleAll : "Visa allt",
-DlgFlashScaleNoBorder : "Ingen ram",
-DlgFlashScaleFit : "Exakt passning",
-
-// Link Dialog
-DlgLnkWindowTitle : "Länk",
-DlgLnkInfoTab : "Länkinformation",
-DlgLnkTargetTab : "MÃ¥l",
-
-DlgLnkType : "Länktyp",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Ankare i sidan",
-DlgLnkTypeEMail : "E-post",
-DlgLnkProto : "Protokoll",
-DlgLnkProtoOther : "<övrigt>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Välj ett ankare",
-DlgLnkAnchorByName : "efter ankarnamn",
-DlgLnkAnchorById : "efter objektid",
-DlgLnkNoAnchors : "(Inga ankare kunde hittas)",
-DlgLnkEMail : "E-postadress",
-DlgLnkEMailSubject : "Ämne",
-DlgLnkEMailBody : "Innehåll",
-DlgLnkUpload : "Ladda upp",
-DlgLnkBtnUpload : "Skicka till servern",
-
-DlgLnkTarget : "MÃ¥l",
-DlgLnkTargetFrame : "<ram>",
-DlgLnkTargetPopup : "<popup-fönster>",
-DlgLnkTargetBlank : "Nytt fönster (_blank)",
-DlgLnkTargetParent : "Föregående Window (_parent)",
-DlgLnkTargetSelf : "Detta fönstret (_self)",
-DlgLnkTargetTop : "Översta fönstret (_top)",
-DlgLnkTargetFrameName : "MÃ¥lets ramnamn",
-DlgLnkPopWinName : "Popup-fönstrets namn",
-DlgLnkPopWinFeat : "Popup-fönstrets egenskaper",
-DlgLnkPopResize : "Kan ändra storlek",
-DlgLnkPopLocation : "Adressfält",
-DlgLnkPopMenu : "Menyfält",
-DlgLnkPopScroll : "Scrolllista",
-DlgLnkPopStatus : "Statusfält",
-DlgLnkPopToolbar : "Verktygsfält",
-DlgLnkPopFullScrn : "Helskärm (endast IE)",
-DlgLnkPopDependent : "Beroende (endest Netscape)",
-DlgLnkPopWidth : "Bredd",
-DlgLnkPopHeight : "Höjd",
-DlgLnkPopLeft : "Position från vänster",
-DlgLnkPopTop : "Position från sidans topp",
-
-DlnLnkMsgNoUrl : "Var god ange länkens URL",
-DlnLnkMsgNoEMail : "Var god ange E-postadress",
-DlnLnkMsgNoAnchor : "Var god ange ett ankare",
-DlnLnkMsgInvPopName : "Popup-rutans namn måste börja med en alfabetisk bokstav och får inte innehålla mellanslag",
-
-// Color Dialog
-DlgColorTitle : "Välj färg",
-DlgColorBtnClear : "Rensa",
-DlgColorHighlight : "Markera",
-DlgColorSelected : "Vald",
-
-// Smiley Dialog
-DlgSmileyTitle : "Infoga smiley",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Välj utökat tecken",
-
-// Table Dialog
-DlgTableTitle : "Tabellegenskaper",
-DlgTableRows : "Rader",
-DlgTableColumns : "Kolumner",
-DlgTableBorder : "Kantstorlek",
-DlgTableAlign : "Justering",
-DlgTableAlignNotSet : "<ej angivet>",
-DlgTableAlignLeft : "Vänster",
-DlgTableAlignCenter : "Centrerad",
-DlgTableAlignRight : "Höger",
-DlgTableWidth : "Bredd",
-DlgTableWidthPx : "pixlar",
-DlgTableWidthPc : "procent",
-DlgTableHeight : "Höjd",
-DlgTableCellSpace : "Cellavstånd",
-DlgTableCellPad : "Cellutfyllnad",
-DlgTableCaption : "Rubrik",
-DlgTableSummary : "Sammanfattning",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Cellegenskaper",
-DlgCellWidth : "Bredd",
-DlgCellWidthPx : "pixlar",
-DlgCellWidthPc : "procent",
-DlgCellHeight : "Höjd",
-DlgCellWordWrap : "Automatisk radbrytning",
-DlgCellWordWrapNotSet : "<Ej angivet>",
-DlgCellWordWrapYes : "Ja",
-DlgCellWordWrapNo : "Nej",
-DlgCellHorAlign : "Horisontal justering",
-DlgCellHorAlignNotSet : "<Ej angivet>",
-DlgCellHorAlignLeft : "Vänster",
-DlgCellHorAlignCenter : "Centrerad",
-DlgCellHorAlignRight: "Höger",
-DlgCellVerAlign : "Vertikal justering",
-DlgCellVerAlignNotSet : "<Ej angivet>",
-DlgCellVerAlignTop : "Topp",
-DlgCellVerAlignMiddle : "Mitten",
-DlgCellVerAlignBottom : "Nederkant",
-DlgCellVerAlignBaseline : "Underst",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Radomfång",
-DlgCellCollSpan : "Kolumnomfång",
-DlgCellBackColor : "Bakgrundsfärg",
-DlgCellBorderColor : "Kantfärg",
-DlgCellBtnSelect : "Välj...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Sök och ersätt",
-
-// Find Dialog
-DlgFindTitle : "Sök",
-DlgFindFindBtn : "Sök",
-DlgFindNotFoundMsg : "Angiven text kunde ej hittas.",
-
-// Replace Dialog
-DlgReplaceTitle : "Ersätt",
-DlgReplaceFindLbl : "Sök efter:",
-DlgReplaceReplaceLbl : "Ersätt med:",
-DlgReplaceCaseChk : "Skiftläge",
-DlgReplaceReplaceBtn : "Ersätt",
-DlgReplaceReplAllBtn : "Ersätt alla",
-DlgReplaceWordChk : "Inkludera hela ord",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.",
-PasteErrorCopy : "Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället",
-
-PasteAsText : "Klistra in som vanlig text",
-PasteFromWord : "Klistra in från Word",
-
-DlgPasteMsg2 : "Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.",
-DlgPasteSec : "På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.",
-DlgPasteIgnoreFont : "Ignorera typsnittsdefinitioner",
-DlgPasteRemoveStyles : "Radera Stildefinitioner",
-
-// Color Picker
-ColorAutomatic : "Automatisk",
-ColorMoreColors : "Fler färger...",
-
-// Document Properties
-DocProps : "Dokumentegenskaper",
-
-// Anchor Dialog
-DlgAnchorTitle : "Ankaregenskaper",
-DlgAnchorName : "Ankarnamn",
-DlgAnchorErrorName : "Var god ange ett ankarnamn",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Saknas i ordlistan",
-DlgSpellChangeTo : "Ändra till",
-DlgSpellBtnIgnore : "Ignorera",
-DlgSpellBtnIgnoreAll : "Ignorera alla",
-DlgSpellBtnReplace : "Ersätt",
-DlgSpellBtnReplaceAll : "Ersätt alla",
-DlgSpellBtnUndo : "Ã…ngra",
-DlgSpellNoSuggestions : "- Förslag saknas -",
-DlgSpellProgress : "Stavningskontroll pågår...",
-DlgSpellNoMispell : "Stavningskontroll slutförd: Inga stavfel påträffades.",
-DlgSpellNoChanges : "Stavningskontroll slutförd: Inga ord rättades.",
-DlgSpellOneChange : "Stavningskontroll slutförd: Ett ord rättades.",
-DlgSpellManyChanges : "Stavningskontroll slutförd: %1 ord rättades.",
-
-IeSpellDownload : "Stavningskontrollen är ej installerad. Vill du göra det nu?",
-
-// Button Dialog
-DlgButtonText : "Text (Värde)",
-DlgButtonType : "Typ",
-DlgButtonTypeBtn : "Knapp",
-DlgButtonTypeSbm : "Skicka",
-DlgButtonTypeRst : "Återställ",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Namn",
-DlgCheckboxValue : "Värde",
-DlgCheckboxSelected : "Vald",
-
-// Form Dialog
-DlgFormName : "Namn",
-DlgFormAction : "Funktion",
-DlgFormMethod : "Metod",
-
-// Select Field Dialog
-DlgSelectName : "Namn",
-DlgSelectValue : "Värde",
-DlgSelectSize : "Storlek",
-DlgSelectLines : "Linjer",
-DlgSelectChkMulti : "Tillåt flerval",
-DlgSelectOpAvail : "Befintliga val",
-DlgSelectOpText : "Text",
-DlgSelectOpValue : "Värde",
-DlgSelectBtnAdd : "Lägg till",
-DlgSelectBtnModify : "Redigera",
-DlgSelectBtnUp : "Upp",
-DlgSelectBtnDown : "Ner",
-DlgSelectBtnSetValue : "Markera som valt värde",
-DlgSelectBtnDelete : "Radera",
-
-// Textarea Dialog
-DlgTextareaName : "Namn",
-DlgTextareaCols : "Kolumner",
-DlgTextareaRows : "Rader",
-
-// Text Field Dialog
-DlgTextName : "Namn",
-DlgTextValue : "Värde",
-DlgTextCharWidth : "Teckenbredd",
-DlgTextMaxChars : "Max antal tecken",
-DlgTextType : "Typ",
-DlgTextTypeText : "Text",
-DlgTextTypePass : "Lösenord",
-
-// Hidden Field Dialog
-DlgHiddenName : "Namn",
-DlgHiddenValue : "Värde",
-
-// Bulleted List Dialog
-BulletedListProp : "Egenskaper för punktlista",
-NumberedListProp : "Egenskaper för numrerad lista",
-DlgLstStart : "Start",
-DlgLstType : "Typ",
-DlgLstTypeCircle : "Cirkel",
-DlgLstTypeDisc : "Punkt",
-DlgLstTypeSquare : "Ruta",
-DlgLstTypeNumbers : "Nummer (1, 2, 3)",
-DlgLstTypeLCase : "Gemener (a, b, c)",
-DlgLstTypeUCase : "Versaler (A, B, C)",
-DlgLstTypeSRoman : "Små romerska siffror (i, ii, iii)",
-DlgLstTypeLRoman : "Stora romerska siffror (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Allmän",
-DlgDocBackTab : "Bakgrund",
-DlgDocColorsTab : "Färg och marginal",
-DlgDocMetaTab : "Metadata",
-
-DlgDocPageTitle : "Sidtitel",
-DlgDocLangDir : "Språkriktning",
-DlgDocLangDirLTR : "Vänster till Höger",
-DlgDocLangDirRTL : "Höger till Vänster",
-DlgDocLangCode : "Språkkod",
-DlgDocCharSet : "Teckenuppsättningar",
-DlgDocCharSetCE : "Central Europa",
-DlgDocCharSetCT : "Traditionell Kinesisk (Big5)",
-DlgDocCharSetCR : "Kyrillisk",
-DlgDocCharSetGR : "Grekiska",
-DlgDocCharSetJP : "Japanska",
-DlgDocCharSetKR : "Koreanska",
-DlgDocCharSetTR : "Turkiska",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Väst Europa",
-DlgDocCharSetOther : "Övriga teckenuppsättningar",
-
-DlgDocDocType : "Sidhuvud",
-DlgDocDocTypeOther : "Övriga sidhuvuden",
-DlgDocIncXHTML : "Inkludera XHTML deklaration",
-DlgDocBgColor : "Bakgrundsfärg",
-DlgDocBgImage : "Bakgrundsbildens URL",
-DlgDocBgNoScroll : "Fast bakgrund",
-DlgDocCText : "Text",
-DlgDocCLink : "Länk",
-DlgDocCVisited : "Besökt länk",
-DlgDocCActive : "Aktiv länk",
-DlgDocMargins : "Sidmarginal",
-DlgDocMaTop : "Topp",
-DlgDocMaLeft : "Vänster",
-DlgDocMaRight : "Höger",
-DlgDocMaBottom : "Botten",
-DlgDocMeIndex : "Sidans nyckelord",
-DlgDocMeDescr : "Sidans beskrivning",
-DlgDocMeAuthor : "Författare",
-DlgDocMeCopy : "Upphovsrätt",
-DlgDocPreview : "Förhandsgranska",
-
-// Templates Dialog
-Templates : "Sidmallar",
-DlgTemplatesTitle : "Sidmallar",
-DlgTemplatesSelMsg : "Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):",
-DlgTemplatesLoading : "Laddar mallar. Var god vänta...",
-DlgTemplatesNoTpl : "(Ingen mall är vald)",
-DlgTemplatesReplace : "Ersätt aktuellt innehåll",
-
-// About Dialog
-DlgAboutAboutTab : "Om",
-DlgAboutBrowserInfoTab : "Webläsare",
-DlgAboutLicenseTab : "Licens",
-DlgAboutVersion : "version",
-DlgAboutInfo : "För mer information se",
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/th.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/th.js
deleted file mode 100644
index 17da6be09..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/th.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Thai language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "ซ่อนà¹à¸–บเครื่องมือ",
-ToolbarExpand : "à¹à¸ªà¸”งà¹à¸–บเครื่องมือ",
-
-// Toolbar Items and Context Menu
-Save : "บันทึà¸",
-NewPage : "สร้างหน้าเอà¸à¸ªà¸²à¸£à¹ƒà¸«à¸¡à¹ˆ",
-Preview : "ดูหน้าเอà¸à¸ªà¸²à¸£à¸•ัวอย่าง",
-Cut : "ตัด",
-Copy : "สำเนา",
-Paste : "วาง",
-PasteText : "วางสำเนาจาà¸à¸•ัวอัà¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า",
-PasteWord : "วางสำเนาจาà¸à¸•ัวอัà¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”",
-Print : "สั่งพิมพ์",
-SelectAll : "เลือà¸à¸—ั้งหมด",
-RemoveFormat : "ล้างรูปà¹à¸šà¸š",
-InsertLinkLbl : "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
-InsertLink : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข ลิงค์",
-RemoveLink : "ลบ ลิงค์",
-VisitLink : "Open Link", //MISSING
-Anchor : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข Anchor",
-AnchorDelete : "Remove Anchor", //MISSING
-InsertImageLbl : "รูปภาพ",
-InsertImage : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข รูปภาพ",
-InsertFlashLbl : "ไฟล์ Flash",
-InsertFlash : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข ไฟล์ Flash",
-InsertTableLbl : "ตาราง",
-InsertTable : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข ตาราง",
-InsertLineLbl : "เส้นคั่นบรรทัด",
-InsertLine : "à¹à¸—รà¸à¹€à¸ªà¹‰à¸™à¸„ั่นบรรทัด",
-InsertSpecialCharLbl: "ตัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©",
-InsertSpecialChar : "à¹à¸—รà¸à¸•ัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©",
-InsertSmileyLbl : "รูปสื่ออารมณ์",
-InsertSmiley : "à¹à¸—รà¸à¸£à¸¹à¸›à¸ªà¸·à¹ˆà¸­à¸­à¸²à¸£à¸¡à¸“์",
-About : "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¹‚ปรà¹à¸à¸£à¸¡ FCKeditor",
-Bold : "ตัวหนา",
-Italic : "ตัวเอียง",
-Underline : "ตัวขีดเส้นใต้",
-StrikeThrough : "ตัวขีดเส้นทับ",
-Subscript : "ตัวห้อย",
-Superscript : "ตัวยà¸",
-LeftJustify : "จัดชิดซ้าย",
-CenterJustify : "จัดà¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡",
-RightJustify : "จัดชิดขวา",
-BlockJustify : "จัดพอดีหน้าà¸à¸£à¸°à¸”าษ",
-DecreaseIndent : "ลดระยะย่อหน้า",
-IncreaseIndent : "เพิ่มระยะย่อหน้า",
-Blockquote : "Blockquote", //MISSING
-CreateDiv : "Create Div Container", //MISSING
-EditDiv : "Edit Div Container", //MISSING
-DeleteDiv : "Remove Div Container", //MISSING
-Undo : "ยà¸à¹€à¸¥à¸´à¸à¸„ำสั่ง",
-Redo : "ทำซ้ำคำสั่ง",
-NumberedListLbl : "ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸•ัวเลข",
-NumberedList : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸•ัวเลข",
-BulletedListLbl : "ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์",
-BulletedList : "à¹à¸—รà¸/à¹à¸à¹‰à¹„ข ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์",
-ShowTableBorders : "à¹à¸ªà¸”งขอบของตาราง",
-ShowDetails : "à¹à¸ªà¸”งรายละเอียด",
-Style : "ลัà¸à¸©à¸“ะ",
-FontFormat : "รูปà¹à¸šà¸š",
-Font : "à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£",
-FontSize : "ขนาด",
-TextColor : "สีตัวอัà¸à¸©à¸£",
-BGColor : "สีพื้นหลัง",
-Source : "ดูรหัส HTML",
-Find : "ค้นหา",
-Replace : "ค้นหาà¹à¸¥à¸°à¹à¸—นที่",
-SpellCheck : "ตรวจà¸à¸²à¸£à¸ªà¸°à¸à¸”คำ",
-UniversalKeyboard : "คีย์บอร์ดหลาà¸à¸ à¸²à¸©à¸²",
-PageBreakLbl : "ใส่ตัวà¹à¸šà¹ˆà¸‡à¸«à¸™à¹‰à¸² Page Break",
-PageBreak : "à¹à¸—รà¸à¸•ัวà¹à¸šà¹ˆà¸‡à¸«à¸™à¹‰à¸² Page Break",
-
-Form : "à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡",
-Checkbox : "เช็คบ๊อà¸",
-RadioButton : "เรดิโอบัตตอน",
-TextField : "เท็à¸à¸‹à¹Œà¸Ÿà¸´à¸¥à¸”์",
-Textarea : "เท็à¸à¸‹à¹Œà¹à¸­à¹€à¸£à¸µà¸¢",
-HiddenField : "ฮิดเดนฟิลด์",
-Button : "ปุ่ม",
-SelectionField : "à¹à¸–บตัวเลือà¸",
-ImageButton : "ปุ่มà¹à¸šà¸šà¸£à¸¹à¸›à¸ à¸²à¸ž",
-
-FitWindow : "ขยายขนาดตัวอีดิตเตอร์",
-ShowBlocks : "Show Blocks", //MISSING
-
-// Context Menu
-EditLink : "à¹à¸à¹‰à¹„ข ลิงค์",
-CellCM : "ช่องตาราง",
-RowCM : "à¹à¸–ว",
-ColumnCM : "คอลัมน์",
-InsertRowAfter : "Insert Row After", //MISSING
-InsertRowBefore : "Insert Row Before", //MISSING
-DeleteRows : "ลบà¹à¸–ว",
-InsertColumnAfter : "Insert Column After", //MISSING
-InsertColumnBefore : "Insert Column Before", //MISSING
-DeleteColumns : "ลบสดมน์",
-InsertCellAfter : "Insert Cell After", //MISSING
-InsertCellBefore : "Insert Cell Before", //MISSING
-DeleteCells : "ลบช่อง",
-MergeCells : "ผสานช่อง",
-MergeRight : "Merge Right", //MISSING
-MergeDown : "Merge Down", //MISSING
-HorizontalSplitCell : "Split Cell Horizontally", //MISSING
-VerticalSplitCell : "Split Cell Vertically", //MISSING
-TableDelete : "ลบตาราง",
-CellProperties : "คุณสมบัติของช่อง",
-TableProperties : "คุณสมบัติของตาราง",
-ImageProperties : "คุณสมบัติของรูปภาพ",
-FlashProperties : "คุณสมบัติของไฟล์ Flash",
-
-AnchorProp : "รายละเอียด Anchor",
-ButtonProp : "รายละเอียดของ ปุ่ม",
-CheckboxProp : "คุณสมบัติของ เช็คบ๊อà¸",
-HiddenFieldProp : "คุณสมบัติของ ฮิดเดนฟิลด์",
-RadioButtonProp : "คุณสมบัติของ เรดิโอบัตตอน",
-ImageButtonProp : "คุณสมบัติของ ปุ่มà¹à¸šà¸šà¸£à¸¹à¸›à¸ à¸²à¸ž",
-TextFieldProp : "คุณสมบัติของ เท็à¸à¸‹à¹Œà¸Ÿà¸´à¸¥à¸”์",
-SelectionFieldProp : "คุณสมบัติของ à¹à¸–บตัวเลือà¸",
-TextareaProp : "คุณสมบัติของ เท็à¸à¹à¸­à¹€à¸£à¸µà¸¢",
-FormProp : "คุณสมบัติของ à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "โปรà¹à¸à¸£à¸¡à¸à¸³à¸¥à¸±à¸‡à¸—ำงานด้วยเทคโนโลยี XHTML à¸à¸£à¸¸à¸“ารอสัà¸à¸„รู่...",
-Done : "โปรà¹à¸à¸£à¸¡à¸—ำงานเสร็จสมบูรณ์",
-PasteWordConfirm : "ข้อมูลที่ท่านต้องà¸à¸²à¸£à¸§à¸²à¸‡à¸¥à¸‡à¹ƒà¸™à¹à¸œà¹ˆà¸™à¸‡à¸²à¸™ ถูà¸à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸ˆà¸²à¸à¹‚ปรà¹à¸à¸£à¸¡à¹€à¸§à¸´à¸£à¹Œà¸”. ท่านต้องà¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¸£à¸¹à¸›à¹à¸šà¸šà¸—ี่มาจาà¸à¹‚ปรà¹à¸à¸£à¸¡à¹€à¸§à¸´à¸£à¹Œà¸”หรือไม่?",
-NotCompatiblePaste : "คำสั่งนี้ทำงานในโปรà¹à¸à¸£à¸¡à¸—่องเว็บ Internet Explorer version รุ่น 5.5 หรือใหม่à¸à¸§à¹ˆà¸²à¹€à¸—่านั้น. ท่านต้องà¸à¸²à¸£à¸§à¸²à¸‡à¸•ัวอัà¸à¸©à¸£à¹‚ดยไม่ล้างรูปà¹à¸šà¸šà¸—ี่มาจาà¸à¹‚ปรà¹à¸à¸£à¸¡à¹€à¸§à¸´à¸£à¹Œà¸”หรือไม่?",
-UnknownToolbarItem : "ไม่สามารถระบุปุ่มเครื่องมือได้ \"%1\"",
-UnknownCommand : "ไม่สามารถระบุชื่อคำสั่งได้ \"%1\"",
-NotImplemented : "ไม่สามารถใช้งานคำสั่งได้",
-UnknownToolbarSet : "ไม่มีà¸à¸²à¸£à¸•ิดตั้งชุดคำสั่งในà¹à¸–บเครื่องมือ \"%1\" à¸à¸£à¸¸à¸“าติดต่อผู้ดูà¹à¸¥à¸£à¸°à¸šà¸š",
-NoActiveX : "โปรà¹à¸à¸£à¸¡à¸—่องอินเตอร์เน็ตของท่านไม่อนุà¸à¸²à¸•ิให้อีดิตเตอร์ทำงาน \"Run ActiveX controls and plug-ins\". หาà¸à¹„ม่อนุà¸à¸²à¸•ิให้ใช้งาน ActiveX controls ท่านจะไม่สามารถใช้งานได้อย่างเต็มประสิทธิภาพ.",
-BrowseServerBlocked : "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ à¸à¸£à¸¸à¸“าปิดเครื่องมือป้องà¸à¸±à¸™à¸›à¹Šà¸­à¸šà¸­à¸±à¸žà¹ƒà¸™à¹‚ปรà¹à¸à¸£à¸¡à¸—่องอินเตอร์เน็ตของท่านด้วย",
-DialogBlocked : "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ à¸à¸£à¸¸à¸“าปิดเครื่องมือป้องà¸à¸±à¸™à¸›à¹Šà¸­à¸šà¸­à¸±à¸žà¹ƒà¸™à¹‚ปรà¹à¸à¸£à¸¡à¸—่องอินเตอร์เน็ตของท่านด้วย",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "ตà¸à¸¥à¸‡",
-DlgBtnCancel : "ยà¸à¹€à¸¥à¸´à¸",
-DlgBtnClose : "ปิด",
-DlgBtnBrowseServer : "เปิดหน้าต่างจัดà¸à¸²à¸£à¹„ฟล์อัพโหลด",
-DlgAdvancedTag : "ขั้นสูง",
-DlgOpOther : "<อื่นๆ>",
-DlgInfoTab : "อินโฟ",
-DlgAlertUrl : "à¸à¸£à¸¸à¸“าระบุ URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<ไม่ระบุ>",
-DlgGenId : "ไอดี",
-DlgGenLangDir : "à¸à¸²à¸£à¹€à¸‚ียน-อ่านภาษา",
-DlgGenLangDirLtr : "จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)",
-DlgGenLangDirRtl : "จาà¸à¸‚วามาซ้าย (RTL)",
-DlgGenLangCode : "รหัสภาษา",
-DlgGenAccessKey : "à¹à¸­à¸„เซส คีย์",
-DlgGenName : "ชื่อ",
-DlgGenTabIndex : "ลำดับของ à¹à¸—็บ",
-DlgGenLongDescr : "คำอธิบายประà¸à¸­à¸š URL",
-DlgGenClass : "คลาสของไฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล",
-DlgGenTitle : "คำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³",
-DlgGenContType : "ชนิดของคำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³",
-DlgGenLinkCharset : "ลิงค์เชื่อมโยงไปยังชุดตัวอัà¸à¸©à¸£",
-DlgGenStyle : "ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล",
-
-// Image Dialog
-DlgImgTitle : "คุณสมบัติของ รูปภาพ",
-DlgImgInfoTab : "ข้อมูลของรูปภาพ",
-DlgImgBtnUpload : "อัพโหลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่องà¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวอร์)",
-DlgImgURL : "ที่อยู่อ้างอิง URL",
-DlgImgUpload : "อัพโหลดไฟล์",
-DlgImgAlt : "คำประà¸à¸­à¸šà¸£à¸¹à¸›à¸ à¸²à¸ž",
-DlgImgWidth : "ความà¸à¸§à¹‰à¸²à¸‡",
-DlgImgHeight : "ความสูง",
-DlgImgLockRatio : "à¸à¸³à¸«à¸™à¸”อัตราส่วน à¸à¸§à¹‰à¸²à¸‡-สูง à¹à¸šà¸šà¸„งที่",
-DlgBtnResetSize : "à¸à¸³à¸«à¸™à¸”รูปเท่าขนาดจริง",
-DlgImgBorder : "ขนาดขอบรูป",
-DlgImgHSpace : "ระยะà¹à¸™à¸§à¸™à¸­à¸™",
-DlgImgVSpace : "ระยะà¹à¸™à¸§à¸•ั้ง",
-DlgImgAlign : "à¸à¸²à¸£à¸ˆà¸±à¸”วาง",
-DlgImgAlignLeft : "ชิดซ้าย",
-DlgImgAlignAbsBottom: "ชิดด้านล่างสุด",
-DlgImgAlignAbsMiddle: "à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡",
-DlgImgAlignBaseline : "ชิดบรรทัด",
-DlgImgAlignBottom : "ชิดด้านล่าง",
-DlgImgAlignMiddle : "à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡à¹à¸™à¸§à¸•ั้ง",
-DlgImgAlignRight : "ชิดขวา",
-DlgImgAlignTextTop : "ใต้ตัวอัà¸à¸©à¸£",
-DlgImgAlignTop : "บนสุด",
-DlgImgPreview : "หน้าเอà¸à¸ªà¸²à¸£à¸•ัวอย่าง",
-DlgImgAlertUrl : "à¸à¸£à¸¸à¸“าระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)",
-DlgImgLinkTab : "ลิ้งค์",
-
-// Flash Dialog
-DlgFlashTitle : "คุณสมบัติของไฟล์ Flash",
-DlgFlashChkPlay : "เล่นอัตโนมัติ Auto Play",
-DlgFlashChkLoop : "เล่นวนรอบ Loop",
-DlgFlashChkMenu : "ให้ใช้งานเมนูของ Flash",
-DlgFlashScale : "อัตราส่วน Scale",
-DlgFlashScaleAll : "à¹à¸ªà¸”งให้เห็นทั้งหมด Show all",
-DlgFlashScaleNoBorder : "ไม่à¹à¸ªà¸”งเส้นขอบ No Border",
-DlgFlashScaleFit : "à¹à¸ªà¸”งให้พอดีà¸à¸±à¸šà¸žà¸·à¹‰à¸™à¸—ี่ Exact Fit",
-
-// Link Dialog
-DlgLnkWindowTitle : "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ",
-DlgLnkInfoTab : "รายละเอียด",
-DlgLnkTargetTab : "à¸à¸²à¸£à¹€à¸›à¸´à¸”หน้าจอ",
-
-DlgLnkType : "ประเภทของลิงค์",
-DlgLnkTypeURL : "ที่อยู่อ้างอิงออนไลน์ (URL)",
-DlgLnkTypeAnchor : "จุดเชื่อมโยง (Anchor)",
-DlgLnkTypeEMail : "ส่งอีเมล์ (E-Mail)",
-DlgLnkProto : "โปรโตคอล",
-DlgLnkProtoOther : "<อื่นๆ>",
-DlgLnkURL : "ที่อยู่อ้างอิงออนไลน์ (URL)",
-DlgLnkAnchorSel : "ระบุข้อมูลของจุดเชื่อมโยง (Anchor)",
-DlgLnkAnchorByName : "ชื่อ",
-DlgLnkAnchorById : "ไอดี",
-DlgLnkNoAnchors : "(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอà¸à¸ªà¸²à¸£à¸™à¸µà¹‰)",
-DlgLnkEMail : "อีเมล์ (E-Mail)",
-DlgLnkEMailSubject : "หัวเรื่อง",
-DlgLnkEMailBody : "ข้อความ",
-DlgLnkUpload : "อัพโหลดไฟล์",
-DlgLnkBtnUpload : "บันทึà¸à¹„ฟล์ไว้บนเซิร์ฟเวอร์",
-
-DlgLnkTarget : "à¸à¸²à¸£à¹€à¸›à¸´à¸”หน้าลิงค์",
-DlgLnkTargetFrame : "<เปิดในเฟรม>",
-DlgLnkTargetPopup : "<เปิดหน้าจอเล็ภ(Pop-up)>",
-DlgLnkTargetBlank : "เปิดหน้าจอใหม่ (_blank)",
-DlgLnkTargetParent : "เปิดในหน้าหลัภ(_parent)",
-DlgLnkTargetSelf : "เปิดในหน้าปัจจุบัน (_self)",
-DlgLnkTargetTop : "เปิดในหน้าบนสุด (_top)",
-DlgLnkTargetFrameName : "ชื่อทาร์เà¸à¹‡à¸•เฟรม",
-DlgLnkPopWinName : "ระบุชื่อหน้าจอเล็ภ(Pop-up)",
-DlgLnkPopWinFeat : "คุณสมบัติของหน้าจอเล็ภ(Pop-up)",
-DlgLnkPopResize : "ปรับขนาดหน้าจอ",
-DlgLnkPopLocation : "à¹à¸ªà¸”งที่อยู่ของไฟล์",
-DlgLnkPopMenu : "à¹à¸ªà¸”งà¹à¸–บเมนู",
-DlgLnkPopScroll : "à¹à¸ªà¸”งà¹à¸–บเลื่อน",
-DlgLnkPopStatus : "à¹à¸ªà¸”งà¹à¸–บสถานะ",
-DlgLnkPopToolbar : "à¹à¸ªà¸”งà¹à¸–บเครื่องมือ",
-DlgLnkPopFullScrn : "à¹à¸ªà¸”งเต็มหน้าจอ (IE5.5++ เท่านั้น)",
-DlgLnkPopDependent : "à¹à¸ªà¸”งเต็มหน้าจอ (Netscape)",
-DlgLnkPopWidth : "à¸à¸§à¹‰à¸²à¸‡",
-DlgLnkPopHeight : "สูง",
-DlgLnkPopLeft : "พิà¸à¸±à¸”ซ้าย (Left Position)",
-DlgLnkPopTop : "พิà¸à¸±à¸”บน (Top Position)",
-
-DlnLnkMsgNoUrl : "à¸à¸£à¸¸à¸“าระบุที่อยู่อ้างอิงออนไลน์ (URL)",
-DlnLnkMsgNoEMail : "à¸à¸£à¸¸à¸“าระบุอีเมล์ (E-mail)",
-DlnLnkMsgNoAnchor : "à¸à¸£à¸¸à¸“าระบุจุดเชื่อมโยง (Anchor)",
-DlnLnkMsgInvPopName : "ชื่อของหน้าต่างป๊อบอัพ จะต้องขึ้นต้นด้วยตัวอัà¸à¸©à¸£à¹€à¸—่านั้น à¹à¸¥à¸°à¸•้องไม่มีช่องว่างในชื่อ",
-
-// Color Dialog
-DlgColorTitle : "เลือà¸à¸ªà¸µ",
-DlgColorBtnClear : "ล้างค่ารหัสสี",
-DlgColorHighlight : "ตัวอย่างสี",
-DlgColorSelected : "สีที่เลือà¸",
-
-// Smiley Dialog
-DlgSmileyTitle : "à¹à¸—รà¸à¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์สื่ออารมณ์",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "à¹à¸—รà¸à¸•ัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©",
-
-// Table Dialog
-DlgTableTitle : "คุณสมบัติของ ตาราง",
-DlgTableRows : "à¹à¸–ว",
-DlgTableColumns : "สดมน์",
-DlgTableBorder : "ขนาดเส้นขอบ",
-DlgTableAlign : "à¸à¸²à¸£à¸ˆà¸±à¸”ตำà¹à¸«à¸™à¹ˆà¸‡",
-DlgTableAlignNotSet : "<ไม่ระบุ>",
-DlgTableAlignLeft : "ชิดซ้าย",
-DlgTableAlignCenter : "à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡",
-DlgTableAlignRight : "ชิดขวา",
-DlgTableWidth : "à¸à¸§à¹‰à¸²à¸‡",
-DlgTableWidthPx : "จุดสี",
-DlgTableWidthPc : "เปอร์เซ็น",
-DlgTableHeight : "สูง",
-DlgTableCellSpace : "ระยะà¹à¸™à¸§à¸™à¸­à¸™à¸™",
-DlgTableCellPad : "ระยะà¹à¸™à¸§à¸•ั้ง",
-DlgTableCaption : "หัวเรื่องของตาราง",
-DlgTableSummary : "สรุปความ",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "คุณสมบัติของ ช่อง",
-DlgCellWidth : "à¸à¸§à¹‰à¸²à¸‡",
-DlgCellWidthPx : "จุดสี",
-DlgCellWidthPc : "เปอร์เซ็น",
-DlgCellHeight : "สูง",
-DlgCellWordWrap : "ตัดบรรทัดอัตโนมัติ",
-DlgCellWordWrapNotSet : "<ไม่ระบุ>",
-DlgCellWordWrapYes : "ใ่ช่",
-DlgCellWordWrapNo : "ไม่",
-DlgCellHorAlign : "à¸à¸²à¸£à¸ˆà¸±à¸”วางà¹à¸™à¸§à¸™à¸­à¸™",
-DlgCellHorAlignNotSet : "<ไม่ระบุ>",
-DlgCellHorAlignLeft : "ชิดซ้าย",
-DlgCellHorAlignCenter : "à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡",
-DlgCellHorAlignRight: "ชิดขวา",
-DlgCellVerAlign : "à¸à¸²à¸£à¸ˆà¸±à¸”วางà¹à¸™à¸§à¸•ั้ง",
-DlgCellVerAlignNotSet : "<ไม่ระบุ>",
-DlgCellVerAlignTop : "บนสุด",
-DlgCellVerAlignMiddle : "à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡",
-DlgCellVerAlignBottom : "ล่างสุด",
-DlgCellVerAlignBaseline : "อิงบรรทัด",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "จำนวนà¹à¸–วที่คร่อมà¸à¸±à¸™",
-DlgCellCollSpan : "จำนวนสดมน์ที่คร่อมà¸à¸±à¸™",
-DlgCellBackColor : "สีพื้นหลัง",
-DlgCellBorderColor : "สีเส้นขอบ",
-DlgCellBtnSelect : "เลือà¸..",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Find and Replace", //MISSING
-
-// Find Dialog
-DlgFindTitle : "ค้นหา",
-DlgFindFindBtn : "ค้นหา",
-DlgFindNotFoundMsg : "ไม่พบคำที่ค้นหา.",
-
-// Replace Dialog
-DlgReplaceTitle : "ค้นหาà¹à¸¥à¸°à¹à¸—นที่",
-DlgReplaceFindLbl : "ค้นหาคำว่า:",
-DlgReplaceReplaceLbl : "à¹à¸—นที่ด้วย:",
-DlgReplaceCaseChk : "ตัวโหà¸à¹ˆ-เล็ภต้องตรงà¸à¸±à¸™",
-DlgReplaceReplaceBtn : "à¹à¸—นที่",
-DlgReplaceReplAllBtn : "à¹à¸—นที่ทั้งหมดที่พบ",
-DlgReplaceWordChk : "ต้องตรงà¸à¸±à¸™à¸—ุà¸à¸„ำ",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ไม่สามารถตัดข้อความที่เลือà¸à¹„ว้ได้เนื่องจาà¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลอดภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่อวางข้อความà¹à¸—น (à¸à¸”ปุ่ม Ctrl à¹à¸¥à¸°à¸•ัว X พร้อมà¸à¸±à¸™).",
-PasteErrorCopy : "ไม่สามารถสำเนาข้อความที่เลือà¸à¹„ว้ได้เนื่องจาà¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลอดภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่อวางข้อความà¹à¸—น (à¸à¸”ปุ่ม Ctrl à¹à¸¥à¸°à¸•ัว C พร้อมà¸à¸±à¸™).",
-
-PasteAsText : "วางà¹à¸šà¸šà¸•ัวอัà¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า",
-PasteFromWord : "วางà¹à¸šà¸šà¸•ัวอัà¸à¸©à¸£à¸ˆà¸²à¸à¹‚ปรà¹à¸à¸£à¸¡à¹€à¸§à¸´à¸£à¹Œà¸”",
-
-DlgPasteMsg2 : "à¸à¸£à¸¸à¸“าใช้คีย์บอร์ดเท่านั้น โดยà¸à¸”ปุ๋ม (<strong>Ctrl à¹à¸¥à¸° V</strong>)พร้อมๆà¸à¸±à¸™ à¹à¸¥à¸°à¸à¸” <strong>OK</strong>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "ไม่สนใจ Font Face definitions",
-DlgPasteRemoveStyles : "ลบ Styles definitions",
-
-// Color Picker
-ColorAutomatic : "สีอัตโนมัติ",
-ColorMoreColors : "เลือà¸à¸ªà¸µà¸­à¸·à¹ˆà¸™à¹†...",
-
-// Document Properties
-DocProps : "คุณสมบัติของเอà¸à¸ªà¸²à¸£",
-
-// Anchor Dialog
-DlgAnchorTitle : "คุณสมบัติของ Anchor",
-DlgAnchorName : "ชื่อ Anchor",
-DlgAnchorErrorName : "à¸à¸£à¸¸à¸“าระบุชื่อของ Anchor",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "ไม่พบในดิà¸à¸Šà¸±à¸™à¸™à¸²à¸£à¸µ",
-DlgSpellChangeTo : "à¹à¸à¹‰à¹„ขเป็น",
-DlgSpellBtnIgnore : "ยà¸à¹€à¸§à¹‰à¸™",
-DlgSpellBtnIgnoreAll : "ยà¸à¹€à¸§à¹‰à¸™à¸—ั้งหมด",
-DlgSpellBtnReplace : "à¹à¸—นที่",
-DlgSpellBtnReplaceAll : "à¹à¸—นที่ทั้งหมด",
-DlgSpellBtnUndo : "ยà¸à¹€à¸¥à¸´à¸",
-DlgSpellNoSuggestions : "- ไม่มีคำà¹à¸™à¸°à¸™à¸³à¹ƒà¸”ๆ -",
-DlgSpellProgress : "à¸à¸³à¸¥à¸±à¸‡à¸•รวจสอบคำสะà¸à¸”...",
-DlgSpellNoMispell : "ตรวจสอบคำสะà¸à¸”เสร็จสิ้น: ไม่พบคำสะà¸à¸”ผิด",
-DlgSpellNoChanges : "ตรวจสอบคำสะà¸à¸”เสร็จสิ้น: ไม่มีà¸à¸²à¸£à¹à¸à¹‰à¸„ำใดๆ",
-DlgSpellOneChange : "ตรวจสอบคำสะà¸à¸”เสร็จสิ้น: à¹à¸à¹‰à¹„ข1คำ",
-DlgSpellManyChanges : "ตรวจสอบคำสะà¸à¸”เสร็จสิ้น:: à¹à¸à¹‰à¹„ข %1 คำ",
-
-IeSpellDownload : "ไม่ได้ติดตั้งระบบตรวจสอบคำสะà¸à¸”. ต้องà¸à¸²à¸£à¸•ิดตั้งไหมครับ?",
-
-// Button Dialog
-DlgButtonText : "ข้อความ (ค่าตัวà¹à¸›à¸£)",
-DlgButtonType : "ข้อความ",
-DlgButtonTypeBtn : "Button",
-DlgButtonTypeSbm : "Submit",
-DlgButtonTypeRst : "Reset",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "ชื่อ",
-DlgCheckboxValue : "ค่าตัวà¹à¸›à¸£",
-DlgCheckboxSelected : "เลือà¸à¹€à¸›à¹‡à¸™à¸„่าเริ่มต้น",
-
-// Form Dialog
-DlgFormName : "ชื่อ",
-DlgFormAction : "à¹à¸­à¸„ชั่น",
-DlgFormMethod : "เมธอด",
-
-// Select Field Dialog
-DlgSelectName : "ชื่อ",
-DlgSelectValue : "ค่าตัวà¹à¸›à¸£",
-DlgSelectSize : "ขนาด",
-DlgSelectLines : "บรรทัด",
-DlgSelectChkMulti : "เลือà¸à¸«à¸¥à¸²à¸¢à¸„่าได้",
-DlgSelectOpAvail : "รายà¸à¸²à¸£à¸•ัวเลือà¸",
-DlgSelectOpText : "ข้อความ",
-DlgSelectOpValue : "ค่าตัวà¹à¸›à¸£",
-DlgSelectBtnAdd : "เพิ่ม",
-DlgSelectBtnModify : "à¹à¸à¹‰à¹„ข",
-DlgSelectBtnUp : "บน",
-DlgSelectBtnDown : "ล่าง",
-DlgSelectBtnSetValue : "เลือà¸à¹€à¸›à¹‡à¸™à¸„่าเริ่มต้น",
-DlgSelectBtnDelete : "ลบ",
-
-// Textarea Dialog
-DlgTextareaName : "ชื่อ",
-DlgTextareaCols : "สดมภ์",
-DlgTextareaRows : "à¹à¸–ว",
-
-// Text Field Dialog
-DlgTextName : "ชื่อ",
-DlgTextValue : "ค่าตัวà¹à¸›à¸£",
-DlgTextCharWidth : "ความà¸à¸§à¹‰à¸²à¸‡",
-DlgTextMaxChars : "จำนวนตัวอัà¸à¸©à¸£à¸ªà¸¹à¸‡à¸ªà¸¸à¸”",
-DlgTextType : "ชนิด",
-DlgTextTypeText : "ข้อความ",
-DlgTextTypePass : "รหัสผ่าน",
-
-// Hidden Field Dialog
-DlgHiddenName : "ชื่อ",
-DlgHiddenValue : "ค่าตัวà¹à¸›à¸£",
-
-// Bulleted List Dialog
-BulletedListProp : "คุณสมบัติของ บูลเล็ตลิสต์",
-NumberedListProp : "คุณสมบัติของ นัมเบอร์ลิสต์",
-DlgLstStart : "Start", //MISSING
-DlgLstType : "ชนิด",
-DlgLstTypeCircle : "รูปวงà¸à¸¥à¸¡",
-DlgLstTypeDisc : "Disc", //MISSING
-DlgLstTypeSquare : "รูปสี่เหลี่ยม",
-DlgLstTypeNumbers : "หมายเลข (1, 2, 3)",
-DlgLstTypeLCase : "ตัวพิมพ์เล็ภ(a, b, c)",
-DlgLstTypeUCase : "ตัวพิมพ์ใหà¸à¹ˆ (A, B, C)",
-DlgLstTypeSRoman : "เลขโรมันพิมพ์เล็ภ(i, ii, iii)",
-DlgLstTypeLRoman : "เลขโรมันพิมพ์ใหà¸à¹ˆ (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "ลัà¸à¸©à¸“ะทั่วไปของเอà¸à¸ªà¸²à¸£",
-DlgDocBackTab : "พื้นหลัง",
-DlgDocColorsTab : "สีà¹à¸¥à¸°à¸£à¸°à¸¢à¸°à¸‚อบ",
-DlgDocMetaTab : "ข้อมูลสำหรับเสิร์ชเอนจิ้น",
-
-DlgDocPageTitle : "ชื่อไตเติ้ล",
-DlgDocLangDir : "à¸à¸²à¸£à¸­à¹ˆà¸²à¸™à¸ à¸²à¸©à¸²",
-DlgDocLangDirLTR : "จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)",
-DlgDocLangDirRTL : "จาà¸à¸‚วาไปซ้าย (RTL)",
-DlgDocLangCode : "รหัสภาษา",
-DlgDocCharSet : "ชุดตัวอัà¸à¸©à¸£",
-DlgDocCharSetCE : "Central European",
-DlgDocCharSetCT : "Chinese Traditional (Big5)",
-DlgDocCharSetCR : "Cyrillic",
-DlgDocCharSetGR : "Greek",
-DlgDocCharSetJP : "Japanese",
-DlgDocCharSetKR : "Korean",
-DlgDocCharSetTR : "Turkish",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Western European",
-DlgDocCharSetOther : "ชุดตัวอัà¸à¸©à¸£à¸­à¸·à¹ˆà¸™à¹†",
-
-DlgDocDocType : "ประเภทของเอà¸à¸ªà¸²à¸£",
-DlgDocDocTypeOther : "ประเภทเอà¸à¸ªà¸²à¸£à¸­à¸·à¹ˆà¸™à¹†",
-DlgDocIncXHTML : "รวมเอา XHTML Declarations ไว้ด้วย",
-DlgDocBgColor : "สีพื้นหลัง",
-DlgDocBgImage : "ที่อยู่อ้างอิงออนไลน์ของรูปพื้นหลัง (Image URL)",
-DlgDocBgNoScroll : "พื้นหลังà¹à¸šà¸šà¹„ม่มีà¹à¸–บเลื่อน",
-DlgDocCText : "ข้อความ",
-DlgDocCLink : "ลิงค์",
-DlgDocCVisited : "ลิงค์ที่เคยคลิ้à¸à¹à¸¥à¹‰à¸§ Visited Link",
-DlgDocCActive : "ลิงค์ที่à¸à¸³à¸¥à¸±à¸‡à¸„ลิ้ภActive Link",
-DlgDocMargins : "ระยะขอบของหน้าเอà¸à¸ªà¸²à¸£",
-DlgDocMaTop : "ด้านบน",
-DlgDocMaLeft : "ด้านซ้าย",
-DlgDocMaRight : "ด้านขวา",
-DlgDocMaBottom : "ด้านล่าง",
-DlgDocMeIndex : "คำสำคัà¸à¸­à¸˜à¸´à¸šà¸²à¸¢à¹€à¸­à¸à¸ªà¸²à¸£ (คั่นคำด้วย คอมม่า)",
-DlgDocMeDescr : "ประโยคอธิบายเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¹€à¸­à¸à¸ªà¸²à¸£",
-DlgDocMeAuthor : "ผู้สร้างเอà¸à¸ªà¸²à¸£",
-DlgDocMeCopy : "สงวนลิขสิทธิ์",
-DlgDocPreview : "ตัวอย่างหน้าเอà¸à¸ªà¸²à¸£",
-
-// Templates Dialog
-Templates : "เทมเพลต",
-DlgTemplatesTitle : "เทมเพลตของส่วนเนื้อหาเว็บไซต์",
-DlgTemplatesSelMsg : "à¸à¸£à¸¸à¸“าเลือภเทมเพลต เพื่อนำไปà¹à¸à¹‰à¹„ขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):",
-DlgTemplatesLoading : "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดรายà¸à¸²à¸£à¹€à¸—มเพลตทั้งหมด...",
-DlgTemplatesNoTpl : "(ยังไม่มีà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”เทมเพลต)",
-DlgTemplatesReplace : "à¹à¸—นที่เนื้อหาเว็บไซต์ที่เลือà¸",
-
-// About Dialog
-DlgAboutAboutTab : "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¹‚ปรà¹à¸à¸£à¸¡",
-DlgAboutBrowserInfoTab : "โปรà¹à¸à¸£à¸¡à¸—่องเว็บที่ท่านใช้",
-DlgAboutLicenseTab : "ลิขสิทธิ์",
-DlgAboutVersion : "รุ่น",
-DlgAboutInfo : "For further information go to", //MISSING
-
-// Div Dialog
-DlgDivGeneralTab : "General", //MISSING
-DlgDivAdvancedTab : "Advanced", //MISSING
-DlgDivStyle : "Style", //MISSING
-DlgDivInlineStyle : "Inline Style" //MISSING
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/tr.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/tr.js
deleted file mode 100644
index 666be281c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/tr.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Turkish language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Araç Çubuğunu Kapat",
-ToolbarExpand : "Araç Çubuğunu Aç",
-
-// Toolbar Items and Context Menu
-Save : "Kaydet",
-NewPage : "Yeni Sayfa",
-Preview : "Ön İzleme",
-Cut : "Kes",
-Copy : "Kopyala",
-Paste : "Yapıştır",
-PasteText : "Düzyazı Olarak Yapıştır",
-PasteWord : "Word'den Yapıştır",
-Print : "Yazdır",
-SelectAll : "Tümünü Seç",
-RemoveFormat : "Biçimi Kaldır",
-InsertLinkLbl : "Köprü",
-InsertLink : "Köprü Ekle/Düzenle",
-RemoveLink : "Köprü Kaldır",
-VisitLink : "Köprü Aç",
-Anchor : "Çapa Ekle/Düzenle",
-AnchorDelete : "Çapa Sil",
-InsertImageLbl : "Resim",
-InsertImage : "Resim Ekle/Düzenle",
-InsertFlashLbl : "Flash",
-InsertFlash : "Flash Ekle/Düzenle",
-InsertTableLbl : "Tablo",
-InsertTable : "Tablo Ekle/Düzenle",
-InsertLineLbl : "Satır",
-InsertLine : "Yatay Satır Ekle",
-InsertSpecialCharLbl: "Özel Karakter",
-InsertSpecialChar : "Özel Karakter Ekle",
-InsertSmileyLbl : "İfade",
-InsertSmiley : "İfade Ekle",
-About : "FCKeditor Hakkında",
-Bold : "Kalın",
-Italic : "İtalik",
-Underline : "Altı Çizgili",
-StrikeThrough : "Üstü Çizgili",
-Subscript : "Alt Simge",
-Superscript : "Üst Simge",
-LeftJustify : "Sola Dayalı",
-CenterJustify : "Ortalanmış",
-RightJustify : "Sağa Dayalı",
-BlockJustify : "İki Kenara Yaslanmış",
-DecreaseIndent : "Sekme Azalt",
-IncreaseIndent : "Sekme Arttır",
-Blockquote : "Blok OluÅŸtur",
-CreateDiv : "Div Ekle",
-EditDiv : "Div Düzenle",
-DeleteDiv : "Div Sil",
-Undo : "Geri Al",
-Redo : "Tekrarla",
-NumberedListLbl : "Numaralı Liste",
-NumberedList : "Numaralı Liste Ekle/Kaldır",
-BulletedListLbl : "Simgeli Liste",
-BulletedList : "Simgeli Liste Ekle/Kaldır",
-ShowTableBorders : "Tablo Kenarlarını Göster",
-ShowDetails : "Detayları Göster",
-Style : "Biçem",
-FontFormat : "Biçim",
-Font : "Yazı Türü",
-FontSize : "Boyut",
-TextColor : "Yazı Rengi",
-BGColor : "Arka Renk",
-Source : "Kaynak",
-Find : "Bul",
-Replace : "DeÄŸiÅŸtir",
-SpellCheck : "Yazım Denetimi",
-UniversalKeyboard : "Evrensel Klavye",
-PageBreakLbl : "Sayfa sonu",
-PageBreak : "Sayfa Sonu Ekle",
-
-Form : "Form",
-Checkbox : "Onay Kutusu",
-RadioButton : "Seçenek Düğmesi",
-TextField : "Metin GiriÅŸi",
-Textarea : "Çok Satırlı Metin",
-HiddenField : "Gizli Veri",
-Button : "Düğme",
-SelectionField : "Seçim Menüsü",
-ImageButton : "Resimli Düğme",
-
-FitWindow : "Düzenleyici boyutunu büyüt",
-ShowBlocks : "Blokları Göster",
-
-// Context Menu
-EditLink : "Köprü Düzenle",
-CellCM : "Hücre",
-RowCM : "Satır",
-ColumnCM : "Sütun",
-InsertRowAfter : "Satır Ekle - Sonra",
-InsertRowBefore : "Satır Ekle - Önce",
-DeleteRows : "Satır Sil",
-InsertColumnAfter : "Kolon Ekle - Sonra",
-InsertColumnBefore : "Kolon Ekle - Önce",
-DeleteColumns : "Sütun Sil",
-InsertCellAfter : "Hücre Ekle - Sonra",
-InsertCellBefore : "Hücre Ekle - Önce",
-DeleteCells : "Hücre Sil",
-MergeCells : "Hücreleri Birleştir",
-MergeRight : "Birleştir - Sağdaki İle ",
-MergeDown : "Birleştir - Aşağıdaki İle ",
-HorizontalSplitCell : "Hücreyi Yatay Böl",
-VerticalSplitCell : "Hücreyi Dikey Böl",
-TableDelete : "Tabloyu Sil",
-CellProperties : "Hücre Özellikleri",
-TableProperties : "Tablo Özellikleri",
-ImageProperties : "Resim Özellikleri",
-FlashProperties : "Flash Özellikleri",
-
-AnchorProp : "Çapa Özellikleri",
-ButtonProp : "Düğme Özellikleri",
-CheckboxProp : "Onay Kutusu Özellikleri",
-HiddenFieldProp : "Gizli Veri Özellikleri",
-RadioButtonProp : "Seçenek Düğmesi Özellikleri",
-ImageButtonProp : "Resimli Düğme Özellikleri",
-TextFieldProp : "Metin Girişi Özellikleri",
-SelectionFieldProp : "Seçim Menüsü Özellikleri",
-TextareaProp : "Çok Satırlı Metin Özellikleri",
-FormProp : "Form Özellikleri",
-
-FontFormats : "Normal;Biçimli;Adres;Başlık 1;Başlık 2;Başlık 3;Başlık 4;Başlık 5;Başlık 6;Paragraf (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "XHTML işleniyor. Lütfen bekleyin...",
-Done : "Bitti",
-PasteWordConfirm : "Yapıştırdığınız yazı Word'den gelmişe benziyor. Yapıştırmadan önce gereksiz eklentileri silmek ister misiniz?",
-NotCompatiblePaste : "Bu komut Internet Explorer 5.5 ve ileriki sürümleri için mevcuttur. Temizlenmeden yapıştırılmasını ister misiniz ?",
-UnknownToolbarItem : "Bilinmeyen araç çubugu öğesi \"%1\"",
-UnknownCommand : "Bilinmeyen komut \"%1\"",
-NotImplemented : "Komut uyarlanamadı",
-UnknownToolbarSet : "\"%1\" araç çubuğu öğesi mevcut değil",
-NoActiveX : "Kullandığınız tarayıcının güvenlik ayarları bazı özelliklerin kullanılmasını engelliyor. Bu özelliklerin çalışması için \"Run ActiveX controls and plug-ins (Activex ve eklentileri çalıştır)\" seçeneğinin aktif yapılması gerekiyor. Kullanılamayan eklentiler ve hatalar konusunda daha fazla bilgi sahibi olun.",
-BrowseServerBlocked : "Kaynak tarayıcısı açılamadı. Tüm \"popup blocker\" programlarının devre dışı olduğundan emin olun. (Yahoo toolbar, Msn toolbar, Google toolbar gibi)",
-DialogBlocked : "Diyalog açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun.",
-VisitLinkBlocked : "Yeni pencere açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun",
-
-// Dialogs
-DlgBtnOK : "Tamam",
-DlgBtnCancel : "İptal",
-DlgBtnClose : "Kapat",
-DlgBtnBrowseServer : "Sunucuyu Gez",
-DlgAdvancedTag : "GeliÅŸmiÅŸ",
-DlgOpOther : "<DiÄŸer>",
-DlgInfoTab : "Bilgi",
-DlgAlertUrl : "Lütfen URL girin",
-
-// General Dialogs Labels
-DlgGenNotSet : "<tanımlanmamış>",
-DlgGenId : "Kimlik",
-DlgGenLangDir : "Dil Yönü",
-DlgGenLangDirLtr : "Soldan SaÄŸa (LTR)",
-DlgGenLangDirRtl : "SaÄŸdan Sola (RTL)",
-DlgGenLangCode : "Dil Kodlaması",
-DlgGenAccessKey : "EriÅŸim TuÅŸu",
-DlgGenName : "Ad",
-DlgGenTabIndex : "Sekme İndeksi",
-DlgGenLongDescr : "Uzun Tanımlı URL",
-DlgGenClass : "Biçem Sayfası Sınıfları",
-DlgGenTitle : "Danışma Başlığı",
-DlgGenContType : "Danışma İçerik Türü",
-DlgGenLinkCharset : "Bağlı Kaynak Karakter Gurubu",
-DlgGenStyle : "Biçem",
-
-// Image Dialog
-DlgImgTitle : "Resim Özellikleri",
-DlgImgInfoTab : "Resim Bilgisi",
-DlgImgBtnUpload : "Sunucuya Yolla",
-DlgImgURL : "URL",
-DlgImgUpload : "Karşıya Yükle",
-DlgImgAlt : "Alternatif Yazı",
-DlgImgWidth : "GeniÅŸlik",
-DlgImgHeight : "Yükseklik",
-DlgImgLockRatio : "Oranı Kilitle",
-DlgBtnResetSize : "Boyutu Başa Döndür",
-DlgImgBorder : "Kenar",
-DlgImgHSpace : "Yatay BoÅŸluk",
-DlgImgVSpace : "Dikey BoÅŸluk",
-DlgImgAlign : "Hizalama",
-DlgImgAlignLeft : "Sol",
-DlgImgAlignAbsBottom: "Tam Altı",
-DlgImgAlignAbsMiddle: "Tam Ortası",
-DlgImgAlignBaseline : "Taban Çizgisi",
-DlgImgAlignBottom : "Alt",
-DlgImgAlignMiddle : "Orta",
-DlgImgAlignRight : "SaÄŸ",
-DlgImgAlignTextTop : "Yazı Tepeye",
-DlgImgAlignTop : "Tepe",
-DlgImgPreview : "Ön İzleme",
-DlgImgAlertUrl : "Lütfen resmin URL'sini yazınız",
-DlgImgLinkTab : "Köprü",
-
-// Flash Dialog
-DlgFlashTitle : "Flash Özellikleri",
-DlgFlashChkPlay : "Otomatik Oynat",
-DlgFlashChkLoop : "Döngü",
-DlgFlashChkMenu : "Flash Menüsünü Kullan",
-DlgFlashScale : "Boyutlandır",
-DlgFlashScaleAll : "Hepsini Göster",
-DlgFlashScaleNoBorder : "Kenar Yok",
-DlgFlashScaleFit : "Tam Sığdır",
-
-// Link Dialog
-DlgLnkWindowTitle : "Köprü",
-DlgLnkInfoTab : "Köprü Bilgisi",
-DlgLnkTargetTab : "Hedef",
-
-DlgLnkType : "Köprü Türü",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Bu sayfada çapa",
-DlgLnkTypeEMail : "E-Posta",
-DlgLnkProto : "Protokol",
-DlgLnkProtoOther : "<diÄŸer>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Çapa Seç",
-DlgLnkAnchorByName : "Çapa Adı ile",
-DlgLnkAnchorById : "Eleman Kimlik Numarası ile",
-DlgLnkNoAnchors : "(Bu belgede hiç çapa yok)",
-DlgLnkEMail : "E-Posta Adresi",
-DlgLnkEMailSubject : "İleti Konusu",
-DlgLnkEMailBody : "İleti Gövdesi",
-DlgLnkUpload : "Karşıya Yükle",
-DlgLnkBtnUpload : "Sunucuya Gönder",
-
-DlgLnkTarget : "Hedef",
-DlgLnkTargetFrame : "<çerçeve>",
-DlgLnkTargetPopup : "<yeni açılan pencere>",
-DlgLnkTargetBlank : "Yeni Pencere(_blank)",
-DlgLnkTargetParent : "Anne Pencere (_parent)",
-DlgLnkTargetSelf : "Kendi Penceresi (_self)",
-DlgLnkTargetTop : "En Üst Pencere (_top)",
-DlgLnkTargetFrameName : "Hedef Çerçeve Adı",
-DlgLnkPopWinName : "Yeni Açılan Pencere Adı",
-DlgLnkPopWinFeat : "Yeni Açılan Pencere Özellikleri",
-DlgLnkPopResize : "Boyutlandırılabilir",
-DlgLnkPopLocation : "Yer Çubuğu",
-DlgLnkPopMenu : "Menü Çubuğu",
-DlgLnkPopScroll : "Kaydırma Çubukları",
-DlgLnkPopStatus : "Durum Çubuğu",
-DlgLnkPopToolbar : "Araç Çubuğu",
-DlgLnkPopFullScrn : "Tam Ekran (IE)",
-DlgLnkPopDependent : "Bağımlı (Netscape)",
-DlgLnkPopWidth : "GeniÅŸlik",
-DlgLnkPopHeight : "Yükseklik",
-DlgLnkPopLeft : "Sola Göre Konum",
-DlgLnkPopTop : "Yukarıya Göre Konum",
-
-DlnLnkMsgNoUrl : "Lütfen köprü URL'sini yazın",
-DlnLnkMsgNoEMail : "Lütfen E-posta adresini yazın",
-DlnLnkMsgNoAnchor : "Lütfen bir çapa seçin",
-DlnLnkMsgInvPopName : "Açılır pencere adı abecesel bir karakterle başlamalı ve boşluk içermemelidir",
-
-// Color Dialog
-DlgColorTitle : "Renk Seç",
-DlgColorBtnClear : "Temizle",
-DlgColorHighlight : "Vurgula",
-DlgColorSelected : "Seçilmiş",
-
-// Smiley Dialog
-DlgSmileyTitle : "İfade Ekle",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Özel Karakter Seç",
-
-// Table Dialog
-DlgTableTitle : "Tablo Özellikleri",
-DlgTableRows : "Satırlar",
-DlgTableColumns : "Sütunlar",
-DlgTableBorder : "Kenar Kalınlığı",
-DlgTableAlign : "Hizalama",
-DlgTableAlignNotSet : "<Tanımlanmamış>",
-DlgTableAlignLeft : "Sol",
-DlgTableAlignCenter : "Merkez",
-DlgTableAlignRight : "SaÄŸ",
-DlgTableWidth : "GeniÅŸlik",
-DlgTableWidthPx : "piksel",
-DlgTableWidthPc : "yüzde",
-DlgTableHeight : "Yükseklik",
-DlgTableCellSpace : "Izgara kalınlığı",
-DlgTableCellPad : "Izgara yazı arası",
-DlgTableCaption : "Başlık",
-DlgTableSummary : "Özet",
-DlgTableHeaders : "Başlıklar",
-DlgTableHeadersNone : "Yok",
-DlgTableHeadersColumn : "İlk Sütun",
-DlgTableHeadersRow : "İlk Satır",
-DlgTableHeadersBoth : "Her İkisi",
-
-// Table Cell Dialog
-DlgCellTitle : "Hücre Özellikleri",
-DlgCellWidth : "GeniÅŸlik",
-DlgCellWidthPx : "piksel",
-DlgCellWidthPc : "yüzde",
-DlgCellHeight : "Yükseklik",
-DlgCellWordWrap : "Sözcük Kaydır",
-DlgCellWordWrapNotSet : "<Tanımlanmamış>",
-DlgCellWordWrapYes : "Evet",
-DlgCellWordWrapNo : "Hayır",
-DlgCellHorAlign : "Yatay Hizalama",
-DlgCellHorAlignNotSet : "<Tanımlanmamış>",
-DlgCellHorAlignLeft : "Sol",
-DlgCellHorAlignCenter : "Merkez",
-DlgCellHorAlignRight: "SaÄŸ",
-DlgCellVerAlign : "Dikey Hizalama",
-DlgCellVerAlignNotSet : "<Tanımlanmamış>",
-DlgCellVerAlignTop : "Tepe",
-DlgCellVerAlignMiddle : "Orta",
-DlgCellVerAlignBottom : "Alt",
-DlgCellVerAlignBaseline : "Taban Çizgisi",
-DlgCellType : "Hücre Tipi",
-DlgCellTypeData : "Veri",
-DlgCellTypeHeader : "Başlık",
-DlgCellRowSpan : "Satır Kapla",
-DlgCellCollSpan : "Sütun Kapla",
-DlgCellBackColor : "Arka Plan Rengi",
-DlgCellBorderColor : "Kenar Rengi",
-DlgCellBtnSelect : "Seç...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Bul ve DeÄŸiÅŸtir",
-
-// Find Dialog
-DlgFindTitle : "Bul",
-DlgFindFindBtn : "Bul",
-DlgFindNotFoundMsg : "Belirtilen yazı bulunamadı.",
-
-// Replace Dialog
-DlgReplaceTitle : "DeÄŸiÅŸtir",
-DlgReplaceFindLbl : "Aranan:",
-DlgReplaceReplaceLbl : "Bununla deÄŸiÅŸtir:",
-DlgReplaceCaseChk : "Büyük/küçük harf duyarlı",
-DlgReplaceReplaceBtn : "DeÄŸiÅŸtir",
-DlgReplaceReplAllBtn : "Tümünü Değiştir",
-DlgReplaceWordChk : "Kelimenin tamamı uysun",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.",
-PasteErrorCopy : "Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.",
-
-PasteAsText : "Düz Metin Olarak Yapıştır",
-PasteFromWord : "Word'den yapıştır",
-
-DlgPasteMsg2 : "Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.",
-DlgPasteSec : "Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..",
-DlgPasteIgnoreFont : "Yazı Tipi tanımlarını yoksay",
-DlgPasteRemoveStyles : "Biçem Tanımlarını çıkar",
-
-// Color Picker
-ColorAutomatic : "Otomatik",
-ColorMoreColors : "DiÄŸer renkler...",
-
-// Document Properties
-DocProps : "Belge Özellikleri",
-
-// Anchor Dialog
-DlgAnchorTitle : "Çapa Özellikleri",
-DlgAnchorName : "Çapa Adı",
-DlgAnchorErrorName : "Lütfen çapa için ad giriniz",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Sözlükte Yok",
-DlgSpellChangeTo : "Åžuna deÄŸiÅŸtir:",
-DlgSpellBtnIgnore : "Yoksay",
-DlgSpellBtnIgnoreAll : "Tümünü Yoksay",
-DlgSpellBtnReplace : "DeÄŸiÅŸtir",
-DlgSpellBtnReplaceAll : "Tümünü Değiştir",
-DlgSpellBtnUndo : "Geri Al",
-DlgSpellNoSuggestions : "- Öneri Yok -",
-DlgSpellProgress : "Yazım denetimi işlemde...",
-DlgSpellNoMispell : "Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı",
-DlgSpellNoChanges : "Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi",
-DlgSpellOneChange : "Yazım denetimi tamamlandı: Bir kelime değiştirildi",
-DlgSpellManyChanges : "Yazım denetimi tamamlandı: %1 kelime değiştirildi",
-
-IeSpellDownload : "Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?",
-
-// Button Dialog
-DlgButtonText : "Metin (DeÄŸer)",
-DlgButtonType : "Tip",
-DlgButtonTypeBtn : "Düğme",
-DlgButtonTypeSbm : "Gönder",
-DlgButtonTypeRst : "Sıfırla",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Ad",
-DlgCheckboxValue : "DeÄŸer",
-DlgCheckboxSelected : "Seçili",
-
-// Form Dialog
-DlgFormName : "Ad",
-DlgFormAction : "İşlem",
-DlgFormMethod : "Yöntem",
-
-// Select Field Dialog
-DlgSelectName : "Ad",
-DlgSelectValue : "DeÄŸer",
-DlgSelectSize : "Boyut",
-DlgSelectLines : "satır",
-DlgSelectChkMulti : "Çoklu seçime izin ver",
-DlgSelectOpAvail : "Mevcut Seçenekler",
-DlgSelectOpText : "Metin",
-DlgSelectOpValue : "DeÄŸer",
-DlgSelectBtnAdd : "Ekle",
-DlgSelectBtnModify : "Düzenle",
-DlgSelectBtnUp : "Yukarı",
-DlgSelectBtnDown : "Aşağı",
-DlgSelectBtnSetValue : "Seçili değer olarak ata",
-DlgSelectBtnDelete : "Sil",
-
-// Textarea Dialog
-DlgTextareaName : "Ad",
-DlgTextareaCols : "Sütunlar",
-DlgTextareaRows : "Satırlar",
-
-// Text Field Dialog
-DlgTextName : "Ad",
-DlgTextValue : "DeÄŸer",
-DlgTextCharWidth : "Karakter GeniÅŸliÄŸi",
-DlgTextMaxChars : "En Fazla Karakter",
-DlgTextType : "Tür",
-DlgTextTypeText : "Metin",
-DlgTextTypePass : "Parola",
-
-// Hidden Field Dialog
-DlgHiddenName : "Ad",
-DlgHiddenValue : "DeÄŸer",
-
-// Bulleted List Dialog
-BulletedListProp : "Simgeli Liste Özellikleri",
-NumberedListProp : "Numaralı Liste Özellikleri",
-DlgLstStart : "Başlangıç",
-DlgLstType : "Tip",
-DlgLstTypeCircle : "Çember",
-DlgLstTypeDisc : "Disk",
-DlgLstTypeSquare : "Kare",
-DlgLstTypeNumbers : "Sayılar (1, 2, 3)",
-DlgLstTypeLCase : "Küçük Harfler (a, b, c)",
-DlgLstTypeUCase : "Büyük Harfler (A, B, C)",
-DlgLstTypeSRoman : "Küçük Romen Rakamları (i, ii, iii)",
-DlgLstTypeLRoman : "Büyük Romen Rakamları (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Genel",
-DlgDocBackTab : "Arka Plan",
-DlgDocColorsTab : "Renkler ve Kenar Boşlukları",
-DlgDocMetaTab : "Tanım Bilgisi (Meta)",
-
-DlgDocPageTitle : "Sayfa Başlığı",
-DlgDocLangDir : "Dil Yönü",
-DlgDocLangDirLTR : "Soldan SaÄŸa (LTR)",
-DlgDocLangDirRTL : "SaÄŸdan Sola (RTL)",
-DlgDocLangCode : "Dil Kodu",
-DlgDocCharSet : "Karakter Kümesi Kodlaması",
-DlgDocCharSetCE : "Orta Avrupa",
-DlgDocCharSetCT : "Geleneksel Çince (Big5)",
-DlgDocCharSetCR : "Kiril",
-DlgDocCharSetGR : "Yunanca",
-DlgDocCharSetJP : "Japonca",
-DlgDocCharSetKR : "Korece",
-DlgDocCharSetTR : "Türkçe",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Batı Avrupa",
-DlgDocCharSetOther : "Diğer Karakter Kümesi Kodlaması",
-
-DlgDocDocType : "Belge Türü Başlığı",
-DlgDocDocTypeOther : "Diğer Belge Türü Başlığı",
-DlgDocIncXHTML : "XHTML Bildirimlerini Dahil Et",
-DlgDocBgColor : "Arka Plan Rengi",
-DlgDocBgImage : "Arka Plan Resim URLsi",
-DlgDocBgNoScroll : "Sabit Arka Plan",
-DlgDocCText : "Metin",
-DlgDocCLink : "Köprü",
-DlgDocCVisited : "Ziyaret Edilmiş Köprü",
-DlgDocCActive : "Etkin Köprü",
-DlgDocMargins : "Kenar Boşlukları",
-DlgDocMaTop : "Tepe",
-DlgDocMaLeft : "Sol",
-DlgDocMaRight : "SaÄŸ",
-DlgDocMaBottom : "Alt",
-DlgDocMeIndex : "Belge Dizinleme Anahtar Kelimeleri (virgülle ayrılmış)",
-DlgDocMeDescr : "Belge Tanımı",
-DlgDocMeAuthor : "Yazar",
-DlgDocMeCopy : "Telif",
-DlgDocPreview : "Ön İzleme",
-
-// Templates Dialog
-Templates : "Åžablonlar",
-DlgTemplatesTitle : "İçerik Şablonları",
-DlgTemplatesSelMsg : "Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):",
-DlgTemplatesLoading : "Şablon listesi yüklenmekte. Lütfen bekleyiniz...",
-DlgTemplatesNoTpl : "(Belirli bir şablon seçilmedi)",
-DlgTemplatesReplace : "Mevcut içerik ile değiştir",
-
-// About Dialog
-DlgAboutAboutTab : "Hakkında",
-DlgAboutBrowserInfoTab : "Gezgin Bilgisi",
-DlgAboutLicenseTab : "Lisans",
-DlgAboutVersion : "sürüm",
-DlgAboutInfo : "Daha fazla bilgi için:",
-
-// Div Dialog
-DlgDivGeneralTab : "Genel",
-DlgDivAdvancedTab : "GeliÅŸmiÅŸ",
-DlgDivStyle : "Sitil",
-DlgDivInlineStyle : "Satıriçi Sitil"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/uk.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/uk.js
deleted file mode 100644
index 2ddec75ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/uk.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Ukrainian language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Згорнути панель інÑтрументів",
-ToolbarExpand : "Розгорнути панель інÑтрументів",
-
-// Toolbar Items and Context Menu
-Save : "Зберегти",
-NewPage : "Ðова Ñторінка",
-Preview : "Попередній переглÑд",
-Cut : "Вирізати",
-Copy : "Копіювати",
-Paste : "Ð’Ñтавити",
-PasteText : "Ð’Ñтавити тільки текÑÑ‚",
-PasteWord : "Ð’Ñтавити з Word",
-Print : "Друк",
-SelectAll : "Виділити вÑе",
-RemoveFormat : "Прибрати форматуваннÑ",
-InsertLinkLbl : "ПоÑиланнÑ",
-InsertLink : "Ð’Ñтавити/Редагувати поÑиланнÑ",
-RemoveLink : "Знищити поÑиланнÑ",
-VisitLink : "Відкрити поÑиланнÑ",
-Anchor : "Ð’Ñтавити/Редагувати Ñкір",
-AnchorDelete : "Видалити Ñкір",
-InsertImageLbl : "ЗображеннÑ",
-InsertImage : "Ð’Ñтавити/Редагувати зображеннÑ",
-InsertFlashLbl : "Flash",
-InsertFlash : "Ð’Ñтавити/Редагувати Flash",
-InsertTableLbl : "ТаблицÑ",
-InsertTable : "Ð’Ñтавити/Редагувати таблицю",
-InsertLineLbl : "ЛініÑ",
-InsertLine : "Ð’Ñтавити горизонтальну лінію",
-InsertSpecialCharLbl: "Спеціальний Ñимвол",
-InsertSpecialChar : "Ð’Ñтавити Ñпеціальний Ñимвол",
-InsertSmileyLbl : "Смайлик",
-InsertSmiley : "Ð’Ñтавити Ñмайлик",
-About : "Про FCKeditor",
-Bold : "Жирний",
-Italic : "КурÑив",
-Underline : "ПідкреÑлений",
-StrikeThrough : "ЗакреÑлений",
-Subscript : "ПідрÑдковий індекÑ",
-Superscript : "ÐадрÑдковий индекÑ",
-LeftJustify : "По лівому краю",
-CenterJustify : "По центру",
-RightJustify : "По правому краю",
-BlockJustify : "По ширині",
-DecreaseIndent : "Зменшити відÑтуп",
-IncreaseIndent : "Збільшити відÑтуп",
-Blockquote : "Цитата",
-CreateDiv : "Створити Div контейнер",
-EditDiv : "Редагувати Div контейнер",
-DeleteDiv : "Видалити Div контейнер",
-Undo : "Повернути",
-Redo : "Повторити",
-NumberedListLbl : "Ðумерований ÑпиÑок",
-NumberedList : "Ð’Ñтавити/Видалити нумерований ÑпиÑок",
-BulletedListLbl : "Маркований ÑпиÑок",
-BulletedList : "Ð’Ñтавити/Видалити маркований ÑпиÑок",
-ShowTableBorders : "Показати бордюри таблиці",
-ShowDetails : "Показати деталі",
-Style : "Стиль",
-FontFormat : "ФорматуваннÑ",
-Font : "Шрифт",
-FontSize : "Розмір",
-TextColor : "Колір текÑту",
-BGColor : "Колір фону",
-Source : "Джерело",
-Find : "Пошук",
-Replace : "Заміна",
-SpellCheck : "Перевірити орфографію",
-UniversalKeyboard : "УніверÑальна клавіатура",
-PageBreakLbl : "Розривши Ñторінки",
-PageBreak : "Ð’Ñтавити розривши Ñторінки",
-
-Form : "Форма",
-Checkbox : "Флагова кнопка",
-RadioButton : "Кнопка вибору",
-TextField : "ТекÑтове поле",
-Textarea : "ТекÑтова облаÑть",
-HiddenField : "Приховане поле",
-Button : "Кнопка",
-SelectionField : "СпиÑок",
-ImageButton : "Кнопка із зображеннÑм",
-
-FitWindow : "Розвернути вікно редактора",
-ShowBlocks : "Показувати блоки",
-
-// Context Menu
-EditLink : "Ð’Ñтавити поÑиланнÑ",
-CellCM : "ОÑередок",
-RowCM : "РÑдок",
-ColumnCM : "Колонка",
-InsertRowAfter : "Ð’Ñтавити Ñ€Ñдок піÑлÑ",
-InsertRowBefore : "Ð’Ñтавити Ñ€Ñдок до",
-DeleteRows : "Видалити Ñтроки",
-InsertColumnAfter : "Ð’Ñтавити колонку піÑлÑ",
-InsertColumnBefore : "Ð’Ñтавити колонку до",
-DeleteColumns : "Видалити колонки",
-InsertCellAfter : "Ð’Ñтавити комірку піÑлÑ",
-InsertCellBefore : "Ð’Ñтавити комірку до",
-DeleteCells : "Видалити комірки",
-MergeCells : "Об'єднати комірки",
-MergeRight : "Об'єднати зправа",
-MergeDown : "Об'єднати до низу",
-HorizontalSplitCell : "Розділити комірку по горизонталі",
-VerticalSplitCell : "Розділити комірку по вертикалі",
-TableDelete : "Видалити таблицю",
-CellProperties : "ВлаÑтивоÑті комірки",
-TableProperties : "ВлаÑтивоÑті таблиці",
-ImageProperties : "ВлаÑтивоÑті зображеннÑ",
-FlashProperties : "ВлаÑтивоÑті Flash",
-
-AnchorProp : "ВлаÑтивоÑті ÑкорÑ",
-ButtonProp : "ВлаÑтивоÑті кнопки",
-CheckboxProp : "ВлаÑтивоÑті флагової кнопки",
-HiddenFieldProp : "ВлаÑтивоÑті прихованого полÑ",
-RadioButtonProp : "ВлаÑтивоÑті кнопки вибору",
-ImageButtonProp : "ВлаÑтивоÑті кнопки із зображеннÑм",
-TextFieldProp : "ВлаÑтивоÑті текÑтового полÑ",
-SelectionFieldProp : "ВлаÑтивоÑті ÑпиÑку",
-TextareaProp : "ВлаÑтивоÑті текÑтової облаÑті",
-FormProp : "ВлаÑтивоÑті форми",
-
-FontFormats : "Ðормальний;Форматований;ÐдреÑа;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Ðормальний (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Обробка XHTML. Зачекайте, будь лаÑка...",
-Done : "Зроблено",
-PasteWordConfirm : "ТекÑÑ‚, що ви хочете вÑтавити, Ñхожий на копійований з Word. Ви хочете очиÑтити його перед вÑтавкою?",
-NotCompatiblePaste : "Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° доÑтупна Ð´Ð»Ñ Internet Explorer верÑÑ–Ñ— 5.5 або вище. Ви хочете вÑтавити без очищеннÑ?",
-UnknownToolbarItem : "Ðевідомий елемент панелі інÑтрументів \"%1\"",
-UnknownCommand : "Ðевідоме ім'Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ \"%1\"",
-NotImplemented : "Команда не реалізована",
-UnknownToolbarSet : "Панель інÑтрументів \"%1\" не Ñ–Ñнує",
-NoActiveX : "ÐаÑтройки безпеки вашого браузера можуть обмежувати деÑкі влаÑтивоÑті редактора. Ви повинні включити опцію \"ЗапуÑкати елементи ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ACTIVEX Ñ– плугіни\". Ви можете бачити помилки Ñ– помічати відÑутніÑть можливоÑтей.",
-BrowseServerBlocked : "РеÑурÑи браузера не можуть бути відкриті. Перевірте що Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñпливаючих вікон вимкнені.",
-DialogBlocked : "Ðе можливо відкрити вікно діалогу. Перевірте що Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñпливаючих вікон вимкнені.",
-VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING
-
-// Dialogs
-DlgBtnOK : "ОК",
-DlgBtnCancel : "СкаÑувати",
-DlgBtnClose : "Зачинити",
-DlgBtnBrowseServer : "ПередивитиÑÑ Ð½Ð° Ñервері",
-DlgAdvancedTag : "Розширений",
-DlgOpOther : "<Інше>",
-DlgInfoTab : "Інфо",
-DlgAlertUrl : "Ð’Ñтавте, будь-лаÑка, URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<не визначено>",
-DlgGenId : "Ідентифікатор",
-DlgGenLangDir : "ÐапрÑмок мови",
-DlgGenLangDirLtr : "Зліва на право (LTR)",
-DlgGenLangDirRtl : "Зправа на ліво (RTL)",
-DlgGenLangCode : "Мова",
-DlgGenAccessKey : "ГарÑча клавіша",
-DlgGenName : "Им'Ñ",
-DlgGenTabIndex : "ПоÑлідовніÑть переходу",
-DlgGenLongDescr : "Довгий Ð¾Ð¿Ð¸Ñ URL",
-DlgGenClass : "ÐšÐ»Ð°Ñ CSS",
-DlgGenTitle : "Заголовок",
-DlgGenContType : "Тип вміÑту",
-DlgGenLinkCharset : "Кодировка",
-DlgGenStyle : "Стиль CSS",
-
-// Image Dialog
-DlgImgTitle : "ВлаÑтивоÑті зображеннÑ",
-DlgImgInfoTab : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ изображении",
-DlgImgBtnUpload : "ÐадіÑлати на Ñервер",
-DlgImgURL : "URL",
-DlgImgUpload : "Закачати",
-DlgImgAlt : "Ðльтернативний текÑÑ‚",
-DlgImgWidth : "Ширина",
-DlgImgHeight : "ВиÑота",
-DlgImgLockRatio : "Зберегти пропорції",
-DlgBtnResetSize : "Скинути розмір",
-DlgImgBorder : "Бордюр",
-DlgImgHSpace : "Горизонтальний відÑтуп",
-DlgImgVSpace : "Вертикальний відÑтуп",
-DlgImgAlign : "ВирівнюваннÑ",
-DlgImgAlignLeft : "По лівому краю",
-DlgImgAlignAbsBottom: "ÐÐ±Ñ Ð¿Ð¾ низу",
-DlgImgAlignAbsMiddle: "ÐÐ±Ñ Ð¿Ð¾ Ñередині",
-DlgImgAlignBaseline : "По базовій лінії",
-DlgImgAlignBottom : "По низу",
-DlgImgAlignMiddle : "По Ñередині",
-DlgImgAlignRight : "По правому краю",
-DlgImgAlignTextTop : "ТекÑÑ‚ на верху",
-DlgImgAlignTop : "По верху",
-DlgImgPreview : "Попередній переглÑд",
-DlgImgAlertUrl : "Будь лаÑка, введіть URL зображеннÑ",
-DlgImgLinkTab : "ПоÑиланнÑ",
-
-// Flash Dialog
-DlgFlashTitle : "ВлаÑтивоÑті Flash",
-DlgFlashChkPlay : "Ðвто програваннÑ",
-DlgFlashChkLoop : "Зациклити",
-DlgFlashChkMenu : "Дозволити меню Flash",
-DlgFlashScale : "МаÑштаб",
-DlgFlashScaleAll : "Показати вÑÑ–",
-DlgFlashScaleNoBorder : "Без рамки",
-DlgFlashScaleFit : "ДійÑний розмір",
-
-// Link Dialog
-DlgLnkWindowTitle : "ПоÑиланнÑ",
-DlgLnkInfoTab : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ð¾ÑиланнÑ",
-DlgLnkTargetTab : "Ціль",
-
-DlgLnkType : "Тип поÑиланнÑ",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Якір на цю Ñторінку",
-DlgLnkTypeEMail : "Эл. пошта",
-DlgLnkProto : "Протокол",
-DlgLnkProtoOther : "<інше>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Оберіть Ñкір",
-DlgLnkAnchorByName : "За ім'Ñм ÑкорÑ",
-DlgLnkAnchorById : "За ідентифікатором елемента",
-DlgLnkNoAnchors : "(Ðемає Ñкорів доÑтупних в цьому документі)",
-DlgLnkEMail : "ÐдреÑа ел. пошти",
-DlgLnkEMailSubject : "Тема лиÑта",
-DlgLnkEMailBody : "Тіло повідомленнÑ",
-DlgLnkUpload : "Закачати",
-DlgLnkBtnUpload : "ПереÑлати на Ñервер",
-
-DlgLnkTarget : "Ціль",
-DlgLnkTargetFrame : "<фрейм>",
-DlgLnkTargetPopup : "<Ñпливаюче вікно>",
-DlgLnkTargetBlank : "Ðове вікно (_blank)",
-DlgLnkTargetParent : "БатьківÑьке вікно (_parent)",
-DlgLnkTargetSelf : "Теж вікно (_self)",
-DlgLnkTargetTop : "Ðайвище вікно (_top)",
-DlgLnkTargetFrameName : "Ім'Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ фрейма",
-DlgLnkPopWinName : "Ім'Ñ Ñпливаючого вікна",
-DlgLnkPopWinFeat : "ВлаÑтивоÑті Ñпливаючого вікна",
-DlgLnkPopResize : "ЗмінюєтьÑÑ Ð² розмірах",
-DlgLnkPopLocation : "Панель локації",
-DlgLnkPopMenu : "Панель меню",
-DlgLnkPopScroll : "ПолоÑи прокрутки",
-DlgLnkPopStatus : "Строка ÑтатуÑу",
-DlgLnkPopToolbar : "Панель інÑтрументів",
-DlgLnkPopFullScrn : "Повний екран (IE)",
-DlgLnkPopDependent : "Залежний (Netscape)",
-DlgLnkPopWidth : "Ширина",
-DlgLnkPopHeight : "ВиÑота",
-DlgLnkPopLeft : "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð·Ð»Ñ–Ð²Ð°",
-DlgLnkPopTop : "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð·Ð²ÐµÑ€Ñ…Ñƒ",
-
-DlnLnkMsgNoUrl : "Будь лаÑка, занеÑіть URL поÑиланнÑ",
-DlnLnkMsgNoEMail : "Будь лаÑка, занеÑіть Ð°Ð´Ñ€ÐµÑ Ñл. почты",
-DlnLnkMsgNoAnchor : "Будь лаÑка, оберіть Ñкір",
-DlnLnkMsgInvPopName : "Ðазва Ñпливаючого вікна повинна починатиÑÑ Ð±ÑƒÐºÐ²Ð¸ Ñ– не може міÑтити пропуÑків",
-
-// Color Dialog
-DlgColorTitle : "Оберіть колір",
-DlgColorBtnClear : "ОчиÑтити",
-DlgColorHighlight : "ПідÑвічений",
-DlgColorSelected : "Обраний",
-
-// Smiley Dialog
-DlgSmileyTitle : "Ð’Ñтавити Ñмайлик",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Оберіть Ñпеціальний Ñимвол",
-
-// Table Dialog
-DlgTableTitle : "ВлаÑтивоÑті таблиці",
-DlgTableRows : "Строки",
-DlgTableColumns : "Колонки",
-DlgTableBorder : "Розмір бордюра",
-DlgTableAlign : "ВирівнюваннÑ",
-DlgTableAlignNotSet : "<Ðе вÑÑ‚.>",
-DlgTableAlignLeft : "Зліва",
-DlgTableAlignCenter : "По центру",
-DlgTableAlignRight : "Зправа",
-DlgTableWidth : "Ширина",
-DlgTableWidthPx : "пікÑелів",
-DlgTableWidthPc : "відÑотків",
-DlgTableHeight : "ВиÑота",
-DlgTableCellSpace : "Проміжок (spacing)",
-DlgTableCellPad : "ВідÑтуп (padding)",
-DlgTableCaption : "Заголовок",
-DlgTableSummary : "Резюме",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "ВлаÑтивоÑті комірки",
-DlgCellWidth : "Ширина",
-DlgCellWidthPx : "пікÑелів",
-DlgCellWidthPc : "відÑотків",
-DlgCellHeight : "ВиÑота",
-DlgCellWordWrap : "Ð—Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑта",
-DlgCellWordWrapNotSet : "<Ðе вÑÑ‚.>",
-DlgCellWordWrapYes : "Так",
-DlgCellWordWrapNo : "ÐÑ–",
-DlgCellHorAlign : "Горизонтальне вирівнюваннÑ",
-DlgCellHorAlignNotSet : "<Ðе вÑÑ‚.>",
-DlgCellHorAlignLeft : "Зліва",
-DlgCellHorAlignCenter : "По центру",
-DlgCellHorAlignRight: "Зправа",
-DlgCellVerAlign : "Вертикальное вирівнюваннÑ",
-DlgCellVerAlignNotSet : "<Ðе вÑÑ‚.>",
-DlgCellVerAlignTop : "Зверху",
-DlgCellVerAlignMiddle : "ПоÑередині",
-DlgCellVerAlignBottom : "Знизу",
-DlgCellVerAlignBaseline : "По базовій лінії",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Діапазон Ñтрок (span)",
-DlgCellCollSpan : "Діапазон колонок (span)",
-DlgCellBackColor : "Колір фона",
-DlgCellBorderColor : "Колір бордюра",
-DlgCellBtnSelect : "Оберіть...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Знайти і замінити",
-
-// Find Dialog
-DlgFindTitle : "Пошук",
-DlgFindFindBtn : "Пошук",
-DlgFindNotFoundMsg : "Вказаний текÑÑ‚ не знайдений.",
-
-// Replace Dialog
-DlgReplaceTitle : "Замінити",
-DlgReplaceFindLbl : "Шукати:",
-DlgReplaceReplaceLbl : "Замінити на:",
-DlgReplaceCaseChk : "Учитывать региÑтр",
-DlgReplaceReplaceBtn : "Замінити",
-DlgReplaceReplAllBtn : "Замінити вÑе",
-DlgReplaceWordChk : "Збіг цілих Ñлів",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ÐаÑтройки безпеки вашого браузера не дозволÑють редактору автоматично виконувати операції вирізуваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl+X).",
-PasteErrorCopy : "ÐаÑтройки безпеки вашого браузера не дозволÑють редактору автоматично виконувати операції копіюваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl+C).",
-
-PasteAsText : "Ð’Ñтавити тільки текÑÑ‚",
-PasteFromWord : "Ð’Ñтавити з Word",
-
-DlgPasteMsg2 : "Будь-лаÑка, вÑтавте з буфера обміну в цю облаÑть, кориÑтуючиÑÑŒ комбінацією клавіш (<STRONG>Ctrl+V</STRONG>) та натиÑніть <STRONG>OK</STRONG>.",
-DlgPasteSec : "Редактор не може отримати прÑмий доÑтуп до буферу обміну у зв'Ñзку з налаштуваннÑми вашого браузера. Вам потрібно вÑтавити інформацію повторно в це вікно.",
-DlgPasteIgnoreFont : "Ігнорувати Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñ–Ð²",
-DlgPasteRemoveStyles : "Видалити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñтилів",
-
-// Color Picker
-ColorAutomatic : "Ðвтоматичний",
-ColorMoreColors : "Кольори...",
-
-// Document Properties
-DocProps : "ВлаÑтивоÑті документа",
-
-// Anchor Dialog
-DlgAnchorTitle : "ВлаÑтивоÑті ÑкорÑ",
-DlgAnchorName : "Ім'Ñ ÑкорÑ",
-DlgAnchorErrorName : "Будь лаÑка, занеÑіть ім'Ñ ÑкорÑ",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Ðе має в Ñловнику",
-DlgSpellChangeTo : "Замінити на",
-DlgSpellBtnIgnore : "Ігнорувати",
-DlgSpellBtnIgnoreAll : "Ігнорувати вÑе",
-DlgSpellBtnReplace : "Замінити",
-DlgSpellBtnReplaceAll : "Замінити вÑе",
-DlgSpellBtnUndo : "Ðазад",
-DlgSpellNoSuggestions : "- Ðемає припущень -",
-DlgSpellProgress : "ВиконуєтьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° орфографії...",
-DlgSpellNoMispell : "Перевірку орфографії завершено: помилок не знайдено",
-DlgSpellNoChanges : "Перевірку орфографії завершено: жодне Ñлово не змінено",
-DlgSpellOneChange : "Перевірку орфографії завершено: змінено одно Ñлово",
-DlgSpellManyChanges : "Перевірку орфографії завершено: 1% Ñлів змінено",
-
-IeSpellDownload : "Модуль перевірки орфографії не вÑтановлено. Бажаєтн завантажити його зараз?",
-
-// Button Dialog
-DlgButtonText : "ТекÑÑ‚ (ЗначеннÑ)",
-DlgButtonType : "Тип",
-DlgButtonTypeBtn : "Кнопка",
-DlgButtonTypeSbm : "Відправити",
-DlgButtonTypeRst : "Скинути",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Ім'Ñ",
-DlgCheckboxValue : "ЗначеннÑ",
-DlgCheckboxSelected : "Обрана",
-
-// Form Dialog
-DlgFormName : "Ім'Ñ",
-DlgFormAction : "ДіÑ",
-DlgFormMethod : "Метод",
-
-// Select Field Dialog
-DlgSelectName : "Ім'Ñ",
-DlgSelectValue : "ЗначеннÑ",
-DlgSelectSize : "Розмір",
-DlgSelectLines : "лінії",
-DlgSelectChkMulti : "Дозволити Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… позицій",
-DlgSelectOpAvail : "ДоÑтупні варіанти",
-DlgSelectOpText : "ТекÑÑ‚",
-DlgSelectOpValue : "ЗначеннÑ",
-DlgSelectBtnAdd : "Добавити",
-DlgSelectBtnModify : "Змінити",
-DlgSelectBtnUp : "Вгору",
-DlgSelectBtnDown : "Вниз",
-DlgSelectBtnSetValue : "Ð’Ñтановити Ñк вибране значеннÑ",
-DlgSelectBtnDelete : "Видалити",
-
-// Textarea Dialog
-DlgTextareaName : "Ім'Ñ",
-DlgTextareaCols : "Колонки",
-DlgTextareaRows : "Строки",
-
-// Text Field Dialog
-DlgTextName : "Ім'Ñ",
-DlgTextValue : "ЗначеннÑ",
-DlgTextCharWidth : "Ширина",
-DlgTextMaxChars : "МакÑ. кіл-ть Ñимволів",
-DlgTextType : "Тип",
-DlgTextTypeText : "ТекÑÑ‚",
-DlgTextTypePass : "Пароль",
-
-// Hidden Field Dialog
-DlgHiddenName : "Ім'Ñ",
-DlgHiddenValue : "ЗначеннÑ",
-
-// Bulleted List Dialog
-BulletedListProp : "ВлаÑтивоÑті маркованого ÑпиÑка",
-NumberedListProp : "ВлаÑтивоÑті нумерованного ÑпиÑка",
-DlgLstStart : "Початок",
-DlgLstType : "Тип",
-DlgLstTypeCircle : "Коло",
-DlgLstTypeDisc : "ДиÑк",
-DlgLstTypeSquare : "Квадрат",
-DlgLstTypeNumbers : "Ðомери (1, 2, 3)",
-DlgLstTypeLCase : "Літери нижнього регіÑтра(a, b, c)",
-DlgLstTypeUCase : "Букви верхнього регіÑтра (A, B, C)",
-DlgLstTypeSRoman : "Малі римÑькі літери (i, ii, iii)",
-DlgLstTypeLRoman : "Великі римÑькі літери (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Загальні",
-DlgDocBackTab : "Заднє тло",
-DlgDocColorsTab : "Кольори та відÑтупи",
-DlgDocMetaTab : "Мета дані",
-
-DlgDocPageTitle : "Заголовок Ñторінки",
-DlgDocLangDir : "ÐапрÑмок текÑту",
-DlgDocLangDirLTR : "Зліва на право (LTR)",
-DlgDocLangDirRTL : "Зправа на лево (RTL)",
-DlgDocLangCode : "Код мови",
-DlgDocCharSet : "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð±Ð¾Ñ€Ñƒ Ñимволів",
-DlgDocCharSetCE : "Центрально-європейÑька",
-DlgDocCharSetCT : "КитайÑька традиційна (Big5)",
-DlgDocCharSetCR : "КирилицÑ",
-DlgDocCharSetGR : "Грецька",
-DlgDocCharSetJP : "ЯпонÑька",
-DlgDocCharSetKR : "КорейÑька",
-DlgDocCharSetTR : "Турецька",
-DlgDocCharSetUN : "Юнікод (UTF-8)",
-DlgDocCharSetWE : "Західно-европейÑкаÑ",
-DlgDocCharSetOther : "Інше ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð±Ð¾Ñ€Ñƒ Ñимволів",
-
-DlgDocDocType : "Заголовок типу документу",
-DlgDocDocTypeOther : "Інший заголовок типу документу",
-DlgDocIncXHTML : "Ввімкнути XHTML оголошеннÑ",
-DlgDocBgColor : "Колір тла",
-DlgDocBgImage : "URL Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð»Ð°",
-DlgDocBgNoScroll : "Тло без прокрутки",
-DlgDocCText : "ТекÑÑ‚",
-DlgDocCLink : "ПоÑиланнÑ",
-DlgDocCVisited : "Відвідане поÑиланнÑ",
-DlgDocCActive : "Ðктивне поÑиланнÑ",
-DlgDocMargins : "ВідÑтупи Ñторінки",
-DlgDocMaTop : "Верхній",
-DlgDocMaLeft : "Лівий",
-DlgDocMaRight : "Правий",
-DlgDocMaBottom : "Ðижній",
-DlgDocMeIndex : "Ключові Ñлова документа (розділені комами)",
-DlgDocMeDescr : "ÐžÐ¿Ð¸Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°",
-DlgDocMeAuthor : "Ðвтор",
-DlgDocMeCopy : "ÐвторÑькі права",
-DlgDocPreview : "Попередній переглÑд",
-
-// Templates Dialog
-Templates : "Шаблони",
-DlgTemplatesTitle : "Шаблони зміÑту",
-DlgTemplatesSelMsg : "Оберіть, будь лаÑка, шаблон Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð² редакторі<br>(поточний зміÑÑ‚ буде втрачено):",
-DlgTemplatesLoading : "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑпиÑку шаблонів. Зачекайте, будь лаÑка...",
-DlgTemplatesNoTpl : "(Ðе визначено жодного шаблону)",
-DlgTemplatesReplace : "Замінити поточний вміÑÑ‚",
-
-// About Dialog
-DlgAboutAboutTab : "Про програму",
-DlgAboutBrowserInfoTab : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð°",
-DlgAboutLicenseTab : "ЛіцензіÑ",
-DlgAboutVersion : "ВерÑÑ–Ñ",
-DlgAboutInfo : "Додаткову інформацію дивітьÑÑ Ð½Ð° ",
-
-// Div Dialog
-DlgDivGeneralTab : "Загальна",
-DlgDivAdvancedTab : "Розширена",
-DlgDivStyle : "Стиль",
-DlgDivInlineStyle : "Inline Ñтиль"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/vi.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/vi.js
deleted file mode 100644
index c2b2f640f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/vi.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Vietnamese language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "Thu gá»n Thanh công cụ",
-ToolbarExpand : "Mở rộng Thanh công cụ",
-
-// Toolbar Items and Context Menu
-Save : "Lưu",
-NewPage : "Trang má»›i",
-Preview : "Xem trước",
-Cut : "Cắt",
-Copy : "Sao chép",
-Paste : "Dán",
-PasteText : "Dán theo dạng văn bản thuần",
-PasteWord : "Dán với định dạng Word",
-Print : "In",
-SelectAll : "Chá»n Tất cả",
-RemoveFormat : "Xoá Äịnh dạng",
-InsertLinkLbl : "Liên kết",
-InsertLink : "Chèn/Sửa Liên kết",
-RemoveLink : "Xoá Liên kết",
-VisitLink : "Mở Liên Kết",
-Anchor : "Chèn/Sửa Neo",
-AnchorDelete : "Gỡ bỠNeo",
-InsertImageLbl : "Hình ảnh",
-InsertImage : "Chèn/Sửa Hình ảnh",
-InsertFlashLbl : "Flash",
-InsertFlash : "Chèn/Sửa Flash",
-InsertTableLbl : "Bảng",
-InsertTable : "Chèn/Sửa Bảng",
-InsertLineLbl : "ÄÆ°á»ng phân cách ngang",
-InsertLine : "Chèn ÄÆ°á»ng phân cách ngang",
-InsertSpecialCharLbl: "Ký tự đặc biệt",
-InsertSpecialChar : "Chèn Ký tự đặc biệt",
-InsertSmileyLbl : "Hình biểu lá»™ cảm xúc (mặt cưá»i)",
-InsertSmiley : "Chèn Hình biểu lá»™ cảm xúc (mặt cưá»i)",
-About : "Giới thiệu vỠFCKeditor",
-Bold : "Äậm",
-Italic : "Nghiêng",
-Underline : "Gạch chân",
-StrikeThrough : "Gạch xuyên ngang",
-Subscript : "Chỉ số dưới",
-Superscript : "Chỉ số trên",
-LeftJustify : "Canh trái",
-CenterJustify : "Canh giữa",
-RightJustify : "Canh phải",
-BlockJustify : "Canh Ä‘á»u",
-DecreaseIndent : "Dịch ra ngoài",
-IncreaseIndent : "Dịch vào trong",
-Blockquote : "Khối Trích dẫn",
-CreateDiv : "Tạo Div Container",
-EditDiv : "Chỉnh sửa Div Container",
-DeleteDiv : "Gỡ bỠDiv Container",
-Undo : "Khôi phục thao tác",
-Redo : "Làm lại thao tác",
-NumberedListLbl : "Danh sách có thứ tự",
-NumberedList : "Chèn/Xoá Danh sách có thứ tự",
-BulletedListLbl : "Danh sách không thứ tự",
-BulletedList : "Chèn/Xoá Danh sách không thứ tự",
-ShowTableBorders : "Hiển thị ÄÆ°á»ng viá»n bảng",
-ShowDetails : "Hiển thị Chi tiết",
-Style : "Mẫu",
-FontFormat : "Äịnh dạng",
-Font : "Phông",
-FontSize : "Cỡ chữ",
-TextColor : "Màu chữ",
-BGColor : "Màu ná»n",
-Source : "Mã HTML",
-Find : "Tìm kiếm",
-Replace : "Thay thế",
-SpellCheck : "Kiểm tra Chính tả",
-UniversalKeyboard : "Bàn phím Quốc tế",
-PageBreakLbl : "Ngắt trang",
-PageBreak : "Chèn Ngắt trang",
-
-Form : "Biểu mẫu",
-Checkbox : "Nút kiểm",
-RadioButton : "Nút chá»n",
-TextField : "Trưá»ng văn bản",
-Textarea : "Vùng văn bản",
-HiddenField : "Trưá»ng ẩn",
-Button : "Nút",
-SelectionField : "Ô chá»n",
-ImageButton : "Nút hình ảnh",
-
-FitWindow : "Mở rộng tối đa kích thước trình biên tập",
-ShowBlocks : "Hiển thị các Khối",
-
-// Context Menu
-EditLink : "Sửa Liên kết",
-CellCM : "Ô",
-RowCM : "Hàng",
-ColumnCM : "Cá»™t",
-InsertRowAfter : "Chèn Hàng Phía sau",
-InsertRowBefore : "Chèn Hàng Phía trước",
-DeleteRows : "Xoá Hàng",
-InsertColumnAfter : "Chèn Cột Phía sau",
-InsertColumnBefore : "Chèn Cột Phía trước",
-DeleteColumns : "Xoá Cột",
-InsertCellAfter : "Chèn Ô Phía sau",
-InsertCellBefore : "Chèn Ô Phía trước",
-DeleteCells : "Xoá Ô",
-MergeCells : "Kết hợp Ô",
-MergeRight : "Kết hợp Sang phải",
-MergeDown : "Kết hợp Xuống dưới",
-HorizontalSplitCell : "Tách ngang Ô",
-VerticalSplitCell : "Tách dá»c Ô",
-TableDelete : "Xóa Bảng",
-CellProperties : "Thuộc tính Ô",
-TableProperties : "Thuộc tính Bảng",
-ImageProperties : "Thuộc tính Hình ảnh",
-FlashProperties : "Thuộc tính Flash",
-
-AnchorProp : "Thuộc tính Neo",
-ButtonProp : "Thuộc tính Nút",
-CheckboxProp : "Thuộc tính Nút kiểm",
-HiddenFieldProp : "Thuá»™c tính Trưá»ng ẩn",
-RadioButtonProp : "Thuá»™c tính Nút chá»n",
-ImageButtonProp : "Thuộc tính Nút hình ảnh",
-TextFieldProp : "Thuá»™c tính Trưá»ng văn bản",
-SelectionFieldProp : "Thuá»™c tính Ô chá»n",
-TextareaProp : "Thuộc tính Vùng văn bản",
-FormProp : "Thuộc tính Biểu mẫu",
-
-FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "Äang xá»­ lý XHTML. Vui lòng đợi trong giây lát...",
-Done : "Äã hoàn thành",
-PasteWordConfirm : "Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỠđịnh dạng Word trước khi dán?",
-NotCompatiblePaste : "Lệnh này chỉ được hỗ trợ từ trình duyệt Internet Explorer phiên bản 5.5 hoặc mới hơn. Bạn có muốn dán nguyên mẫu?",
-UnknownToolbarItem : "Không rõ mục trên thanh công cụ \"%1\"",
-UnknownCommand : "Không rõ lệnh \"%1\"",
-NotImplemented : "Lệnh không được thực hiện",
-UnknownToolbarSet : "Thanh công cụ \"%1\" không tồn tại",
-NoActiveX : "Các thiết lập bảo mật cá»§a trình duyệt có thể giá»›i hạn má»™t số chức năng cá»§a trình biên tập. Bạn phải bật tùy chá»n \"Run ActiveX controls and plug-ins\". Bạn có thể gặp má»™t số lá»—i và thấy thiếu má»™t số chức năng.",
-BrowseServerBlocked : "Không thể mở được bộ duyệt tài nguyên. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
-DialogBlocked : "Không thể mở được cửa sổ hộp thoại. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
-VisitLinkBlocked : "Không thể mở được cửa sổ trình duyệt mới. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
-
-// Dialogs
-DlgBtnOK : "Äồng ý",
-DlgBtnCancel : "Bá» qua",
-DlgBtnClose : "Äóng",
-DlgBtnBrowseServer : "Duyệt trên máy chủ",
-DlgAdvancedTag : "Mở rộng",
-DlgOpOther : "<Khác>",
-DlgInfoTab : "Thông tin",
-DlgAlertUrl : "Hãy nhập vào một URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<không thiết lập>",
-DlgGenId : "Äịnh danh",
-DlgGenLangDir : "ÄÆ°á»ng dẫn Ngôn ngữ",
-DlgGenLangDirLtr : "Trái sang Phải (LTR)",
-DlgGenLangDirRtl : "Phải sang Trái (RTL)",
-DlgGenLangCode : "Mã Ngôn ngữ",
-DlgGenAccessKey : "Phím Hỗ trợ truy cập",
-DlgGenName : "Tên",
-DlgGenTabIndex : "Chỉ số của Tab",
-DlgGenLongDescr : "Mô tả URL",
-DlgGenClass : "Lá»›p Stylesheet",
-DlgGenTitle : "Advisory Title",
-DlgGenContType : "Advisory Content Type",
-DlgGenLinkCharset : "Bảng mã của tài nguyên được liên kết đến",
-DlgGenStyle : "Mẫu",
-
-// Image Dialog
-DlgImgTitle : "Thuộc tính Hình ảnh",
-DlgImgInfoTab : "Thông tin Hình ảnh",
-DlgImgBtnUpload : "Tải lên Máy chủ",
-DlgImgURL : "URL",
-DlgImgUpload : "Tải lên",
-DlgImgAlt : "Chú thích Hình ảnh",
-DlgImgWidth : "Rá»™ng",
-DlgImgHeight : "Cao",
-DlgImgLockRatio : "Giữ nguyên tỷ lệ",
-DlgBtnResetSize : "Kích thước gốc",
-DlgImgBorder : "ÄÆ°á»ng viá»n",
-DlgImgHSpace : "HSpace",
-DlgImgVSpace : "VSpace",
-DlgImgAlign : "Vị trí",
-DlgImgAlignLeft : "Trái",
-DlgImgAlignAbsBottom: "Dưới tuyệt đối",
-DlgImgAlignAbsMiddle: "Giữa tuyệt đối",
-DlgImgAlignBaseline : "ÄÆ°á»ng cÆ¡ sở",
-DlgImgAlignBottom : "Dưới",
-DlgImgAlignMiddle : "Giữa",
-DlgImgAlignRight : "Phải",
-DlgImgAlignTextTop : "Phía trên chữ",
-DlgImgAlignTop : "Trên",
-DlgImgPreview : "Xem trước",
-DlgImgAlertUrl : "Hãy đưa vào URL của hình ảnh",
-DlgImgLinkTab : "Liên kết",
-
-// Flash Dialog
-DlgFlashTitle : "Thuộc tính Flash",
-DlgFlashChkPlay : "Tự động chạy",
-DlgFlashChkLoop : "Lặp",
-DlgFlashChkMenu : "Cho phép bật Menu của Flash",
-DlgFlashScale : "Tỷ lệ",
-DlgFlashScaleAll : "Hiển thị tất cả",
-DlgFlashScaleNoBorder : "Không đưá»ng viá»n",
-DlgFlashScaleFit : "Vừa vặn",
-
-// Link Dialog
-DlgLnkWindowTitle : "Liên kết",
-DlgLnkInfoTab : "Thông tin Liên kết",
-DlgLnkTargetTab : "Äích",
-
-DlgLnkType : "Kiểu Liên kết",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "Neo trong trang này",
-DlgLnkTypeEMail : "Thư điện tử",
-DlgLnkProto : "Giao thức",
-DlgLnkProtoOther : "<khác>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "Chá»n má»™t Neo",
-DlgLnkAnchorByName : "Theo Tên Neo",
-DlgLnkAnchorById : "Theo Äịnh danh Element",
-DlgLnkNoAnchors : "(Không có Neo nào trong tài liệu)",
-DlgLnkEMail : "Thư điện tử",
-DlgLnkEMailSubject : "Tiêu đỠThông điệp",
-DlgLnkEMailBody : "Nội dung Thông điệp",
-DlgLnkUpload : "Tải lên",
-DlgLnkBtnUpload : "Tải lên Máy chủ",
-
-DlgLnkTarget : "Äích",
-DlgLnkTargetFrame : "<khung>",
-DlgLnkTargetPopup : "<cửa sổ popup>",
-DlgLnkTargetBlank : "Cửa sổ mới (_blank)",
-DlgLnkTargetParent : "Cửa sổ cha (_parent)",
-DlgLnkTargetSelf : "Cùng cửa sổ (_self)",
-DlgLnkTargetTop : "Cửa sổ trên cùng(_top)",
-DlgLnkTargetFrameName : "Tên Khung đích",
-DlgLnkPopWinName : "Tên Cửa sổ Popup",
-DlgLnkPopWinFeat : "Äặc Ä‘iểm cá»§a Cá»­a sổ Popup",
-DlgLnkPopResize : "Kích thước thay đổi",
-DlgLnkPopLocation : "Thanh vị trí",
-DlgLnkPopMenu : "Thanh Menu",
-DlgLnkPopScroll : "Thanh cuá»™n",
-DlgLnkPopStatus : "Thanh trạng thái",
-DlgLnkPopToolbar : "Thanh công cụ",
-DlgLnkPopFullScrn : "Toàn màn hình (IE)",
-DlgLnkPopDependent : "Phụ thuộc (Netscape)",
-DlgLnkPopWidth : "Rá»™ng",
-DlgLnkPopHeight : "Cao",
-DlgLnkPopLeft : "Vị trí Trái",
-DlgLnkPopTop : "Vị trí Trên",
-
-DlnLnkMsgNoUrl : "Hãy đưa vào Liên kết URL",
-DlnLnkMsgNoEMail : "Hãy đưa vào địa chỉ thư điện tử",
-DlnLnkMsgNoAnchor : "Hãy chá»n má»™t Neo",
-DlnLnkMsgInvPopName : "Tên của cửa sổ Popup phải bắt đầu bằng một ký tự và không được chứa khoảng trắng",
-
-// Color Dialog
-DlgColorTitle : "Chá»n màu",
-DlgColorBtnClear : "Xoá",
-DlgColorHighlight : "Tô sáng",
-DlgColorSelected : "Äã chá»n",
-
-// Smiley Dialog
-DlgSmileyTitle : "Chèn Hình biểu lá»™ cảm xúc (mặt cưá»i)",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "Hãy chá»n Ký tá»± đặc biệt",
-
-// Table Dialog
-DlgTableTitle : "Thuộc tính bảng",
-DlgTableRows : "Hàng",
-DlgTableColumns : "Cá»™t",
-DlgTableBorder : "Cỡ ÄÆ°á»ng viá»n",
-DlgTableAlign : "Canh lá»",
-DlgTableAlignNotSet : "<Chưa thiết lập>",
-DlgTableAlignLeft : "Trái",
-DlgTableAlignCenter : "Giữa",
-DlgTableAlignRight : "Phải",
-DlgTableWidth : "Rá»™ng",
-DlgTableWidthPx : "điểm (px)",
-DlgTableWidthPc : "%",
-DlgTableHeight : "Cao",
-DlgTableCellSpace : "Khoảng cách Ô",
-DlgTableCellPad : "Äệm Ô",
-DlgTableCaption : "Äầu Ä‘á»",
-DlgTableSummary : "Tóm lược",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "Thuộc tính Ô",
-DlgCellWidth : "Rá»™ng",
-DlgCellWidthPx : "điểm (px)",
-DlgCellWidthPc : "%",
-DlgCellHeight : "Cao",
-DlgCellWordWrap : "Bá»c từ",
-DlgCellWordWrapNotSet : "<Chưa thiết lập>",
-DlgCellWordWrapYes : "Äồng ý",
-DlgCellWordWrapNo : "Không",
-DlgCellHorAlign : "Canh theo Chiá»u ngang",
-DlgCellHorAlignNotSet : "<Chưa thiết lập>",
-DlgCellHorAlignLeft : "Trái",
-DlgCellHorAlignCenter : "Giữa",
-DlgCellHorAlignRight: "Phải",
-DlgCellVerAlign : "Canh theo Chiá»u dá»c",
-DlgCellVerAlignNotSet : "<Chưa thiết lập>",
-DlgCellVerAlignTop : "Trên",
-DlgCellVerAlignMiddle : "Giữa",
-DlgCellVerAlignBottom : "Dưới",
-DlgCellVerAlignBaseline : "ÄÆ°á»ng cÆ¡ sở",
-DlgCellType : "Cell Type", //MISSING
-DlgCellTypeData : "Data", //MISSING
-DlgCellTypeHeader : "Header", //MISSING
-DlgCellRowSpan : "Nối Hàng",
-DlgCellCollSpan : "Nối Cột",
-DlgCellBackColor : "Màu ná»n",
-DlgCellBorderColor : "Màu viá»n",
-DlgCellBtnSelect : "Chá»n...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "Tìm kiếm và Thay Thế",
-
-// Find Dialog
-DlgFindTitle : "Tìm kiếm",
-DlgFindFindBtn : "Tìm kiếm",
-DlgFindNotFoundMsg : "Không tìm thấy chuỗi cần tìm.",
-
-// Replace Dialog
-DlgReplaceTitle : "Thay thế",
-DlgReplaceFindLbl : "Tìm chuỗi:",
-DlgReplaceReplaceLbl : "Thay bằng:",
-DlgReplaceCaseChk : "Phân biệt chữ hoa/thưá»ng",
-DlgReplaceReplaceBtn : "Thay thế",
-DlgReplaceReplAllBtn : "Thay thế Tất cả",
-DlgReplaceWordChk : "Äúng toàn bá»™ từ",
-
-// Paste Operations / Dialog
-PasteErrorCut : "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).",
-PasteErrorCopy : "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).",
-
-PasteAsText : "Dán theo định dạng văn bản thuần",
-PasteFromWord : "Dán với định dạng Word",
-
-DlgPasteMsg2 : "Hãy dán ná»™i dung vào trong khung bên dưới, sá»­ dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Äồng ý</STRONG>.",
-DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING
-DlgPasteIgnoreFont : "Chấp nhận các định dạng phông",
-DlgPasteRemoveStyles : "Gỡ bỠcác định dạng Styles",
-
-// Color Picker
-ColorAutomatic : "Tự động",
-ColorMoreColors : "Màu khác...",
-
-// Document Properties
-DocProps : "Thuộc tính Tài liệu",
-
-// Anchor Dialog
-DlgAnchorTitle : "Thuộc tính Neo",
-DlgAnchorName : "Tên của Neo",
-DlgAnchorErrorName : "Hãy nhập vào tên của Neo",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "Không có trong từ điển",
-DlgSpellChangeTo : "Chuyển thành",
-DlgSpellBtnIgnore : "Bá» qua",
-DlgSpellBtnIgnoreAll : "BỠqua Tất cả",
-DlgSpellBtnReplace : "Thay thế",
-DlgSpellBtnReplaceAll : "Thay thế Tất cả",
-DlgSpellBtnUndo : "Phục hồi lại",
-DlgSpellNoSuggestions : "- Không đưa ra gợi ý vỠtừ -",
-DlgSpellProgress : "Äang tiến hành kiểm tra chính tả...",
-DlgSpellNoMispell : "Hoàn tất kiểm tra chính tả: Không có lỗi chính tả",
-DlgSpellNoChanges : "Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi",
-DlgSpellOneChange : "Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi",
-DlgSpellManyChanges : "Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi",
-
-IeSpellDownload : "Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải vỠngay bây gi�",
-
-// Button Dialog
-DlgButtonText : "Chuỗi hiển thị (Giá trị)",
-DlgButtonType : "Kiểu",
-DlgButtonTypeBtn : "Nút Bấm",
-DlgButtonTypeSbm : "Nút Gửi",
-DlgButtonTypeRst : "Nút Nhập lại",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "Tên",
-DlgCheckboxValue : "Giá trị",
-DlgCheckboxSelected : "ÄÆ°á»£c chá»n",
-
-// Form Dialog
-DlgFormName : "Tên",
-DlgFormAction : "Hành động",
-DlgFormMethod : "Phương thức",
-
-// Select Field Dialog
-DlgSelectName : "Tên",
-DlgSelectValue : "Giá trị",
-DlgSelectSize : "Kích cỡ",
-DlgSelectLines : "dòng",
-DlgSelectChkMulti : "Cho phép chá»n nhiá»u",
-DlgSelectOpAvail : "Các tùy chá»n có thể sá»­ dụng",
-DlgSelectOpText : "Văn bản",
-DlgSelectOpValue : "Giá trị",
-DlgSelectBtnAdd : "Thêm",
-DlgSelectBtnModify : "Thay đổi",
-DlgSelectBtnUp : "Lên",
-DlgSelectBtnDown : "Xuống",
-DlgSelectBtnSetValue : "Giá trị được chá»n",
-DlgSelectBtnDelete : "Xoá",
-
-// Textarea Dialog
-DlgTextareaName : "Tên",
-DlgTextareaCols : "Cá»™t",
-DlgTextareaRows : "Hàng",
-
-// Text Field Dialog
-DlgTextName : "Tên",
-DlgTextValue : "Giá trị",
-DlgTextCharWidth : "Rá»™ng",
-DlgTextMaxChars : "Số Ký tự tối đa",
-DlgTextType : "Kiểu",
-DlgTextTypeText : "Ký tự",
-DlgTextTypePass : "Mật khẩu",
-
-// Hidden Field Dialog
-DlgHiddenName : "Tên",
-DlgHiddenValue : "Giá trị",
-
-// Bulleted List Dialog
-BulletedListProp : "Thuộc tính Danh sách không thứ tự",
-NumberedListProp : "Thuộc tính Danh sách có thứ tự",
-DlgLstStart : "Bắt đầu",
-DlgLstType : "Kiểu",
-DlgLstTypeCircle : "Hình tròn",
-DlgLstTypeDisc : "Hình đĩa",
-DlgLstTypeSquare : "Hình vuông",
-DlgLstTypeNumbers : "Số thứ tự (1, 2, 3)",
-DlgLstTypeLCase : "Chữ cái thưá»ng (a, b, c)",
-DlgLstTypeUCase : "Chữ cái hoa (A, B, C)",
-DlgLstTypeSRoman : "Số La Mã thưá»ng (i, ii, iii)",
-DlgLstTypeLRoman : "Số La Mã hoa (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "Toàn thể",
-DlgDocBackTab : "Ná»n",
-DlgDocColorsTab : "Màu sắc và ÄÆ°á»ng biên",
-DlgDocMetaTab : "Siêu dữ liệu",
-
-DlgDocPageTitle : "Tiêu đỠTrang",
-DlgDocLangDir : "ÄÆ°á»ng dẫn Ngôn ngữ",
-DlgDocLangDirLTR : "Trái sang Phải (LTR)",
-DlgDocLangDirRTL : "Phải sang Trái (RTL)",
-DlgDocLangCode : "Mã Ngôn ngữ",
-DlgDocCharSet : "Bảng mã ký tự",
-DlgDocCharSetCE : "Trung Âu",
-DlgDocCharSetCT : "Tiếng Trung Quốc (Big5)",
-DlgDocCharSetCR : "Tiếng Kirin",
-DlgDocCharSetGR : "Tiếng Hy Lạp",
-DlgDocCharSetJP : "Tiếng Nhật",
-DlgDocCharSetKR : "Tiếng Hàn",
-DlgDocCharSetTR : "Tiếng Thổ Nhĩ Kỳ",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "Tây Âu",
-DlgDocCharSetOther : "Bảng mã ký tự khác",
-
-DlgDocDocType : "Kiểu Äá» mục Tài liệu",
-DlgDocDocTypeOther : "Kiểu Äá» mục Tài liệu khác",
-DlgDocIncXHTML : "Bao gồm cả định nghĩa XHTML",
-DlgDocBgColor : "Màu ná»n",
-DlgDocBgImage : "URL cá»§a Hình ảnh ná»n",
-DlgDocBgNoScroll : "Không cuá»™n ná»n",
-DlgDocCText : "Văn bản",
-DlgDocCLink : "Liên kết",
-DlgDocCVisited : "Liên kết Äã ghé thăm",
-DlgDocCActive : "Liên kết Hiện hành",
-DlgDocMargins : "ÄÆ°á»ng biên cá»§a Trang",
-DlgDocMaTop : "Trên",
-DlgDocMaLeft : "Trái",
-DlgDocMaRight : "Phải",
-DlgDocMaBottom : "Dưới",
-DlgDocMeIndex : "Các từ khóa chỉ mục tài liệu (phân cách bởi dấu phẩy)",
-DlgDocMeDescr : "Mô tả tài liệu",
-DlgDocMeAuthor : "Tác giả",
-DlgDocMeCopy : "Bản quyá»n",
-DlgDocPreview : "Xem trước",
-
-// Templates Dialog
-Templates : "Mẫu dựng sẵn",
-DlgTemplatesTitle : "Nội dung Mẫu dựng sẵn",
-DlgTemplatesSelMsg : "Hãy chá»n Mẫu dá»±ng sẵn để mở trong trình biên tập<br>(ná»™i dung hiện tại sẽ bị mất):",
-DlgTemplatesLoading : "Äang nạp Danh sách Mẫu dá»±ng sẵn. Vui lòng đợi trong giây lát...",
-DlgTemplatesNoTpl : "(Không có Mẫu dựng sẵn nào được định nghĩa)",
-DlgTemplatesReplace : "Thay thế nội dung hiện tại",
-
-// About Dialog
-DlgAboutAboutTab : "Giới thiệu",
-DlgAboutBrowserInfoTab : "Thông tin trình duyệt",
-DlgAboutLicenseTab : "Giấy phép",
-DlgAboutVersion : "phiên bản",
-DlgAboutInfo : "Äể biết thêm thông tin, hãy truy cập",
-
-// Div Dialog
-DlgDivGeneralTab : "Chung",
-DlgDivAdvancedTab : "Nâng cao",
-DlgDivStyle : "Kiểu Style",
-DlgDivInlineStyle : "Kiểu Style Trực tiếp"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh-cn.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh-cn.js
deleted file mode 100644
index 955d8f69d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh-cn.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Chinese Simplified language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "折å å·¥å…·æ ",
-ToolbarExpand : "展开工具æ ",
-
-// Toolbar Items and Context Menu
-Save : "ä¿å­˜",
-NewPage : "新建",
-Preview : "预览",
-Cut : "剪切",
-Copy : "å¤åˆ¶",
-Paste : "粘贴",
-PasteText : "ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬",
-PasteWord : "从 MS Word 粘贴",
-Print : "打å°",
-SelectAll : "全选",
-RemoveFormat : "清除格å¼",
-InsertLinkLbl : "超链接",
-InsertLink : "æ’å…¥/编辑超链接",
-RemoveLink : "å–æ¶ˆè¶…链接",
-VisitLink : "打开超链接",
-Anchor : "æ’å…¥/编辑锚点链接",
-AnchorDelete : "清除锚点链接",
-InsertImageLbl : "图象",
-InsertImage : "æ’å…¥/编辑图象",
-InsertFlashLbl : "Flash",
-InsertFlash : "æ’å…¥/编辑 Flash",
-InsertTableLbl : "表格",
-InsertTable : "æ’å…¥/编辑表格",
-InsertLineLbl : "水平线",
-InsertLine : "æ’入水平线",
-InsertSpecialCharLbl: "特殊符å·",
-InsertSpecialChar : "æ’入特殊符å·",
-InsertSmileyLbl : "表情符",
-InsertSmiley : "æ’入表情图标",
-About : "关于 FCKeditor",
-Bold : "加粗",
-Italic : "倾斜",
-Underline : "下划线",
-StrikeThrough : "删除线",
-Subscript : "下标",
-Superscript : "上标",
-LeftJustify : "左对é½",
-CenterJustify : "居中对é½",
-RightJustify : "å³å¯¹é½",
-BlockJustify : "两端对é½",
-DecreaseIndent : "å‡å°‘缩进é‡",
-IncreaseIndent : "增加缩进é‡",
-Blockquote : "å—引用",
-CreateDiv : "æ’å…¥ Div 标签",
-EditDiv : "编辑 Div 标签",
-DeleteDiv : "删除 Div 标签",
-Undo : "撤消",
-Redo : "é‡åš",
-NumberedListLbl : "ç¼–å·åˆ—表",
-NumberedList : "æ’å…¥/删除编å·åˆ—表",
-BulletedListLbl : "项目列表",
-BulletedList : "æ’å…¥/删除项目列表",
-ShowTableBorders : "显示表格边框",
-ShowDetails : "显示详细资料",
-Style : "æ ·å¼",
-FontFormat : "æ ¼å¼",
-Font : "字体",
-FontSize : "大å°",
-TextColor : "文本颜色",
-BGColor : "背景颜色",
-Source : "æºä»£ç ",
-Find : "查找",
-Replace : "替æ¢",
-SpellCheck : "拼写检查",
-UniversalKeyboard : "软键盘",
-PageBreakLbl : "分页符",
-PageBreak : "æ’入分页符",
-
-Form : "表å•",
-Checkbox : "å¤é€‰æ¡†",
-RadioButton : "å•选按钮",
-TextField : "å•行文本",
-Textarea : "多行文本",
-HiddenField : "éšè—域",
-Button : "按钮",
-SelectionField : "列表/èœå•",
-ImageButton : "图åƒåŸŸ",
-
-FitWindow : "å…¨å±ç¼–辑",
-ShowBlocks : "显示区å—",
-
-// Context Menu
-EditLink : "编辑超链接",
-CellCM : "å•元格",
-RowCM : "行",
-ColumnCM : "列",
-InsertRowAfter : "在下方æ’入行",
-InsertRowBefore : "在上方æ’入行",
-DeleteRows : "删除行",
-InsertColumnAfter : "在å³ä¾§æ’入列",
-InsertColumnBefore : "在左侧æ’入列",
-DeleteColumns : "删除列",
-InsertCellAfter : "在å³ä¾§æ’å…¥å•元格",
-InsertCellBefore : "在左侧æ’å…¥å•元格",
-DeleteCells : "删除å•元格",
-MergeCells : "åˆå¹¶å•元格",
-MergeRight : "å‘å³åˆå¹¶å•元格",
-MergeDown : "å‘下åˆå¹¶å•元格",
-HorizontalSplitCell : "水平拆分å•元格",
-VerticalSplitCell : "垂直拆分å•元格",
-TableDelete : "删除表格",
-CellProperties : "å•元格属性",
-TableProperties : "表格属性",
-ImageProperties : "图象属性",
-FlashProperties : "Flash 属性",
-
-AnchorProp : "锚点链接属性",
-ButtonProp : "按钮属性",
-CheckboxProp : "å¤é€‰æ¡†å±žæ€§",
-HiddenFieldProp : "éšè—域属性",
-RadioButtonProp : "å•选按钮属性",
-ImageButtonProp : "图åƒåŸŸå±žæ€§",
-TextFieldProp : "å•行文本属性",
-SelectionFieldProp : "èœå•/列表属性",
-TextareaProp : "多行文本属性",
-FormProp : "表å•属性",
-
-FontFormats : "普通;已编排格å¼;地å€;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段è½(DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "æ­£åœ¨å¤„ç† XHTML,请ç¨ç­‰...",
-Done : "完æˆ",
-PasteWordConfirm : "您è¦ç²˜è´´çš„å†…å®¹å¥½åƒæ˜¯æ¥è‡ª MS Word,是å¦è¦æ¸…除 MS Word æ ¼å¼åŽå†ç²˜è´´ï¼Ÿ",
-NotCompatiblePaste : "è¯¥å‘½ä»¤éœ€è¦ Internet Explorer 5.5 或更高版本的支æŒï¼Œæ˜¯å¦æŒ‰å¸¸è§„粘贴进行?",
-UnknownToolbarItem : "未知工具æ é¡¹ç›® \"%1\"",
-UnknownCommand : "未知命令åç§° \"%1\"",
-NotImplemented : "命令无法执行",
-UnknownToolbarSet : "工具æ è®¾ç½® \"%1\" ä¸å­˜åœ¨",
-NoActiveX : "æµè§ˆå™¨å®‰å…¨è®¾ç½®é™åˆ¶äº†æœ¬ç¼–辑器的æŸäº›åŠŸèƒ½ã€‚æ‚¨å¿…é¡»å¯ç”¨å®‰å…¨è®¾ç½®ä¸­çš„“è¿è¡Œ ActiveX 控件和æ’ä»¶â€ï¼Œå¦åˆ™å°†å‡ºçްæŸäº›é”™è¯¯å¹¶ç¼ºå°‘功能。",
-BrowseServerBlocked : "æ— æ³•æ‰“å¼€èµ„æºæµè§ˆå™¨ï¼Œè¯·ç¡®è®¤æ˜¯å¦å¯ç”¨äº†ç¦æ­¢å¼¹å‡ºçª—å£ã€‚",
-DialogBlocked : "æ— æ³•æ‰“å¼€å¯¹è¯æ¡†çª—å£ï¼Œè¯·ç¡®è®¤æ˜¯å¦å¯ç”¨äº†ç¦æ­¢å¼¹å‡ºçª—壿ˆ–ç½‘é¡µå¯¹è¯æ¡†ï¼ˆIE)。",
-VisitLinkBlocked : "无法打开新窗å£ï¼Œè¯·ç¡®è®¤æ˜¯å¦å¯ç”¨äº†ç¦æ­¢å¼¹å‡ºçª—壿ˆ–ç½‘é¡µå¯¹è¯æ¡†ï¼ˆIE)。",
-
-// Dialogs
-DlgBtnOK : "确定",
-DlgBtnCancel : "å–æ¶ˆ",
-DlgBtnClose : "关闭",
-DlgBtnBrowseServer : "æµè§ˆæœåС噍",
-DlgAdvancedTag : "高级",
-DlgOpOther : "<其它>",
-DlgInfoTab : "ä¿¡æ¯",
-DlgAlertUrl : "请æ’å…¥ URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<没有设置>",
-DlgGenId : "ID",
-DlgGenLangDir : "语言方å‘",
-DlgGenLangDirLtr : "ä»Žå·¦åˆ°å³ (LTR)",
-DlgGenLangDirRtl : "从å³åˆ°å·¦ (RTL)",
-DlgGenLangCode : "语言代ç ",
-DlgGenAccessKey : "访问键",
-DlgGenName : "åç§°",
-DlgGenTabIndex : "Tab 键次åº",
-DlgGenLongDescr : "详细说明地å€",
-DlgGenClass : "æ ·å¼ç±»åç§°",
-DlgGenTitle : "标题",
-DlgGenContType : "内容类型",
-DlgGenLinkCharset : "字符编ç ",
-DlgGenStyle : "行内样å¼",
-
-// Image Dialog
-DlgImgTitle : "图象属性",
-DlgImgInfoTab : "图象",
-DlgImgBtnUpload : "å‘é€åˆ°æœåŠ¡å™¨ä¸Š",
-DlgImgURL : "æºæ–‡ä»¶",
-DlgImgUpload : "上传",
-DlgImgAlt : "æ›¿æ¢æ–‡æœ¬",
-DlgImgWidth : "宽度",
-DlgImgHeight : "高度",
-DlgImgLockRatio : "é”定比例",
-DlgBtnResetSize : "æ¢å¤å°ºå¯¸",
-DlgImgBorder : "边框大å°",
-DlgImgHSpace : "水平间è·",
-DlgImgVSpace : "垂直间è·",
-DlgImgAlign : "坹齿–¹å¼",
-DlgImgAlignLeft : "左对é½",
-DlgImgAlignAbsBottom: "ç»å¯¹åº•è¾¹",
-DlgImgAlignAbsMiddle: "ç»å¯¹å±…中",
-DlgImgAlignBaseline : "基线",
-DlgImgAlignBottom : "底边",
-DlgImgAlignMiddle : "居中",
-DlgImgAlignRight : "å³å¯¹é½",
-DlgImgAlignTextTop : "文本上方",
-DlgImgAlignTop : "顶端",
-DlgImgPreview : "预览",
-DlgImgAlertUrl : "请输入图象地å€",
-DlgImgLinkTab : "链接",
-
-// Flash Dialog
-DlgFlashTitle : "Flash 属性",
-DlgFlashChkPlay : "自动播放",
-DlgFlashChkLoop : "循环",
-DlgFlashChkMenu : "å¯ç”¨ Flash èœå•",
-DlgFlashScale : "缩放",
-DlgFlashScaleAll : "全部显示",
-DlgFlashScaleNoBorder : "无边框",
-DlgFlashScaleFit : "严格匹é…",
-
-// Link Dialog
-DlgLnkWindowTitle : "超链接",
-DlgLnkInfoTab : "超链接信æ¯",
-DlgLnkTargetTab : "目标",
-
-DlgLnkType : "超链接类型",
-DlgLnkTypeURL : "超链接",
-DlgLnkTypeAnchor : "页内锚点链接",
-DlgLnkTypeEMail : "电å­é‚®ä»¶",
-DlgLnkProto : "åè®®",
-DlgLnkProtoOther : "<其它>",
-DlgLnkURL : "地å€",
-DlgLnkAnchorSel : "选择一个锚点",
-DlgLnkAnchorByName : "按锚点åç§°",
-DlgLnkAnchorById : "按锚点 ID",
-DlgLnkNoAnchors : "(此文档没有å¯ç”¨çš„锚点)",
-DlgLnkEMail : "地å€",
-DlgLnkEMailSubject : "主题",
-DlgLnkEMailBody : "内容",
-DlgLnkUpload : "上传",
-DlgLnkBtnUpload : "å‘é€åˆ°æœåŠ¡å™¨ä¸Š",
-
-DlgLnkTarget : "目标",
-DlgLnkTargetFrame : "<框架>",
-DlgLnkTargetPopup : "<弹出窗å£>",
-DlgLnkTargetBlank : "æ–°çª—å£ (_blank)",
-DlgLnkTargetParent : "çˆ¶çª—å£ (_parent)",
-DlgLnkTargetSelf : "æœ¬çª—å£ (_self)",
-DlgLnkTargetTop : "整页 (_top)",
-DlgLnkTargetFrameName : "目标框架åç§°",
-DlgLnkPopWinName : "弹出窗å£åç§°",
-DlgLnkPopWinFeat : "弹出窗å£å±žæ€§",
-DlgLnkPopResize : "调整大å°",
-DlgLnkPopLocation : "åœ°å€æ ",
-DlgLnkPopMenu : "èœå•æ ",
-DlgLnkPopScroll : "滚动æ¡",
-DlgLnkPopStatus : "çŠ¶æ€æ ",
-DlgLnkPopToolbar : "工具æ ",
-DlgLnkPopFullScrn : "å…¨å± (IE)",
-DlgLnkPopDependent : "ä¾é™„ (NS)",
-DlgLnkPopWidth : "宽",
-DlgLnkPopHeight : "高",
-DlgLnkPopLeft : "å·¦",
-DlgLnkPopTop : "å³",
-
-DlnLnkMsgNoUrl : "请输入超链接地å€",
-DlnLnkMsgNoEMail : "请输入电å­é‚®ä»¶åœ°å€",
-DlnLnkMsgNoAnchor : "请选择一个锚点",
-DlnLnkMsgInvPopName : "弹出窗å£å称必须以字æ¯å¼€å¤´ï¼Œå¹¶ä¸”ä¸èƒ½å«æœ‰ç©ºæ ¼ã€‚",
-
-// Color Dialog
-DlgColorTitle : "选择颜色",
-DlgColorBtnClear : "清除",
-DlgColorHighlight : "预览",
-DlgColorSelected : "选择",
-
-// Smiley Dialog
-DlgSmileyTitle : "æ’入表情图标",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "选择特殊符å·",
-
-// Table Dialog
-DlgTableTitle : "表格属性",
-DlgTableRows : "行数",
-DlgTableColumns : "列数",
-DlgTableBorder : "边框",
-DlgTableAlign : "对é½",
-DlgTableAlignNotSet : "<没有设置>",
-DlgTableAlignLeft : "左对é½",
-DlgTableAlignCenter : "居中",
-DlgTableAlignRight : "å³å¯¹é½",
-DlgTableWidth : "宽度",
-DlgTableWidthPx : "åƒç´ ",
-DlgTableWidthPc : "百分比",
-DlgTableHeight : "高度",
-DlgTableCellSpace : "é—´è·",
-DlgTableCellPad : "è¾¹è·",
-DlgTableCaption : "标题",
-DlgTableSummary : "摘è¦",
-DlgTableHeaders : "标题å•元格",
-DlgTableHeadersNone : "æ— ",
-DlgTableHeadersColumn : "第一列",
-DlgTableHeadersRow : "第一行",
-DlgTableHeadersBoth : "第一列和第一行",
-
-// Table Cell Dialog
-DlgCellTitle : "å•元格属性",
-DlgCellWidth : "宽度",
-DlgCellWidthPx : "åƒç´ ",
-DlgCellWidthPc : "百分比",
-DlgCellHeight : "高度",
-DlgCellWordWrap : "自动æ¢è¡Œ",
-DlgCellWordWrapNotSet : "<没有设置>",
-DlgCellWordWrapYes : "是",
-DlgCellWordWrapNo : "å¦",
-DlgCellHorAlign : "水平对é½",
-DlgCellHorAlignNotSet : "<没有设置>",
-DlgCellHorAlignLeft : "左对é½",
-DlgCellHorAlignCenter : "居中",
-DlgCellHorAlignRight: "å³å¯¹é½",
-DlgCellVerAlign : "垂直对é½",
-DlgCellVerAlignNotSet : "<没有设置>",
-DlgCellVerAlignTop : "顶端",
-DlgCellVerAlignMiddle : "居中",
-DlgCellVerAlignBottom : "底部",
-DlgCellVerAlignBaseline : "基线",
-DlgCellType : "å•元格类型",
-DlgCellTypeData : "资料",
-DlgCellTypeHeader : "标题",
-DlgCellRowSpan : "纵跨行数",
-DlgCellCollSpan : "横跨列数",
-DlgCellBackColor : "背景颜色",
-DlgCellBorderColor : "边框颜色",
-DlgCellBtnSelect : "选择...",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "查找和替æ¢",
-
-// Find Dialog
-DlgFindTitle : "查找",
-DlgFindFindBtn : "查找",
-DlgFindNotFoundMsg : "指定文本没有找到。",
-
-// Replace Dialog
-DlgReplaceTitle : "替æ¢",
-DlgReplaceFindLbl : "查找:",
-DlgReplaceReplaceLbl : "替æ¢:",
-DlgReplaceCaseChk : "区分大å°å†™",
-DlgReplaceReplaceBtn : "替æ¢",
-DlgReplaceReplAllBtn : "全部替æ¢",
-DlgReplaceWordChk : "全字匹é…",
-
-// Paste Operations / Dialog
-PasteErrorCut : "您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行剪切æ“作,请使用键盘快æ·é”®(Ctrl+X)æ¥å®Œæˆã€‚",
-PasteErrorCopy : "您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行å¤åˆ¶æ“作,请使用键盘快æ·é”®(Ctrl+C)æ¥å®Œæˆã€‚",
-
-PasteAsText : "ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬",
-PasteFromWord : "从 MS Word 粘贴",
-
-DlgPasteMsg2 : "请使用键盘快æ·é”®(<STRONG>Ctrl+V</STRONG>)把内容粘贴到下é¢çš„æ–¹æ¡†é‡Œï¼Œå†æŒ‰ <STRONG>确定</STRONG>。",
-DlgPasteSec : "因为你的æµè§ˆå™¨çš„安全设置原因,本编辑器ä¸èƒ½ç›´æŽ¥è®¿é—®ä½ çš„剪贴æ¿å†…容,你需è¦åœ¨æœ¬çª—å£é‡æ–°ç²˜è´´ä¸€æ¬¡ã€‚",
-DlgPasteIgnoreFont : "忽略 Font 标签",
-DlgPasteRemoveStyles : "æ¸…ç† CSS æ ·å¼",
-
-// Color Picker
-ColorAutomatic : "自动",
-ColorMoreColors : "其它颜色...",
-
-// Document Properties
-DocProps : "页é¢å±žæ€§",
-
-// Anchor Dialog
-DlgAnchorTitle : "命å锚点",
-DlgAnchorName : "锚点åç§°",
-DlgAnchorErrorName : "请输入锚点åç§°",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "没有在字典里",
-DlgSpellChangeTo : "更改为",
-DlgSpellBtnIgnore : "忽略",
-DlgSpellBtnIgnoreAll : "全部忽略",
-DlgSpellBtnReplace : "替æ¢",
-DlgSpellBtnReplaceAll : "全部替æ¢",
-DlgSpellBtnUndo : "撤消",
-DlgSpellNoSuggestions : "- 没有建议 -",
-DlgSpellProgress : "正在进行拼写检查...",
-DlgSpellNoMispell : "拼写检查完æˆï¼šæ²¡æœ‰å‘现拼写错误",
-DlgSpellNoChanges : "拼写检查完æˆï¼šæ²¡æœ‰æ›´æ”¹ä»»ä½•å•è¯",
-DlgSpellOneChange : "拼写检查完æˆï¼šæ›´æ”¹äº†ä¸€ä¸ªå•è¯",
-DlgSpellManyChanges : "拼写检查完æˆï¼šæ›´æ”¹äº† %1 个å•è¯",
-
-IeSpellDownload : "拼写检查æ’ä»¶è¿˜æ²¡å®‰è£…ï¼Œä½ æ˜¯å¦æƒ³çŽ°åœ¨å°±ä¸‹è½½ï¼Ÿ",
-
-// Button Dialog
-DlgButtonText : "标签(值)",
-DlgButtonType : "类型",
-DlgButtonTypeBtn : "按钮",
-DlgButtonTypeSbm : "æäº¤",
-DlgButtonTypeRst : "é‡è®¾",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "åç§°",
-DlgCheckboxValue : "选定值",
-DlgCheckboxSelected : "已勾选",
-
-// Form Dialog
-DlgFormName : "åç§°",
-DlgFormAction : "动作",
-DlgFormMethod : "方法",
-
-// Select Field Dialog
-DlgSelectName : "åç§°",
-DlgSelectValue : "选定",
-DlgSelectSize : "高度",
-DlgSelectLines : "行",
-DlgSelectChkMulti : "å…许多选",
-DlgSelectOpAvail : "列表值",
-DlgSelectOpText : "标签",
-DlgSelectOpValue : "值",
-DlgSelectBtnAdd : "新增",
-DlgSelectBtnModify : "修改",
-DlgSelectBtnUp : "上移",
-DlgSelectBtnDown : "下移",
-DlgSelectBtnSetValue : "设为åˆå§‹åŒ–时选定",
-DlgSelectBtnDelete : "删除",
-
-// Textarea Dialog
-DlgTextareaName : "åç§°",
-DlgTextareaCols : "字符宽度",
-DlgTextareaRows : "行数",
-
-// Text Field Dialog
-DlgTextName : "åç§°",
-DlgTextValue : "åˆå§‹å€¼",
-DlgTextCharWidth : "字符宽度",
-DlgTextMaxChars : "最多字符数",
-DlgTextType : "类型",
-DlgTextTypeText : "文本",
-DlgTextTypePass : "密ç ",
-
-// Hidden Field Dialog
-DlgHiddenName : "åç§°",
-DlgHiddenValue : "åˆå§‹å€¼",
-
-// Bulleted List Dialog
-BulletedListProp : "项目列表属性",
-NumberedListProp : "ç¼–å·åˆ—表属性",
-DlgLstStart : "开始åºå·",
-DlgLstType : "列表类型",
-DlgLstTypeCircle : "圆圈",
-DlgLstTypeDisc : "圆点",
-DlgLstTypeSquare : "æ–¹å—",
-DlgLstTypeNumbers : "æ•°å­— (1, 2, 3)",
-DlgLstTypeLCase : "å°å†™å­—æ¯ (a, b, c)",
-DlgLstTypeUCase : "å¤§å†™å­—æ¯ (A, B, C)",
-DlgLstTypeSRoman : "å°å†™ç½—马数字 (i, ii, iii)",
-DlgLstTypeLRoman : "大写罗马数字 (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "常规",
-DlgDocBackTab : "背景",
-DlgDocColorsTab : "颜色和边è·",
-DlgDocMetaTab : "Meta æ•°æ®",
-
-DlgDocPageTitle : "页颿 ‡é¢˜",
-DlgDocLangDir : "语言方å‘",
-DlgDocLangDirLTR : "ä»Žå·¦åˆ°å³ (LTR)",
-DlgDocLangDirRTL : "从å³åˆ°å·¦ (RTL)",
-DlgDocLangCode : "语言代ç ",
-DlgDocCharSet : "字符编ç ",
-DlgDocCharSetCE : "中欧",
-DlgDocCharSetCT : "ç¹ä½“中文 (Big5)",
-DlgDocCharSetCR : "西里尔文",
-DlgDocCharSetGR : "希腊文",
-DlgDocCharSetJP : "日文",
-DlgDocCharSetKR : "韩文",
-DlgDocCharSetTR : "土耳其文",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "西欧",
-DlgDocCharSetOther : "其它字符编ç ",
-
-DlgDocDocType : "文档类型",
-DlgDocDocTypeOther : "其它文档类型",
-DlgDocIncXHTML : "åŒ…å« XHTML 声明",
-DlgDocBgColor : "背景颜色",
-DlgDocBgImage : "背景图åƒ",
-DlgDocBgNoScroll : "䏿»šåŠ¨èƒŒæ™¯å›¾åƒ",
-DlgDocCText : "文本",
-DlgDocCLink : "超链接",
-DlgDocCVisited : "已访问的超链接",
-DlgDocCActive : "活动超链接",
-DlgDocMargins : "页é¢è¾¹è·",
-DlgDocMaTop : "上",
-DlgDocMaLeft : "å·¦",
-DlgDocMaRight : "å³",
-DlgDocMaBottom : "下",
-DlgDocMeIndex : "页é¢ç´¢å¼•关键字 (用åŠè§’逗å·[,]分隔)",
-DlgDocMeDescr : "页é¢è¯´æ˜Ž",
-DlgDocMeAuthor : "作者",
-DlgDocMeCopy : "版æƒ",
-DlgDocPreview : "预览",
-
-// Templates Dialog
-Templates : "模æ¿",
-DlgTemplatesTitle : "内容模æ¿",
-DlgTemplatesSelMsg : "请选择编辑器内容模æ¿:",
-DlgTemplatesLoading : "正在加载模æ¿åˆ—表,请ç¨ç­‰...",
-DlgTemplatesNoTpl : "(没有模æ¿)",
-DlgTemplatesReplace : "替æ¢å½“å‰å†…容",
-
-// About Dialog
-DlgAboutAboutTab : "关于",
-DlgAboutBrowserInfoTab : "æµè§ˆå™¨ä¿¡æ¯",
-DlgAboutLicenseTab : "许å¯è¯",
-DlgAboutVersion : "版本",
-DlgAboutInfo : "è¦èŽ·å¾—æ›´å¤šä¿¡æ¯è¯·è®¿é—® ",
-
-// Div Dialog
-DlgDivGeneralTab : "常规",
-DlgDivAdvancedTab : "高级",
-DlgDivStyle : "æ ·å¼",
-DlgDivInlineStyle : "CSS æ ·å¼"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh.js
deleted file mode 100644
index c43afdf8f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/lang/zh.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Chinese Traditional language file.
- */
-
-var FCKLang =
-{
-// Language direction : "ltr" (left to right) or "rtl" (right to left).
-Dir : "ltr",
-
-ToolbarCollapse : "éš±è—颿¿",
-ToolbarExpand : "é¡¯ç¤ºé¢æ¿",
-
-// Toolbar Items and Context Menu
-Save : "儲存",
-NewPage : "開新檔案",
-Preview : "é è¦½",
-Cut : "剪下",
-Copy : "複製",
-Paste : "貼上",
-PasteText : "貼為純文字格å¼",
-PasteWord : "自 Word 貼上",
-Print : "列å°",
-SelectAll : "å…¨é¸",
-RemoveFormat : "清除格å¼",
-InsertLinkLbl : "超連çµ",
-InsertLink : "æ’å…¥/編輯超連çµ",
-RemoveLink : "移除超連çµ",
-VisitLink : "開啟超連çµ",
-Anchor : "æ’å…¥/編輯錨點",
-AnchorDelete : "移除錨點",
-InsertImageLbl : "å½±åƒ",
-InsertImage : "æ’å…¥/編輯影åƒ",
-InsertFlashLbl : "Flash",
-InsertFlash : "æ’å…¥/編輯 Flash",
-InsertTableLbl : "表格",
-InsertTable : "æ’å…¥/編輯表格",
-InsertLineLbl : "水平線",
-InsertLine : "æ’入水平線",
-InsertSpecialCharLbl: "特殊符號",
-InsertSpecialChar : "æ’入特殊符號",
-InsertSmileyLbl : "表情符號",
-InsertSmiley : "æ’入表情符號",
-About : "關於 FCKeditor",
-Bold : "ç²—é«”",
-Italic : "斜體",
-Underline : "底線",
-StrikeThrough : "刪除線",
-Subscript : "下標",
-Superscript : "上標",
-LeftJustify : "é å·¦å°é½Š",
-CenterJustify : "置中",
-RightJustify : "é å³å°é½Š",
-BlockJustify : "å·¦å³å°é½Š",
-DecreaseIndent : "減少縮排",
-IncreaseIndent : "增加縮排",
-Blockquote : "引用文字",
-CreateDiv : "新增 Div 標籤",
-EditDiv : "變更 Div 標籤",
-DeleteDiv : "移除 Div 標籤",
-Undo : "復原",
-Redo : "é‡è¤‡",
-NumberedListLbl : "編號清單",
-NumberedList : "æ’å…¥/移除編號清單",
-BulletedListLbl : "項目清單",
-BulletedList : "æ’å…¥/移除項目清單",
-ShowTableBorders : "顯示表格邊框",
-ShowDetails : "顯示詳細資料",
-Style : "樣å¼",
-FontFormat : "æ ¼å¼",
-Font : "å­—é«”",
-FontSize : "大å°",
-TextColor : "文字é¡è‰²",
-BGColor : "背景é¡è‰²",
-Source : "原始碼",
-Find : "尋找",
-Replace : "å–代",
-SpellCheck : "拼字檢查",
-UniversalKeyboard : "è¬åœ‹éµç›¤",
-PageBreakLbl : "分é ç¬¦è™Ÿ",
-PageBreak : "æ’入分é ç¬¦è™Ÿ",
-
-Form : "表單",
-Checkbox : "æ ¸å–æ–¹å¡Š",
-RadioButton : "é¸é …按鈕",
-TextField : "文字方塊",
-Textarea : "文字å€åŸŸ",
-HiddenField : "éš±è—æ¬„ä½",
-Button : "按鈕",
-SelectionField : "清單/é¸å–®",
-ImageButton : "å½±åƒæŒ‰éˆ•",
-
-FitWindow : "編輯器最大化",
-ShowBlocks : "顯示å€å¡Š",
-
-// Context Menu
-EditLink : "編輯超連çµ",
-CellCM : "儲存格",
-RowCM : "列",
-ColumnCM : "欄",
-InsertRowAfter : "å‘下æ’入列",
-InsertRowBefore : "å‘上æ’入列",
-DeleteRows : "刪除列",
-InsertColumnAfter : "å‘峿’入欄",
-InsertColumnBefore : "å‘å·¦æ’入欄",
-DeleteColumns : "刪除欄",
-InsertCellAfter : "å‘峿’入儲存格",
-InsertCellBefore : "å‘å·¦æ’入儲存格",
-DeleteCells : "刪除儲存格",
-MergeCells : "åˆä½µå„²å­˜æ ¼",
-MergeRight : "å‘å³åˆä½µå„²å­˜æ ¼",
-MergeDown : "å‘下åˆä½µå„²å­˜æ ¼",
-HorizontalSplitCell : "æ©«å‘分割儲存格",
-VerticalSplitCell : "縱å‘分割儲存格",
-TableDelete : "刪除表格",
-CellProperties : "儲存格屬性",
-TableProperties : "表格屬性",
-ImageProperties : "å½±åƒå±¬æ€§",
-FlashProperties : "Flash 屬性",
-
-AnchorProp : "錨點屬性",
-ButtonProp : "按鈕屬性",
-CheckboxProp : "æ ¸å–æ–¹å¡Šå±¬æ€§",
-HiddenFieldProp : "éš±è—æ¬„ä½å±¬æ€§",
-RadioButtonProp : "é¸é …按鈕屬性",
-ImageButtonProp : "å½±åƒæŒ‰éˆ•屬性",
-TextFieldProp : "文字方塊屬性",
-SelectionFieldProp : "清單/é¸å–®å±¬æ€§",
-TextareaProp : "文字å€åŸŸå±¬æ€§",
-FormProp : "表單屬性",
-
-FontFormats : "一般;已格å¼åŒ–;ä½å€;標題 1;標題 2;標題 3;標題 4;標題 5;標題 6;一般 (DIV)",
-
-// Alerts and Messages
-ProcessingXHTML : "è™•ç† XHTML 中,請ç¨å€™â€¦",
-Done : "完æˆ",
-PasteWordConfirm : "您想貼上的文字似乎是自 Word è¤‡è£½è€Œä¾†ï¼Œè«‹å•æ‚¨æ˜¯å¦è¦å…ˆæ¸…除 Word 的格å¼å¾Œå†è¡Œè²¼ä¸Šï¼Ÿ",
-NotCompatiblePaste : "此指令僅在 Internet Explorer 5.5 æˆ–ä»¥ä¸Šçš„ç‰ˆæœ¬æœ‰æ•ˆã€‚è«‹å•æ‚¨æ˜¯å¦åŒæ„䏿¸…除格å¼å³è²¼ä¸Šï¼Ÿ",
-UnknownToolbarItem : "未知工具列項目 \"%1\"",
-UnknownCommand : "未知指令å稱 \"%1\"",
-NotImplemented : "å°šæœªå®‰è£æ­¤æŒ‡ä»¤",
-UnknownToolbarSet : "工具列設定 \"%1\" ä¸å­˜åœ¨",
-NoActiveX : "ç€è¦½å™¨çš„安全性設定é™åˆ¶äº†æœ¬ç·¨è¼¯å™¨çš„æŸäº›åŠŸèƒ½ã€‚æ‚¨å¿…é ˆå•Ÿç”¨å®‰å…¨æ€§è¨­å®šä¸­çš„ã€ŒåŸ·è¡ŒActiveX控制項與外掛程å¼ã€é …目,å¦å‰‡æœ¬ç·¨è¼¯å™¨å°‡æœƒå‡ºç¾éŒ¯èª¤ä¸¦ç¼ºå°‘æŸäº›åŠŸèƒ½",
-BrowseServerBlocked : "無法開啟資æºç€è¦½å™¨ï¼Œè«‹ç¢ºå®šæ‰€æœ‰å¿«é¡¯è¦–窗å°éŽ–ç¨‹å¼æ˜¯å¦é—œé–‰",
-DialogBlocked : "無法開啟å°è©±è¦–窗,請確定所有快顯視窗å°éŽ–ç¨‹å¼æ˜¯å¦é—œé–‰",
-VisitLinkBlocked : "無法開啟新視窗,請確定所有快顯視窗å°éŽ–ç¨‹å¼æ˜¯å¦é—œé–‰",
-
-// Dialogs
-DlgBtnOK : "確定",
-DlgBtnCancel : "å–æ¶ˆ",
-DlgBtnClose : "關閉",
-DlgBtnBrowseServer : "ç€è¦½ä¼ºæœå™¨ç«¯",
-DlgAdvancedTag : "進階",
-DlgOpOther : "<å…¶ä»–>",
-DlgInfoTab : "資訊",
-DlgAlertUrl : "è«‹æ’å…¥ URL",
-
-// General Dialogs Labels
-DlgGenNotSet : "<尚未設定>",
-DlgGenId : "ID",
-DlgGenLangDir : "語言方å‘",
-DlgGenLangDirLtr : "ç”±å·¦è€Œå³ (LTR)",
-DlgGenLangDirRtl : "ç”±å³è€Œå·¦ (RTL)",
-DlgGenLangCode : "語言代碼",
-DlgGenAccessKey : "å­˜å–éµ",
-DlgGenName : "å稱",
-DlgGenTabIndex : "定ä½é †åº",
-DlgGenLongDescr : "詳細 URL",
-DlgGenClass : "樣å¼è¡¨é¡žåˆ¥",
-DlgGenTitle : "標題",
-DlgGenContType : "內容類型",
-DlgGenLinkCharset : "連çµè³‡æºä¹‹ç·¨ç¢¼",
-DlgGenStyle : "樣å¼",
-
-// Image Dialog
-DlgImgTitle : "å½±åƒå±¬æ€§",
-DlgImgInfoTab : "å½±åƒè³‡è¨Š",
-DlgImgBtnUpload : "上傳至伺æœå™¨",
-DlgImgURL : "URL",
-DlgImgUpload : "上傳",
-DlgImgAlt : "替代文字",
-DlgImgWidth : "寬度",
-DlgImgHeight : "高度",
-DlgImgLockRatio : "等比例",
-DlgBtnResetSize : "é‡è¨­ç‚ºåŽŸå¤§å°",
-DlgImgBorder : "邊框",
-DlgImgHSpace : "æ°´å¹³è·é›¢",
-DlgImgVSpace : "垂直è·é›¢",
-DlgImgAlign : "å°é½Š",
-DlgImgAlignLeft : "é å·¦å°é½Š",
-DlgImgAlignAbsBottom: "絕å°ä¸‹æ–¹",
-DlgImgAlignAbsMiddle: "絕å°ä¸­é–“",
-DlgImgAlignBaseline : "基準線",
-DlgImgAlignBottom : "é ä¸‹å°é½Š",
-DlgImgAlignMiddle : "置中å°é½Š",
-DlgImgAlignRight : "é å³å°é½Š",
-DlgImgAlignTextTop : "文字上方",
-DlgImgAlignTop : "é ä¸Šå°é½Š",
-DlgImgPreview : "é è¦½",
-DlgImgAlertUrl : "è«‹è¼¸å…¥å½±åƒ URL",
-DlgImgLinkTab : "超連çµ",
-
-// Flash Dialog
-DlgFlashTitle : "Flash 屬性",
-DlgFlashChkPlay : "自動播放",
-DlgFlashChkLoop : "é‡è¤‡",
-DlgFlashChkMenu : "開啟é¸å–®",
-DlgFlashScale : "縮放",
-DlgFlashScaleAll : "全部顯示",
-DlgFlashScaleNoBorder : "無邊框",
-DlgFlashScaleFit : "精確符åˆ",
-
-// Link Dialog
-DlgLnkWindowTitle : "超連çµ",
-DlgLnkInfoTab : "超連çµè³‡è¨Š",
-DlgLnkTargetTab : "目標",
-
-DlgLnkType : "超連接類型",
-DlgLnkTypeURL : "URL",
-DlgLnkTypeAnchor : "本é éŒ¨é»ž",
-DlgLnkTypeEMail : "é›»å­éƒµä»¶",
-DlgLnkProto : "通訊å”定",
-DlgLnkProtoOther : "<å…¶ä»–>",
-DlgLnkURL : "URL",
-DlgLnkAnchorSel : "è«‹é¸æ“‡éŒ¨é»ž",
-DlgLnkAnchorByName : "ä¾éŒ¨é»žå稱",
-DlgLnkAnchorById : "ä¾å…ƒä»¶ ID",
-DlgLnkNoAnchors : "(本文件尚無å¯ç”¨ä¹‹éŒ¨é»ž)",
-DlgLnkEMail : "é›»å­éƒµä»¶",
-DlgLnkEMailSubject : "郵件主旨",
-DlgLnkEMailBody : "郵件內容",
-DlgLnkUpload : "上傳",
-DlgLnkBtnUpload : "傳é€è‡³ä¼ºæœå™¨",
-
-DlgLnkTarget : "目標",
-DlgLnkTargetFrame : "<框架>",
-DlgLnkTargetPopup : "<快顯視窗>",
-DlgLnkTargetBlank : "新視窗 (_blank)",
-DlgLnkTargetParent : "父視窗 (_parent)",
-DlgLnkTargetSelf : "本視窗 (_self)",
-DlgLnkTargetTop : "最上層視窗 (_top)",
-DlgLnkTargetFrameName : "目標框架å稱",
-DlgLnkPopWinName : "快顯視窗å稱",
-DlgLnkPopWinFeat : "快顯視窗屬性",
-DlgLnkPopResize : "å¯èª¿æ•´å¤§å°",
-DlgLnkPopLocation : "ç¶²å€åˆ—",
-DlgLnkPopMenu : "é¸å–®åˆ—",
-DlgLnkPopScroll : "æ²è»¸",
-DlgLnkPopStatus : "狀態列",
-DlgLnkPopToolbar : "工具列",
-DlgLnkPopFullScrn : "全螢幕 (IE)",
-DlgLnkPopDependent : "從屬 (NS)",
-DlgLnkPopWidth : "寬",
-DlgLnkPopHeight : "高",
-DlgLnkPopLeft : "å·¦",
-DlgLnkPopTop : "å³",
-
-DlnLnkMsgNoUrl : "請輸入欲連çµçš„ URL",
-DlnLnkMsgNoEMail : "請輸入電å­éƒµä»¶ä½å€",
-DlnLnkMsgNoAnchor : "è«‹é¸æ“‡éŒ¨é»ž",
-DlnLnkMsgInvPopName : "快顯å稱必須以「英文字æ¯ã€ç‚ºé–‹é ­ï¼Œä¸”ä¸å¾—嫿œ‰ç©ºç™½",
-
-// Color Dialog
-DlgColorTitle : "è«‹é¸æ“‡é¡è‰²",
-DlgColorBtnClear : "清除",
-DlgColorHighlight : "é è¦½",
-DlgColorSelected : "鏿“‡",
-
-// Smiley Dialog
-DlgSmileyTitle : "æ’入表情符號",
-
-// Special Character Dialog
-DlgSpecialCharTitle : "è«‹é¸æ“‡ç‰¹æ®Šç¬¦è™Ÿ",
-
-// Table Dialog
-DlgTableTitle : "表格屬性",
-DlgTableRows : "列數",
-DlgTableColumns : "欄數",
-DlgTableBorder : "邊框",
-DlgTableAlign : "å°é½Š",
-DlgTableAlignNotSet : "<未設定>",
-DlgTableAlignLeft : "é å·¦å°é½Š",
-DlgTableAlignCenter : "置中",
-DlgTableAlignRight : "é å³å°é½Š",
-DlgTableWidth : "寬度",
-DlgTableWidthPx : "åƒç´ ",
-DlgTableWidthPc : "百分比",
-DlgTableHeight : "高度",
-DlgTableCellSpace : "é–“è·",
-DlgTableCellPad : "å…§è·",
-DlgTableCaption : "標題",
-DlgTableSummary : "摘è¦",
-DlgTableHeaders : "Headers", //MISSING
-DlgTableHeadersNone : "None", //MISSING
-DlgTableHeadersColumn : "First column", //MISSING
-DlgTableHeadersRow : "First Row", //MISSING
-DlgTableHeadersBoth : "Both", //MISSING
-
-// Table Cell Dialog
-DlgCellTitle : "儲存格屬性",
-DlgCellWidth : "寬度",
-DlgCellWidthPx : "åƒç´ ",
-DlgCellWidthPc : "百分比",
-DlgCellHeight : "高度",
-DlgCellWordWrap : "自動æ›è¡Œ",
-DlgCellWordWrapNotSet : "<尚未設定>",
-DlgCellWordWrapYes : "是",
-DlgCellWordWrapNo : "å¦",
-DlgCellHorAlign : "æ°´å¹³å°é½Š",
-DlgCellHorAlignNotSet : "<尚未設定>",
-DlgCellHorAlignLeft : "é å·¦å°é½Š",
-DlgCellHorAlignCenter : "置中",
-DlgCellHorAlignRight: "é å³å°é½Š",
-DlgCellVerAlign : "垂直å°é½Š",
-DlgCellVerAlignNotSet : "<尚未設定>",
-DlgCellVerAlignTop : "é ä¸Šå°é½Š",
-DlgCellVerAlignMiddle : "置中",
-DlgCellVerAlignBottom : "é ä¸‹å°é½Š",
-DlgCellVerAlignBaseline : "基準線",
-DlgCellType : "儲存格類型",
-DlgCellTypeData : "資料",
-DlgCellTypeHeader : "標題",
-DlgCellRowSpan : "åˆä½µåˆ—數",
-DlgCellCollSpan : "åˆä½µæ¬„æ•°",
-DlgCellBackColor : "背景é¡è‰²",
-DlgCellBorderColor : "邊框é¡è‰²",
-DlgCellBtnSelect : "è«‹é¸æ“‡â€¦",
-
-// Find and Replace Dialog
-DlgFindAndReplaceTitle : "尋找與å–代",
-
-// Find Dialog
-DlgFindTitle : "尋找",
-DlgFindFindBtn : "尋找",
-DlgFindNotFoundMsg : "未找到指定的文字。",
-
-// Replace Dialog
-DlgReplaceTitle : "å–代",
-DlgReplaceFindLbl : "尋找:",
-DlgReplaceReplaceLbl : "å–代:",
-DlgReplaceCaseChk : "大å°å¯«é ˆç›¸ç¬¦",
-DlgReplaceReplaceBtn : "å–代",
-DlgReplaceReplAllBtn : "全部å–代",
-DlgReplaceWordChk : "全字相符",
-
-// Paste Operations / Dialog
-PasteErrorCut : "ç€è¦½å™¨çš„安全性設定ä¸å…許編輯器自動執行剪下動作。請使用快æ·éµ (Ctrl+X) 剪下。",
-PasteErrorCopy : "ç€è¦½å™¨çš„安全性設定ä¸å…許編輯器自動執行複製動作。請使用快æ·éµ (Ctrl+C) 複製。",
-
-PasteAsText : "貼為純文字格å¼",
-PasteFromWord : "自 Word 貼上",
-
-DlgPasteMsg2 : "請使用快æ·éµ (<strong>Ctrl+V</strong>) 貼到下方å€åŸŸä¸­ä¸¦æŒ‰ä¸‹ <strong>確定</strong>",
-DlgPasteSec : "因為ç€è¦½å™¨çš„å®‰å…¨æ€§è¨­å®šï¼Œæœ¬ç·¨è¼¯å™¨ç„¡æ³•ç›´æŽ¥å­˜å–æ‚¨çš„剪貼簿資料,請您自行在本視窗進行貼上動作。",
-DlgPasteIgnoreFont : "移除字型設定",
-DlgPasteRemoveStyles : "移除樣å¼è¨­å®š",
-
-// Color Picker
-ColorAutomatic : "自動",
-ColorMoreColors : "更多é¡è‰²â€¦",
-
-// Document Properties
-DocProps : "文件屬性",
-
-// Anchor Dialog
-DlgAnchorTitle : "命å錨點",
-DlgAnchorName : "錨點å稱",
-DlgAnchorErrorName : "請輸入錨點å稱",
-
-// Speller Pages Dialog
-DlgSpellNotInDic : "ä¸åœ¨å­—典中",
-DlgSpellChangeTo : "更改為",
-DlgSpellBtnIgnore : "忽略",
-DlgSpellBtnIgnoreAll : "全部忽略",
-DlgSpellBtnReplace : "å–代",
-DlgSpellBtnReplaceAll : "全部å–代",
-DlgSpellBtnUndo : "復原",
-DlgSpellNoSuggestions : "- 無建議值 -",
-DlgSpellProgress : "進行拼字檢查中…",
-DlgSpellNoMispell : "拼字檢查完æˆï¼šæœªç™¼ç¾æ‹¼å­—錯誤",
-DlgSpellNoChanges : "拼字檢查完æˆï¼šæœªæ›´æ”¹ä»»ä½•單字",
-DlgSpellOneChange : "拼字檢查完æˆï¼šæ›´æ”¹äº† 1 個單字",
-DlgSpellManyChanges : "拼字檢查完æˆï¼šæ›´æ”¹äº† %1 個單字",
-
-IeSpellDownload : "å°šæœªå®‰è£æ‹¼å­—æª¢æŸ¥å…ƒä»¶ã€‚æ‚¨æ˜¯å¦æƒ³è¦ç¾åœ¨ä¸‹è¼‰ï¼Ÿ",
-
-// Button Dialog
-DlgButtonText : "顯示文字 (值)",
-DlgButtonType : "類型",
-DlgButtonTypeBtn : "按鈕 (Button)",
-DlgButtonTypeSbm : "é€å‡º (Submit)",
-DlgButtonTypeRst : "é‡è¨­ (Reset)",
-
-// Checkbox and Radio Button Dialogs
-DlgCheckboxName : "å稱",
-DlgCheckboxValue : "é¸å–值",
-DlgCheckboxSelected : "å·²é¸å–",
-
-// Form Dialog
-DlgFormName : "å稱",
-DlgFormAction : "動作",
-DlgFormMethod : "方法",
-
-// Select Field Dialog
-DlgSelectName : "å稱",
-DlgSelectValue : "é¸å–值",
-DlgSelectSize : "大å°",
-DlgSelectLines : "行",
-DlgSelectChkMulti : "å¯å¤šé¸",
-DlgSelectOpAvail : "å¯ç”¨é¸é …",
-DlgSelectOpText : "顯示文字",
-DlgSelectOpValue : "值",
-DlgSelectBtnAdd : "新增",
-DlgSelectBtnModify : "修改",
-DlgSelectBtnUp : "上移",
-DlgSelectBtnDown : "下移",
-DlgSelectBtnSetValue : "設為é è¨­å€¼",
-DlgSelectBtnDelete : "刪除",
-
-// Textarea Dialog
-DlgTextareaName : "å稱",
-DlgTextareaCols : "字元寬度",
-DlgTextareaRows : "列數",
-
-// Text Field Dialog
-DlgTextName : "å稱",
-DlgTextValue : "值",
-DlgTextCharWidth : "字元寬度",
-DlgTextMaxChars : "最多字元數",
-DlgTextType : "類型",
-DlgTextTypeText : "文字",
-DlgTextTypePass : "密碼",
-
-// Hidden Field Dialog
-DlgHiddenName : "å稱",
-DlgHiddenValue : "值",
-
-// Bulleted List Dialog
-BulletedListProp : "項目清單屬性",
-NumberedListProp : "編號清單屬性",
-DlgLstStart : "起始編號",
-DlgLstType : "清單類型",
-DlgLstTypeCircle : "圓圈",
-DlgLstTypeDisc : "圓點",
-DlgLstTypeSquare : "方塊",
-DlgLstTypeNumbers : "數字 (1, 2, 3)",
-DlgLstTypeLCase : "å°å¯«å­—æ¯ (a, b, c)",
-DlgLstTypeUCase : "å¤§å¯«å­—æ¯ (A, B, C)",
-DlgLstTypeSRoman : "å°å¯«ç¾…馬數字 (i, ii, iii)",
-DlgLstTypeLRoman : "大寫羅馬數字 (I, II, III)",
-
-// Document Properties Dialog
-DlgDocGeneralTab : "一般",
-DlgDocBackTab : "背景",
-DlgDocColorsTab : "顯色與邊界",
-DlgDocMetaTab : "Meta 資料",
-
-DlgDocPageTitle : "é é¢æ¨™é¡Œ",
-DlgDocLangDir : "語言方å‘",
-DlgDocLangDirLTR : "ç”±å·¦è€Œå³ (LTR)",
-DlgDocLangDirRTL : "ç”±å³è€Œå·¦ (RTL)",
-DlgDocLangCode : "語言代碼",
-DlgDocCharSet : "字元編碼",
-DlgDocCharSetCE : "中æ­èªžç³»",
-DlgDocCharSetCT : "正體中文 (Big5)",
-DlgDocCharSetCR : "斯拉夫文",
-DlgDocCharSetGR : "希臘文",
-DlgDocCharSetJP : "日文",
-DlgDocCharSetKR : "韓文",
-DlgDocCharSetTR : "土耳其文",
-DlgDocCharSetUN : "Unicode (UTF-8)",
-DlgDocCharSetWE : "西æ­èªžç³»",
-DlgDocCharSetOther : "其他字元編碼",
-
-DlgDocDocType : "文件類型",
-DlgDocDocTypeOther : "其他文件類型",
-DlgDocIncXHTML : "åŒ…å« XHTML 定義",
-DlgDocBgColor : "背景é¡è‰²",
-DlgDocBgImage : "背景影åƒ",
-DlgDocBgNoScroll : "浮水å°",
-DlgDocCText : "文字",
-DlgDocCLink : "超連çµ",
-DlgDocCVisited : "å·²ç€è¦½éŽçš„超連çµ",
-DlgDocCActive : "作用中的超連çµ",
-DlgDocMargins : "é é¢é‚Šç•Œ",
-DlgDocMaTop : "上",
-DlgDocMaLeft : "å·¦",
-DlgDocMaRight : "å³",
-DlgDocMaBottom : "下",
-DlgDocMeIndex : "文件索引關éµå­— (用åŠå½¢é€—號[,]分隔)",
-DlgDocMeDescr : "文件說明",
-DlgDocMeAuthor : "作者",
-DlgDocMeCopy : "版權所有",
-DlgDocPreview : "é è¦½",
-
-// Templates Dialog
-Templates : "樣版",
-DlgTemplatesTitle : "內容樣版",
-DlgTemplatesSelMsg : "è«‹é¸æ“‡æ¬²é–‹å•Ÿçš„æ¨£ç‰ˆ<br> (原有的內容將會被清除):",
-DlgTemplatesLoading : "è®€å–æ¨£ç‰ˆæ¸…單中,請ç¨å€™â€¦",
-DlgTemplatesNoTpl : "(無樣版)",
-DlgTemplatesReplace : "å–代原有內容",
-
-// About Dialog
-DlgAboutAboutTab : "關於",
-DlgAboutBrowserInfoTab : "ç€è¦½å™¨è³‡è¨Š",
-DlgAboutLicenseTab : "許å¯è­‰",
-DlgAboutVersion : "版本",
-DlgAboutInfo : "想ç²å¾—更多資訊請至 ",
-
-// Div Dialog
-DlgDivGeneralTab : "一般",
-DlgDivAdvancedTab : "進階",
-DlgDivStyle : "樣å¼",
-DlgDivInlineStyle : "CSS 樣å¼"
-};
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/autogrow/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/autogrow/fckplugin.js
deleted file mode 100644
index 3e6e3a373..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/autogrow/fckplugin.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Plugin: automatically resizes the editor until a configurable maximun
- * height (FCKConfig.AutoGrowMax), based on its contents.
- */
-
-var FCKAutoGrow = {
- MIN_HEIGHT : window.frameElement.offsetHeight,
-
- Check : function()
- {
- var delta = FCKAutoGrow.GetHeightDelta() ;
- if ( delta != 0 )
- {
- var newHeight = window.frameElement.offsetHeight + delta ;
-
- newHeight = FCKAutoGrow.GetEffectiveHeight( newHeight ) ;
-
- if ( newHeight != window.frameElement.height )
- {
- window.frameElement.style.height = newHeight + "px" ;
-
- // Gecko browsers use an onresize handler to update the innermost
- // IFRAME's height. If the document is modified before the onresize
- // is triggered, the plugin will miscalculate the new height. Thus,
- // forcibly trigger onresize. #1336
- if ( typeof window.onresize == 'function' )
- {
- window.onresize() ;
- }
- }
- }
- },
-
- CheckEditorStatus : function( sender, status )
- {
- if ( status == FCK_STATUS_COMPLETE )
- FCKAutoGrow.Check() ;
- },
-
- GetEffectiveHeight : function( height )
- {
- if ( height < FCKAutoGrow.MIN_HEIGHT )
- height = FCKAutoGrow.MIN_HEIGHT;
- else
- {
- var max = FCKConfig.AutoGrowMax;
- if ( max && max > 0 && height > max )
- height = max;
- }
-
- return height;
- },
-
- GetHeightDelta : function()
- {
- var oInnerDoc = FCK.EditorDocument ;
-
- var iFrameHeight ;
- var iInnerHeight ;
-
- if ( FCKBrowserInfo.IsIE )
- {
- iFrameHeight = FCK.EditorWindow.frameElement.offsetHeight ;
- iInnerHeight = oInnerDoc.body.scrollHeight ;
- }
- else
- {
- iFrameHeight = FCK.EditorWindow.innerHeight ;
- iInnerHeight = oInnerDoc.body.offsetHeight +
- ( parseInt( FCKDomTools.GetCurrentElementStyle( oInnerDoc.body, 'margin-top' ), 10 ) || 0 ) +
- ( parseInt( FCKDomTools.GetCurrentElementStyle( oInnerDoc.body, 'margin-bottom' ), 10 ) || 0 ) ;
- }
-
- return iInnerHeight - iFrameHeight ;
- },
-
- SetListeners : function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return ;
-
- FCK.EditorWindow.attachEvent( 'onscroll', FCKAutoGrow.Check ) ;
- FCK.EditorDocument.attachEvent( 'onkeyup', FCKAutoGrow.Check ) ;
- }
-};
-
-FCK.AttachToOnSelectionChange( FCKAutoGrow.Check ) ;
-
-if ( FCKBrowserInfo.IsIE )
- FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKAutoGrow.SetListeners ) ;
-
-FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow.CheckEditorStatus ) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.config.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.config.js
deleted file mode 100644
index d597ee2d7..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.config.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Sample custom configuration settings used by the BBCode plugin. It simply
- * loads the plugin. All the rest is done by the plugin itself.
- */
-
-// Add the BBCode plugin.
-FCKConfig.Plugins.Add( 'bbcode' ) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.html
deleted file mode 100644
index 75db189c8..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/_sample/sample.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Sample page.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>FCKeditor - BBCode Sample</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <link href="../../../../_samples/sample.css" rel="stylesheet" type="text/css" />
- <script type="text/javascript" src="../../../../fckeditor.js"></script>
-</head>
-<body>
- <h1>
- FCKeditor - BBCode Sample</h1>
- <p>
- This is a sample of custom Data Processor implementation for (very) basic BBCode
- syntax. Only <strong>[b]</strong>, <strong>[i]</strong>, <strong>[u]</strong> and
- <strong>[url]</strong> may be used. It may be extended, but this is out of this
- sample purpose.
- </p>
- <p>
- Note that the input and output of the editor is not HTML, but BBCode
- </p>
- <hr />
- <form action="../../../../_samples/html/sampleposteddata.asp" method="post" target="_blank">
- <script type="text/javascript">
-<!--
-// Automatically calculates the editor base path based on the _samples directory.
-// This is usefull only for these samples. A real application should use something like this:
-// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.
-var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('editor')) ;
-
-var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
-oFCKeditor.BasePath = sBasePath ;
-
-// Set the custom configurations file path (in this way the original file is mantained).
-oFCKeditor.Config['CustomConfigurationsPath'] = sBasePath + 'editor/plugins/bbcode/_sample/sample.config.js' ;
-
-oFCKeditor.Value = 'This is some [b]sample text[/b]. You are using [url=http://www.fckeditor.net/]FCKeditor[/url].' ;
-oFCKeditor.Create() ;
-//-->
- </script>
- <br />
- <input type="submit" value="Submit" />
- </form>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/fckplugin.js
deleted file mode 100644
index dc261347c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/bbcode/fckplugin.js
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is a sample implementation for a custom Data Processor for basic BBCode.
- */
-
-FCK.DataProcessor =
-{
- /*
- * Returns a string representing the HTML format of "data". The returned
- * value will be loaded in the editor.
- * The HTML must be from <html> to </html>, eventually including
- * the DOCTYPE.
- * @param {String} data The data to be converted in the
- * DataProcessor specific format.
- */
- ConvertToHtml : function( data )
- {
- // Convert < and > to their HTML entities.
- data = data.replace( /</g, '&lt;' ) ;
- data = data.replace( />/g, '&gt;' ) ;
-
- // Convert line breaks to <br>.
- data = data.replace( /(?:\r\n|\n|\r)/g, '<br>' ) ;
-
- // [url]
- data = data.replace( /\[url\](.+?)\[\/url]/gi, '<a href="$1">$1</a>' ) ;
- data = data.replace( /\[url\=([^\]]+)](.+?)\[\/url]/gi, '<a href="$1">$2</a>' ) ;
-
- // [b]
- data = data.replace( /\[b\](.+?)\[\/b]/gi, '<b>$1</b>' ) ;
-
- // [i]
- data = data.replace( /\[i\](.+?)\[\/i]/gi, '<i>$1</i>' ) ;
-
- // [u]
- data = data.replace( /\[u\](.+?)\[\/u]/gi, '<u>$1</u>' ) ;
-
- return '<html><head><title></title></head><body>' + data + '</body></html>' ;
- },
-
- /*
- * Converts a DOM (sub-)tree to a string in the data format.
- * @param {Object} rootNode The node that contains the DOM tree to be
- * converted to the data format.
- * @param {Boolean} excludeRoot Indicates that the root node must not
- * be included in the conversion, only its children.
- * @param {Boolean} format Indicates that the data must be formatted
- * for human reading. Not all Data Processors may provide it.
- */
- ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format )
- {
- var data = rootNode.innerHTML ;
-
- // Convert <br> to line breaks.
- data = data.replace( /<br(?=[ \/>]).*?>/gi, '\r\n') ;
-
- // [url]
- data = data.replace( /<a .*?href=(["'])(.+?)\1.*?>(.+?)<\/a>/gi, '[url=$2]$3[/url]') ;
-
- // [b]
- data = data.replace( /<(?:b|strong)>/gi, '[b]') ;
- data = data.replace( /<\/(?:b|strong)>/gi, '[/b]') ;
-
- // [i]
- data = data.replace( /<(?:i|em)>/gi, '[i]') ;
- data = data.replace( /<\/(?:i|em)>/gi, '[/i]') ;
-
- // [u]
- data = data.replace( /<u>/gi, '[u]') ;
- data = data.replace( /<\/u>/gi, '[/u]') ;
-
- // Remove remaining tags.
- data = data.replace( /<[^>]+>/g, '') ;
-
- return data ;
- },
-
- /*
- * Makes any necessary changes to a piece of HTML for insertion in the
- * editor selection position.
- * @param {String} html The HTML to be fixed.
- */
- FixHtml : function( html )
- {
- return html ;
- }
-} ;
-
-// This Data Processor doesn't support <p>, so let's use <br>.
-FCKConfig.EnterMode = 'br' ;
-
-// To avoid pasting invalid markup (which is discarded in any case), let's
-// force pasting to plain text.
-FCKConfig.ForcePasteAsPlainText = true ;
-
-// Rename the "Source" buttom to "BBCode".
-FCKToolbarItems.RegisterItem( 'Source', new FCKToolbarButton( 'Source', 'BBCode', null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ) ;
-
-// Let's enforce the toolbar to the limits of this Data Processor. A custom
-// toolbar set may be defined in the configuration file with more or less entries.
-FCKConfig.ToolbarSets["Default"] = [
- ['Source'],
- ['Bold','Italic','Underline','-','Link'],
- ['About']
-] ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/dragresizetable/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/dragresizetable/fckplugin.js
deleted file mode 100644
index 87061ff64..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/dragresizetable/fckplugin.js
+++ /dev/null
@@ -1,529 +0,0 @@
-var FCKDragTableHandler =
-{
- "_DragState" : 0,
- "_LeftCell" : null,
- "_RightCell" : null,
- "_MouseMoveMode" : 0, // 0 - find candidate cells for resizing, 1 - drag to resize
- "_ResizeBar" : null,
- "_OriginalX" : null,
- "_MinimumX" : null,
- "_MaximumX" : null,
- "_LastX" : null,
- "_TableMap" : null,
- "_doc" : document,
- "_IsInsideNode" : function( w, domNode, pos )
- {
- var myCoords = FCKTools.GetWindowPosition( w, domNode ) ;
- var xMin = myCoords.x ;
- var yMin = myCoords.y ;
- var xMax = parseInt( xMin, 10 ) + parseInt( domNode.offsetWidth, 10 ) ;
- var yMax = parseInt( yMin, 10 ) + parseInt( domNode.offsetHeight, 10 ) ;
- if ( pos.x >= xMin && pos.x <= xMax && pos.y >= yMin && pos.y <= yMax )
- return true;
- return false;
- },
- "_GetBorderCells" : function( w, tableNode, tableMap, mouse )
- {
- // Enumerate all the cells in the table.
- var cells = [] ;
- for ( var i = 0 ; i < tableNode.rows.length ; i++ )
- {
- var r = tableNode.rows[i] ;
- for ( var j = 0 ; j < r.cells.length ; j++ )
- cells.push( r.cells[j] ) ;
- }
-
- if ( cells.length < 1 )
- return null ;
-
- // Get the cells whose right or left border is nearest to the mouse cursor's x coordinate.
- var minRxDist = null ;
- var lxDist = null ;
- var minYDist = null ;
- var rbCell = null ;
- var lbCell = null ;
- for ( var i = 0 ; i < cells.length ; i++ )
- {
- var pos = FCKTools.GetWindowPosition( w, cells[i] ) ;
- var rightX = pos.x + parseInt( cells[i].clientWidth, 10 ) ;
- var rxDist = mouse.x - rightX ;
- var yDist = mouse.y - ( pos.y + ( cells[i].clientHeight / 2 ) ) ;
- if ( minRxDist == null ||
- ( Math.abs( rxDist ) <= Math.abs( minRxDist ) &&
- ( minYDist == null || Math.abs( yDist ) <= Math.abs( minYDist ) ) ) )
- {
- minRxDist = rxDist ;
- minYDist = yDist ;
- rbCell = cells[i] ;
- }
- }
- /*
- var rowNode = FCKTools.GetElementAscensor( rbCell, "tr" ) ;
- var cellIndex = rbCell.cellIndex + 1 ;
- if ( cellIndex >= rowNode.cells.length )
- return null ;
- lbCell = rowNode.cells.item( cellIndex ) ;
- */
- var rowIdx = rbCell.parentNode.rowIndex ;
- var colIdx = FCKTableHandler._GetCellIndexSpan( tableMap, rowIdx, rbCell ) ;
- var colSpan = isNaN( rbCell.colSpan ) ? 1 : rbCell.colSpan ;
- lbCell = tableMap[rowIdx][colIdx + colSpan] ;
-
- if ( ! lbCell )
- return null ;
-
- // Abort if too far from the border.
- lxDist = mouse.x - FCKTools.GetWindowPosition( w, lbCell ).x ;
- if ( lxDist < 0 && minRxDist < 0 && minRxDist < -2 )
- return null ;
- if ( lxDist > 0 && minRxDist > 0 && lxDist > 3 )
- return null ;
-
- return { "leftCell" : rbCell, "rightCell" : lbCell } ;
- },
- "_GetResizeBarPosition" : function()
- {
- var row = FCKTools.GetElementAscensor( this._RightCell, "tr" ) ;
- return FCKTableHandler._GetCellIndexSpan( this._TableMap, row.rowIndex, this._RightCell ) ;
- },
- "_ResizeBarMouseDownListener" : function( evt )
- {
- if ( FCKDragTableHandler._LeftCell )
- FCKDragTableHandler._MouseMoveMode = 1 ;
- if ( FCKBrowserInfo.IsIE )
- FCKDragTableHandler._ResizeBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 50 ;
- else
- FCKDragTableHandler._ResizeBar.style.opacity = 0.5 ;
- FCKDragTableHandler._OriginalX = evt.clientX ;
-
- // Calculate maximum and minimum x-coordinate delta.
- var borderIndex = FCKDragTableHandler._GetResizeBarPosition() ;
- var offset = FCKDragTableHandler._GetIframeOffset();
- var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" );
- var minX = null ;
- var maxX = null ;
- for ( var r = 0 ; r < FCKDragTableHandler._TableMap.length ; r++ )
- {
- var leftCell = FCKDragTableHandler._TableMap[r][borderIndex - 1] ;
- var rightCell = FCKDragTableHandler._TableMap[r][borderIndex] ;
- var leftPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, leftCell ) ;
- var rightPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, rightCell ) ;
- var leftPadding = FCKDragTableHandler._GetCellPadding( table, leftCell ) ;
- var rightPadding = FCKDragTableHandler._GetCellPadding( table, rightCell ) ;
- if ( minX == null || leftPosition.x + leftPadding > minX )
- minX = leftPosition.x + leftPadding ;
- if ( maxX == null || rightPosition.x + rightCell.clientWidth - rightPadding < maxX )
- maxX = rightPosition.x + rightCell.clientWidth - rightPadding ;
- }
-
- FCKDragTableHandler._MinimumX = minX + offset.x ;
- FCKDragTableHandler._MaximumX = maxX + offset.x ;
- FCKDragTableHandler._LastX = null ;
-
- if (evt.preventDefault)
- evt.preventDefault();
- else
- evt.returnValue = false;
- },
- "_ResizeBarMouseUpListener" : function( evt )
- {
- FCKDragTableHandler._MouseMoveMode = 0 ;
- FCKDragTableHandler._HideResizeBar() ;
-
- if ( FCKDragTableHandler._LastX == null )
- return ;
-
- // Calculate the delta value.
- var deltaX = FCKDragTableHandler._LastX - FCKDragTableHandler._OriginalX ;
-
- // Then, build an array of current column width values.
- // This algorithm can be very slow if the cells have insane colSpan values. (e.g. colSpan=1000).
- var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ) ;
- var colArray = [] ;
- var tableMap = FCKDragTableHandler._TableMap ;
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- for ( var j = 0 ; j < tableMap[i].length ; j++ )
- {
- var cell = tableMap[i][j] ;
- var width = FCKDragTableHandler._GetCellWidth( table, cell ) ;
- var colSpan = isNaN( cell.colSpan) ? 1 : cell.colSpan ;
- if ( colArray.length <= j )
- colArray.push( { width : width / colSpan, colSpan : colSpan } ) ;
- else
- {
- var guessItem = colArray[j] ;
- if ( guessItem.colSpan > colSpan )
- {
- guessItem.width = width / colSpan ;
- guessItem.colSpan = colSpan ;
- }
- }
- }
- }
-
- // Find out the equivalent column index of the two cells selected for resizing.
- colIndex = FCKDragTableHandler._GetResizeBarPosition() ;
-
- // Note that colIndex must be at least 1 here, so it's safe to subtract 1 from it.
- colIndex-- ;
-
- // Modify the widths in the colArray according to the mouse coordinate delta value.
- colArray[colIndex].width += deltaX ;
- colArray[colIndex + 1].width -= deltaX ;
-
- // Clear all cell widths, delete all <col> elements from the table.
- for ( var r = 0 ; r < table.rows.length ; r++ )
- {
- var row = table.rows.item( r ) ;
- for ( var c = 0 ; c < row.cells.length ; c++ )
- {
- var cell = row.cells.item( c ) ;
- cell.width = "" ;
- cell.style.width = "" ;
- }
- }
- var colElements = table.getElementsByTagName( "col" ) ;
- for ( var i = colElements.length - 1 ; i >= 0 ; i-- )
- colElements[i].parentNode.removeChild( colElements[i] ) ;
-
- // Set new cell widths.
- var processedCells = [] ;
- for ( var i = 0 ; i < tableMap.length ; i++ )
- {
- for ( var j = 0 ; j < tableMap[i].length ; j++ )
- {
- var cell = tableMap[i][j] ;
- if ( cell._Processed )
- continue ;
- if ( tableMap[i][j-1] != cell )
- cell.width = colArray[j].width ;
- else
- cell.width = parseInt( cell.width, 10 ) + parseInt( colArray[j].width, 10 ) ;
- if ( tableMap[i][j+1] != cell )
- {
- processedCells.push( cell ) ;
- cell._Processed = true ;
- }
- }
- }
- for ( var i = 0 ; i < processedCells.length ; i++ )
- {
- if ( FCKBrowserInfo.IsIE )
- processedCells[i].removeAttribute( '_Processed' ) ;
- else
- delete processedCells[i]._Processed ;
- }
-
- FCKDragTableHandler._LastX = null ;
- },
- "_ResizeBarMouseMoveListener" : function( evt )
- {
- if ( FCKDragTableHandler._MouseMoveMode == 0 )
- return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ;
- else
- return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ;
- },
- // Calculate the padding of a table cell.
- // It returns the value of paddingLeft + paddingRight of a table cell.
- // This function is used, in part, to calculate the width parameter that should be used for setting cell widths.
- // The equation in question is clientWidth = paddingLeft + paddingRight + width.
- // So that width = clientWidth - paddingLeft - paddingRight.
- // The return value of this function must be pixel accurate acorss all supported browsers, so be careful if you need to modify it.
- "_GetCellPadding" : function( table, cell )
- {
- var attrGuess = parseInt( table.cellPadding, 10 ) * 2 ;
- var cssGuess = null ;
- if ( typeof( window.getComputedStyle ) == "function" )
- {
- var styleObj = window.getComputedStyle( cell, null ) ;
- cssGuess = parseInt( styleObj.getPropertyValue( "padding-left" ), 10 ) +
- parseInt( styleObj.getPropertyValue( "padding-right" ), 10 ) ;
- }
- else
- cssGuess = parseInt( cell.currentStyle.paddingLeft, 10 ) + parseInt (cell.currentStyle.paddingRight, 10 ) ;
-
- var cssRuntime = cell.style.padding ;
- if ( isFinite( cssRuntime ) )
- cssGuess = parseInt( cssRuntime, 10 ) * 2 ;
- else
- {
- cssRuntime = cell.style.paddingLeft ;
- if ( isFinite( cssRuntime ) )
- cssGuess = parseInt( cssRuntime, 10 ) ;
- cssRuntime = cell.style.paddingRight ;
- if ( isFinite( cssRuntime ) )
- cssGuess += parseInt( cssRuntime, 10 ) ;
- }
-
- attrGuess = parseInt( attrGuess, 10 ) ;
- cssGuess = parseInt( cssGuess, 10 ) ;
- if ( isNaN( attrGuess ) )
- attrGuess = 0 ;
- if ( isNaN( cssGuess ) )
- cssGuess = 0 ;
- return Math.max( attrGuess, cssGuess ) ;
- },
- // Calculate the real width of the table cell.
- // The real width of the table cell is the pixel width that you can set to the width attribute of the table cell and after
- // that, the table cell should be of exactly the same width as before.
- // The real width of a table cell can be calculated as:
- // width = clientWidth - paddingLeft - paddingRight.
- "_GetCellWidth" : function( table, cell )
- {
- var clientWidth = cell.clientWidth ;
- if ( isNaN( clientWidth ) )
- clientWidth = 0 ;
- return clientWidth - this._GetCellPadding( table, cell ) ;
- },
- "MouseMoveListener" : function( FCK, evt )
- {
- if ( FCKDragTableHandler._MouseMoveMode == 0 )
- return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ;
- else
- return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ;
- },
- "_MouseFindHandler" : function( FCK, evt )
- {
- if ( FCK.MouseDownFlag )
- return ;
- var node = evt.srcElement || evt.target ;
- try
- {
- if ( ! node || node.nodeType != 1 )
- {
- this._HideResizeBar() ;
- return ;
- }
- }
- catch ( e )
- {
- this._HideResizeBar() ;
- return ;
- }
-
- // Since this function might be called from the editing area iframe or the outer fckeditor iframe,
- // the mouse point coordinates from evt.clientX/Y can have different reference points.
- // We need to resolve the mouse pointer position relative to the editing area iframe.
- var mouseX = evt.clientX ;
- var mouseY = evt.clientY ;
- if ( FCKTools.GetElementDocument( node ) == document )
- {
- var offset = this._GetIframeOffset() ;
- mouseX -= offset.x ;
- mouseY -= offset.y ;
- }
-
-
- if ( this._ResizeBar && this._LeftCell )
- {
- var leftPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._LeftCell ) ;
- var rightPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._RightCell ) ;
- var rxDist = mouseX - ( leftPos.x + this._LeftCell.clientWidth ) ;
- var lxDist = mouseX - rightPos.x ;
- var inRangeFlag = false ;
- if ( lxDist >= 0 && rxDist <= 0 )
- inRangeFlag = true ;
- else if ( rxDist > 0 && lxDist <= 3 )
- inRangeFlag = true ;
- else if ( lxDist < 0 && rxDist >= -2 )
- inRangeFlag = true ;
- if ( inRangeFlag )
- {
- this._ShowResizeBar( FCK.EditorWindow,
- FCKTools.GetElementAscensor( this._LeftCell, "table" ),
- { "x" : mouseX, "y" : mouseY } ) ;
- return ;
- }
- }
-
- var tagName = node.tagName.toLowerCase() ;
- if ( tagName != "table" && tagName != "td" && tagName != "th" )
- {
- if ( this._LeftCell )
- this._LeftCell = this._RightCell = this._TableMap = null ;
- this._HideResizeBar() ;
- return ;
- }
- node = FCKTools.GetElementAscensor( node, "table" ) ;
- var tableMap = FCKTableHandler._CreateTableMap( node ) ;
- var cellTuple = this._GetBorderCells( FCK.EditorWindow, node, tableMap, { "x" : mouseX, "y" : mouseY } ) ;
-
- if ( cellTuple == null )
- {
- if ( this._LeftCell )
- this._LeftCell = this._RightCell = this._TableMap = null ;
- this._HideResizeBar() ;
- }
- else
- {
- this._LeftCell = cellTuple["leftCell"] ;
- this._RightCell = cellTuple["rightCell"] ;
- this._TableMap = tableMap ;
- this._ShowResizeBar( FCK.EditorWindow,
- FCKTools.GetElementAscensor( this._LeftCell, "table" ),
- { "x" : mouseX, "y" : mouseY } ) ;
- }
- },
- "_MouseDragHandler" : function( FCK, evt )
- {
- var mouse = { "x" : evt.clientX, "y" : evt.clientY } ;
-
- // Convert mouse coordinates in reference to the outer iframe.
- var node = evt.srcElement || evt.target ;
- if ( FCKTools.GetElementDocument( node ) == FCK.EditorDocument )
- {
- var offset = this._GetIframeOffset() ;
- mouse.x += offset.x ;
- mouse.y += offset.y ;
- }
-
- // Calculate the mouse position delta and see if we've gone out of range.
- if ( mouse.x >= this._MaximumX - 5 )
- mouse.x = this._MaximumX - 5 ;
- if ( mouse.x <= this._MinimumX + 5 )
- mouse.x = this._MinimumX + 5 ;
-
- var docX = mouse.x + FCKTools.GetScrollPosition( window ).X ;
- this._ResizeBar.style.left = ( docX - this._ResizeBar.offsetWidth / 2 ) + "px" ;
- this._LastX = mouse.x ;
- },
- "_ShowResizeBar" : function( w, table, mouse )
- {
- if ( this._ResizeBar == null )
- {
- this._ResizeBar = this._doc.createElement( "div" ) ;
- var paddingBar = this._ResizeBar ;
- var paddingStyles = { 'position' : 'absolute', 'cursor' : 'e-resize' } ;
- if ( FCKBrowserInfo.IsIE )
- paddingStyles.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=10,enabled=true)" ;
- else
- paddingStyles.opacity = 0.10 ;
- FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ;
- this._avoidStyles( paddingBar );
- paddingBar.setAttribute('_fcktemp', true);
- this._doc.body.appendChild( paddingBar ) ;
- FCKTools.AddEventListener( paddingBar, "mousemove", this._ResizeBarMouseMoveListener ) ;
- FCKTools.AddEventListener( paddingBar, "mousedown", this._ResizeBarMouseDownListener ) ;
- FCKTools.AddEventListener( document, "mouseup", this._ResizeBarMouseUpListener ) ;
- FCKTools.AddEventListener( FCK.EditorDocument, "mouseup", this._ResizeBarMouseUpListener ) ;
-
- // IE doesn't let the tranparent part of the padding block to receive mouse events unless there's something inside.
- // So we need to create a spacer image to fill the block up.
- var filler = this._doc.createElement( "img" ) ;
- filler.setAttribute('_fcktemp', true);
- filler.border = 0 ;
- filler.src = FCKConfig.BasePath + "images/spacer.gif" ;
- filler.style.position = "absolute" ;
- paddingBar.appendChild( filler ) ;
-
- // Disable drag and drop, and selection for the filler image.
- var disabledListener = function( evt )
- {
- if ( evt.preventDefault )
- evt.preventDefault() ;
- else
- evt.returnValue = false ;
- }
- FCKTools.AddEventListener( filler, "dragstart", disabledListener ) ;
- FCKTools.AddEventListener( filler, "selectstart", disabledListener ) ;
- }
-
- var paddingBar = this._ResizeBar ;
- var offset = this._GetIframeOffset() ;
- var tablePos = this._GetTablePosition( w, table ) ;
- var barHeight = table.offsetHeight ;
- var barTop = offset.y + tablePos.y ;
- // Do not let the resize bar intrude into the toolbar area.
- if ( tablePos.y < 0 )
- {
- barHeight += tablePos.y ;
- barTop -= tablePos.y ;
- }
- var bw = parseInt( table.border, 10 ) ;
- if ( isNaN( bw ) )
- bw = 0 ;
- var cs = parseInt( table.cellSpacing, 10 ) ;
- if ( isNaN( cs ) )
- cs = 0 ;
- var barWidth = Math.max( bw+100, cs+100 ) ;
- var paddingStyles =
- {
- 'top' : barTop + 'px',
- 'height' : barHeight + 'px',
- 'width' : barWidth + 'px',
- 'left' : ( offset.x + mouse.x + FCKTools.GetScrollPosition( w ).X - barWidth / 2 ) + 'px'
- } ;
- if ( FCKBrowserInfo.IsIE )
- paddingBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 10 ;
- else
- paddingStyles.opacity = 0.1 ;
-
- FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ;
- var filler = paddingBar.getElementsByTagName( "img" )[0] ;
-
- FCKDomTools.SetElementStyles( filler,
- {
- width : paddingBar.offsetWidth + 'px',
- height : barHeight + 'px'
- } ) ;
-
- barWidth = Math.max( bw, cs, 3 ) ;
- var visibleBar = null ;
- if ( paddingBar.getElementsByTagName( "div" ).length < 1 )
- {
- visibleBar = this._doc.createElement( "div" ) ;
- this._avoidStyles( visibleBar );
- visibleBar.setAttribute('_fcktemp', true);
- paddingBar.appendChild( visibleBar ) ;
- }
- else
- visibleBar = paddingBar.getElementsByTagName( "div" )[0] ;
-
- FCKDomTools.SetElementStyles( visibleBar,
- {
- position : 'absolute',
- backgroundColor : 'blue',
- width : barWidth + 'px',
- height : barHeight + 'px',
- left : '50px',
- top : '0px'
- } ) ;
- },
- "_HideResizeBar" : function()
- {
- if ( this._ResizeBar )
- // IE bug: display : none does not hide the resize bar for some reason.
- // so set the position to somewhere invisible.
- FCKDomTools.SetElementStyles( this._ResizeBar,
- {
- top : '-100000px',
- left : '-100000px'
- } ) ;
- },
- "_GetIframeOffset" : function ()
- {
- return FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ;
- },
- "_GetTablePosition" : function ( w, table )
- {
- return FCKTools.GetWindowPosition( w, table ) ;
- },
- "_avoidStyles" : function( element )
- {
- FCKDomTools.SetElementStyles( element,
- {
- padding : '0',
- backgroundImage : 'none',
- border : '0'
- } ) ;
- },
- "Reset" : function()
- {
- FCKDragTableHandler._LeftCell = FCKDragTableHandler._RightCell = FCKDragTableHandler._TableMap = null ;
- }
-
-};
-
-FCK.Events.AttachEvent( "OnMouseMove", FCKDragTableHandler.MouseMoveListener ) ;
-FCK.Events.AttachEvent( "OnAfterSetHTML", FCKDragTableHandler.Reset ) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fck_placeholder.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fck_placeholder.html
deleted file mode 100644
index 0f83984e0..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fck_placeholder.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placeholder Plugin.
--->
-<html>
- <head>
- <title>Placeholder Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta content="noindex, nofollow" name="robots">
- <script src="../../dialog/common/fck_dialog_common.js" type="text/javascript"></script>
- <script language="javascript">
-
-var dialog = window.parent ;
-var oEditor = dialog.InnerDialogLoaded() ;
-var FCKLang = oEditor.FCKLang ;
-var FCKPlaceholders = oEditor.FCKPlaceholders ;
-
-window.onload = function ()
-{
- // First of all, translate the dialog box texts
- oEditor.FCKLanguageManager.TranslatePage( document ) ;
-
- LoadSelected() ;
-
- // Show the "Ok" button.
- dialog.SetOkButton( true ) ;
-
- // Select text field on load.
- SelectField( 'txtName' ) ;
-}
-
-var eSelected = dialog.Selection.GetSelectedElement() ;
-
-function LoadSelected()
-{
- if ( !eSelected )
- return ;
-
- if ( eSelected.tagName == 'SPAN' && eSelected._fckplaceholder )
- document.getElementById('txtName').value = eSelected._fckplaceholder ;
- else
- eSelected == null ;
-}
-
-function Ok()
-{
- var sValue = document.getElementById('txtName').value ;
-
- if ( eSelected && eSelected._fckplaceholder == sValue )
- return true ;
-
- if ( sValue.length == 0 )
- {
- alert( FCKLang.PlaceholderErrNoName ) ;
- return false ;
- }
-
- if ( FCKPlaceholders.Exist( sValue ) )
- {
- alert( FCKLang.PlaceholderErrNameInUse ) ;
- return false ;
- }
-
- FCKPlaceholders.Add( sValue ) ;
- return true ;
-}
-
- </script>
- </head>
- <body scroll="no" style="OVERFLOW: hidden">
- <table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
- <tr>
- <td>
- <table cellSpacing="0" cellPadding="0" align="center" border="0">
- <tr>
- <td>
- <span fckLang="PlaceholderDlgName">Placeholder Name</span><br>
- <input id="txtName" type="text">
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fckplugin.js
deleted file mode 100644
index b61a5b3f7..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/fckplugin.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Plugin to insert "Placeholders" in the editor.
- */
-
-// Register the related command.
-FCKCommands.RegisterCommand( 'Placeholder', new FCKDialogCommand( 'Placeholder', FCKLang.PlaceholderDlgTitle, FCKPlugins.Items['placeholder'].Path + 'fck_placeholder.html', 340, 160 ) ) ;
-
-// Create the "Plaholder" toolbar button.
-var oPlaceholderItem = new FCKToolbarButton( 'Placeholder', FCKLang.PlaceholderBtn ) ;
-oPlaceholderItem.IconPath = FCKPlugins.Items['placeholder'].Path + 'placeholder.gif' ;
-
-FCKToolbarItems.RegisterItem( 'Placeholder', oPlaceholderItem ) ;
-
-
-// The object used for all Placeholder operations.
-var FCKPlaceholders = new Object() ;
-
-// Add a new placeholder at the actual selection.
-FCKPlaceholders.Add = function( name )
-{
- var oSpan = FCK.InsertElement( 'span' ) ;
- this.SetupSpan( oSpan, name ) ;
-}
-
-FCKPlaceholders.SetupSpan = function( span, name )
-{
- span.innerHTML = '[[ ' + name + ' ]]' ;
-
- span.style.backgroundColor = '#ffff00' ;
- span.style.color = '#000000' ;
-
- if ( FCKBrowserInfo.IsGecko )
- span.style.cursor = 'default' ;
-
- span._fckplaceholder = name ;
- span.contentEditable = false ;
-
- // To avoid it to be resized.
- span.onresizestart = function()
- {
- FCK.EditorWindow.event.returnValue = false ;
- return false ;
- }
-}
-
-// On Gecko we must do this trick so the user select all the SPAN when clicking on it.
-FCKPlaceholders._SetupClickListener = function()
-{
- FCKPlaceholders._ClickListener = function( e )
- {
- if ( e.target.tagName == 'SPAN' && e.target._fckplaceholder )
- FCKSelection.SelectNode( e.target ) ;
- }
-
- FCK.EditorDocument.addEventListener( 'click', FCKPlaceholders._ClickListener, true ) ;
-}
-
-// Open the Placeholder dialog on double click.
-FCKPlaceholders.OnDoubleClick = function( span )
-{
- if ( span.tagName == 'SPAN' && span._fckplaceholder )
- FCKCommands.GetCommand( 'Placeholder' ).Execute() ;
-}
-
-FCK.RegisterDoubleClickHandler( FCKPlaceholders.OnDoubleClick, 'SPAN' ) ;
-
-// Check if a Placholder name is already in use.
-FCKPlaceholders.Exist = function( name )
-{
- var aSpans = FCK.EditorDocument.getElementsByTagName( 'SPAN' ) ;
-
- for ( var i = 0 ; i < aSpans.length ; i++ )
- {
- if ( aSpans[i]._fckplaceholder == name )
- return true ;
- }
-
- return false ;
-}
-
-if ( FCKBrowserInfo.IsIE )
-{
- FCKPlaceholders.Redraw = function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return ;
-
- var aPlaholders = FCK.EditorDocument.body.innerText.match( /\[\[[^\[\]]+\]\]/g ) ;
- if ( !aPlaholders )
- return ;
-
- var oRange = FCK.EditorDocument.body.createTextRange() ;
-
- for ( var i = 0 ; i < aPlaholders.length ; i++ )
- {
- if ( oRange.findText( aPlaholders[i] ) )
- {
- var sName = aPlaholders[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ;
- oRange.pasteHTML( '<span style="color: #000000; background-color: #ffff00" contenteditable="false" _fckplaceholder="' + sName + '">' + aPlaholders[i] + '</span>' ) ;
- }
- }
- }
-}
-else
-{
- FCKPlaceholders.Redraw = function()
- {
- if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
- return ;
-
- var oInteractor = FCK.EditorDocument.createTreeWalker( FCK.EditorDocument.body, NodeFilter.SHOW_TEXT, FCKPlaceholders._AcceptNode, true ) ;
-
- var aNodes = new Array() ;
-
- while ( ( oNode = oInteractor.nextNode() ) )
- {
- aNodes[ aNodes.length ] = oNode ;
- }
-
- for ( var n = 0 ; n < aNodes.length ; n++ )
- {
- var aPieces = aNodes[n].nodeValue.split( /(\[\[[^\[\]]+\]\])/g ) ;
-
- for ( var i = 0 ; i < aPieces.length ; i++ )
- {
- if ( aPieces[i].length > 0 )
- {
- if ( aPieces[i].indexOf( '[[' ) == 0 )
- {
- var sName = aPieces[i].match( /\[\[\s*([^\]]*?)\s*\]\]/ )[1] ;
-
- var oSpan = FCK.EditorDocument.createElement( 'span' ) ;
- FCKPlaceholders.SetupSpan( oSpan, sName ) ;
-
- aNodes[n].parentNode.insertBefore( oSpan, aNodes[n] ) ;
- }
- else
- aNodes[n].parentNode.insertBefore( FCK.EditorDocument.createTextNode( aPieces[i] ) , aNodes[n] ) ;
- }
- }
-
- aNodes[n].parentNode.removeChild( aNodes[n] ) ;
- }
-
- FCKPlaceholders._SetupClickListener() ;
- }
-
- FCKPlaceholders._AcceptNode = function( node )
- {
- if ( /\[\[[^\[\]]+\]\]/.test( node.nodeValue ) )
- return NodeFilter.FILTER_ACCEPT ;
- else
- return NodeFilter.FILTER_SKIP ;
- }
-}
-
-FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKPlaceholders.Redraw ) ;
-
-// We must process the SPAN tags to replace then with the real resulting value of the placeholder.
-FCKXHtml.TagProcessors['span'] = function( node, htmlNode )
-{
- if ( htmlNode._fckplaceholder )
- node = FCKXHtml.XML.createTextNode( '[[' + htmlNode._fckplaceholder + ']]' ) ;
- else
- FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
-
- return node ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/de.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/de.js
deleted file mode 100644
index d55bee42c..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/de.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placholder German language file.
- */
-FCKLang.PlaceholderBtn = 'Einfügen/editieren Platzhalter' ;
-FCKLang.PlaceholderDlgTitle = 'Platzhalter Eigenschaften' ;
-FCKLang.PlaceholderDlgName = 'Platzhalter Name' ;
-FCKLang.PlaceholderErrNoName = 'Bitte den Namen des Platzhalters schreiben' ;
-FCKLang.PlaceholderErrNameInUse = 'Der angegebene Namen ist schon in Gebrauch' ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/en.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/en.js
deleted file mode 100644
index 466c0c8cf..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/en.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placholder English language file.
- */
-FCKLang.PlaceholderBtn = 'Insert/Edit Placeholder' ;
-FCKLang.PlaceholderDlgTitle = 'Placeholder Properties' ;
-FCKLang.PlaceholderDlgName = 'Placeholder Name' ;
-FCKLang.PlaceholderErrNoName = 'Please type the placeholder name' ;
-FCKLang.PlaceholderErrNameInUse = 'The specified name is already in use' ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/es.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/es.js
deleted file mode 100644
index 7a0e0e0e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/es.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placholder Spanish language file.
- */
-FCKLang.PlaceholderBtn = 'Insertar/Editar contenedor' ;
-FCKLang.PlaceholderDlgTitle = 'Propiedades del contenedor ' ;
-FCKLang.PlaceholderDlgName = 'Nombre de contenedor' ;
-FCKLang.PlaceholderErrNoName = 'Por favor escriba el nombre de contenedor' ;
-FCKLang.PlaceholderErrNameInUse = 'El nombre especificado ya esta en uso' ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/fr.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/fr.js
deleted file mode 100644
index 4a2bd2006..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/fr.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placeholder French language file.
- */
-FCKLang.PlaceholderBtn = "Insérer/Modifier l'Espace réservé" ;
-FCKLang.PlaceholderDlgTitle = "Propriétés de l'Espace réservé" ;
-FCKLang.PlaceholderDlgName = "Nom de l'Espace réservé" ;
-FCKLang.PlaceholderErrNoName = "Veuillez saisir le nom de l'Espace réservé" ;
-FCKLang.PlaceholderErrNameInUse = "Ce nom est déjà utilisé" ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/it.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/it.js
deleted file mode 100644
index 007e2d02f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/it.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placholder Italian language file.
- */
-FCKLang.PlaceholderBtn = 'Aggiungi/Modifica Placeholder' ;
-FCKLang.PlaceholderDlgTitle = 'Proprietà del Placeholder' ;
-FCKLang.PlaceholderDlgName = 'Nome del Placeholder' ;
-FCKLang.PlaceholderErrNoName = 'Digitare il nome del placeholder' ;
-FCKLang.PlaceholderErrNameInUse = 'Il nome inserito è già in uso' ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/pl.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/pl.js
deleted file mode 100644
index 90fa3e9e7..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/lang/pl.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Placholder Polish language file.
- */
-FCKLang.PlaceholderBtn = 'Wstaw/Edytuj nagłówek' ;
-FCKLang.PlaceholderDlgTitle = 'Właśności nagłówka' ;
-FCKLang.PlaceholderDlgName = 'Nazwa nagłówka' ;
-FCKLang.PlaceholderErrNoName = 'Proszę wprowadzić nazwę nagłówka' ;
-FCKLang.PlaceholderErrNameInUse = 'Podana nazwa jest już w użyciu' ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/placeholder.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/placeholder.gif
deleted file mode 100644
index c07078c17..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/placeholder/placeholder.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/simplecommands/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/simplecommands/fckplugin.js
deleted file mode 100644
index c43feb3e5..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/simplecommands/fckplugin.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This plugin register Toolbar items for the combos modifying the style to
- * not show the box.
- */
-
-FCKToolbarItems.RegisterItem( 'SourceSimple' , new FCKToolbarButton( 'Source', FCKLang.Source, null, FCK_TOOLBARITEM_ONLYICON, true, true, 1 ) ) ;
-FCKToolbarItems.RegisterItem( 'StyleSimple' , new FCKToolbarStyleCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
-FCKToolbarItems.RegisterItem( 'FontNameSimple' , new FCKToolbarFontsCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
-FCKToolbarItems.RegisterItem( 'FontSizeSimple' , new FCKToolbarFontSizeCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
-FCKToolbarItems.RegisterItem( 'FontFormatSimple', new FCKToolbarFontFormatCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/tablecommands/fckplugin.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/tablecommands/fckplugin.js
deleted file mode 100644
index 867b1d027..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/plugins/tablecommands/fckplugin.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This plugin register the required Toolbar items to be able to insert the
- * table commands in the toolbar.
- */
-
-FCKToolbarItems.RegisterItem( 'TableInsertRowAfter' , new FCKToolbarButton( 'TableInsertRowAfter' , FCKLang.InsertRowAfter, null, null, null, true, 62 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableDeleteRows' , new FCKToolbarButton( 'TableDeleteRows' , FCKLang.DeleteRows, null, null, null, true, 63 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableInsertColumnAfter' , new FCKToolbarButton( 'TableInsertColumnAfter' , FCKLang.InsertColumnAfter, null, null, null, true, 64 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableDeleteColumns' , new FCKToolbarButton( 'TableDeleteColumns', FCKLang.DeleteColumns, null, null, null, true, 65 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableInsertCellAfter' , new FCKToolbarButton( 'TableInsertCellAfter' , FCKLang.InsertCellAfter, null, null, null, true, 58 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableDeleteCells' , new FCKToolbarButton( 'TableDeleteCells' , FCKLang.DeleteCells, null, null, null, true, 59 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableMergeCells' , new FCKToolbarButton( 'TableMergeCells' , FCKLang.MergeCells, null, null, null, true, 60 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableHorizontalSplitCell' , new FCKToolbarButton( 'TableHorizontalSplitCell' , FCKLang.SplitCell, null, null, null, true, 61 ) ) ;
-FCKToolbarItems.RegisterItem( 'TableCellProp' , new FCKToolbarButton( 'TableCellProp' , FCKLang.CellProperties, null, null, null, true, 57 ) ) ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/_fckviewstrips.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/_fckviewstrips.html
deleted file mode 100644
index e2337b755..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/_fckviewstrips.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Useful page that enumerates all icons in the skins strips.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>FCKeditor - View Icons Strips</title>
- <style type="text/css">
- .TB_Button_Image
- {
- overflow: hidden;
- width: 16px;
- height: 16px;
- margin: 3px;
- background-repeat: no-repeat;
- }
-
- .TB_Button_Image img
- {
- position: relative;
- }
- </style>
- <script type="text/javascript">
-
-window.onload = function()
-{
- var eImg1 = document.createElement( 'img' ) ;
- eImg1.onload = Img_OnLoad ;
- eImg1.src = 'default/fck_strip.gif' ;
-
- var eImg2 = document.createElement( 'img' ) ;
- eImg2.onload = Img_OnLoad ;
- eImg2.src = 'office2003/fck_strip.gif' ;
-
- var eImg3 = document.createElement( 'img' ) ;
- eImg3.onload = Img_OnLoad ;
- eImg3.src = 'silver/fck_strip.gif' ;
-}
-
-var iTotalStrips = 3 ;
-var iMaxHeight = 0 ;
-
-function Img_OnLoad()
-{
- if ( iMaxHeight < this.height )
- iMaxHeight = this.height ;
-
- iTotalStrips-- ;
-
- if ( iTotalStrips == 0 )
- LoadIcons( iMaxHeight / 16 ) ;
-}
-
-function LoadIcons( total )
-{
- var xIconsTable = document.getElementById( 'xIconsTable' ) ;
-
- for ( var i = 0 ; i < total ; i++ )
- {
- var eRow = xIconsTable.insertRow(-1) ;
-
- var eCell = eRow.insertCell(-1) ;
- eCell.innerHTML = i + 1 ;
-
- eCell = eRow.insertCell(-1) ;
- eCell.align = 'center' ;
- eCell.style.border = '#dcdcdc 1px solid' ;
- eCell.innerHTML = '<div class="TB_Button_Image"><img src="default/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
-
- eCell = eRow.insertCell(-1) ;
- eCell.align = 'center' ;
- eCell.style.border = '#dcdcdc 1px solid' ;
- eCell.innerHTML = '<div class="TB_Button_Image"><img src="office2003/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
-
- eCell = eRow.insertCell(-1) ;
- eCell.align = 'center' ;
- eCell.style.border = '#dcdcdc 1px solid' ;
- eCell.innerHTML = '<div class="TB_Button_Image"><img src="silver/fck_strip.gif" style="top:-' + ( i * 16 ) + 'px;"><\/div>' ;
- }
-}
-
- </script>
-</head>
-<body>
- <table id="xIconsTable">
- <tr>
- <td rowspan="2">
- Index</td>
- <td align="center" colspan="3">
- Skins</td>
- </tr>
- <tr>
- <td width="80" align="center">
- default</td>
- <td width="80" align="center">
- office2003</td>
- <td width="80" align="center">
- silver</td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog.css
deleted file mode 100644
index 6b149d75e..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog.css
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Styles used by the dialog boxes.
- */
-
-html, body
-{
- background-color: transparent;
- margin: 0px;
- padding: 0px;
-}
-
-body
-{
- padding: 10px;
-}
-
-body, td, input, select, textarea
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
-}
-
-body, .BackColor
-{
- background-color: #f1f1e3;
-}
-
-.PopupBody
-{
- height: 100%;
- width: 100%;
- overflow: hidden;
- background-color: transparent;
- padding: 0px;
-}
-
-#header
-{
- cursor: move;
-}
-
-.PopupTitle
-{
- font-weight: bold;
- font-size: 14pt;
- color: #737357;
- background-color: #e3e3c7;
- padding: 3px 10px 3px 10px;
-}
-
-.PopupButtons
-{
- position: absolute;
- right: 0px;
- left: 0px;
- bottom: 0px;
- border-top: #d5d59d 1px solid;
- background-color: #e3e3c7;
- padding: 7px 10px 7px 10px;
-}
-
-.Button
-{
- border: #737357 1px solid;
- color: #3b3b1f;
- background-color: #c7c78f;
-}
-
-#btnOk
-{
- width: 100px;
-}
-
-.DarkBackground
-{
- background-color: #eaead1;
-}
-
-.LightBackground
-{
- background-color: #ffffbe;
-}
-
-.PopupTitleBorder
-{
- border-bottom: #d5d59d 1px solid;
-}
-
-.PopupTabArea
-{
- color: #737357;
- background-color: #e3e3c7;
-}
-
-.PopupTabEmptyArea
-{
- padding-left: 10px;
- border-bottom: #d5d59d 1px solid;
-}
-
-.PopupTab, .PopupTabSelected
-{
- border-right: #d5d59d 1px solid;
- border-top: #d5d59d 1px solid;
- border-left: #d5d59d 1px solid;
- padding: 3px 5px 3px 5px;
- color: #737357;
-}
-
-.PopupTab
-{
- margin-top: 1px;
- border-bottom: #d5d59d 1px solid;
- cursor: pointer;
- cursor: hand;
-}
-
-.PopupTabSelected
-{
- font-weight: bold;
- cursor: default;
- padding-top: 4px;
- border-bottom: #f1f1e3 1px solid;
- background-color: #f1f1e3;
-}
-
-.PopupSelectionBox
-{
- border: #ff9933 1px solid !important;
- background-color: #fffacd !important;
- cursor: pointer;
- cursor: hand;
-}
-
-#tdBrowse
-{
- vertical-align: bottom;
-}
-
-/**
- * Dialog frame related styles.
- */
-
-.contents
-{
- position: absolute;
- top: 2px;
- left: 16px;
- right: 16px;
- bottom: 20px;
- background-color: #f1f1e3;
- overflow: hidden;
- z-index: 1;
-}
-
-.tl, .tr, .tc, .bl, .br, .bc
-{
- position: absolute;
- background-image: url(images/sprites.png);
- background-repeat: no-repeat;
-}
-
-* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
-{
- background-image: url(images/sprites.gif);
-}
-
-.ml, .mr
-{
- position: absolute;
- background-image: url(images/dialog.sides.png);
- background-repeat: repeat-y;
-}
-
-* html .ml, * html .mr
-{
- background-image: url(images/dialog.sides.gif);
-}
-
-.rtl .ml, .rtl .mr
-{
- position: absolute;
- background-image: url(images/dialog.sides.rtl.png);
- background-repeat: repeat-y;
-}
-
-* html .rtl .ml, * html .rtl .mr
-{
- background-image: url(images/dialog.sides.gif);
-}
-
-.tl
-{
- top: 0px;
- left: 0px;
- width: 16px;
- height: 16px;
- background-position: -16px -16px;
-}
-
-.rtl .tl
-{
- background-position: -16px -397px;
-}
-
-.tr
-{
- top: 0px;
- right: 0px;
- width: 16px;
- height: 16px;
- background-position: -16px -76px;
-}
-
-.rtl .tr
-{
- background-position: -16px -457px;
-}
-
-.tc
-{
- top: 0px;
- right: 16px;
- left: 16px;
- height: 16px;
- background-position: 0px -136px;
- background-repeat: repeat-x;
-}
-
-.ml
-{
- top: 16px;
- left: 0px;
- width: 16px;
- bottom: 51px;
- background-position: 0px 0px;
-}
-
-.mr
-{
- top: 16px;
- right: 0px;
- width: 16px;
- bottom: 51px;
- background-position: -16px 0px;
-}
-
-.bl
-{
- bottom: 0px;
- left: 0px;
- width: 30px;
- height: 51px;
- background-position: -16px -196px;
-}
-
-.rtl .bl
-{
- background-position: -16px -517px;
-}
-
-.br
-{
- bottom: 0px;
- right: 0px;
- width: 30px;
- height: 51px;
- background-position: -16px -263px;
-}
-
-.rtl .br
-{
- background-position: -16px -584px;
-}
-
-.bc
-{
- bottom: 0px;
- right: 30px;
- left: 30px;
- height: 51px;
- background-position: 0px -330px;
- background-repeat: repeat-x;
-}
-
-/* For IE6. Do not change it. */
-* html .blocker
-{
- position: absolute;
- width: 100%;
- height: 100%;
- z-index: 12;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
-}
-
-/* The layer used to cover the dialog when opening a child dialog. */
-.cover
-{
- position: absolute;
- top: 0px;
- left: 14px;
- right: 14px;
- bottom: 18px;
- z-index: 11;
-}
-
-#closeButton
-{
- position: absolute;
- right: 0px;
- top: 0px;
- margin-top: 5px;
- margin-right: 10px;
- width: 20px;
- height: 20px;
- cursor: pointer;
- background-image: url(images/sprites.png);
- background-repeat: no-repeat;
- background-position: -16px -651px;
-}
-
-* html #closeButton
-{
- cursor: hand;
- background-image: url(images/sprites.gif);
-}
-
-.rtl #closeButton
-{
- right: auto;
- left: 10px;
- margin-right: 0px;
-}
-
-#closeButton:hover
-{
- background-position: -16px -687px;
-}
-
-#throbberBlock
-{
- z-index: 10;
-}
-
-#throbberBlock div
-{
- float: left;
- width: 8px;
- height: 9px;
- margin-left: 2px;
- margin-right: 2px;
- font-size: 1px; /* IE6 */
-}
-
-/*
- Color Gradient Generator:
- http://www.herethere.net/~samson/php/color_gradient/?cbegin=737357&cend=E3E3C7&steps=4
-*/
-
-.throbber_1
-{
- background-color: #737357;
-}
-
-.throbber_2
-{
- background-color: #8f8f73;
-}
-
-.throbber_3
-{
- background-color: #abab8f;
-}
-
-.throbber_4
-{
- background-color: #c7c7ab;
-}
-
-.throbber_5
-{
- background-color: #e3e3c7;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog_ie6.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog_ie6.js
deleted file mode 100644
index 7599800ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_dialog_ie6.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- */
-
-(function()
-{
- // IE6 doens't handle absolute positioning properly (it is always in quirks
- // mode). This function fixes the sizes and positions of many elements that
- // compose the skin (this is skin specific).
- var fixSizes = window.DoResizeFixes = function()
- {
- var fckDlg = window.document.body ;
-
- for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
- {
- var child = fckDlg.childNodes[i] ;
- switch ( child.className )
- {
- case 'contents' :
- child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ; // -left -right
- child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ; // -bottom -top
- break ;
-
- case 'blocker' :
- case 'cover' :
- child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ; // -left -right + 4
- child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ; // -bottom -top + 4
- break ;
-
- case 'tr' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
- break ;
-
- case 'tc' :
- child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
- break ;
-
- case 'ml' :
- child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
- break ;
-
- case 'mr' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
- child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
- break ;
-
- case 'bl' :
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
-
- case 'br' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
-
- case 'bc' :
- child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
- }
- }
- }
-
- var closeButtonOver = function()
- {
- this.style.backgroundPosition = '-16px -687px' ;
- } ;
-
- var closeButtonOut = function()
- {
- this.style.backgroundPosition = '-16px -651px' ;
- } ;
-
- var fixCloseButton = function()
- {
- var closeButton = document.getElementById ( 'closeButton' ) ;
-
- closeButton.onmouseover = closeButtonOver ;
- closeButton.onmouseout = closeButtonOut ;
- }
-
- var onLoad = function()
- {
- fixSizes() ;
- fixCloseButton() ;
-
- window.attachEvent( 'onresize', fixSizes ) ;
- window.detachEvent( 'onload', onLoad ) ;
- }
-
- window.attachEvent( 'onload', onLoad ) ;
-
-})() ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_editor.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_editor.css
deleted file mode 100644
index 436131e6d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_editor.css
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Styles used by the editor IFRAME and Toolbar.
- */
-
-/*
- ### Basic Editor IFRAME Styles.
-*/
-
-body
-{
- padding: 1px;
- margin: 0;
- background-color: #ffffff;
-}
-
-#xEditingArea
-{
- border: #696969 1px solid;
-}
-
-.SourceField
-{
- padding: 5px;
- margin: 0px;
- font-family: Monospace;
-}
-
-/*
- Toolbar
-*/
-
-.TB_ToolbarSet, .TB_Expand, .TB_Collapse
-{
- cursor: default;
- background-color: #efefde;
-}
-
-.TB_ToolbarSet
-{
- border-top: #efefde 1px outset;
- border-bottom: #efefde 1px outset;
-}
-
-.TB_ToolbarSet TD
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.TB_Toolbar
-{
- height: 24px;
- display: inline-table; /* inline = Opera jumping buttons bug */
-}
-
-.TB_Separator
-{
- width: 1px;
- height: 16px;
- margin: 2px;
- background-color: #999966;
-}
-
-.TB_Start
-{
- background-image: url(images/toolbar.start.gif);
- margin: 2px;
- width: 3px;
- background-repeat: no-repeat;
- height: 16px;
-}
-
-.TB_End
-{
- display: none;
-}
-
-.TB_ExpandImg
-{
- background-image: url(images/toolbar.expand.gif);
- background-repeat: no-repeat;
-}
-
-.TB_CollapseImg
-{
- background-image: url(images/toolbar.collapse.gif);
- background-repeat: no-repeat;
-}
-
-.TB_SideBorder
-{
- background-color: #696969;
-}
-
-.TB_Expand, .TB_Collapse
-{
- padding: 2px 2px 2px 2px;
- border: #efefde 1px outset;
-}
-
-.TB_Collapse
-{
- width: 5px;
-}
-
-.TB_Break
-{
- height: 24px; /* IE needs the height to be set, otherwise no break */
-}
-
-/*
- Toolbar Button
-*/
-
-.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
-{
- border: #efefde 1px solid; /* This is the default border */
- height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
-}
-
-.TB_Button_On
-{
- border: #316ac5 1px solid;
- background-color: #c1d2ee;
-}
-
-.TB_Button_On_Over, .TB_Button_Off_Over
-{
- border: #316ac5 1px solid;
- background-color: #dff1ff;
-}
-
-.TB_Button_Off
-{
- filter: alpha(opacity=70); /* IE */
- opacity: 0.70; /* Safari, Opera and Mozilla */
-}
-
-.TB_Button_Disabled
-{
- filter: gray() alpha(opacity=30); /* IE */
- opacity: 0.30; /* Safari, Opera and Mozilla */
-}
-
-.TB_Button_Padding
-{
- visibility: hidden;
- width: 3px;
- height: 22px;
-}
-
-.TB_Button_Image
-{
- overflow: hidden;
- width: 16px;
- height: 16px;
- margin: 3px;
- background-repeat: no-repeat;
-}
-
-.TB_Button_Image img
-{
- position: relative;
-}
-
-.TB_Button_Off .TB_Button_Text
-{
- background-color: #efefde; /* Needed because of a bug on Clear Type */
-}
-
-.TB_ConnectionLine
-{
- background-color: #ffffff;
- height: 1px;
- margin-left: 1px; /* ltr */
- margin-right: 1px; /* rtl */
-}
-
-.TB_Text
-{
- height: 22px;
-}
-
-.TB_Button_Off .TB_Text
-{
- background-color: #efefde ; /* Needed because of a bug on ClearType */
-}
-
-.TB_Button_On_Over .TB_Text
-{
- background-color: #dff1ff ; /* Needed because of a bug on ClearType */
-}
-
-/*
- Menu
-*/
-
-.MN_Menu
-{
- border: 1px solid #8f8f73;
- padding: 2px;
- background-color: #ffffff;
- cursor: default;
-}
-
-.MN_Menu, .MN_Menu .MN_Label
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.MN_Item_Padding
-{
- visibility: hidden;
- width: 3px;
- height: 20px;
-}
-
-.MN_Icon
-{
- background-color: #e3e3c7;
- text-align: center;
- height: 20px;
-}
-
-.MN_Label
-{
- padding-left: 3px;
- padding-right: 3px;
-}
-
-.MN_Separator
-{
- height: 3px;
-}
-
-.MN_Separator_Line
-{
- border-top: #b9b99d 1px solid;
-}
-
-.MN_Item .MN_Icon IMG
-{
- filter: alpha(opacity=70);
- opacity: 0.70;
-}
-
-.MN_Item_Over
-{
- color: #ffffff;
- background-color: #8f8f73;
-}
-
-.MN_Item_Over .MN_Icon
-{
- background-color: #737357;
-}
-
-.MN_Item_Disabled IMG
-{
- filter: gray() alpha(opacity=30); /* IE */
- opacity: 0.30; /* Safari, Opera and Mozilla */
-}
-
-.MN_Item_Disabled .MN_Label
-{
- color: #b7b7b7;
-}
-
-.MN_Arrow
-{
- padding-right: 3px;
- padding-left: 3px;
-}
-
-.MN_ConnectionLine
-{
- background-color: #ffffff;
-}
-
-.Menu .TB_Button_On, .Menu .TB_Button_On_Over
-{
- border: #8f8f73 1px solid;
- background-color: #ffffff;
-}
-
-/*
- ### Panel Styles
-*/
-
-.FCK_Panel
-{
- border: #8f8f73 1px solid;
- padding: 2px;
- background-color: #ffffff;
-}
-
-.FCK_Panel, .FCK_Panel TD
-{
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
- font-size: 11px;
-}
-
-/*
- ### Special Combos
-*/
-
-.SC_Panel
-{
- overflow: auto;
- white-space: nowrap;
- cursor: default;
- border: 1px solid #8f8f73;
- padding-left: 2px;
- padding-right: 2px;
-}
-
-.SC_Panel, .SC_Panel TD
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.SC_Item, .SC_ItemSelected
-{
- margin-top: 2px;
- margin-bottom: 2px;
- background-position: left center;
- padding-left: 11px;
- padding-right: 3px;
- padding-top: 2px;
- padding-bottom: 2px;
- text-overflow: ellipsis;
- overflow: hidden;
- background-repeat: no-repeat;
- border: #dddddd 1px solid;
-}
-
-.SC_Item *, .SC_ItemSelected *
-{
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-.SC_ItemSelected
-{
- border: #9a9afb 1px solid;
- background-image: url(images/toolbar.arrowright.gif);
-}
-
-.SC_ItemOver
-{
- border: #316ac5 1px solid;
-}
-
-.SC_Field
-{
- border: #b7b7a6 1px solid;
- cursor: default;
-}
-
-.SC_FieldCaption
-{
- overflow: visible;
- padding-right: 5px;
- padding-left: 5px;
- opacity: 0.75; /* Safari, Opera and Mozilla */
- filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
- height: 23px;
- background-color: #efefde;
-}
-
-.SC_FieldLabel
-{
- white-space: nowrap;
- padding: 2px;
- width: 100%;
- cursor: default;
- background-color: #ffffff;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-
-.SC_FieldButton
-{
- background-position: center center;
- background-image: url(images/toolbar.buttonarrow.gif);
- border-left: #b7b7a6 1px solid;
- width: 14px;
- background-repeat: no-repeat;
-}
-
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
-{
- opacity: 0.30; /* Safari, Opera and Mozilla */
- filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
-}
-
-.SC_FieldOver
-{
- border: #316ac5 1px solid;
-}
-
-.SC_FieldOver .SC_FieldButton
-{
- border-left: #316ac5 1px solid;
-}
-
-/*
- ### Color Selector Panel
-*/
-
-.ColorBoxBorder
-{
- border: #808080 1px solid;
- position: static;
-}
-
-.ColorBox
-{
- font-size: 1px;
- width: 10px;
- position: static;
- height: 10px;
-}
-
-.ColorDeselected, .ColorSelected
-{
- cursor: default;
-}
-
-.ColorDeselected
-{
- border: #ffffff 1px solid;
- padding: 2px;
- float: left;
-}
-
-.ColorSelected
-{
- border: #330066 1px solid;
- padding: 2px;
- float: left;
- background-color: #c4cdd6;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_strip.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_strip.gif
deleted file mode 100644
index a6ca5325d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/fck_strip.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.gif
deleted file mode 100644
index 2f57d9314..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.png
deleted file mode 100644
index 5be90edd2..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/sprites.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.arrowright.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.arrowright.gif
deleted file mode 100644
index 6843c8d41..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.arrowright.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gif
deleted file mode 100644
index ea60995e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.buttonarrow.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.collapse.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.collapse.gif
deleted file mode 100644
index 87aa56d3b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.collapse.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.end.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.end.gif
deleted file mode 100644
index 5bfd67a2d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.end.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.expand.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.expand.gif
deleted file mode 100644
index 79075e7c3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.expand.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.separator.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.separator.gif
deleted file mode 100644
index eaed04a7a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.separator.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog.css
deleted file mode 100644
index 8fb16161b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog.css
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Styles used by the dialog boxes.
- */
-
-html, body
-{
- background-color: transparent;
- margin: 0px;
- padding: 0px;
-}
-
-body
-{
- padding: 10px;
-}
-
-body, td, input, select, textarea
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
-}
-
-body, .BackColor
-{
- background-color: #f7f8fd;
-}
-
-.PopupBody
-{
- height: 100%;
- width: 100%;
- overflow: hidden;
- background-color: transparent;
- padding: 0px;
-}
-
-#header
-{
- cursor: move;
-}
-
-.PopupTitle
-{
- font-weight: bold;
- font-size: 14pt;
- color: #0e3460;
- background-color: #8cb2fd;
- padding: 3px 10px 3px 10px;
-}
-
-.PopupButtons
-{
- position: absolute;
- right: 0px;
- left: 0px;
- bottom: 0px;
- border-top: #466ca6 1px solid;
- background-color: #8cb2fd;
- padding: 7px 10px 7px 10px;
-}
-
-.Button
-{
- border: #1c3460 1px solid;
- color: #000a28;
- background-color: #7096d3;
-}
-
-#btnOk
-{
- width: 100px;
-}
-
-.DarkBackground
-{
- background-color: #eaf2f8;
-}
-
-.LightBackground
-{
- background-color: #ffffbe;
-}
-
-.PopupTitleBorder
-{
- border-bottom: #d5d59d 1px solid;
-}
-
-.PopupTabArea
-{
- color: #0e3460;
- background-color: #8cb2fd;
-}
-
-.PopupTabEmptyArea
-{
- padding-left: 10px ;
- border-bottom: #466ca6 1px solid;
-}
-
-.PopupTab, .PopupTabSelected
-{
- border-right: #466ca6 1px solid;
- border-top: #466ca6 1px solid;
- border-left: #466ca6 1px solid;
- padding: 3px 5px 3px 5px;
- color: #0e3460;
-}
-
-.PopupTab
-{
- margin-top: 1px;
- border-bottom: #466ca6 1px solid;
- cursor: pointer;
- cursor: hand;
-}
-
-.PopupTabSelected
-{
- font-weight: bold;
- cursor: default;
- padding-top: 4px;
- border-bottom: #f7f8fd 1px solid;
- background-color: #f7f8fd;
-}
-
-.PopupSelectionBox
-{
- border: #1e90ff 1px solid !important;
- background-color: #add8e6 !important;
- cursor: pointer;
- cursor: hand;
-}
-
-#tdBrowse
-{
- vertical-align: bottom;
-}
-
-/**
- * Dialog frame related styles.
- */
-
-.contents
-{
- position: absolute;
- top: 2px;
- left: 16px;
- right: 16px;
- bottom: 20px;
- background-color: #f7f8fD;
- overflow: hidden;
- z-index: 1;
-}
-
-.tl, .tr, .tc, .bl, .br, .bc
-{
- position: absolute;
- background-image: url(images/sprites.png);
- background-repeat: no-repeat;
-}
-
-* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
-{
- background-image: url(images/sprites.gif);
-}
-
-.ml, .mr
-{
- position: absolute;
- background-image: url(images/dialog.sides.png);
- background-repeat: repeat-y;
-}
-
-* html .ml, * html .mr
-{
- background-image: url(images/dialog.sides.gif);
-}
-
-.rtl .ml, .rtl .mr
-{
- position: absolute;
- background-image: url(images/dialog.sides.rtl.png);
- background-repeat: repeat-y;
-}
-
-* html .rtl .ml, * html .rtl .mr
-{
- background-image: url(images/dialog.sides.gif);
-}
-
-.tl
-{
- top: 0px;
- left: 0px;
- width: 16px;
- height: 16px;
- background-position: -16px -16px;
-}
-
-.rtl .tl
-{
- background-position: -16px -397px;
-}
-
-.tr
-{
- top: 0px;
- right: 0px;
- width: 16px;
- height: 16px;
- background-position: -16px -76px;
-}
-
-.rtl .tr
-{
- background-position: -16px -457px;
-}
-
-.tc
-{
- top: 0px;
- right: 16px;
- left: 16px;
- height: 16px;
- background-position: 0px -136px;
- background-repeat: repeat-x;
-}
-
-.ml
-{
- top: 16px;
- left: 0px;
- width: 16px;
- bottom: 51px;
- background-position: 0px 0px;
-}
-
-.mr
-{
- top: 16px;
- right: 0px;
- width: 16px;
- bottom: 51px;
- background-position: -16px 0px;
-}
-
-.bl
-{
- bottom: 0px;
- left: 0px;
- width: 30px;
- height: 51px;
- background-position: -16px -196px;
-}
-
-.rtl .bl
-{
- background-position: -16px -517px;
-}
-
-.br
-{
- bottom: 0px;
- right: 0px;
- width: 30px;
- height: 51px;
- background-position: -16px -263px;
-}
-
-.rtl .br
-{
- background-position: -16px -584px;
-}
-
-.bc
-{
- bottom: 0px;
- right: 30px;
- left: 30px;
- height: 51px;
- background-position: 0px -330px;
- background-repeat: repeat-x;
-}
-
-/* For IE6. Do not change it. */
-* html .blocker
-{
- position: absolute;
- width: 100%;
- height: 100%;
- z-index: 12;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
-}
-
-/* The layer used to cover the dialog when opening a child dialog. */
-.cover
-{
- position: absolute;
- top: 0px;
- left: 14px;
- right: 14px;
- bottom: 18px;
- z-index: 11;
-}
-
-#closeButton
-{
- position: absolute;
- right: 0px;
- top: 0px;
- margin-top: 5px;
- margin-right: 10px;
- width: 20px;
- height: 20px;
- cursor: pointer;
- background-image: url(images/sprites.png);
- background-repeat: no-repeat;
- background-position: -16px -651px;
-}
-
-* html #closeButton
-{
- cursor: hand;
- background-image: url(images/sprites.gif);
-}
-
-.rtl #closeButton
-{
- right: auto;
- left: 10px;
- margin-right: 0px;
-}
-
-#closeButton:hover
-{
- background-position: -16px -687px;
-}
-
-#throbberBlock
-{
- z-index: 10;
-}
-
-#throbberBlock div
-{
- float: left;
- width: 8px;
- height: 9px;
- margin-left: 2px;
- margin-right: 2px;
- font-size: 1px; /* IE6 */
-}
-
-/*
- Color Gradient Generator:
- http://www.herethere.net/~samson/php/color_gradient/?cbegin=0E3460&cend=8cb2fd&steps=4
-*/
-
-.throbber_1
-{
- background-color: #0E3460;
-}
-
-.throbber_2
-{
- background-color: #2D5387;
-}
-
-.throbber_3
-{
- background-color: #4D73AE;
-}
-
-.throbber_4
-{
- background-color: #6C92D5;
-}
-
-.throbber_5
-{
- background-color: #8CB2FD;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog_ie6.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog_ie6.js
deleted file mode 100644
index 7599800ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_dialog_ie6.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- */
-
-(function()
-{
- // IE6 doens't handle absolute positioning properly (it is always in quirks
- // mode). This function fixes the sizes and positions of many elements that
- // compose the skin (this is skin specific).
- var fixSizes = window.DoResizeFixes = function()
- {
- var fckDlg = window.document.body ;
-
- for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
- {
- var child = fckDlg.childNodes[i] ;
- switch ( child.className )
- {
- case 'contents' :
- child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ; // -left -right
- child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ; // -bottom -top
- break ;
-
- case 'blocker' :
- case 'cover' :
- child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ; // -left -right + 4
- child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ; // -bottom -top + 4
- break ;
-
- case 'tr' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
- break ;
-
- case 'tc' :
- child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
- break ;
-
- case 'ml' :
- child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
- break ;
-
- case 'mr' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
- child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
- break ;
-
- case 'bl' :
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
-
- case 'br' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
-
- case 'bc' :
- child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
- }
- }
- }
-
- var closeButtonOver = function()
- {
- this.style.backgroundPosition = '-16px -687px' ;
- } ;
-
- var closeButtonOut = function()
- {
- this.style.backgroundPosition = '-16px -651px' ;
- } ;
-
- var fixCloseButton = function()
- {
- var closeButton = document.getElementById ( 'closeButton' ) ;
-
- closeButton.onmouseover = closeButtonOver ;
- closeButton.onmouseout = closeButtonOut ;
- }
-
- var onLoad = function()
- {
- fixSizes() ;
- fixCloseButton() ;
-
- window.attachEvent( 'onresize', fixSizes ) ;
- window.detachEvent( 'onload', onLoad ) ;
- }
-
- window.attachEvent( 'onload', onLoad ) ;
-
-})() ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_editor.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_editor.css
deleted file mode 100644
index 9d582e500..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_editor.css
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Styles used by the editor IFRAME and Toolbar.
- */
-
-/*
- ### Basic Editor IFRAME Styles.
-*/
-
-body
-{
- padding: 1px;
- margin: 0;
- background-color: #ffffff;
-}
-
-#xEditingArea
-{
- border: #696969 1px solid;
-}
-
-.SourceField
-{
- padding: 5px;
- margin: 0px;
- font-family: Monospace;
-}
-
-/*
- Toolbar
-*/
-
-.TB_ToolbarSet, .TB_Expand, .TB_Collapse
-{
- cursor: default;
- background-color: #f7f8fd;
-}
-
-.TB_ToolbarSet
-{
- border-top: #f7f8fd 1px outset;
- border-bottom: #f7f8fd 1px outset;
-}
-
-.TB_ToolbarSet TD
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.TB_Toolbar
-{
- background-color: #d6dff7;
- background-image: url(images/toolbar.bg.gif);
- background-repeat: repeat-x;
- display: inline-table;
-}
-
-.TB_Separator
-{
- width: 1px;
- height: 16px;
- margin: 2px;
- background-color: #B2CBFF;
-}
-
-.TB_Start
-{
- background-image: url(images/toolbar.start.gif);
- background-repeat: no-repeat;
- background-position: center center;
- margin: 0px;
- width: 7px;
- height: 24px;
-}
-
-.TB_End
-{
- background-image: url(images/toolbar.end.gif);
- background-repeat: no-repeat;
- background-position: center left;
- height: 24px;
- width: 4px;
-}
-
-.TB_ExpandImg
-{
- background-image: url(images/toolbar.expand.gif);
- background-repeat: no-repeat;
-}
-
-.TB_CollapseImg
-{
- background-image: url(images/toolbar.collapse.gif);
- background-repeat: no-repeat;
-}
-
-.TB_SideBorder
-{
- background-color: #696969;
-}
-
-.TB_Expand, .TB_Collapse
-{
- padding: 2px 2px 2px 2px;
- border: #f7f8fd 1px outset;
-}
-
-.TB_Collapse
-{
- width: 5px;
-}
-
-.TB_Break
-{
- height: 24px; /* IE needs the height to be set, otherwise no break */
-}
-
-/*
- Toolbar Button
-*/
-
-.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
-{
- margin: 1px;
- height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
-}
-
-.TB_Button_On
-{
- margin: 0px;
- border: #316ac5 1px solid;
- background-color: #c1d2ee;
-}
-
-.TB_Button_On_Over, .TB_Button_Off_Over
-{
- margin: 0px ;
- border: #316ac5 1px solid;
- background-color: #dff1ff;
-}
-
-.TB_Button_Off
-{
- filter: alpha(opacity=70); /* IE */
- opacity: 0.70; /* Safari, Opera and Mozilla */
-}
-
-.TB_Button_Disabled
-{
- filter: gray() alpha(opacity=30); /* IE */
- opacity: 0.30; /* Safari, Opera and Mozilla */
-}
-
-.TB_Button_Padding
-{
- visibility: hidden;
- width: 3px;
- height: 22px;
-}
-
-.TB_Button_Image
-{
- overflow: hidden;
- width: 16px;
- height: 16px;
- margin: 3px;
- background-repeat: no-repeat;
-}
-
-.TB_Button_Image img
-{
- position: relative;
-}
-
-.TB_Button_Off .TB_Button_Text
-{
- background-color: #d6dff7; /* Needed because of a bug on ClearType */
- background-image: url(images/toolbar.bg.gif);
- background-repeat: repeat-x;
-}
-
-.TB_ConnectionLine
-{
- background-color: #f7f8fd;
- height: 1px;
- margin-left: 1px; /* ltr */
- margin-right: 1px; /* rtl */
-}
-
-.TB_Button_Off .TB_Text
-{
- background-color: #d6dff7; /* Needed because of a bug on ClearType */
- background-image: url(images/toolbar.bg.gif);
- background-repeat: repeat-x;
-}
-
-.TB_Button_On_Over .TB_Text
-{
- background-color: #dff1ff ; /* Needed because of a bug on ClearType */
-}
-
-/*
- Menu
-*/
-
-.MN_Menu
-{
- border: 1px solid #8f8f73;
- padding: 2px;
- background-color: #f7f8fd;
- cursor: default;
-}
-
-.MN_Menu, .MN_Menu .MN_Label
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.MN_Item_Padding
-{
- visibility: hidden;
- width: 3px;
- height: 20px;
-}
-
-.MN_Icon
-{
- background-color: #d6dff7;
- text-align: center;
- height: 20px;
-}
-
-.MN_Label
-{
- padding-left: 3px;
- padding-right: 3px;
-}
-
-.MN_Separator
-{
- height: 3px;
-}
-
-.MN_Separator_Line
-{
- border-top: #b9b99d 1px solid;
-}
-
-.MN_Item .MN_Icon IMG
-{
- filter: alpha(opacity=70);
- opacity: 0.70;
-}
-
-.MN_Item_Over
-{
- color: #ffffff;
- background-color: #7096FA;
-}
-
-.MN_Item_Over .MN_Icon
-{
- background-color: #466ca6;
-}
-
-.MN_Item_Disabled IMG
-{
- filter: gray() alpha(opacity=30); /* IE */
- opacity: 0.30; /* Safari, Opera and Mozilla */
-}
-
-.MN_Item_Disabled .MN_Label
-{
- color: #b7b7b7;
-}
-
-.MN_Arrow
-{
- padding-right: 3px;
- padding-left: 3px;
-}
-
-.MN_ConnectionLine
-{
- background-color: #f7f8fd;
-}
-
-.Menu .TB_Button_On, .Menu .TB_Button_On_Over
-{
- border: #8f8f73 1px solid;
- background-color: #f7f8fd;
-}
-
-/*
- ### Panel Styles
-*/
-
-.FCK_Panel
-{
- border: #8f8f73 1px solid;
- padding: 2px;
- background-color: #f7f8fd;
-}
-
-.FCK_Panel, .FCK_Panel TD
-{
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
- font-size: 11px;
-}
-
-/*
- ### Special Combos
-*/
-
-.SC_Panel
-{
- overflow: auto;
- white-space: nowrap;
- cursor: default;
- border: 1px solid #8f8f73;
- padding-left: 2px;
- padding-right: 2px;
-}
-
-.SC_Panel, .SC_Panel TD
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.SC_Item, .SC_ItemSelected
-{
- margin-top: 2px;
- margin-bottom: 2px;
- background-position: left center;
- padding-left: 11px;
- padding-right: 3px;
- padding-top: 2px;
- padding-bottom: 2px;
- text-overflow: ellipsis;
- overflow: hidden;
- background-repeat: no-repeat;
- border: #dddddd 1px solid;
-}
-
-.SC_Item *, .SC_ItemSelected *
-{
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-.SC_ItemSelected
-{
- border: #9a9afb 1px solid;
- background-image: url(images/toolbar.arrowright.gif);
-}
-
-.SC_ItemOver
-{
- border: #316ac5 1px solid;
-}
-
-.SC_Field
-{
- margin-top: 2px ;
- border: #b7b7a6 1px solid;
- cursor: default;
-}
-
-.SC_FieldCaption
-{
- overflow: visible;
- padding-right: 5px;
- padding-left: 5px;
- opacity: 0.75; /* Safari, Opera and Mozilla */
- filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
- height: 23px;
- background-color: #d6dff7; /* Needed because of a bug on ClearType */
- background-image: url(images/toolbar.bg.gif);
- background-repeat: repeat-x;
-/* background-color: inherit; Maybe this is needed wait to check */
-}
-
-.SC_FieldLabel
-{
- white-space: nowrap;
- padding: 2px;
- width: 100%;
- cursor: default;
- background-color: #ffffff;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-
-.SC_FieldButton
-{
- background-position: center center;
- background-image: url(images/toolbar.buttonarrow.gif);
- border-left: #b7b7a6 1px solid;
- width: 14px;
- background-repeat: no-repeat;
-}
-
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
-{
- opacity: 0.30; /* Safari, Opera and Mozilla */
- filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
-}
-
-.SC_FieldOver
-{
- border: #316ac5 1px solid;
-}
-
-.SC_FieldOver .SC_FieldButton
-{
- border-left: #316ac5 1px solid;
-}
-
-/*
- ### Color Selector Panel
-*/
-
-.ColorBoxBorder
-{
- border: #808080 1px solid;
- position: static;
-}
-
-.ColorBox
-{
- font-size: 1px;
- width: 10px;
- position: static;
- height: 10px;
-}
-
-.ColorDeselected, .ColorSelected
-{
- cursor: default;
-}
-
-.ColorDeselected
-{
- border: #ffffff 1px solid;
- padding: 2px;
- float: left;
-}
-
-.ColorSelected
-{
- border: #330066 1px solid;
- padding: 2px;
- float: left;
- background-color: #c4cdd6;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_strip.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_strip.gif
deleted file mode 100644
index 5607cc8b6..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/fck_strip.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.gif
deleted file mode 100644
index 921fa1aea..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.png
deleted file mode 100644
index be15730bf..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.rtl.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.rtl.png
deleted file mode 100644
index e18f13d52..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/dialog.sides.rtl.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.gif
deleted file mode 100644
index 8763e4871..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.png
deleted file mode 100644
index 7f4e196c3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/sprites.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.arrowright.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.arrowright.gif
deleted file mode 100644
index 6843c8d41..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.arrowright.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.bg.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.bg.gif
deleted file mode 100644
index b03960b1b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.bg.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif
deleted file mode 100644
index ea60995e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.collapse.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.collapse.gif
deleted file mode 100644
index d549166d1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.collapse.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.end.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.end.gif
deleted file mode 100644
index 7ff599dee..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.end.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.expand.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.expand.gif
deleted file mode 100644
index c4a7326e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.expand.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.separator.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.separator.gif
deleted file mode 100644
index 27db9c38d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.separator.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.start.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.start.gif
deleted file mode 100644
index 41f1241b9..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/office2003/images/toolbar.start.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog.css
deleted file mode 100644
index 96be59356..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog.css
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Styles used by the dialog boxes.
- */
-
-html, body
-{
- background-color: transparent;
- margin: 0px;
- padding: 0px;
-}
-
-body
-{
- padding: 10px;
-}
-
-body, td, input, select, textarea
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
-}
-
-body, .BackColor
-{
- background-color: #f7f7f7;
-}
-
-.PopupBody
-{
- height: 100%;
- width: 100%;
- overflow: hidden;
- background-color: transparent;
- padding: 0px;
-}
-
-#header
-{
- cursor: move;
-}
-
-.PopupTitle
-{
- font-weight: bold;
- font-size: 14pt;
- color: #504845;
- background-color: #dedede;
- padding: 3px 10px 3px 10px;
-}
-
-.PopupButtons
-{
- position: absolute;
- right: 0px;
- left: 0px;
- bottom: 0px;
- border-top: #cec6b5 1px solid;
- background-color: #DEDEDE;
- padding: 7px 10px 7px 10px;
-}
-
-.Button
-{
- border: #7a7261 1px solid;
- color: #504845;
- background-color: #cec6b5;
-}
-
-#btnOk
-{
- width: 100px;
-}
-
-.DarkBackground
-{
- background-color: #f2f2f2;
-}
-
-.LightBackground
-{
- background-color: #ffffbe;
-}
-
-.PopupTitleBorder
-{
- border-bottom: #cec6b5 1px solid;
-}
-
-.PopupTabArea
-{
- color: #504845;
- background-color: #DEDEDE;
-}
-
-.PopupTabEmptyArea
-{
- padding-left: 10px ;
- border-bottom: #cec6b5 1px solid;
-}
-
-.PopupTab, .PopupTabSelected
-{
- border-right: #cec6b5 1px solid;
- border-top: #cec6b5 1px solid;
- border-left: #cec6b5 1px solid;
- padding: 3px 5px 3px 5px;
- color: #504845;
-}
-
-.PopupTab
-{
- margin-top: 1px;
- border-bottom: #cec6b5 1px solid;
- cursor: pointer;
- cursor: hand;
-}
-
-.PopupTabSelected
-{
- font-weight:bold;
- cursor: default;
- padding-top: 4px;
- border-bottom: #f1f1e3 1px solid;
- background-color: #f7f7f7;
-}
-
-.PopupSelectionBox
-{
- border: #a9a9a9 1px solid !important;
- background-color: #dcdcdc !important;
- cursor: pointer;
- cursor: hand;
-}
-
-#tdBrowse
-{
- vertical-align: bottom;
-}
-
-/**
- * Dialog frame related styles.
- */
-
-.contents
-{
- position: absolute;
- top: 2px;
- left: 16px;
- right: 16px;
- bottom: 20px;
- background-color: #f7f7f7;
- overflow: hidden;
- z-index: 1;
-}
-
-.tl, .tr, .tc, .bl, .br, .bc
-{
- position: absolute;
- background-image: url(images/sprites.png);
- background-repeat: no-repeat;
-}
-
-* html .tl, * html .tr, * html .tc, * html .bl, * html .br, * html .bc
-{
- background-image: url(images/sprites.gif);
-}
-
-.ml, .mr
-{
- position: absolute;
- background-image: url(images/dialog.sides.png);
- background-repeat: repeat-y;
-}
-
-* html .ml, * html .mr
-{
- background-image: url(images/dialog.sides.gif);
-}
-
-.rtl .ml, .rtl .mr
-{
- position: absolute;
- background-image: url(images/dialog.sides.rtl.png);
- background-repeat: repeat-y;
-}
-
-* html .rtl .ml, * html .rtl .mr
-{
- background-image: url(images/dialog.sides.gif);
-}
-
-.tl
-{
- top: 0px;
- left: 0px;
- width: 16px;
- height: 16px;
- background-position: -16px -16px;
-}
-
-.rtl .tl
-{
- background-position: -16px -397px;
-}
-
-.tr
-{
- top: 0px;
- right: 0px;
- width: 16px;
- height: 16px;
- background-position: -16px -76px;
-}
-
-.rtl .tr
-{
- background-position: -16px -457px;
-}
-
-.tc
-{
- top: 0px;
- right: 16px;
- left: 16px;
- height: 16px;
- background-position: 0px -136px;
- background-repeat: repeat-x;
-}
-
-.ml
-{
- top: 16px;
- left: 0px;
- width: 16px;
- bottom: 51px;
- background-position: 0px 0px;
-}
-
-.mr
-{
- top: 16px;
- right: 0px;
- width: 16px;
- bottom: 51px;
- background-position: -16px 0px;
-}
-
-.bl
-{
- bottom: 0px;
- left: 0px;
- width: 30px;
- height: 51px;
- background-position: -16px -196px;
-}
-
-.rtl .bl
-{
- background-position: -16px -517px;
-}
-
-.br
-{
- bottom: 0px;
- right: 0px;
- width: 30px;
- height: 51px;
- background-position: -16px -263px;
-}
-
-.rtl .br
-{
- background-position: -16px -584px;
-}
-
-.bc
-{
- bottom: 0px;
- right: 30px;
- left: 30px;
- height: 51px;
- background-position: 0px -330px;
- background-repeat: repeat-x;
-}
-
-/* For IE6. Do not change it. */
-* html .blocker
-{
- position: absolute;
- width: 100%;
- height: 100%;
- z-index: 12;
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
-}
-
-/* The layer used to cover the dialog when opening a child dialog. */
-.cover
-{
- position: absolute;
- top: 0px;
- left: 14px;
- right: 14px;
- bottom: 18px;
- z-index: 11;
-}
-
-#closeButton
-{
- position: absolute;
- right: 0px;
- top: 0px;
- margin-top: 5px;
- margin-right: 10px;
- width: 20px;
- height: 20px;
- cursor: pointer;
- background-image: url(images/sprites.png);
- background-repeat: no-repeat;
- background-position: -16px -651px;
-}
-
-* html #closeButton
-{
- cursor: hand;
- background-image: url(images/sprites.gif);
-}
-
-.rtl #closeButton
-{
- right: auto;
- left: 10px;
- margin-right: 0px;
-}
-
-#closeButton:hover
-{
- background-position: -16px -687px;
-}
-
-#throbberBlock
-{
- z-index: 10;
-}
-
-#throbberBlock div
-{
- float: left;
- width: 8px;
- height: 9px;
- margin-left: 2px;
- margin-right: 2px;
- font-size: 1px; /* IE6 */
-}
-
-/*
- Color Gradient Generator:
- http://www.herethere.net/~samson/php/color_gradient/?cbegin=504845&cend=DEDEDE&steps=4
-*/
-
-.throbber_1
-{
- background-color: #504845;
-}
-
-.throbber_2
-{
- background-color: #736D6B;
-}
-
-.throbber_3
-{
- background-color: #979391;
-}
-
-.throbber_4
-{
- background-color: #BAB8B7;
-}
-
-.throbber_5
-{
- background-color: #DEDEDE;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog_ie6.js b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog_ie6.js
deleted file mode 100644
index 7599800ac..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_dialog_ie6.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- */
-
-(function()
-{
- // IE6 doens't handle absolute positioning properly (it is always in quirks
- // mode). This function fixes the sizes and positions of many elements that
- // compose the skin (this is skin specific).
- var fixSizes = window.DoResizeFixes = function()
- {
- var fckDlg = window.document.body ;
-
- for ( var i = 0 ; i < fckDlg.childNodes.length ; i++ )
- {
- var child = fckDlg.childNodes[i] ;
- switch ( child.className )
- {
- case 'contents' :
- child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 ) ; // -left -right
- child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 ) ; // -bottom -top
- break ;
-
- case 'blocker' :
- case 'cover' :
- child.style.width = Math.max( 0, fckDlg.offsetWidth - 16 - 16 + 4 ) ; // -left -right + 4
- child.style.height = Math.max( 0, fckDlg.clientHeight - 20 - 2 + 4 ) ; // -bottom -top + 4
- break ;
-
- case 'tr' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
- break ;
-
- case 'tc' :
- child.style.width = Math.max( 0, fckDlg.clientWidth - 16 - 16 ) ;
- break ;
-
- case 'ml' :
- child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
- break ;
-
- case 'mr' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 16 ) ;
- child.style.height = Math.max( 0, fckDlg.clientHeight - 16 - 51 ) ;
- break ;
-
- case 'bl' :
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
-
- case 'br' :
- child.style.left = Math.max( 0, fckDlg.clientWidth - 30 ) ;
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
-
- case 'bc' :
- child.style.width = Math.max( 0, fckDlg.clientWidth - 30 - 30 ) ;
- child.style.top = Math.max( 0, fckDlg.clientHeight - 51 ) ;
- break ;
- }
- }
- }
-
- var closeButtonOver = function()
- {
- this.style.backgroundPosition = '-16px -687px' ;
- } ;
-
- var closeButtonOut = function()
- {
- this.style.backgroundPosition = '-16px -651px' ;
- } ;
-
- var fixCloseButton = function()
- {
- var closeButton = document.getElementById ( 'closeButton' ) ;
-
- closeButton.onmouseover = closeButtonOver ;
- closeButton.onmouseout = closeButtonOut ;
- }
-
- var onLoad = function()
- {
- fixSizes() ;
- fixCloseButton() ;
-
- window.attachEvent( 'onresize', fixSizes ) ;
- window.detachEvent( 'onload', onLoad ) ;
- }
-
- window.attachEvent( 'onload', onLoad ) ;
-
-})() ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_editor.css b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_editor.css
deleted file mode 100644
index f1a500730..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_editor.css
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Styles used by the editor IFRAME and Toolbar.
- */
-
-/*
- ### Basic Editor IFRAME Styles.
-*/
-
-body
-{
- padding: 1px;
- margin: 0;
- background-color: #ffffff;
-}
-
-#xEditingArea
-{
- border: #696969 1px solid;
-}
-
-.SourceField
-{
- padding: 5px;
- margin: 0px;
- font-family: Monospace;
-}
-
-/*
- Toolbar
-*/
-
-.TB_ToolbarSet, .TB_Expand, .TB_Collapse
-{
- cursor: default;
- background-color: #f7f7f7;
-}
-
-.TB_ToolbarSet
-{
- padding: 1px;
- border-top: #efefde 1px outset;
- border-bottom: #efefde 1px outset;
-}
-
-.TB_ToolbarSet TD
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.TB_Toolbar
-{
- display: inline-table;
-}
-
-.TB_Separator
-{
- width: 1px;
- height: 21px;
- margin: 2px;
- background-color: #C6C3BD;
-}
-
-.TB_Start
-{
- background-image: url(images/toolbar.start.gif);
- margin-left: 2px;
- margin-right: 2px;
- width: 3px;
- background-repeat: no-repeat;
- height: 27px;
- background-position: center center;
-}
-
-.TB_End
-{
- display: none;
-}
-
-.TB_ExpandImg
-{
- background-image: url(images/toolbar.expand.gif);
- background-repeat: no-repeat;
-}
-
-.TB_CollapseImg
-{
- background-image: url(images/toolbar.collapse.gif);
- background-repeat: no-repeat;
-}
-
-.TB_SideBorder
-{
- background-color: #696969;
-}
-
-.TB_Expand, .TB_Collapse
-{
- padding: 2px 2px 2px 2px;
- border: #efefde 1px outset;
-}
-
-.TB_Collapse
-{
- border: #efefde 1px outset;
- width: 5px;
-}
-
-.TB_Break
-{
- height: 27px;
-}
-
-/*
- Toolbar Button
-*/
-
-.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
-{
- padding: 1px ;
- margin:1px;
- height: 21px;
-}
-
-.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
-{
- border: #cec6b5 1px solid;
-}
-
-.TB_Button_On
-{
- border-color: #316ac5;
- background-color: #c1d2ee;
-}
-
-.TB_Button_On_Over, .TB_Button_Off_Over
-{
- border: #316ac5 1px solid;
- background-color: #dff1ff;
-}
-
-.TB_Button_Off
-{
- background: #efefef url(images/toolbar.buttonbg.gif) repeat-x;
-}
-
-.TB_Button_Off, .TB_Combo_Off
-{
- opacity: 0.70; /* Safari, Opera and Mozilla */
- filter: alpha(opacity=70); /* IE */
- /* -moz-opacity: 0.70; Mozilla (Old) */
-}
-
-.TB_Button_Disabled
-{
- opacity: 0.30; /* Safari, Opera and Mozilla */
- filter: gray() alpha(opacity=30); /* IE */
-}
-
-.TB_Button_Padding
-{
- visibility: hidden;
- width: 3px;
- height: 21px;
-}
-
-.TB_Button_Image
-{
- overflow: hidden;
- width: 16px;
- height: 16px;
- margin: 3px;
- margin-top: 4px;
- margin-bottom: 2px;
- background-repeat: no-repeat;
-}
-
-/* For composed button ( icon + text, icon + arrow ), we must compensate the table */
-.TB_Button_On TABLE .TB_Button_Image,
-.TB_Button_Off TABLE .TB_Button_Image,
-.TB_Button_On_Over TABLE .TB_Button_Image,
-.TB_Button_Off_Over TABLE .TB_Button_Image,
-.TB_Button_Disabled TABLE .TB_Button_Image
-{
- margin-top: 3px;
-}
-
-.TB_Button_Image img
-{
- position: relative;
-}
-
-.TB_ConnectionLine
-{
- background-color: #ffffff;
- height: 1px;
- margin-left: 1px; /* ltr */
- margin-right: 1px; /* rtl */
-}
-
-/*
- Menu
-*/
-
-.MN_Menu
-{
- border: 1px solid #8f8f73;
- padding: 2px;
- background-color: #f7f7f7;
- cursor: default;
-}
-
-.MN_Menu, .MN_Menu .MN_Label
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.MN_Item_Padding
-{
- visibility: hidden;
- width: 3px;
- height: 20px;
-}
-
-.MN_Icon
-{
- background-color: #dedede;
- text-align: center;
- height: 20px;
-}
-
-.MN_Label
-{
- padding-left: 3px;
- padding-right: 3px;
-}
-
-.MN_Separator
-{
- height: 3px;
-}
-
-.MN_Separator_Line
-{
- border-top: #b9b99d 1px solid;
-}
-
-.MN_Item .MN_Icon IMG
-{
- filter: alpha(opacity=70);
- opacity: 0.70;
-}
-
-.MN_Item_Over
-{
- color: #ffffff;
- background-color: #8a857d;
-}
-
-.MN_Item_Over .MN_Icon
-{
- background-color: #6c6761;
-}
-
-.MN_Item_Disabled IMG
-{
- filter: gray() alpha(opacity=30); /* IE */
- opacity: 0.30; /* Safari, Opera and Mozilla */
-}
-
-.MN_Item_Disabled .MN_Label
-{
- color: #b7b7b7;
-}
-
-.MN_Arrow
-{
- padding-right: 3px;
- padding-left: 3px;
-}
-
-.MN_ConnectionLine
-{
- background-color: #ffffff;
-}
-
-.Menu .TB_Button_On, .Menu .TB_Button_On_Over
-{
- border: #8f8f73 1px solid;
- background-color: #ffffff;
-}
-
-/*
- ### Panel Styles
-*/
-
-.FCK_Panel
-{
- border: #8f8f73 1px solid;
- padding: 2px;
- background-color: #ffffff;
-}
-
-.FCK_Panel, .FCK_Panel TD
-{
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
- font-size: 11px;
-}
-
-/*
- ### Special Combos
-*/
-
-.SC_Panel
-{
- overflow: auto;
- white-space: nowrap;
- cursor: default;
- border: 1px solid #8f8f73;
- padding-left: 2px;
- padding-right: 2px;
-}
-
-.SC_Panel, .SC_Panel TD
-{
- font-size: 11px;
- font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.SC_Item, .SC_ItemSelected
-{
- margin-top: 2px;
- margin-bottom: 2px;
- background-position: left center;
- padding-left: 11px;
- padding-right: 3px;
- padding-top: 2px;
- padding-bottom: 2px;
- text-overflow: ellipsis;
- overflow: hidden;
- background-repeat: no-repeat;
- border: #dddddd 1px solid;
-}
-
-.SC_Item *, .SC_ItemSelected *
-{
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-.SC_ItemSelected
-{
- border: #9a9afb 1px solid;
- background-image: url(images/toolbar.arrowright.gif);
-}
-
-.SC_ItemOver
-{
- border: #316ac5 1px solid;
-}
-
-.SC_Field
-{
- margin-top:1px ;
- border: #b7b7a6 1px solid;
- cursor: default;
-}
-
-.SC_FieldCaption
-{
- padding-top: 1px ;
- overflow: visible;
- padding-right: 5px;
- padding-left: 5px;
- opacity: 0.75; /* Safari, Opera and Mozilla */
- filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
- height: 23px;
- background-color: #f7f7f7;
-}
-
-.SC_FieldLabel
-{
- white-space: nowrap;
- padding: 2px;
- width: 100%;
- cursor: default;
- background-color: #ffffff;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-
-.SC_FieldButton
-{
- background-position: center center;
- background-image: url(images/toolbar.buttonarrow.gif);
- border-left: #b7b7a6 1px solid;
- width: 14px;
- background-repeat: no-repeat;
-}
-
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption, .SC_FieldDisabled .TB_ButtonType_Text
-{
- opacity: 0.30; /* Safari, Opera and Mozilla */
- filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
-}
-
-.SC_FieldOver
-{
- border: #316ac5 1px solid;
-}
-
-.SC_FieldOver .SC_FieldButton
-{
- border-left: #316ac5 1px solid;
-}
-
-/*
- ### Color Selector Panel
-*/
-
-.ColorBoxBorder
-{
- border: #808080 1px solid;
- position: static;
-}
-
-.ColorBox
-{
- font-size: 1px;
- width: 10px;
- position: static;
- height: 10px;
-}
-
-.ColorDeselected, .ColorSelected
-{
- cursor: default;
-}
-
-.ColorDeselected
-{
- border: #ffffff 1px solid;
- padding: 2px;
- float: left;
-}
-
-.ColorSelected
-{
- border: #316ac5 1px solid;
- padding: 2px;
- float: left;
- background-color: #c1d2ee;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_strip.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_strip.gif
deleted file mode 100644
index a6ca5325d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/fck_strip.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.gif
deleted file mode 100644
index 49a4d8d70..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.png
deleted file mode 100644
index ab1ff32bf..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.rtl.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.rtl.png
deleted file mode 100644
index e0a7aa77d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/dialog.sides.rtl.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.gif
deleted file mode 100644
index 6a17ed1a8..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.png b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.png
deleted file mode 100644
index 0ab521998..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/sprites.png
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.arrowright.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.arrowright.gif
deleted file mode 100644
index 6843c8d41..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.arrowright.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonarrow.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonarrow.gif
deleted file mode 100644
index ea60995e1..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonarrow.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonbg.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonbg.gif
deleted file mode 100644
index a93ffcaa3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.buttonbg.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.collapse.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.collapse.gif
deleted file mode 100644
index 87aa56d3b..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.collapse.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.end.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.end.gif
deleted file mode 100644
index 5bfd67a2d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.end.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.expand.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.expand.gif
deleted file mode 100644
index 79075e7c3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.expand.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.separator.gif b/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.separator.gif
deleted file mode 100644
index eaed04a7a..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.separator.gif
+++ /dev/null
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/tmpFrameset.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/tmpFrameset.html
deleted file mode 100644
index a861a673d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/tmpFrameset.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
--->
-<html>
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <script type="text/javascript">
-
-function doLoadScript( url )
-{
- if ( !url )
- return false ;
-
- var s = document.createElement( "script" ) ;
- s.type = "text/javascript" ;
- s.src = url ;
- document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ;
-
- return true ;
-}
-
-function tryLoad ()
-{
- if ( typeof( opener ) == 'undefined' || !opener )
- opener = parent ;
-
- // get access to global parameters
- oParams = opener.oldFramesetPageParams ;
-
- // make frameset rows string prepare
- sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;
- document.getElementById( 'itFrameset' ).rows = sFramesetRows ;
-
- // dynamic including init frames and crossdomain transport code
- // from config sproxy_js_frameset url
- var addScriptUrl = oParams.sproxy_js_frameset ;
- doLoadScript( addScriptUrl ) ;
-}
-
- </script>
-</head>
-<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0">
- <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame>
- <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame>
- <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame>
- <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame>
-</frameset>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/w.html b/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/w.html
deleted file mode 100644
index 85f54214f..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/w.html
+++ /dev/null
@@ -1,227 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
--->
-<html>
-<head>
- <title></title>
- <style>
- #wsc_frames , #errorMessage{
- position:absolute;
- top:0px;
- left:0px;
- width:500px;
- height:395px;
- margin:0px;
- padding:0px;
- border:0px;
- display:block;
- overflow: hidden;
- }
- #wsc_frames { z-index:10;}
- #errorMessage {
- color:red;
- display:none;
- font-size:16px;
- font-weight:bold;
- padding-top:160px;
- text-align:center;
- z-index:11;
- }
- #errorMessage p {
- color:#000;
- font-size:11px;
- text-align:left;
- font-weight: normal;
- padding-left:80px;
- }
-
- </style>
- <script type="text/javascript">
-
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCKConfig = oEditor.FCKConfig;
-
-function doLoadScript(url)
-{
- if (!url)
- return false ;
-
- var s = document.createElement('script') ;
- s.type = 'text/javascript' ;
- s.src = url ;
-
- document.getElementsByTagName('head')[0].appendChild(s) ;
-
- return true ;
-}
-
-function Ok()
-{
- return window.parent.Cancel() ;
-}
-
-function _callOnCancel( dT )
-{
- window.parent.Cancel() ;
-}
-
-function _callOnFinish( dT )
-{
- oEditor.FCK.SetData( dT.value ) ;
- window.parent.CloseDialog( true ) ;
-}
-
-function _cancelOnError(m)
-{
- var _conId = 'errorMessage' ;
- var message = m || 'Sorry, but service is unavailable now.' ;
-
- if ( typeof( WSC_Error ) == 'undefined' )
- {
- var _con = document.createElement( 'div' ) ;
- _con.setAttribute( 'id', _conId ) ;
- document.body.appendChild( _con ) ;
- dom_con = document.getElementById( _conId ) ;
- dom_con.innerHTML = message ;
- dom_con.style.display = 'block' ;
- }
- //return Ok() ;
-}
-
-function URL_abs2full( uri )
-{
- return uri.match( 'http' )
- ? uri
- : document.location.protocol + '//' + document.location.host + uri ;
-}
-
-function clearErrorUsermessage()
-{
- // empty error container
- var _con = document.getElementById( 'errorMessage' ) ;
-
- if ( !_con )
- return ;
-
- _con.innerHTML = '' ;
- _con.style.display = 'none' ;
-}
-
-var gInterval ;
-
-function onLoad()
-{
- clearErrorUsermessage() ;
- var _errorMessage = 'The SpellChecker Service is currently unavailable.' ;
- if ( 'undefined' != typeof( oEditor.FCK.Config.WSChLoaderScript ) )
- _errorMessage = '<div>The SpellChecker Service is currently unavailable.</div><p>Error loading application<br>service host: ' + oEditor.FCK.Config.WSChLoaderScript + '</p>';
-
- var burnSpelling = function( oName, _eMessage )
- {
- var i = 0 ;
-
- return function ()
- {
- if ( typeof( window[oName] ) == 'function' )
- initAndSpell() ;
- else if ( i++ == 180 )
- _cancelOnError( _eMessage ) ;
- }
- }
-
- gInterval = window.setInterval( burnSpelling( 'doSpell', _errorMessage ), 250 ) ;
-
- // WSC CORE init section
- var protocol = document.location.protocol || 'http:' ;
- var baseUrl = protocol + '//loader.spellchecker.net/sproxy_fck/sproxy.php' ;
- var plugin = "fck2" ;
- var customerid = oEditor.FCK.Config.WSCnCustomerId
- || "1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk" ;
- var wscCoreUrl = oEditor.FCK.Config.WSChLoaderScript
- || ( baseUrl + '?'
- + 'plugin=' + plugin + '&'
- + 'customerid='+ customerid + '&'
- + 'cmd=script&doc=wsc&schema=22' ) ;
-
- // load WSC core
- doLoadScript( wscCoreUrl ) ;
-}
-
-function initAndSpell()
-{
- //xall from window.setInteval expected at once
- if ( typeof( gInterval ) == 'undefined' )
- return null ;
- window.clearInterval( gInterval ) ;
-
- // global var is used in FCK specific core
- // change on equal var used in fckplugin.js
- gFCKPluginName = 'wsc' ;
-
- // get the data to be checked
- var sData = oEditor.FCK.GetData() ;
-
- // prepare content
- var ctrlId = 'myEditor' ;
- var dCurT = document.getElementById( ctrlId ) ;
- dCurT.value = sData ;
-
- // service paths corecting/preparing
- var sPath2Scin = URL_abs2full( oEditor.FCK.Config.SkinDialogCSS ) ;
- var sPathCiframe = FCKConfig.BasePath + 'wsc/ciframe.html' ;
- var sPathFrameset = FCKConfig.BasePath + 'wsc/tmpFrameset.html' ;
-
- // language abbr standarts comparer
- var LangComparer = new _SP_FCK_LangCompare() ;
- LangComparer.setDefaulLangCode( oEditor.FCK.Language.DefaultLanguage ) ;
-
- // clear user message console (if application was loaded more then after 2 seconds)
- clearErrorUsermessage() ;
-
- doSpell( {
- ctrl : ctrlId,
- lang : LangComparer.getSPLangCode( oEditor.FCK.Language.GetActiveLanguage() ),
- winType : 'wsc_frames',// if not defined app will run on winpopup
-
- // callback binding section
- onCancel :window._callOnCancel,
- onFinish :window._callOnFinish,
-
- // @TODO: basePath assingning
-
- // some manipulations with client static pages
- framesetPath : sPathFrameset,
- iframePath : sPathCiframe,
-
- // styles defining
- schemaURI : sPath2Scin
- } ) ;
-
- return true ;
-}
-
- </script>
-</head>
-<body onload="onLoad()" style="padding: 0px; overflow: hidden;">
- <textarea style="display: none;" id="myEditor" rows="10" cols="40"></textarea>
- <iframe src="" name="wsc_frames" id="wsc_frames"></iframe>
-</body>
-</html>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/fckconfig.js b/rt/share/html/NoAuth/RichText/FCKeditor/fckconfig.js
deleted file mode 100644
index 3678d8bb3..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/fckconfig.js
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * Editor configuration settings.
- *
- * Follow this link for more information:
- * http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options
- */
-
-FCKConfig.CustomConfigurationsPath = '' ;
-
-FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
-FCKConfig.EditorAreaStyles = '' ;
-FCKConfig.ToolbarComboPreviewCSS = '' ;
-
-FCKConfig.DocType = '' ;
-
-FCKConfig.BaseHref = '' ;
-
-FCKConfig.FullPage = false ;
-
-// The following option determines whether the "Show Blocks" feature is enabled or not at startup.
-FCKConfig.StartupShowBlocks = false ;
-
-FCKConfig.Debug = false ;
-FCKConfig.AllowQueryStringDebug = true ;
-
-FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ;
-FCKConfig.SkinEditorCSS = '' ; // FCKConfig.SkinPath + "|<minified css>" ;
-FCKConfig.SkinDialogCSS = '' ; // FCKConfig.SkinPath + "|<minified css>" ;
-
-FCKConfig.PreloadImages = [ FCKConfig.SkinPath + 'images/toolbar.start.gif', FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ] ;
-
-FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ;
-
-// FCKConfig.Plugins.Add( 'autogrow' ) ;
-// FCKConfig.Plugins.Add( 'dragresizetable' );
-FCKConfig.AutoGrowMax = 400 ;
-
-// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ; // ASP style server side code <%...%>
-// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ; // PHP style server side code
-// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ; // ASP.Net style tags <asp:control>
-
-FCKConfig.AutoDetectLanguage = true ;
-FCKConfig.DefaultLanguage = 'en' ;
-FCKConfig.ContentLangDirection = 'ltr' ;
-
-FCKConfig.ProcessHTMLEntities = true ;
-FCKConfig.IncludeLatinEntities = true ;
-FCKConfig.IncludeGreekEntities = true ;
-
-FCKConfig.ProcessNumericEntities = false ;
-
-FCKConfig.AdditionalNumericEntities = '' ; // Single Quote: "'"
-
-FCKConfig.FillEmptyBlocks = true ;
-
-FCKConfig.FormatSource = true ;
-FCKConfig.FormatOutput = true ;
-FCKConfig.FormatIndentator = ' ' ;
-
-FCKConfig.EMailProtection = 'encode' ; // none | encode | function
-FCKConfig.EMailProtectionFunction = 'mt(NAME,DOMAIN,SUBJECT,BODY)' ;
-
-FCKConfig.StartupFocus = false ;
-FCKConfig.ForcePasteAsPlainText = false ;
-FCKConfig.AutoDetectPasteFromWord = true ; // IE only.
-FCKConfig.ShowDropDialog = true ;
-FCKConfig.ForceSimpleAmpersand = false ;
-FCKConfig.TabSpaces = 0 ;
-FCKConfig.ShowBorders = true ;
-FCKConfig.SourcePopup = false ;
-FCKConfig.ToolbarStartExpanded = false ;
-FCKConfig.ToolbarCanCollapse = true ;
-FCKConfig.IgnoreEmptyParagraphValue = true ;
-FCKConfig.FloatingPanelsZIndex = 10000 ;
-FCKConfig.HtmlEncodeOutput = false ;
-
-FCKConfig.TemplateReplaceAll = true ;
-FCKConfig.TemplateReplaceCheckbox = true ;
-
-FCKConfig.ToolbarLocation = 'In' ;
-
-FCKConfig.ToolbarSets["Default"] = [
-// ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
- ['Source','DocProps'],
- ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
- ['Undo','Redo','-','Replace','-','SelectAll','RemoveFormat'],
-// ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
- '/',
- ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
- ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
- ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
- ['Link','Unlink'],
-// ['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
- ['Rule','SpecialChar'],
- '/',
- ['Style','FontFormat','FontName','FontSize'],
- ['TextColor','BGColor'],
- ['FitWindow','-','About'] // No comma for the last row.
-] ;
-
-FCKConfig.ToolbarSets["Basic"] = [
- ['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
-] ;
-
-FCKConfig.EnterMode = 'br' ; // p | div | br
-FCKConfig.ShiftEnterMode = 'p' ; // p | div | br
-
-FCKConfig.Keystrokes = [
- [ CTRL + 65 /*A*/, true ],
- [ CTRL + 67 /*C*/, true ],
- [ CTRL + 70 /*F*/, true ],
- [ CTRL + 83 /*S*/, true ],
- [ CTRL + 84 /*T*/, true ],
- [ CTRL + 88 /*X*/, true ],
- [ CTRL + 86 /*V*/, 'Paste' ],
- [ CTRL + 45 /*INS*/, true ],
- [ SHIFT + 45 /*INS*/, 'Paste' ],
- [ CTRL + 88 /*X*/, 'Cut' ],
- [ SHIFT + 46 /*DEL*/, 'Cut' ],
- [ CTRL + 90 /*Z*/, 'Undo' ],
- [ CTRL + 89 /*Y*/, 'Redo' ],
- [ CTRL + SHIFT + 90 /*Z*/, 'Redo' ],
- [ CTRL + 76 /*L*/, 'Link' ],
- [ CTRL + 66 /*B*/, 'Bold' ],
- [ CTRL + 73 /*I*/, 'Italic' ],
- [ CTRL + 85 /*U*/, 'Underline' ],
- [ CTRL + SHIFT + 83 /*S*/, 'Save' ],
- [ CTRL + ALT + 13 /*ENTER*/, 'FitWindow' ],
- [ SHIFT + 32 /*SPACE*/, 'Nbsp' ]
-] ;
-
-FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form','DivContainer'] ;
-FCKConfig.BrowserContextMenuOnCtrl = true ;
-FCKConfig.BrowserContextMenu = false ;
-
-FCKConfig.EnableMoreFontColors = true ;
-FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF' ;
-
-FCKConfig.FontFormats = 'p;h1;h2;h3;h4;h5;h6;pre;address;div' ;
-FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
-FCKConfig.FontSizes = 'smaller;larger;xx-small;x-small;small;medium;large;x-large;xx-large' ;
-
-FCKConfig.StylesXmlPath = FCKConfig.EditorPath + 'fckstyles.xml' ;
-FCKConfig.TemplatesXmlPath = FCKConfig.EditorPath + 'fcktemplates.xml' ;
-
-FCKConfig.SpellChecker = 'ieSpell' ; // 'ieSpell' | 'SpellerPages'
-FCKConfig.IeSpellDownloadUrl = 'http://www.iespell.com/download.php' ;
-FCKConfig.SpellerPagesServerScript = 'server-scripts/spellchecker.php' ; // Available extension: .php .cfm .pl
-FCKConfig.FirefoxSpellChecker = true ;
-
-FCKConfig.MaxUndoLevels = 15 ;
-
-FCKConfig.DisableObjectResizing = false ;
-FCKConfig.DisableFFTableHandles = true ;
-
-FCKConfig.LinkDlgHideTarget = false ;
-FCKConfig.LinkDlgHideAdvanced = false ;
-
-FCKConfig.ImageDlgHideLink = false ;
-FCKConfig.ImageDlgHideAdvanced = false ;
-
-FCKConfig.FlashDlgHideAdvanced = false ;
-
-FCKConfig.ProtectedTags = '' ;
-
-// This will be applied to the body element of the editor
-FCKConfig.BodyId = '' ;
-FCKConfig.BodyClass = '' ;
-
-FCKConfig.DefaultStyleLabel = '' ;
-FCKConfig.DefaultFontFormatLabel = '' ;
-FCKConfig.DefaultFontLabel = '' ;
-FCKConfig.DefaultFontSizeLabel = '' ;
-
-FCKConfig.DefaultLinkTarget = '' ;
-
-// The option switches between trying to keep the html structure or do the changes so the content looks like it was in Word
-FCKConfig.CleanWordKeepsStructure = false ;
-
-// Only inline elements are valid.
-FCKConfig.RemoveFormatTags = 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' ;
-
-// Attributes that will be removed
-FCKConfig.RemoveAttributes = 'class,style,lang,width,height,align,hspace,valign' ;
-
-FCKConfig.CustomStyles =
-{
- 'Red Title' : { Element : 'h3', Styles : { 'color' : 'Red' } }
-};
-
-// Do not add, rename or remove styles here. Only apply definition changes.
-FCKConfig.CoreStyles =
-{
- // Basic Inline Styles.
- 'Bold' : { Element : 'strong', Overrides : 'b' },
- 'Italic' : { Element : 'em', Overrides : 'i' },
- 'Underline' : { Element : 'u' },
- 'StrikeThrough' : { Element : 'strike' },
- 'Subscript' : { Element : 'sub' },
- 'Superscript' : { Element : 'sup' },
-
- // Basic Block Styles (Font Format Combo).
- 'p' : { Element : 'p' },
- 'div' : { Element : 'div' },
- 'pre' : { Element : 'pre' },
- 'address' : { Element : 'address' },
- 'h1' : { Element : 'h1' },
- 'h2' : { Element : 'h2' },
- 'h3' : { Element : 'h3' },
- 'h4' : { Element : 'h4' },
- 'h5' : { Element : 'h5' },
- 'h6' : { Element : 'h6' },
-
- // Other formatting features.
- 'FontFace' :
- {
- Element : 'span',
- Styles : { 'font-family' : '#("Font")' },
- Overrides : [ { Element : 'font', Attributes : { 'face' : null } } ]
- },
-
- 'Size' :
- {
- Element : 'span',
- Styles : { 'font-size' : '#("Size","fontSize")' },
- Overrides : [ { Element : 'font', Attributes : { 'size' : null } } ]
- },
-
- 'Color' :
- {
- Element : 'span',
- Styles : { 'color' : '#("Color","color")' },
- Overrides : [ { Element : 'font', Attributes : { 'color' : null } } ]
- },
-
- 'BackColor' : { Element : 'span', Styles : { 'background-color' : '#("Color","color")' } },
-
- 'SelectionHighlight' : { Element : 'span', Styles : { 'background-color' : 'navy', 'color' : 'white' } }
-};
-
-// The distance of an indentation step.
-FCKConfig.IndentLength = 40 ;
-FCKConfig.IndentUnit = 'px' ;
-
-// Alternatively, FCKeditor allows the use of CSS classes for block indentation.
-// This overrides the IndentLength/IndentUnit settings.
-FCKConfig.IndentClasses = [] ;
-
-// [ Left, Center, Right, Justified ]
-FCKConfig.JustifyClasses = [] ;
-
-// The following value defines which File Browser connector and Quick Upload
-// "uploader" to use. It is valid for the default implementaion and it is here
-// just to make this configuration file cleaner.
-// It is not possible to change this value using an external file or even
-// inline when creating the editor instance. In that cases you must set the
-// values of LinkBrowserURL, ImageBrowserURL and so on.
-// Custom implementations should just ignore it.
-var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py
-var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py
-
-// Don't care about the following two lines. It just calculates the correct connector
-// extension to use for the default File Browser (Perl uses "cgi").
-var _FileBrowserExtension = _FileBrowserLanguage == 'perl' ? 'cgi' : _FileBrowserLanguage ;
-var _QuickUploadExtension = _QuickUploadLanguage == 'perl' ? 'cgi' : _QuickUploadLanguage ;
-
-FCKConfig.LinkBrowser = true ;
-FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
-FCKConfig.LinkBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; // 70%
-FCKConfig.LinkBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; // 70%
-
-FCKConfig.ImageBrowser = true ;
-FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
-FCKConfig.ImageBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; // 70% ;
-FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; // 70% ;
-
-FCKConfig.FlashBrowser = true ;
-FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
-FCKConfig.FlashBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; //70% ;
-FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; //70% ;
-
-FCKConfig.LinkUpload = true ;
-FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ;
-FCKConfig.LinkUploadAllowedExtensions = ".(7z|aiff|asf|avi|bmp|csv|doc|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xml|zip)$" ; // empty for all
-FCKConfig.LinkUploadDeniedExtensions = "" ; // empty for no one
-
-FCKConfig.ImageUpload = true ;
-FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Image' ;
-FCKConfig.ImageUploadAllowedExtensions = ".(jpg|gif|jpeg|png|bmp)$" ; // empty for all
-FCKConfig.ImageUploadDeniedExtensions = "" ; // empty for no one
-
-FCKConfig.FlashUpload = true ;
-FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=Flash' ;
-FCKConfig.FlashUploadAllowedExtensions = ".(swf|flv)$" ; // empty for all
-FCKConfig.FlashUploadDeniedExtensions = "" ; // empty for no one
-
-FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
-FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ;
-FCKConfig.SmileyColumns = 8 ;
-FCKConfig.SmileyWindowWidth = 320 ;
-FCKConfig.SmileyWindowHeight = 210 ;
-
-FCKConfig.BackgroundBlockerColor = '#ffffff' ;
-FCKConfig.BackgroundBlockerOpacity = 0.50 ;
-
-FCKConfig.MsWebBrowserControlCompat = false ;
-
-FCKConfig.PreventSubmitHandler = false ;
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/fckeditor.js b/rt/share/html/NoAuth/RichText/FCKeditor/fckeditor.js
deleted file mode 100644
index 1216e4b59..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/fckeditor.js
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the integration file for JavaScript.
- *
- * It defines the FCKeditor class that can be used to create editor
- * instances in a HTML page in the client side. For server side
- * operations, use the specific integration system.
- */
-
-// FCKeditor Class
-var FCKeditor = function( instanceName, width, height, toolbarSet, value )
-{
- // Properties
- this.InstanceName = instanceName ;
- this.Width = width || '100%' ;
- this.Height = height || '200' ;
- this.ToolbarSet = toolbarSet || 'Default' ;
- this.Value = value || '' ;
- this.BasePath = FCKeditor.BasePath ;
- this.CheckBrowser = true ;
- this.DisplayErrors = true ;
-
- this.Config = new Object() ;
-
- // Events
- this.OnError = null ; // function( source, errorNumber, errorDescription )
-}
-
-/**
- * This is the default BasePath used by all editor instances.
- */
-FCKeditor.BasePath = '/fckeditor/' ;
-
-/**
- * The minimum height used when replacing textareas.
- */
-FCKeditor.MinHeight = 200 ;
-
-/**
- * The minimum width used when replacing textareas.
- */
-FCKeditor.MinWidth = 750 ;
-
-FCKeditor.prototype.Version = '2.6.4' ;
-FCKeditor.prototype.VersionBuild = '21629' ;
-
-FCKeditor.prototype.Create = function()
-{
- document.write( this.CreateHtml() ) ;
-}
-
-FCKeditor.prototype.CreateHtml = function()
-{
- // Check for errors
- if ( !this.InstanceName || this.InstanceName.length == 0 )
- {
- this._ThrowError( 701, 'You must specify an instance name.' ) ;
- return '' ;
- }
-
- var sHtml = '' ;
-
- if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
- {
- sHtml += '<input type="hidden" id="' + this.InstanceName + '" name="' + this.InstanceName + '" value="' + this._HTMLEncode( this.Value ) + '" style="display:none" />' ;
- sHtml += this._GetConfigHtml() ;
- sHtml += this._GetIFrameHtml() ;
- }
- else
- {
- var sWidth = this.Width.toString().indexOf('%') > 0 ? this.Width : this.Width + 'px' ;
- var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ;
-
- sHtml += '<textarea name="' + this.InstanceName +
- '" rows="4" cols="40" style="width:' + sWidth +
- ';height:' + sHeight ;
-
- if ( this.TabIndex )
- sHtml += '" tabindex="' + this.TabIndex ;
-
- sHtml += '">' +
- this._HTMLEncode( this.Value ) +
- '<\/textarea>' ;
- }
-
- return sHtml ;
-}
-
-FCKeditor.prototype.ReplaceTextarea = function()
-{
- if ( document.getElementById( this.InstanceName + '___Frame' ) )
- return ;
- if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
- {
- // We must check the elements firstly using the Id and then the name.
- var oTextarea = document.getElementById( this.InstanceName ) ;
- var colElementsByName = document.getElementsByName( this.InstanceName ) ;
- var i = 0;
- while ( oTextarea || i == 0 )
- {
- if ( oTextarea && oTextarea.tagName.toLowerCase() == 'textarea' )
- break ;
- oTextarea = colElementsByName[i++] ;
- }
-
- if ( !oTextarea )
- {
- alert( 'Error: The TEXTAREA with id or name set to "' + this.InstanceName + '" was not found' ) ;
- return ;
- }
-
- oTextarea.style.display = 'none' ;
-
- if ( oTextarea.tabIndex )
- this.TabIndex = oTextarea.tabIndex ;
-
- this._InsertHtmlBefore( this._GetConfigHtml(), oTextarea ) ;
- this._InsertHtmlBefore( this._GetIFrameHtml(), oTextarea ) ;
- }
-}
-
-FCKeditor.prototype._InsertHtmlBefore = function( html, element )
-{
- if ( element.insertAdjacentHTML ) // IE
- element.insertAdjacentHTML( 'beforeBegin', html ) ;
- else // Gecko
- {
- var oRange = document.createRange() ;
- oRange.setStartBefore( element ) ;
- var oFragment = oRange.createContextualFragment( html );
- element.parentNode.insertBefore( oFragment, element ) ;
- }
-}
-
-FCKeditor.prototype._GetConfigHtml = function()
-{
- var sConfig = '' ;
- for ( var o in this.Config )
- {
- if ( sConfig.length > 0 ) sConfig += '&amp;' ;
- sConfig += encodeURIComponent( o ) + '=' + encodeURIComponent( this.Config[o] ) ;
- }
-
- return '<input type="hidden" id="' + this.InstanceName + '___Config" value="' + sConfig + '" style="display:none" />' ;
-}
-
-FCKeditor.prototype._GetIFrameHtml = function()
-{
- var sFile = 'fckeditor.html' ;
-
- try
- {
- if ( (/fcksource=true/i).test( window.top.location.search ) )
- sFile = 'fckeditor.original.html' ;
- }
- catch (e) { /* Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error). */ }
-
- var sLink = this.BasePath + 'editor/' + sFile + '?InstanceName=' + encodeURIComponent( this.InstanceName ) ;
- if (this.ToolbarSet)
- sLink += '&amp;Toolbar=' + this.ToolbarSet ;
-
- var html = '<iframe id="' + this.InstanceName +
- '___Frame" src="' + sLink +
- '" width="' + this.Width +
- '" height="' + this.Height ;
-
- if ( this.TabIndex )
- html += '" tabindex="' + this.TabIndex ;
-
- html += '" frameborder="0" scrolling="no"></iframe>' ;
-
- return html ;
-}
-
-FCKeditor.prototype._IsCompatibleBrowser = function()
-{
- return FCKeditor_IsCompatibleBrowser() ;
-}
-
-FCKeditor.prototype._ThrowError = function( errorNumber, errorDescription )
-{
- this.ErrorNumber = errorNumber ;
- this.ErrorDescription = errorDescription ;
-
- if ( this.DisplayErrors )
- {
- document.write( '<div style="COLOR: #ff0000">' ) ;
- document.write( '[ FCKeditor Error ' + this.ErrorNumber + ': ' + this.ErrorDescription + ' ]' ) ;
- document.write( '</div>' ) ;
- }
-
- if ( typeof( this.OnError ) == 'function' )
- this.OnError( this, errorNumber, errorDescription ) ;
-}
-
-FCKeditor.prototype._HTMLEncode = function( text )
-{
- if ( typeof( text ) != "string" )
- text = text.toString() ;
-
- text = text.replace(
- /&/g, "&amp;").replace(
- /"/g, "&quot;").replace(
- /</g, "&lt;").replace(
- />/g, "&gt;") ;
-
- return text ;
-}
-
-;(function()
-{
- var textareaToEditor = function( textarea )
- {
- var editor = new FCKeditor( textarea.name ) ;
-
- editor.Width = Math.max( textarea.offsetWidth, FCKeditor.MinWidth ) ;
- editor.Height = Math.max( textarea.offsetHeight, FCKeditor.MinHeight ) ;
-
- return editor ;
- }
-
- /**
- * Replace all <textarea> elements available in the document with FCKeditor
- * instances.
- *
- * // Replace all <textarea> elements in the page.
- * FCKeditor.ReplaceAllTextareas() ;
- *
- * // Replace all <textarea class="myClassName"> elements in the page.
- * FCKeditor.ReplaceAllTextareas( 'myClassName' ) ;
- *
- * // Selectively replace <textarea> elements, based on custom assertions.
- * FCKeditor.ReplaceAllTextareas( function( textarea, editor )
- * {
- * // Custom code to evaluate the replace, returning false if it
- * // must not be done.
- * // It also passes the "editor" parameter, so the developer can
- * // customize the instance.
- * } ) ;
- */
- FCKeditor.ReplaceAllTextareas = function()
- {
- var textareas = document.getElementsByTagName( 'textarea' ) ;
-
- for ( var i = 0 ; i < textareas.length ; i++ )
- {
- var editor = null ;
- var textarea = textareas[i] ;
- var name = textarea.name ;
-
- // The "name" attribute must exist.
- if ( !name || name.length == 0 )
- continue ;
-
- if ( typeof arguments[0] == 'string' )
- {
- // The textarea class name could be passed as the function
- // parameter.
-
- var classRegex = new RegExp( '(?:^| )' + arguments[0] + '(?:$| )' ) ;
-
- if ( !classRegex.test( textarea.className ) )
- continue ;
- }
- else if ( typeof arguments[0] == 'function' )
- {
- // An assertion function could be passed as the function parameter.
- // It must explicitly return "false" to ignore a specific <textarea>.
- editor = textareaToEditor( textarea ) ;
- if ( arguments[0]( textarea, editor ) === false )
- continue ;
- }
-
- if ( !editor )
- editor = textareaToEditor( textarea ) ;
-
- editor.ReplaceTextarea() ;
- }
- }
-})() ;
-
-function FCKeditor_IsCompatibleBrowser()
-{
- var sAgent = navigator.userAgent.toLowerCase() ;
-
- // Internet Explorer 5.5+
- if ( /*@cc_on!@*/false && sAgent.indexOf("mac") == -1 )
- {
- var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
- return ( sBrowserVersion >= 5.5 ) ;
- }
-
- // Gecko (Opera 9 tries to behave like Gecko at this point).
- if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
- return true ;
-
- // Opera 9.50+
- if ( window.opera && window.opera.version && parseFloat( window.opera.version() ) >= 9.5 )
- return true ;
-
- // Adobe AIR
- // Checked before Safari because AIR have the WebKit rich text editor
- // features from Safari 3.0.4, but the version reported is 420.
- if ( sAgent.indexOf( ' adobeair/' ) != -1 )
- return ( sAgent.match( / adobeair\/(\d+)/ )[1] >= 1 ) ; // Build must be at least v1
-
- // Safari 3+
- if ( sAgent.indexOf( ' applewebkit/' ) != -1 )
- return ( sAgent.match( / applewebkit\/(\d+)/ )[1] >= 522 ) ; // Build must be at least 522 (v3)
-
- return false ;
-}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/fckpackager.xml b/rt/share/html/NoAuth/RichText/FCKeditor/fckpackager.xml
deleted file mode 100644
index 145c912f2..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/fckpackager.xml
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the configuration file to be used with FCKpackager to generate the
- * compressed code files in the "js" folder.
- *
- * Please check http://www.fckeditor.net for more info.
--->
-<Package>
- <Header><![CDATA[/*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This file has been compressed for better performance. The original source
- * can be found at "editor/_source".
- */
-]]></Header>
- <Constants removeDeclaration="false">
- <Constant name="FCK_STATUS_NOTLOADED" value="0" />
- <Constant name="FCK_STATUS_ACTIVE" value="1" />
- <Constant name="FCK_STATUS_COMPLETE" value="2" />
- <Constant name="FCK_TRISTATE_OFF" value="0" />
- <Constant name="FCK_TRISTATE_ON" value="1" />
- <Constant name="FCK_TRISTATE_DISABLED" value="-1" />
- <Constant name="FCK_UNKNOWN" value="-9" />
- <Constant name="FCK_TOOLBARITEM_ONLYICON" value="0" />
- <Constant name="FCK_TOOLBARITEM_ONLYTEXT" value="1" />
- <Constant name="FCK_TOOLBARITEM_ICONTEXT" value="2" />
- <Constant name="FCK_EDITMODE_WYSIWYG" value="0" />
- <Constant name="FCK_EDITMODE_SOURCE" value="1" />
- <Constant name="FCK_STYLE_BLOCK" value="0" />
- <Constant name="FCK_STYLE_INLINE" value="1" />
- <Constant name="FCK_STYLE_OBJECT" value="2" />
- </Constants>
- <PackageFile path="editor/js/fckeditorcode_ie.js">
- <File path="editor/_source/fckconstants.js" />
- <File path="editor/_source/fckjscoreextensions.js" />
- <File path="editor/_source/classes/fckiecleanup.js" />
- <File path="editor/_source/internals/fckbrowserinfo.js" />
- <File path="editor/_source/internals/fckurlparams.js" />
- <File path="editor/_source/classes/fckevents.js" />
- <File path="editor/_source/classes/fckdataprocessor.js" />
- <File path="editor/_source/internals/fck.js" />
- <File path="editor/_source/internals/fck_ie.js" />
- <File path="editor/_source/internals/fckconfig.js" />
- <File path="editor/_source/internals/fckdebug_empty.js" />
- <File path="editor/_source/internals/fckdomtools.js" />
- <File path="editor/_source/internals/fcktools.js" />
- <File path="editor/_source/internals/fcktools_ie.js" />
- <File path="editor/_source/fckeditorapi.js" />
- <File path="editor/_source/classes/fckimagepreloader.js" />
-
- <File path="editor/_source/internals/fckregexlib.js" />
- <File path="editor/_source/internals/fcklistslib.js" />
- <File path="editor/_source/internals/fcklanguagemanager.js" />
- <File path="editor/_source/internals/fckxhtmlentities.js" />
- <File path="editor/_source/internals/fckxhtml.js" />
- <File path="editor/_source/internals/fckxhtml_ie.js" />
- <File path="editor/_source/internals/fckcodeformatter.js" />
- <File path="editor/_source/internals/fckundo.js" />
- <File path="editor/_source/classes/fckeditingarea.js" />
- <File path="editor/_source/classes/fckkeystrokehandler.js" />
-
- <File path="editor/dtd/fck_xhtml10transitional.js" />
- <File path="editor/_source/classes/fckstyle.js" />
- <File path="editor/_source/internals/fckstyles.js" />
-
- <File path="editor/_source/internals/fcklisthandler.js" />
- <File path="editor/_source/classes/fckelementpath.js" />
- <File path="editor/_source/classes/fckdomrange.js" />
- <File path="editor/_source/classes/fckdomrange_ie.js" />
- <File path="editor/_source/classes/fckdomrangeiterator.js" />
- <File path="editor/_source/classes/fckdocumentfragment_ie.js" />
- <File path="editor/_source/classes/fckw3crange.js" />
- <File path="editor/_source/classes/fckenterkey.js" />
-
- <File path="editor/_source/internals/fckdocumentprocessor.js" />
- <File path="editor/_source/internals/fckselection.js" />
- <File path="editor/_source/internals/fckselection_ie.js" />
-
- <File path="editor/_source/internals/fcktablehandler.js" />
- <File path="editor/_source/internals/fcktablehandler_ie.js" />
- <File path="editor/_source/classes/fckxml.js" />
- <File path="editor/_source/classes/fckxml_ie.js" />
-
- <File path="editor/_source/commandclasses/fcknamedcommand.js" />
- <File path="editor/_source/commandclasses/fckstylecommand.js" />
- <File path="editor/_source/commandclasses/fck_othercommands.js" />
- <File path="editor/_source/commandclasses/fckshowblocks.js" />
- <File path="editor/_source/commandclasses/fckspellcheckcommand_ie.js" />
- <File path="editor/_source/commandclasses/fcktextcolorcommand.js" />
- <File path="editor/_source/commandclasses/fckpasteplaintextcommand.js" />
- <File path="editor/_source/commandclasses/fckpastewordcommand.js" />
- <File path="editor/_source/commandclasses/fcktablecommand.js" />
- <File path="editor/_source/commandclasses/fckfitwindow.js" />
- <File path="editor/_source/commandclasses/fcklistcommands.js" />
- <File path="editor/_source/commandclasses/fckjustifycommands.js" />
- <File path="editor/_source/commandclasses/fckindentcommands.js" />
- <File path="editor/_source/commandclasses/fckblockquotecommand.js" />
- <File path="editor/_source/commandclasses/fckcorestylecommand.js" />
- <File path="editor/_source/commandclasses/fckremoveformatcommand.js" />
- <File path="editor/_source/internals/fckcommands.js" />
-
- <File path="editor/_source/classes/fckpanel.js" />
- <File path="editor/_source/classes/fckicon.js" />
- <File path="editor/_source/classes/fcktoolbarbuttonui.js" />
- <File path="editor/_source/classes/fcktoolbarbutton.js" />
- <File path="editor/_source/classes/fckspecialcombo.js" />
- <File path="editor/_source/classes/fcktoolbarspecialcombo.js" />
- <File path="editor/_source/classes/fcktoolbarstylecombo.js" />
- <File path="editor/_source/classes/fcktoolbarfontformatcombo.js" />
- <File path="editor/_source/classes/fcktoolbarfontscombo.js" />
- <File path="editor/_source/classes/fcktoolbarfontsizecombo.js" />
- <File path="editor/_source/classes/fcktoolbarpanelbutton.js" />
- <File path="editor/_source/internals/fcktoolbaritems.js" />
- <File path="editor/_source/classes/fcktoolbar.js" />
- <File path="editor/_source/classes/fcktoolbarbreak_ie.js" />
- <File path="editor/_source/internals/fcktoolbarset.js" />
- <File path="editor/_source/internals/fckdialog.js" />
-
- <File path="editor/_source/classes/fckmenuitem.js" />
- <File path="editor/_source/classes/fckmenublock.js" />
- <File path="editor/_source/classes/fckmenublockpanel.js" />
- <File path="editor/_source/classes/fckcontextmenu.js" />
- <File path="editor/_source/internals/fck_contextmenu.js" />
- <File path="editor/_source/classes/fckhtmliterator.js" />
-
- <File path="editor/_source/classes/fckplugin.js" />
- <File path="editor/_source/internals/fckplugins.js" />
- </PackageFile>
-
- <PackageFile path="editor/js/fckeditorcode_gecko.js">
- <File path="editor/_source/fckconstants.js" />
- <File path="editor/_source/fckjscoreextensions.js" />
- <File path="editor/_source/internals/fckbrowserinfo.js" />
- <File path="editor/_source/internals/fckurlparams.js" />
- <File path="editor/_source/classes/fckevents.js" />
- <File path="editor/_source/classes/fckdataprocessor.js" />
- <File path="editor/_source/internals/fck.js" />
- <File path="editor/_source/internals/fck_gecko.js" />
- <File path="editor/_source/internals/fckconfig.js" />
- <File path="editor/_source/internals/fckdebug_empty.js" />
- <File path="editor/_source/internals/fckdomtools.js" />
- <File path="editor/_source/internals/fcktools.js" />
- <File path="editor/_source/internals/fcktools_gecko.js" />
- <File path="editor/_source/fckeditorapi.js" />
- <File path="editor/_source/classes/fckimagepreloader.js" />
-
- <File path="editor/_source/internals/fckregexlib.js" />
- <File path="editor/_source/internals/fcklistslib.js" />
- <File path="editor/_source/internals/fcklanguagemanager.js" />
- <File path="editor/_source/internals/fckxhtmlentities.js" />
- <File path="editor/_source/internals/fckxhtml.js" />
- <File path="editor/_source/internals/fckxhtml_gecko.js" />
- <File path="editor/_source/internals/fckcodeformatter.js" />
- <File path="editor/_source/internals/fckundo.js" />
- <File path="editor/_source/classes/fckeditingarea.js" />
- <File path="editor/_source/classes/fckkeystrokehandler.js" />
-
- <File path="editor/dtd/fck_xhtml10transitional.js" />
- <File path="editor/_source/classes/fckstyle.js" />
- <File path="editor/_source/internals/fckstyles.js" />
-
- <File path="editor/_source/internals/fcklisthandler.js" />
- <File path="editor/_source/classes/fckelementpath.js" />
- <File path="editor/_source/classes/fckdomrange.js" />
- <File path="editor/_source/classes/fckdomrange_gecko.js" />
- <File path="editor/_source/classes/fckdomrangeiterator.js" />
- <File path="editor/_source/classes/fckdocumentfragment_gecko.js" />
- <File path="editor/_source/classes/fckw3crange.js" />
- <File path="editor/_source/classes/fckenterkey.js" />
-
- <File path="editor/_source/internals/fckdocumentprocessor.js" />
- <File path="editor/_source/internals/fckselection.js" />
- <File path="editor/_source/internals/fckselection_gecko.js" />
-
- <File path="editor/_source/internals/fcktablehandler.js" />
- <File path="editor/_source/internals/fcktablehandler_gecko.js" />
- <File path="editor/_source/classes/fckxml.js" />
- <File path="editor/_source/classes/fckxml_gecko.js" />
-
- <File path="editor/_source/commandclasses/fcknamedcommand.js" />
- <File path="editor/_source/commandclasses/fckstylecommand.js" />
- <File path="editor/_source/commandclasses/fck_othercommands.js" />
- <File path="editor/_source/commandclasses/fckshowblocks.js" />
- <File path="editor/_source/commandclasses/fckspellcheckcommand_gecko.js" />
- <File path="editor/_source/commandclasses/fcktextcolorcommand.js" />
- <File path="editor/_source/commandclasses/fckpasteplaintextcommand.js" />
- <File path="editor/_source/commandclasses/fckpastewordcommand.js" />
- <File path="editor/_source/commandclasses/fcktablecommand.js" />
- <File path="editor/_source/commandclasses/fckfitwindow.js" />
- <File path="editor/_source/commandclasses/fcklistcommands.js" />
- <File path="editor/_source/commandclasses/fckjustifycommands.js" />
- <File path="editor/_source/commandclasses/fckindentcommands.js" />
- <File path="editor/_source/commandclasses/fckblockquotecommand.js" />
- <File path="editor/_source/commandclasses/fckcorestylecommand.js" />
- <File path="editor/_source/commandclasses/fckremoveformatcommand.js" />
- <File path="editor/_source/internals/fckcommands.js" />
-
- <File path="editor/_source/classes/fckpanel.js" />
- <File path="editor/_source/classes/fckicon.js" />
- <File path="editor/_source/classes/fcktoolbarbuttonui.js" />
- <File path="editor/_source/classes/fcktoolbarbutton.js" />
- <File path="editor/_source/classes/fckspecialcombo.js" />
- <File path="editor/_source/classes/fcktoolbarspecialcombo.js" />
- <File path="editor/_source/classes/fcktoolbarstylecombo.js" />
- <File path="editor/_source/classes/fcktoolbarfontformatcombo.js" />
- <File path="editor/_source/classes/fcktoolbarfontscombo.js" />
- <File path="editor/_source/classes/fcktoolbarfontsizecombo.js" />
- <File path="editor/_source/classes/fcktoolbarpanelbutton.js" />
- <File path="editor/_source/internals/fcktoolbaritems.js" />
- <File path="editor/_source/classes/fcktoolbar.js" />
- <File path="editor/_source/classes/fcktoolbarbreak_gecko.js" />
- <File path="editor/_source/internals/fcktoolbarset.js" />
- <File path="editor/_source/internals/fckdialog.js" />
-
- <File path="editor/_source/classes/fckmenuitem.js" />
- <File path="editor/_source/classes/fckmenublock.js" />
- <File path="editor/_source/classes/fckmenublockpanel.js" />
- <File path="editor/_source/classes/fckcontextmenu.js" />
- <File path="editor/_source/internals/fck_contextmenu.js" />
- <File path="editor/_source/classes/fckhtmliterator.js" />
-
- <File path="editor/_source/classes/fckplugin.js" />
- <File path="editor/_source/internals/fckplugins.js" />
- </PackageFile>
-
-</Package>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/fckstyles.xml b/rt/share/html/NoAuth/RichText/FCKeditor/fckstyles.xml
deleted file mode 100644
index 49718f9f8..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/fckstyles.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the sample style definitions file. It makes the styles combo
- * completely customizable.
- *
- * See FCKConfig.StylesXmlPath in the configuration file.
--->
-<Styles>
-
- <!-- Block Styles -->
-
- <!--
- # These styles are already available in the "Format" combo, so they are not
- # needed here by default.
-
- <Style name="Heading 1" element="h1" />
- <Style name="Heading 2" element="h2" />
- <Style name="Heading 3" element="h3" />
- <Style name="Heading 4" element="h4" />
- <Style name="Heading 5" element="h5" />
- <Style name="Heading 6" element="h6" />
- <Style name="Paragraph" element="p" />
- <Style name="Document Block" element="div" />
- <Style name="Preformatted Text" element="pre" />
- <Style name="Address" element="address" />
- -->
-
- <!-- Inline Styles -->
-
- <!--
- # These are core styles available as toolbar buttons.
-
- <Style name="Bold" element="b">
- <Override element="strong" />
- </Style>
- <Style name="Italic" element="i">
- <Override element="em" />
- </Style>
- <Style name="Underline" element="u" />
- <Style name="Strikethrough" element="strike" />
- <Style name="Subscript" element="sub" />
- <Style name="Superscript" element="sup" />
- -->
-
- <Style name="Marker: Yellow" element="span">
- <Style name="background-color" value="Yellow" />
- </Style>
- <Style name="Marker: Green" element="span">
- <Style name="background-color" value="Lime" />
- </Style>
-
- <Style name="Big" element="big" />
- <Style name="Small" element="small" />
- <Style name="Typewriter" element="tt" />
-
- <Style name="Computer Code" element="code" />
- <Style name="Keyboard Phrase" element="kbd" />
- <Style name="Sample Text" element="samp" />
- <Style name="Variable" element="var" />
-
- <Style name="Deleted Text" element="del" />
- <Style name="Inserted Text" element="ins" />
-
- <Style name="Cited Work" element="cite" />
- <Style name="Inline Quotation" element="q" />
-
- <Style name="Language: RTL" element="span">
- <Attribute name="dir" value="rtl" />
- </Style>
- <Style name="Language: LTR" element="span">
- <Attribute name="dir" value="ltr" />
- </Style>
- <Style name="Language: RTL Strong" element="bdo">
- <Attribute name="dir" value="rtl" />
- </Style>
- <Style name="Language: LTR Strong" element="bdo">
- <Attribute name="dir" value="ltr" />
- </Style>
-
- <!-- Object Styles -->
-
- <Style name="Image on Left" element="img">
- <Attribute name="style" value="padding: 5px; margin-right: 5px" />
- <Attribute name="border" value="2" />
- <Attribute name="align" value="left" />
- </Style>
- <Style name="Image on Right" element="img">
- <Attribute name="style" value="padding: 5px; margin-left: 5px" />
- <Attribute name="border" value="2" />
- <Attribute name="align" value="right" />
- </Style>
-</Styles>
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/fcktemplates.xml b/rt/share/html/NoAuth/RichText/FCKeditor/fcktemplates.xml
deleted file mode 100644
index 8d82fc48d..000000000
--- a/rt/share/html/NoAuth/RichText/FCKeditor/fcktemplates.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the sample templates definitions file. It makes the "templates"
- * command completely customizable.
- *
- * See FCKConfig.TemplatesXmlPath in the configuration file.
--->
-<Templates imagesBasePath="fck_template/images/">
- <Template title="Image and Title" image="template1.gif">
- <Description>One main image with a title and text that surround the image.</Description>
- <Html>
- <![CDATA[
- <img style="MARGIN-RIGHT: 10px" height="100" alt="" width="100" align="left"/>
- <h3>Type the title here</h3>
- Type the text here
- ]]>
- </Html>
- </Template>
- <Template title="Strange Template" image="template2.gif">
- <Description>A template that defines two colums, each one with a title, and some text.</Description>
- <Html>
- <![CDATA[
- <table cellspacing="0" cellpadding="0" width="100%" border="0">
- <tbody>
- <tr>
- <td width="50%">
- <h3>Title 1</h3>
- </td>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>
- <td width="50%">
- <h3>Title 2</h3>
- </td>
- </tr>
- <tr>
- <td>Text 1</td>
- <td>&nbsp;</td>
- <td>Text 2</td>
- </tr>
- </tbody>
- </table>
- More text goes here.
- ]]>
- </Html>
- </Template>
- <Template title="Text and Table" image="template3.gif">
- <Description>A title with some text and a table.</Description>
- <Html>
- <![CDATA[
- <table align="left" width="80%" border="0" cellspacing="0" cellpadding="0"><tr><td>
- <h3>Title goes here</h3>
- <p>
- <table style="FLOAT: right" cellspacing="0" cellpadding="0" width="150" border="1">
- <tbody>
- <tr>
- <td align="center" colspan="3"><strong>Table title</strong></td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- </tbody>
- </table>
- Type the text here</p>
- </td></tr></table>
- ]]>
- </Html>
- </Template>
-</Templates>
diff --git a/rt/share/html/NoAuth/RichText/autohandler b/rt/share/html/NoAuth/RichText/autohandler
index fd48b5959..54ef682dd 100644
--- a/rt/share/html/NoAuth/RichText/autohandler
+++ b/rt/share/html/NoAuth/RichText/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,7 +47,7 @@
%# END BPS TAGGED BLOCK }}}
<%init>
my $file = $m->base_comp->source_file;
-if ($file =~ m{RichText/+FCKeditor}) {
+if ($file =~ m{RichText/+ckeditor}) {
$RT::Logger->crit("Invalid request directly to the rich text editor: $file");
$m->abort(403);
} else {
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/license.txt b/rt/share/html/NoAuth/RichText/ckeditor/LICENSE.html
index 9d0fd6dd8..f7ba06793 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/license.txt
+++ b/rt/share/html/NoAuth/RichText/ckeditor/LICENSE.html
@@ -1,1246 +1,1334 @@
-FCKeditor - The text editor for Internet - http://www.fckeditor.net
-Copyright (C) 2003-2009 Frederico Caldeira Knabben
-
-Licensed under the terms of any of the following licenses at your
-choice:
-
- - GNU General Public License Version 2 or later (the "GPL")
- http://www.gnu.org/licenses/gpl.html
- (See Appendix A)
-
- - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- http://www.gnu.org/licenses/lgpl.html
- (See Appendix B)
-
- - Mozilla Public License Version 1.1 or later (the "MPL")
- http://www.mozilla.org/MPL/MPL-1.1.html
- (See Appendix C)
-
-You are not required to, but if you want to explicitly declare the
-license you have chosen to be bound to when using, reproducing,
-modifying and distributing this software, just include a text file
-titled "legal.txt" in your version of this software, indicating your
-license choice. In any case, your choice will not restrict any
-recipient of your version of this software to use, reproduce, modify
-and distribute this software under any of the above licenses.
-
-Appendix A: The GPL License
-===========================
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
-Appendix B: The LGPL License
-============================
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
-Appendix C: The MPL License
-===========================
-
- MOZILLA PUBLIC LICENSE
- Version 1.1
-
- ---------------
-
-1. Definitions.
-
- 1.0.1. "Commercial Use" means distribution or otherwise making the
- Covered Code available to a third party.
-
- 1.1. "Contributor" means each entity that creates or contributes to
- the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the Original
- Code, prior Modifications used by a Contributor, and the Modifications
- made by that particular Contributor.
-
- 1.3. "Covered Code" means the Original Code or Modifications or the
- combination of the Original Code and Modifications, in each case
- including portions thereof.
-
- 1.4. "Electronic Distribution Mechanism" means a mechanism generally
- accepted in the software development community for the electronic
- transfer of data.
-
- 1.5. "Executable" means Covered Code in any form other than Source
- Code.
-
- 1.6. "Initial Developer" means the individual or entity identified
- as the Initial Developer in the Source Code notice required by Exhibit
- A.
-
- 1.7. "Larger Work" means a work which combines Covered Code or
- portions thereof with code not governed by the terms of this License.
-
- 1.8. "License" means this document.
-
- 1.8.1. "Licensable" means having the right to grant, to the maximum
- extent possible, whether at the time of the initial grant or
- subsequently acquired, any and all of the rights conveyed herein.
-
- 1.9. "Modifications" means any addition to or deletion from the
- substance or structure of either the Original Code or any previous
- Modifications. When Covered Code is released as a series of files, a
- Modification is:
- A. Any addition to or deletion from the contents of a file
- containing Original Code or previous Modifications.
-
- B. Any new file that contains any part of the Original Code or
- previous Modifications.
-
- 1.10. "Original Code" means Source Code of computer software code
- which is described in the Source Code notice required by Exhibit A as
- Original Code, and which, at the time of its release under this
- License is not already Covered Code governed by this License.
-
- 1.10.1. "Patent Claims" means any patent claim(s), now owned or
- hereafter acquired, including without limitation, method, process,
- and apparatus claims, in any patent Licensable by grantor.
-
- 1.11. "Source Code" means the preferred form of the Covered Code for
- making modifications to it, including all modules it contains, plus
- any associated interface definition files, scripts used to control
- compilation and installation of an Executable, or source code
- differential comparisons against either the Original Code or another
- well known, available Covered Code of the Contributor's choice. The
- Source Code can be in a compressed or archival form, provided the
- appropriate decompression or de-archiving software is widely available
- for no charge.
-
- 1.12. "You" (or "Your") means an individual or a legal entity
- exercising rights under, and complying with all of the terms of, this
- License or a future version of this License issued under Section 6.1.
- For legal entities, "You" includes any entity which controls, is
- controlled by, or is under common control with You. For purposes of
- this definition, "control" means (a) the power, direct or indirect,
- to cause the direction or management of such entity, whether by
- contract or otherwise, or (b) ownership of more than fifty percent
- (50%) of the outstanding shares or beneficial ownership of such
- entity.
-
-2. Source Code License.
-
- 2.1. The Initial Developer Grant.
- The Initial Developer hereby grants You a world-wide, royalty-free,
- non-exclusive license, subject to third party intellectual property
- claims:
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Initial Developer to use, reproduce,
- modify, display, perform, sublicense and distribute the Original
- Code (or portions thereof) with or without Modifications, and/or
- as part of a Larger Work; and
-
- (b) under Patents Claims infringed by the making, using or
- selling of Original Code, to make, have made, use, practice,
- sell, and offer for sale, and/or otherwise dispose of the
- Original Code (or portions thereof).
-
- (c) the licenses granted in this Section 2.1(a) and (b) are
- effective on the date Initial Developer first distributes
- Original Code under the terms of this License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent license is
- granted: 1) for code that You delete from the Original Code; 2)
- separate from the Original Code; or 3) for infringements caused
- by: i) the modification of the Original Code or ii) the
- combination of the Original Code with other software or devices.
-
- 2.2. Contributor Grant.
- Subject to third party intellectual property claims, each Contributor
- hereby grants You a world-wide, royalty-free, non-exclusive license
-
- (a) under intellectual property rights (other than patent or
- trademark) Licensable by Contributor, to use, reproduce, modify,
- display, perform, sublicense and distribute the Modifications
- created by such Contributor (or portions thereof) either on an
- unmodified basis, with other Modifications, as Covered Code
- and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making, using, or
- selling of Modifications made by that Contributor either alone
- and/or in combination with its Contributor Version (or portions
- of such combination), to make, use, sell, offer for sale, have
- made, and/or otherwise dispose of: 1) Modifications made by that
- Contributor (or portions thereof); and 2) the combination of
- Modifications made by that Contributor with its Contributor
- Version (or portions of such combination).
-
- (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
- effective on the date Contributor first makes Commercial Use of
- the Covered Code.
-
- (d) Notwithstanding Section 2.2(b) above, no patent license is
- granted: 1) for any code that Contributor has deleted from the
- Contributor Version; 2) separate from the Contributor Version;
- 3) for infringements caused by: i) third party modifications of
- Contributor Version or ii) the combination of Modifications made
- by that Contributor with other software (except as part of the
- Contributor Version) or other devices; or 4) under Patent Claims
- infringed by Covered Code in the absence of Modifications made by
- that Contributor.
-
-3. Distribution Obligations.
-
- 3.1. Application of License.
- The Modifications which You create or to which You contribute are
- governed by the terms of this License, including without limitation
- Section 2.2. The Source Code version of Covered Code may be
- distributed only under the terms of this License or a future version
- of this License released under Section 6.1, and You must include a
- copy of this License with every copy of the Source Code You
- distribute. You may not offer or impose any terms on any Source Code
- version that alters or restricts the applicable version of this
- License or the recipients' rights hereunder. However, You may include
- an additional document offering the additional rights described in
- Section 3.5.
-
- 3.2. Availability of Source Code.
- Any Modification which You create or to which You contribute must be
- made available in Source Code form under the terms of this License
- either on the same media as an Executable version or via an accepted
- Electronic Distribution Mechanism to anyone to whom you made an
- Executable version available; and if made available via Electronic
- Distribution Mechanism, must remain available for at least twelve (12)
- months after the date it initially became available, or at least six
- (6) months after a subsequent version of that particular Modification
- has been made available to such recipients. You are responsible for
- ensuring that the Source Code version remains available even if the
- Electronic Distribution Mechanism is maintained by a third party.
-
- 3.3. Description of Modifications.
- You must cause all Covered Code to which You contribute to contain a
- file documenting the changes You made to create that Covered Code and
- the date of any change. You must include a prominent statement that
- the Modification is derived, directly or indirectly, from Original
- Code provided by the Initial Developer and including the name of the
- Initial Developer in (a) the Source Code, and (b) in any notice in an
- Executable version or related documentation in which You describe the
- origin or ownership of the Covered Code.
-
- 3.4. Intellectual Property Matters
- (a) Third Party Claims.
- If Contributor has knowledge that a license under a third party's
- intellectual property rights is required to exercise the rights
- granted by such Contributor under Sections 2.1 or 2.2,
- Contributor must include a text file with the Source Code
- distribution titled "LEGAL" which describes the claim and the
- party making the claim in sufficient detail that a recipient will
- know whom to contact. If Contributor obtains such knowledge after
- the Modification is made available as described in Section 3.2,
- Contributor shall promptly modify the LEGAL file in all copies
- Contributor makes available thereafter and shall take other steps
- (such as notifying appropriate mailing lists or newsgroups)
- reasonably calculated to inform those who received the Covered
- Code that new knowledge has been obtained.
-
- (b) Contributor APIs.
- If Contributor's Modifications include an application programming
- interface and Contributor has knowledge of patent licenses which
- are reasonably necessary to implement that API, Contributor must
- also include this information in the LEGAL file.
-
- (c) Representations.
- Contributor represents that, except as disclosed pursuant to
- Section 3.4(a) above, Contributor believes that Contributor's
- Modifications are Contributor's original creation(s) and/or
- Contributor has sufficient rights to grant the rights conveyed by
- this License.
-
- 3.5. Required Notices.
- You must duplicate the notice in Exhibit A in each file of the Source
- Code. If it is not possible to put such notice in a particular Source
- Code file due to its structure, then You must include such notice in a
- location (such as a relevant directory) where a user would be likely
- to look for such a notice. If You created one or more Modification(s)
- You may add your name as a Contributor to the notice described in
- Exhibit A. You must also duplicate this License in any documentation
- for the Source Code where You describe recipients' rights or ownership
- rights relating to Covered Code. You may choose to offer, and to
- charge a fee for, warranty, support, indemnity or liability
- obligations to one or more recipients of Covered Code. However, You
- may do so only on Your own behalf, and not on behalf of the Initial
- Developer or any Contributor. You must make it absolutely clear than
- any such warranty, support, indemnity or liability obligation is
- offered by You alone, and You hereby agree to indemnify the Initial
- Developer and every Contributor for any liability incurred by the
- Initial Developer or such Contributor as a result of warranty,
- support, indemnity or liability terms You offer.
-
- 3.6. Distribution of Executable Versions.
- You may distribute Covered Code in Executable form only if the
- requirements of Section 3.1-3.5 have been met for that Covered Code,
- and if You include a notice stating that the Source Code version of
- the Covered Code is available under the terms of this License,
- including a description of how and where You have fulfilled the
- obligations of Section 3.2. The notice must be conspicuously included
- in any notice in an Executable version, related documentation or
- collateral in which You describe recipients' rights relating to the
- Covered Code. You may distribute the Executable version of Covered
- Code or ownership rights under a license of Your choice, which may
- contain terms different from this License, provided that You are in
- compliance with the terms of this License and that the license for the
- Executable version does not attempt to limit or alter the recipient's
- rights in the Source Code version from the rights set forth in this
- License. If You distribute the Executable version under a different
- license You must make it absolutely clear that any terms which differ
- from this License are offered by You alone, not by the Initial
- Developer or any Contributor. You hereby agree to indemnify the
- Initial Developer and every Contributor for any liability incurred by
- the Initial Developer or such Contributor as a result of any such
- terms You offer.
-
- 3.7. Larger Works.
- You may create a Larger Work by combining Covered Code with other code
- not governed by the terms of this License and distribute the Larger
- Work as a single product. In such a case, You must make sure the
- requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
- If it is impossible for You to comply with any of the terms of this
- License with respect to some or all of the Covered Code due to
- statute, judicial order, or regulation then You must: (a) comply with
- the terms of this License to the maximum extent possible; and (b)
- describe the limitations and the code they affect. Such description
- must be included in the LEGAL file described in Section 3.4 and must
- be included with all distributions of the Source Code. Except to the
- extent prohibited by statute or regulation, such description must be
- sufficiently detailed for a recipient of ordinary skill to be able to
- understand it.
-
-5. Application of this License.
-
- This License applies to code to which the Initial Developer has
- attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
- 6.1. New Versions.
- Netscape Communications Corporation ("Netscape") may publish revised
- and/or new versions of the License from time to time. Each version
- will be given a distinguishing version number.
-
- 6.2. Effect of New Versions.
- Once Covered Code has been published under a particular version of the
- License, You may always continue to use it under the terms of that
- version. You may also choose to use such Covered Code under the terms
- of any subsequent version of the License published by Netscape. No one
- other than Netscape has the right to modify the terms applicable to
- Covered Code created under this License.
-
- 6.3. Derivative Works.
- If You create or use a modified version of this License (which you may
- only do in order to apply it to code which is not already Covered Code
- governed by this License), You must (a) rename Your license so that
- the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
- "MPL", "NPL" or any confusingly similar phrase do not appear in your
- license (except to note that your license differs from this License)
- and (b) otherwise make it clear that Your version of the license
- contains terms which differ from the Mozilla Public License and
- Netscape Public License. (Filling in the name of the Initial
- Developer, Original Code or Contributor in the notice described in
- Exhibit A shall not of themselves be deemed to be modifications of
- this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
- COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
- WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
- DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
- THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
- IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
- YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
- COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
- OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
- 8.1. This License and the rights granted hereunder will terminate
- automatically if You fail to comply with terms herein and fail to cure
- such breach within 30 days of becoming aware of the breach. All
- sublicenses to the Covered Code which are properly granted shall
- survive any termination of this License. Provisions which, by their
- nature, must remain in effect beyond the termination of this License
- shall survive.
-
- 8.2. If You initiate litigation by asserting a patent infringement
- claim (excluding declatory judgment actions) against Initial Developer
- or a Contributor (the Initial Developer or Contributor against whom
- You file such action is referred to as "Participant") alleging that:
-
- (a) such Participant's Contributor Version directly or indirectly
- infringes any patent, then any and all rights granted by such
- Participant to You under Sections 2.1 and/or 2.2 of this License
- shall, upon 60 days notice from Participant terminate prospectively,
- unless if within 60 days after receipt of notice You either: (i)
- agree in writing to pay Participant a mutually agreeable reasonable
- royalty for Your past and future use of Modifications made by such
- Participant, or (ii) withdraw Your litigation claim with respect to
- the Contributor Version against such Participant. If within 60 days
- of notice, a reasonable royalty and payment arrangement are not
- mutually agreed upon in writing by the parties or the litigation claim
- is not withdrawn, the rights granted by Participant to You under
- Sections 2.1 and/or 2.2 automatically terminate at the expiration of
- the 60 day notice period specified above.
-
- (b) any software, hardware, or device, other than such Participant's
- Contributor Version, directly or indirectly infringes any patent, then
- any rights granted to You by such Participant under Sections 2.1(b)
- and 2.2(b) are revoked effective as of the date You first made, used,
- sold, distributed, or had made, Modifications made by that
- Participant.
-
- 8.3. If You assert a patent infringement claim against Participant
- alleging that such Participant's Contributor Version directly or
- indirectly infringes any patent where such claim is resolved (such as
- by license or settlement) prior to the initiation of patent
- infringement litigation, then the reasonable value of the licenses
- granted by such Participant under Sections 2.1 or 2.2 shall be taken
- into account in determining the amount or value of any payment or
- license.
-
- 8.4. In the event of termination under Sections 8.1 or 8.2 above,
- all end user license agreements (excluding distributors and resellers)
- which have been validly granted by You or any distributor hereunder
- prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
- DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
- OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
- ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
- WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
- RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
- PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
- EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
- THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
- The Covered Code is a "commercial item," as that term is defined in
- 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
- software" and "commercial computer software documentation," as such
- terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
- C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
- all U.S. Government End Users acquire Covered Code with only those
- rights set forth herein.
-
-11. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the extent
- necessary to make it enforceable. This License shall be governed by
- California law provisions (except to the extent applicable law, if
- any, provides otherwise), excluding its conflict-of-law provisions.
- With respect to disputes in which at least one party is a citizen of,
- or an entity chartered or registered to do business in the United
- States of America, any litigation relating to this License shall be
- subject to the jurisdiction of the Federal Courts of the Northern
- District of California, with venue lying in Santa Clara County,
- California, with the losing party responsible for costs, including
- without limitation, court costs and reasonable attorneys' fees and
- expenses. The application of the United Nations Convention on
- Contracts for the International Sale of Goods is expressly excluded.
- Any law or regulation which provides that the language of a contract
- shall be construed against the drafter shall not apply to this
- License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or indirectly,
- out of its utilization of rights under this License and You agree to
- work with Initial Developer and Contributors to distribute such
- responsibility on an equitable basis. Nothing herein is intended or
- shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
- Initial Developer may designate portions of the Covered Code as
- "Multiple-Licensed". "Multiple-Licensed" means that the Initial
- Developer permits you to utilize portions of the Covered Code under
- Your choice of the NPL or the alternative licenses, if any, specified
- by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
- ``The contents of this file are subject to the Mozilla Public License
- Version 1.1 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- License for the specific language governing rights and limitations
- under the License.
-
- The Original Code is ______________________________________.
-
- The Initial Developer of the Original Code is ________________________.
- Portions created by ______________________ are Copyright (C) ______
- _______________________. All Rights Reserved.
-
- Contributor(s): ______________________________________.
-
- Alternatively, the contents of this file may be used under the terms
- of the _____ license (the "[___] License"), in which case the
- provisions of [______] License are applicable instead of those
- above. If you wish to allow use of your version of this file only
- under the terms of the [____] License and not to allow others to use
- your version of this file under the MPL, indicate your decision by
- deleting the provisions above and replace them with the notice and
- other provisions required by the [___] License. If you do not delete
- the provisions above, a recipient may use your version of this file
- under either the MPL or the [___] License."
-
- [NOTE: The text of this Exhibit A may differ slightly from the text of
- the notices in the Source Code files of the Original Code. You should
- use the text of this Exhibit A rather than the text found in the
- Original Code Source Code for Your Modifications.]
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+== BEGIN TEXT ONLY VERSION ==
+
+Software License Agreement
+==========================
+
+CKEditor - The text editor for Internet - http://ckeditor.com
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+
+Licensed under the terms of any of the following licenses at your
+choice:
+
+ - GNU General Public License Version 2 or later (the "GPL")
+ http://www.gnu.org/licenses/gpl.html
+ (See Appendix A)
+
+ - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ http://www.gnu.org/licenses/lgpl.html
+ (See Appendix B)
+
+ - Mozilla Public License Version 1.1 or later (the "MPL")
+ http://www.mozilla.org/MPL/MPL-1.1.html
+ (See Appendix C)
+
+You are not required to, but if you want to explicitly declare the
+license you have chosen to be bound to when using, reproducing,
+modifying and distributing this software, just include a text file
+titled "legal.txt" in your version of this software, indicating your
+license choice. In any case, your choice will not restrict any
+recipient of your version of this software to use, reproduce, modify
+and distribute this software under any of the above licenses.
+
+Sources of Intellectual Property Included in CKEditor
+=====================================================
+
+Where not otherwise indicated, all CKEditor content is authored by
+CKSource engineers and consists of CKSource-owned intellectual
+property. In some specific instances, CKEditor will incorporate work
+done by developers outside of CKSource with their express permission.
+
+YUI Test: At _source/tests/yuitest.js can be found part of the source
+code of YUI, which is licensed under the terms of the BSD License
+(http://developer.yahoo.com/yui/license.txt). YUI is Copyright (C)
+2008, Yahoo! Inc.
+
+Trademarks
+==========
+
+CKEditor is a trademark of CKSource - Frederico Knabben. All other brand
+and product names are trademarks, registered trademarks or service
+marks of their respective holders.
+
+Appendix A: The GPL License
+===========================
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software-to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+
+Appendix B: The LGPL License
+============================
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software-to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages-typically libraries-of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+
+Appendix C: The MPL License
+===========================
+
+ MOZILLA PUBLIC LICENSE
+ Version 1.1
+
+ ===============
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the
+ Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to
+ the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original
+ Code, prior Modifications used by a Contributor, and the Modifications
+ made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the
+ combination of the Original Code and Modifications, in each case
+ including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally
+ accepted in the software development community for the electronic
+ transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source
+ Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified
+ as the Initial Developer in the Source Code notice required by Exhibit
+ A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or
+ portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum
+ extent possible, whether at the time of the initial grant or
+ subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the
+ substance or structure of either the Original Code or any previous
+ Modifications. When Covered Code is released as a series of files, a
+ Modification is:
+ A. Any addition to or deletion from the contents of a file
+ containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or
+ previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code
+ which is described in the Source Code notice required by Exhibit A as
+ Original Code, and which, at the time of its release under this
+ License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or
+ hereafter acquired, including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for
+ making modifications to it, including all modules it contains, plus
+ any associated interface definition files, scripts used to control
+ compilation and installation of an Executable, or source code
+ differential comparisons against either the Original Code or another
+ well known, available Covered Code of the Contributor's choice. The
+ Source Code can be in a compressed or archival form, provided the
+ appropriate decompression or de-archiving software is widely available
+ for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity
+ exercising rights under, and complying with all of the terms of, this
+ License or a future version of this License issued under Section 6.1.
+ For legal entities, "You" includes any entity which controls, is
+ controlled by, or is under common control with You. For purposes of
+ this definition, "control" means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by
+ contract or otherwise, or (b) ownership of more than fifty percent
+ (50%) of the outstanding shares or beneficial ownership of such
+ entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free,
+ non-exclusive license, subject to third party intellectual property
+ claims:
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Initial Developer to use, reproduce,
+ modify, display, perform, sublicense and distribute the Original
+ Code (or portions thereof) with or without Modifications, and/or
+ as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or
+ selling of Original Code, to make, have made, use, practice,
+ sell, and offer for sale, and/or otherwise dispose of the
+ Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are
+ effective on the date Initial Developer first distributes
+ Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is
+ granted: 1) for code that You delete from the Original Code; 2)
+ separate from the Original Code; or 3) for infringements caused
+ by: i) the modification of the Original Code or ii) the
+ combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor
+ hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or
+ trademark) Licensable by Contributor, to use, reproduce, modify,
+ display, perform, sublicense and distribute the Modifications
+ created by such Contributor (or portions thereof) either on an
+ unmodified basis, with other Modifications, as Covered Code
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or
+ selling of Modifications made by that Contributor either alone
+ and/or in combination with its Contributor Version (or portions
+ of such combination), to make, use, sell, offer for sale, have
+ made, and/or otherwise dispose of: 1) Modifications made by that
+ Contributor (or portions thereof); and 2) the combination of
+ Modifications made by that Contributor with its Contributor
+ Version (or portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+ effective on the date Contributor first makes Commercial Use of
+ the Covered Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is
+ granted: 1) for any code that Contributor has deleted from the
+ Contributor Version; 2) separate from the Contributor Version;
+ 3) for infringements caused by: i) third party modifications of
+ Contributor Version or ii) the combination of Modifications made
+ by that Contributor with other software (except as part of the
+ Contributor Version) or other devices; or 4) under Patent Claims
+ infringed by Covered Code in the absence of Modifications made by
+ that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are
+ governed by the terms of this License, including without limitation
+ Section 2.2. The Source Code version of Covered Code may be
+ distributed only under the terms of this License or a future version
+ of this License released under Section 6.1, and You must include a
+ copy of this License with every copy of the Source Code You
+ distribute. You may not offer or impose any terms on any Source Code
+ version that alters or restricts the applicable version of this
+ License or the recipients' rights hereunder. However, You may include
+ an additional document offering the additional rights described in
+ Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be
+ made available in Source Code form under the terms of this License
+ either on the same media as an Executable version or via an accepted
+ Electronic Distribution Mechanism to anyone to whom you made an
+ Executable version available; and if made available via Electronic
+ Distribution Mechanism, must remain available for at least twelve (12)
+ months after the date it initially became available, or at least six
+ (6) months after a subsequent version of that particular Modification
+ has been made available to such recipients. You are responsible for
+ ensuring that the Source Code version remains available even if the
+ Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which You contribute to contain a
+ file documenting the changes You made to create that Covered Code and
+ the date of any change. You must include a prominent statement that
+ the Modification is derived, directly or indirectly, from Original
+ Code provided by the Initial Developer and including the name of the
+ Initial Developer in (a) the Source Code, and (b) in any notice in an
+ Executable version or related documentation in which You describe the
+ origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's
+ intellectual property rights is required to exercise the rights
+ granted by such Contributor under Sections 2.1 or 2.2,
+ Contributor must include a text file with the Source Code
+ distribution titled "LEGAL" which describes the claim and the
+ party making the claim in sufficient detail that a recipient will
+ know whom to contact. If Contributor obtains such knowledge after
+ the Modification is made available as described in Section 3.2,
+ Contributor shall promptly modify the LEGAL file in all copies
+ Contributor makes available thereafter and shall take other steps
+ (such as notifying appropriate mailing lists or newsgroups)
+ reasonably calculated to inform those who received the Covered
+ Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming
+ interface and Contributor has knowledge of patent licenses which
+ are reasonably necessary to implement that API, Contributor must
+ also include this information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to
+ Section 3.4(a) above, Contributor believes that Contributor's
+ Modifications are Contributor's original creation(s) and/or
+ Contributor has sufficient rights to grant the rights conveyed by
+ this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source
+ Code. If it is not possible to put such notice in a particular Source
+ Code file due to its structure, then You must include such notice in a
+ location (such as a relevant directory) where a user would be likely
+ to look for such a notice. If You created one or more Modification(s)
+ You may add your name as a Contributor to the notice described in
+ Exhibit A. You must also duplicate this License in any documentation
+ for the Source Code where You describe recipients' rights or ownership
+ rights relating to Covered Code. You may choose to offer, and to
+ charge a fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Code. However, You
+ may do so only on Your own behalf, and not on behalf of the Initial
+ Developer or any Contributor. You must make it absolutely clear than
+ any such warranty, support, indemnity or liability obligation is
+ offered by You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred by the
+ Initial Developer or such Contributor as a result of warranty,
+ support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the
+ requirements of Section 3.1-3.5 have been met for that Covered Code,
+ and if You include a notice stating that the Source Code version of
+ the Covered Code is available under the terms of this License,
+ including a description of how and where You have fulfilled the
+ obligations of Section 3.2. The notice must be conspicuously included
+ in any notice in an Executable version, related documentation or
+ collateral in which You describe recipients' rights relating to the
+ Covered Code. You may distribute the Executable version of Covered
+ Code or ownership rights under a license of Your choice, which may
+ contain terms different from this License, provided that You are in
+ compliance with the terms of this License and that the license for the
+ Executable version does not attempt to limit or alter the recipient's
+ rights in the Source Code version from the rights set forth in this
+ License. If You distribute the Executable version under a different
+ license You must make it absolutely clear that any terms which differ
+ from this License are offered by You alone, not by the Initial
+ Developer or any Contributor. You hereby agree to indemnify the
+ Initial Developer and every Contributor for any liability incurred by
+ the Initial Developer or such Contributor as a result of any such
+ terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code
+ not governed by the terms of this License and distribute the Larger
+ Work as a single product. In such a case, You must make sure the
+ requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Code due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description
+ must be included in the LEGAL file described in Section 3.4 and must
+ be included with all distributions of the Source Code. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+5. Application of this License.
+
+ This License applies to code to which the Initial Developer has
+ attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netscape Communications Corporation ("Netscape") may publish revised
+ and/or new versions of the License from time to time. Each version
+ will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the
+ License, You may always continue to use it under the terms of that
+ version. You may also choose to use such Covered Code under the terms
+ of any subsequent version of the License published by Netscape. No one
+ other than Netscape has the right to modify the terms applicable to
+ Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may
+ only do in order to apply it to code which is not already Covered Code
+ governed by this License), You must (a) rename Your license so that
+ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+ "MPL", "NPL" or any confusingly similar phrase do not appear in your
+ license (except to note that your license differs from this License)
+ and (b) otherwise make it clear that Your version of the license
+ contains terms which differ from the Mozilla Public License and
+ Netscape Public License. (Filling in the name of the Initial
+ Developer, Original Code or Contributor in the notice described in
+ Exhibit A shall not of themselves be deemed to be modifications of
+ this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to cure
+ such breach within 30 days of becoming aware of the breach. All
+ sublicenses to the Covered Code which are properly granted shall
+ survive any termination of this License. Provisions which, by their
+ nature, must remain in effect beyond the termination of this License
+ shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement
+ claim (excluding declatory judgment actions) against Initial Developer
+ or a Contributor (the Initial Developer or Contributor against whom
+ You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly
+ infringes any patent, then any and all rights granted by such
+ Participant to You under Sections 2.1 and/or 2.2 of this License
+ shall, upon 60 days notice from Participant terminate prospectively,
+ unless if within 60 days after receipt of notice You either: (i)
+ agree in writing to pay Participant a mutually agreeable reasonable
+ royalty for Your past and future use of Modifications made by such
+ Participant, or (ii) withdraw Your litigation claim with respect to
+ the Contributor Version against such Participant. If within 60 days
+ of notice, a reasonable royalty and payment arrangement are not
+ mutually agreed upon in writing by the parties or the litigation claim
+ is not withdrawn, the rights granted by Participant to You under
+ Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+ the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's
+ Contributor Version, directly or indirectly infringes any patent, then
+ any rights granted to You by such Participant under Sections 2.1(b)
+ and 2.2(b) are revoked effective as of the date You first made, used,
+ sold, distributed, or had made, Modifications made by that
+ Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant
+ alleging that such Participant's Contributor Version directly or
+ indirectly infringes any patent where such claim is resolved (such as
+ by license or settlement) prior to the initiation of patent
+ infringement litigation, then the reasonable value of the licenses
+ granted by such Participant under Sections 2.1 or 2.2 shall be taken
+ into account in determining the amount or value of any payment or
+ license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above,
+ all end user license agreements (excluding distributors and resellers)
+ which have been validly granted by You or any distributor hereunder
+ prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+ The Covered Code is a "commercial item," as that term is defined in
+ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+ software" and "commercial computer software documentation," as such
+ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+ all U.S. Government End Users acquire Covered Code with only those
+ rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. This License shall be governed by
+ California law provisions (except to the extent applicable law, if
+ any, provides otherwise), excluding its conflict-of-law provisions.
+ With respect to disputes in which at least one party is a citizen of,
+ or an entity chartered or registered to do business in the United
+ States of America, any litigation relating to this License shall be
+ subject to the jurisdiction of the Federal Courts of the Northern
+ District of California, with venue lying in Santa Clara County,
+ California, with the losing party responsible for costs, including
+ without limitation, court costs and reasonable attorneys' fees and
+ expenses. The application of the United Nations Convention on
+ Contracts for the International Sale of Goods is expressly excluded.
+ Any law or regulation which provides that the language of a contract
+ shall be construed against the drafter shall not apply to this
+ License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or indirectly,
+ out of its utilization of rights under this License and You agree to
+ work with Initial Developer and Contributors to distribute such
+ responsibility on an equitable basis. Nothing herein is intended or
+ shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+ Initial Developer may designate portions of the Covered Code as
+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial
+ Developer permits you to utilize portions of the Covered Code under
+ Your choice of the NPL or the alternative licenses, if any, specified
+ by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+ ``The contents of this file are subject to the Mozilla Public License
+ Version 1.1 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ License for the specific language governing rights and limitations
+ under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________.
+ Portions created by ______________________ are Copyright (C) ______
+ _______________________. All Rights Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms
+ of the _____ license (the "[___] License"), in which case the
+ provisions of [______] License are applicable instead of those
+ above. If you wish to allow use of your version of this file only
+ under the terms of the [____] License and not to allow others to use
+ your version of this file under the MPL, indicate your decision by
+ deleting the provisions above and replace them with the notice and
+ other provisions required by the [___] License. If you do not delete
+ the provisions above, a recipient may use your version of this file
+ under either the MPL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of
+ the notices in the Source Code files of the Original Code. You should
+ use the text of this Exhibit A rather than the text found in the
+ Original Code Source Code for Your Modifications.]
+
+== END TEXT ONLY VERSION ==
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>License - CKEditor</title>
+</head>
+<body>
+ <h1>
+ Software License Agreement
+ </h1>
+ <p>
+ <strong>CKEditor&trade;</strong> - The text editor for Internet&trade; - <a href="http://ckeditor.com">
+ http://ckeditor.com</a><br />
+ Copyright &copy; 2003-2010, <a href="http://cksource.com/">CKSource</a> - Frederico Knabben. All rights reserved.
+ </p>
+ <p>
+ Licensed under the terms of any of the following licenses at your choice:
+ </p>
+ <ul>
+ <li><a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a> Version
+ 2 or later (the "GPL");</li>
+ <li><a href="http://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License</a>
+ Version 2.1 or later (the "LGPL");</li>
+ <li><a href="http://www.mozilla.org/MPL/MPL-1.1.html">Mozilla Public License</a> Version
+ 1.1 or later (the "MPL").</li>
+ </ul>
+ <p>
+ You are not required to, but if you want to explicitly declare the license you have
+ chosen to be bound to when using, reproducing, modifying and distributing this software,
+ just include a text file titled "LEGAL" in your version of this software, indicating
+ your license choice. In any case, your choice will not restrict any recipient of
+ your version of this software to use, reproduce, modify and distribute this software
+ under any of the above licenses.
+ </p>
+ <h2>
+ Sources of Intellectual Property Included in CKEditor
+ </h2>
+ <p>
+ Where not otherwise indicated, all CKEditor content is authored by CKSource engineers
+ and consists of CKSource-owned intellectual property. In some specific instances,
+ CKEditor will incorporate work done by developers outside of CKSource with their
+ express permission.
+ </p>
+ <p>
+ <a href="http://developer.yahoo.com/yui/yuitest/">YUI Test</a>: At _source/tests/yuitest.js
+ can be found part of the source code of YUI, which is licensed under the terms of
+ the <a href="http://developer.yahoo.com/yui/license.txt">BSD License</a>. YUI is
+ Copyright &copy; 2008, Yahoo! Inc.
+ </p>
+ <h2>
+ Trademarks
+ </h2>
+ <p>
+ CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product
+ names are trademarks, registered trademarks or service marks of their respective
+ holders.
+ </p>
+</body>
+</html>
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/adapters/jquery.js b/rt/share/html/NoAuth/RichText/ckeditor/adapters/jquery.js
new file mode 100644
index 000000000..f60345978
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/adapters/jquery.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.config.jqueryOverrideVal=typeof CKEDITOR.config.jqueryOverrideVal=='undefined'?true:CKEDITOR.config.jqueryOverrideVal;var a=window.jQuery;if(typeof a=='undefined')return;a.extend(a.fn,{ckeditorGet:function(){var b=this.eq(0).data('ckeditorInstance');if(!b)throw 'CKEditor not yet initialized, use ckeditor() with callback.';return b;},ckeditor:function(b,c){if(!a.isFunction(b)){var d=c;c=b;b=d;}c=c||{};this.filter('textarea, div, p').each(function(){var e=a(this),f=e.data('ckeditorInstance'),g=e.data('_ckeditorInstanceLock'),h=this;if(f&&!g){if(b)b.apply(f,[this]);}else if(!g){if(c.autoUpdateElement||typeof c.autoUpdateElement=='undefined'&&CKEDITOR.config.autoUpdateElement)c.autoUpdateElementJquery=true;c.autoUpdateElement=false;e.data('_ckeditorInstanceLock',true);f=CKEDITOR.replace(h,c);e.data('ckeditorInstance',f);f.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}i.removeListener('instanceReady',this.callee);j.on('dataReady',function(){e.trigger('setData.ckeditor',[j]);});j.on('getData',function(l){e.trigger('getData.ckeditor',[j,l.data]);},999);j.on('destroy',function(){e.trigger('destroy.ckeditor',[j]);});if(j.config.autoUpdateElementJquery&&e.is('textarea')&&e.parents('form').length){var k=function(){e.ckeditor(function(){j.updateElement();});};e.parents('form').submit(k);e.parents('form').bind('form-pre-serialize',k);e.bind('destroy.ckeditor',function(){e.parents('form').unbind('submit',k);e.parents('form').unbind('form-pre-serialize',k);});}j.on('destroy',function(){e.data('ckeditorInstance',null);});e.data('_ckeditorInstanceLock',null);e.trigger('instanceReady.ckeditor',[j]);if(b)b.apply(j,[h]);},0);},null,null,9999);}else CKEDITOR.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}if(j.element.$==h)if(b)b.apply(j,[h]);},0);},null,null,9999);});return this;}});if(CKEDITOR.config.jqueryOverrideVal)a.fn.val=CKEDITOR.tools.override(a.fn.val,function(b){return function(c,d){var e=typeof c!='undefined',f;this.each(function(){var g=a(this),h=g.data('ckeditorInstance');if(!d&&g.is('textarea')&&h){if(e)h.setData(c);else{f=h.getData();return null;}}else if(e)b.call(g,c);else{f=b.call(g);return null;}return true;});return e?this:f;};});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/ckeditor.js b/rt/share/html/NoAuth/RichText/ckeditor/ckeditor.js
new file mode 100644
index 000000000..77b165e03
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/ckeditor.js
@@ -0,0 +1,135 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'A8LE4JO',version:'3.4.1',revision:'5892',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;if(!d)throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/'&&!/[&?]t=/.test(d))d+=(d.indexOf('?')>=0?'&':'?')+'t='+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})();var a=CKEDITOR;if(!a.event){a.event=function(){};a.event.implementOn=function(b,c){var d=a.event.prototype;for(var e in d){if(b[e]==undefined)b[e]=d[e];}};a.event.prototype=(function(){var b=function(d){var e=d.getPrivate&&d.getPrivate()||d._||(d._={});return e.events||(e.events={});},c=function(d){this.name=d;this.listeners=[];};c.prototype={getListenerIndex:function(d){for(var e=0,f=this.listeners;e<f.length;e++){if(f[e].fn==d)return e;}return-1;}};return{on:function(d,e,f,g,h){var i=b(this),j=i[d]||(i[d]=new c(d));if(j.getListenerIndex(e)<0){var k=j.listeners;if(!f)f=this;if(isNaN(h))h=10;var l=this,m=function(o,p,q,r){var s={name:d,sender:this,editor:o,data:p,listenerData:g,stop:q,cancel:r,removeListener:function(){l.removeListener(d,e);}};e.call(f,s);return s.data;};m.fn=e;m.priority=h;for(var n=k.length-1;n>=0;n--){if(k[n].priority<=h){k.splice(n+1,0,m);return;}}k.unshift(m);}},fire:(function(){var d=false,e=function(){d=true;},f=false,g=function(){f=true;};return function(h,i,j){var k=b(this)[h],l=d,m=f;d=f=false;if(k){var n=k.listeners;if(n.length){n=n.slice(0);for(var o=0;o<n.length;o++){var p=n[o].call(this,j,i,e,g);if(typeof p!='undefined')i=p;if(d||f)break;}}}var q=f||(typeof i=='undefined'?false:i);d=l;f=m;return q;};})(),fireOnce:function(d,e,f){var g=this.fire(d,e,f);delete b(this)[d];return g;},removeListener:function(d,e){var f=b(this)[d];if(f){var g=f.getListenerIndex(e);if(g>=0)f.listeners.splice(g,1);}},hasListeners:function(d){var e=b(this)[d];
+return e&&e.listeners.length>0;}};})();}if(!a.editor){a.ELEMENT_MODE_NONE=0;a.ELEMENT_MODE_REPLACE=1;a.ELEMENT_MODE_APPENDTO=2;a.editor=function(b,c,d,e){var f=this;f._={instanceConfig:b,element:c,data:e};f.elementMode=d||0;a.event.call(f);f._init();};a.editor.replace=function(b,c){var d=b;if(typeof d!='object'){d=document.getElementById(b);if(!d){var e=0,f=document.getElementsByName(b);while((d=f[e++])&&d.tagName.toLowerCase()!='textarea'){}}if(!d)throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';}d.style.visibility='hidden';return new a.editor(c,d,1);};a.editor.appendTo=function(b,c,d){var e=b;if(typeof e!='object'){e=document.getElementById(b);if(!e)throw '[CKEDITOR.editor.appendTo] The element with id "'+b+'" was not found.';}return new a.editor(c,e,2,d);};a.editor.prototype={_init:function(){var b=a.editor._pending||(a.editor._pending=[]);b.push(this);},fire:function(b,c){return a.event.prototype.fire.call(this,b,c,this);},fireOnce:function(b,c){return a.event.prototype.fireOnce.call(this,b,c,this);}};a.event.implementOn(a.editor.prototype,true);}if(!a.env)a.env=(function(){var b=navigator.userAgent.toLowerCase(),c=window.opera,d={ie:/*@cc_on!@*/false,opera:!!c&&c.version,webkit:b.indexOf(' applewebkit/')>-1,air:b.indexOf(' adobeair/')>-1,mac:b.indexOf('macintosh')>-1,quirks:document.compatMode=='BackCompat',mobile:b.indexOf('mobile')>-1,isCustomDomain:function(){if(!this.ie)return false;var g=document.domain,h=window.location.hostname;return g!=h&&g!='['+h+']';}};d.gecko=navigator.product=='Gecko'&&!d.webkit&&!d.opera;var e=0;if(d.ie){e=parseFloat(b.match(/msie (\d+)/)[1]);d.ie8=!!document.documentMode;d.ie8Compat=document.documentMode==8;d.ie7Compat=e==7&&!document.documentMode||document.documentMode==7;d.ie6Compat=e<7||d.quirks;}if(d.gecko){var f=b.match(/rv:([\d\.]+)/);if(f){f=f[1].split('.');e=f[0]*10000+(f[1]||0)*100+ +(f[2]||0);}}if(d.opera)e=parseFloat(c.version());if(d.air)e=parseFloat(b.match(/ adobeair\/(\d+)/)[1]);if(d.webkit)e=parseFloat(b.match(/ applewebkit\/(\d+)/)[1]);d.version=e;d.isCompatible=!d.mobile&&(d.ie&&e>=6||d.gecko&&e>=10801||d.opera&&e>=9.5||d.air&&e>=1||d.webkit&&e>=522||false);d.cssClass='cke_browser_'+(d.ie?'ie':d.gecko?'gecko':d.opera?'opera':d.air?'air':d.webkit?'webkit':'unknown');if(d.quirks)d.cssClass+=' cke_browser_quirks';if(d.ie){d.cssClass+=' cke_browser_ie'+(d.version<7?'6':d.version>=8?'8':'7');if(d.quirks)d.cssClass+=' cke_browser_iequirks';}if(d.gecko&&e<10900)d.cssClass+=' cke_browser_gecko18';
+return d;})();var b=a.env;var c=b.ie;if(a.status=='unloaded')(function(){a.event.implementOn(a);a.loadFullCore=function(){if(a.status!='basic_ready'){a.loadFullCore._load=true;return;}delete a.loadFullCore;var e=document.createElement('script');e.type='text/javascript';e.src=a.basePath+'ckeditor.js';document.getElementsByTagName('head')[0].appendChild(e);};a.loadFullCoreTimeout=0;a.replaceClass='ckeditor';a.replaceByClassEnabled=true;var d=function(e,f,g,h){if(b.isCompatible){if(a.loadFullCore)a.loadFullCore();var i=g(e,f,h);a.add(i);return i;}return null;};a.replace=function(e,f){return d(e,f,a.editor.replace);};a.appendTo=function(e,f,g){return d(e,f,a.editor.appendTo,g);};a.add=function(e){var f=this._.pending||(this._.pending=[]);f.push(e);};a.replaceAll=function(){var e=document.getElementsByTagName('textarea');for(var f=0;f<e.length;f++){var g=null,h=e[f],i=h.name;if(!h.name&&!h.id)continue;if(typeof arguments[0]=='string'){var j=new RegExp('(?:^|\\s)'+arguments[0]+'(?:$|\\s)');if(!j.test(h.className))continue;}else if(typeof arguments[0]=='function'){g={};if(arguments[0](h,g)===false)continue;}this.replace(h,g);}};(function(){var e=function(){var f=a.loadFullCore,g=a.loadFullCoreTimeout;if(a.replaceByClassEnabled)a.replaceAll(a.replaceClass);a.status='basic_ready';if(f&&f._load)f();else if(g)setTimeout(function(){if(a.loadFullCore)a.loadFullCore();},g*1000);};if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();a.status='basic_loaded';})();a.dom={};var d=a.dom;(function(){var e=[];a.on('reset',function(){e=[];});a.tools={arrayCompare:function(f,g){if(!f&&!g)return true;if(!f||!g||f.length!=g.length)return false;for(var h=0;h<f.length;h++){if(f[h]!=g[h])return false;}return true;},clone:function(f){var g;if(f&&f instanceof Array){g=[];for(var h=0;h<f.length;h++)g[h]=this.clone(f[h]);return g;}if(f===null||typeof f!='object'||f instanceof String||f instanceof Number||f instanceof Boolean||f instanceof Date||f instanceof RegExp)return f;g=new f.constructor();for(var i in f){var j=f[i];g[i]=this.clone(j);}return g;},capitalize:function(f){return f.charAt(0).toUpperCase()+f.substring(1).toLowerCase();},extend:function(f){var g=arguments.length,h,i;if(typeof (h=arguments[g-1])=='boolean')g--;else if(typeof (h=arguments[g-2])=='boolean'){i=arguments[g-1];g-=2;}for(var j=1;j<g;j++){var k=arguments[j];for(var l in k){if(h===true||f[l]==undefined)if(!i||l in i)f[l]=k[l];}}return f;},prototypedCopy:function(f){var g=function(){};
+g.prototype=f;return new g();},isArray:function(f){return!!f&&f instanceof Array;},isEmpty:function(f){for(var g in f){if(f.hasOwnProperty(g))return false;}return true;},cssStyleToDomStyle:(function(){var f=document.createElement('div').style,g=typeof f.cssFloat!='undefined'?'cssFloat':typeof f.styleFloat!='undefined'?'styleFloat':'float';return function(h){if(h=='float')return g;else return h.replace(/-./g,function(i){return i.substr(1).toUpperCase();});};})(),buildStyleHtml:function(f){f=[].concat(f);var g,h=[];for(var i=0;i<f.length;i++){g=f[i];if(/@import|[{}]/.test(g))h.push('<style>'+g+'</style>');else h.push('<link type="text/css" rel=stylesheet href="'+g+'">');}return h.join('');},htmlEncode:function(f){var g=function(k){var l=new d.element('span');l.setText(k);return l.getHtml();},h=g('\n').toLowerCase()=='<br>'?function(k){return g(k).replace(/<br>/gi,'\n');}:g,i=g('>')=='>'?function(k){return h(k).replace(/>/g,'&gt;');}:h,j=g(' ')=='&nbsp; '?function(k){return i(k).replace(/&nbsp;/g,' ');}:i;this.htmlEncode=j;return this.htmlEncode(f);},htmlEncodeAttr:function(f){return f.replace(/"/g,'&quot;').replace(/</g,'&lt;').replace(/>/g,'&gt;');},escapeCssSelector:function(f){return f.replace(/[\s#:.,$*^\[\]()~=+>]/g,'\\$&');},getNextNumber:(function(){var f=0;return function(){return++f;};})(),getNextId:function(){return 'cke_'+this.getNextNumber();},override:function(f,g){return g(f);},setTimeout:function(f,g,h,i,j){if(!j)j=window;if(!h)h=j;return j.setTimeout(function(){if(i)f.apply(h,[].concat(i));else f.apply(h);},g||0);},trim:(function(){var f=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(g){return g.replace(f,'');};})(),ltrim:(function(){var f=/^[ \t\n\r]+/g;return function(g){return g.replace(f,'');};})(),rtrim:(function(){var f=/[ \t\n\r]+$/g;return function(g){return g.replace(f,'');};})(),indexOf:Array.prototype.indexOf?function(f,g){return f.indexOf(g);}:function(f,g){for(var h=0,i=f.length;h<i;h++){if(f[h]===g)return h;}return-1;},bind:function(f,g){return function(){return f.apply(g,arguments);};},createClass:function(f){var g=f.$,h=f.base,i=f.privates||f._,j=f.proto,k=f.statics;if(i){var l=g;g=function(){var p=this;var m=p._||(p._={});for(var n in i){var o=i[n];m[n]=typeof o=='function'?a.tools.bind(o,p):o;}l.apply(p,arguments);};}if(h){g.prototype=this.prototypedCopy(h.prototype);g.prototype['constructor']=g;g.prototype.base=function(){this.base=h.prototype.base;h.apply(this,arguments);this.base=arguments.callee;};}if(j)this.extend(g.prototype,j,true);
+if(k)this.extend(g,k,true);return g;},addFunction:function(f,g){return e.push(function(){f.apply(g||this,arguments);})-1;},removeFunction:function(f){e[f]=null;},callFunction:function(f){var g=e[f];return g&&g.apply(window,Array.prototype.slice.call(arguments,1));},cssLength:(function(){var f=/^\d+(?:\.\d+)?$/;return function(g){return g+(f.test(g)?'px':'');};})(),repeat:function(f,g){return new Array(g+1).join(f);},tryThese:function(){var f;for(var g=0,h=arguments.length;g<h;g++){var i=arguments[g];try{f=i();break;}catch(j){}}return f;},genKey:function(){return Array.prototype.slice.call(arguments).join('-');}};})();var e=a.tools;a.dtd=(function(){var f=e.extend,g={isindex:1,fieldset:1},h={input:1,button:1,select:1,textarea:1,label:1},i=f({a:1},h),j=f({iframe:1},i),k={hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},l={ins:1,del:1,script:1,style:1},m=f({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},l),n=f({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},m),o=f({p:1},n),p=f({iframe:1},n,h),q={img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1},r=f({a:1},p),s={tr:1},t={'#':1},u=f({param:1},q),v=f({form:1},g,j,k,o),w={li:1},x={style:1,script:1},y={base:1,link:1,meta:1,title:1},z=f(y,x),A={head:1,body:1},B={html:1},C={address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};return{$nonBodyContent:f(B,A,y),$block:C,$blockLimit:{body:1,div:1,td:1,th:1,caption:1,form:1},$inline:r,$body:f({script:1,style:1},C),$cdata:{script:1,style:1},$empty:{area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1},$listItem:{dd:1,dt:1,li:1},$list:{ul:1,ol:1,dl:1},$nonEditable:{applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1},$removeEmpty:{abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},html:A,head:z,style:t,script:t,body:v,base:{},link:{},meta:{},title:t,col:{},tr:{td:1,th:1},img:{},colgroup:{col:1},noscript:v,td:v,br:{},th:v,center:v,kbd:r,button:f(o,k),basefont:{},h5:r,h4:r,samp:r,h6:r,ol:w,h1:r,h3:r,option:t,h2:r,form:f(g,j,k,o),select:{optgroup:1,option:1},font:r,ins:r,menu:w,abbr:r,label:r,table:{thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},code:r,script:t,tfoot:s,cite:r,li:v,input:{},iframe:v,strong:r,textarea:t,noframes:v,big:r,small:r,span:r,hr:{},dt:r,sub:r,optgroup:{option:1},param:{},bdo:r,'var':r,div:v,object:u,sup:r,dd:v,strike:r,area:{},dir:w,map:f({area:1,form:1,p:1},g,l,k),applet:u,dl:{dt:1,dd:1},del:r,isindex:{},fieldset:f({legend:1},q),thead:s,ul:w,acronym:r,b:r,a:p,blockquote:v,caption:r,i:r,u:r,tbody:s,s:r,address:f(j,o),tt:r,legend:r,q:r,pre:f(m,i),p:r,em:r,dfn:r};
+})();var f=a.dtd;d.event=function(g){this.$=g;};d.event.prototype={getKey:function(){return this.$.keyCode||this.$.which;},getKeystroke:function(){var h=this;var g=h.getKey();if(h.$.ctrlKey||h.$.metaKey)g+=1000;if(h.$.shiftKey)g+=2000;if(h.$.altKey)g+=4000;return g;},preventDefault:function(g){var h=this.$;if(h.preventDefault)h.preventDefault();else h.returnValue=false;if(g)this.stopPropagation();},stopPropagation:function(){var g=this.$;if(g.stopPropagation)g.stopPropagation();else g.cancelBubble=true;},getTarget:function(){var g=this.$.target||this.$.srcElement;return g?new d.node(g):null;}};a.CTRL=1000;a.SHIFT=2000;a.ALT=4000;d.domObject=function(g){if(g)this.$=g;};d.domObject.prototype=(function(){var g=function(h,i){return function(j){if(typeof a!='undefined')h.fire(i,new d.event(j));};};return{getPrivate:function(){var h;if(!(h=this.getCustomData('_')))this.setCustomData('_',h={});return h;},on:function(h){var k=this;var i=k.getCustomData('_cke_nativeListeners');if(!i){i={};k.setCustomData('_cke_nativeListeners',i);}if(!i[h]){var j=i[h]=g(k,h);if(k.$.addEventListener)k.$.addEventListener(h,j,!!a.event.useCapture);else if(k.$.attachEvent)k.$.attachEvent('on'+h,j);}return a.event.prototype.on.apply(k,arguments);},removeListener:function(h){var k=this;a.event.prototype.removeListener.apply(k,arguments);if(!k.hasListeners(h)){var i=k.getCustomData('_cke_nativeListeners'),j=i&&i[h];if(j){if(k.$.removeEventListener)k.$.removeEventListener(h,j,false);else if(k.$.detachEvent)k.$.detachEvent('on'+h,j);delete i[h];}}},removeAllListeners:function(){var k=this;var h=k.getCustomData('_cke_nativeListeners');for(var i in h){var j=h[i];if(k.$.removeEventListener)k.$.removeEventListener(i,j,false);else if(k.$.detachEvent)k.$.detachEvent('on'+i,j);delete h[i];}}};})();(function(g){var h={};a.on('reset',function(){h={};});g.equals=function(i){return i&&i.$===this.$;};g.setCustomData=function(i,j){var k=this.getUniqueId(),l=h[k]||(h[k]={});l[i]=j;return this;};g.getCustomData=function(i){var j=this.$._cke_expando,k=j&&h[j];return k&&k[i];};g.removeCustomData=function(i){var j=this.$._cke_expando,k=j&&h[j],l=k&&k[i];if(typeof l!='undefined')delete k[i];return l||null;};g.clearCustomData=function(){this.removeAllListeners();var i=this.$._cke_expando;i&&delete h[i];};g.getUniqueId=function(){return this.$._cke_expando||(this.$._cke_expando=e.getNextNumber());};a.event.implementOn(g);})(d.domObject.prototype);d.window=function(g){d.domObject.call(this,g);};d.window.prototype=new d.domObject();
+e.extend(d.window.prototype,{focus:function(){if(b.webkit&&this.$.parent)this.$.parent.focus();this.$.focus();},getViewPaneSize:function(){var g=this.$.document,h=g.compatMode=='CSS1Compat';return{width:(h?g.documentElement.clientWidth:g.body.clientWidth)||0,height:(h?g.documentElement.clientHeight:g.body.clientHeight)||0};},getScrollPosition:function(){var g=this.$;if('pageXOffset' in g)return{x:g.pageXOffset||0,y:g.pageYOffset||0};else{var h=g.document;return{x:h.documentElement.scrollLeft||h.body.scrollLeft||0,y:h.documentElement.scrollTop||h.body.scrollTop||0};}}});d.document=function(g){d.domObject.call(this,g);};var g=d.document;g.prototype=new d.domObject();e.extend(g.prototype,{appendStyleSheet:function(h){if(this.$.createStyleSheet)this.$.createStyleSheet(h);else{var i=new d.element('link');i.setAttributes({rel:'stylesheet',type:'text/css',href:h});this.getHead().append(i);}},appendStyleText:function(h){var k=this;if(k.$.createStyleSheet){var i=k.$.createStyleSheet('');i.cssText=h;}else{var j=new d.element('style',k);j.append(new d.text(h,k));k.getHead().append(j);}},createElement:function(h,i){var j=new d.element(h,this);if(i){if(i.attributes)j.setAttributes(i.attributes);if(i.styles)j.setStyles(i.styles);}return j;},createText:function(h){return new d.text(h,this);},focus:function(){this.getWindow().focus();},getById:function(h){var i=this.$.getElementById(h);return i?new d.element(i):null;},getByAddress:function(h,i){var j=this.$.documentElement;for(var k=0;j&&k<h.length;k++){var l=h[k];if(!i){j=j.childNodes[l];continue;}var m=-1;for(var n=0;n<j.childNodes.length;n++){var o=j.childNodes[n];if(i===true&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;m++;if(m==l){j=o;break;}}}return j?new d.node(j):null;},getElementsByTag:function(h,i){if(!c&&i)h=i+':'+h;return new d.nodeList(this.$.getElementsByTagName(h));},getHead:function(){var h=this.$.getElementsByTagName('head')[0];h=new d.element(h);return(this.getHead=function(){return h;})();},getBody:function(){var h=new d.element(this.$.body);return(this.getBody=function(){return h;})();},getDocumentElement:function(){var h=new d.element(this.$.documentElement);return(this.getDocumentElement=function(){return h;})();},getWindow:function(){var h=new d.window(this.$.parentWindow||this.$.defaultView);return(this.getWindow=function(){return h;})();}});d.node=function(h){if(h){switch(h.nodeType){case 9:return new g(h);case 1:return new d.element(h);case 3:return new d.text(h);}d.domObject.call(this,h);
+}return this;};d.node.prototype=new d.domObject();a.NODE_ELEMENT=1;a.NODE_DOCUMENT=9;a.NODE_TEXT=3;a.NODE_COMMENT=8;a.NODE_DOCUMENT_FRAGMENT=11;a.POSITION_IDENTICAL=0;a.POSITION_DISCONNECTED=1;a.POSITION_FOLLOWING=2;a.POSITION_PRECEDING=4;a.POSITION_IS_CONTAINED=8;a.POSITION_CONTAINS=16;e.extend(d.node.prototype,{appendTo:function(h,i){h.append(this,i);return h;},clone:function(h,i){var j=this.$.cloneNode(h);if(!i){var k=function(l){if(l.nodeType!=1)return;l.removeAttribute('id',false);l.removeAttribute('_cke_expando',false);var m=l.childNodes;for(var n=0;n<m.length;n++)k(m[n]);};k(j);}return new d.node(j);},hasPrevious:function(){return!!this.$.previousSibling;},hasNext:function(){return!!this.$.nextSibling;},insertAfter:function(h){h.$.parentNode.insertBefore(this.$,h.$.nextSibling);return h;},insertBefore:function(h){h.$.parentNode.insertBefore(this.$,h.$);return h;},insertBeforeMe:function(h){this.$.parentNode.insertBefore(h.$,this.$);return h;},getAddress:function(h){var i=[],j=this.getDocument().$.documentElement,k=this.$;while(k&&k!=j){var l=k.parentNode,m=-1;if(l){for(var n=0;n<l.childNodes.length;n++){var o=l.childNodes[n];if(h&&o.nodeType==3&&o.previousSibling&&o.previousSibling.nodeType==3)continue;m++;if(o==k)break;}i.unshift(m);}k=l;}return i;},getDocument:function(){var h=new g(this.$.ownerDocument||this.$.parentNode.ownerDocument);return(this.getDocument=function(){return h;})();},getIndex:function(){var h=this.$,i=h.parentNode&&h.parentNode.firstChild,j=-1;while(i){j++;if(i==h)return j;i=i.nextSibling;}return-1;},getNextSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getFirst&&this.getFirst(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getNext();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getNext();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&i!=l.type)return l.getNextSourceNode(false,i,j);return l;},getPreviousSourceNode:function(h,i,j){if(j&&!j.call){var k=j;j=function(n){return!n.equals(k);};}var l=!h&&this.getLast&&this.getLast(),m;if(!l){if(this.type==1&&j&&j(this,true)===false)return null;l=this.getPrevious();}while(!l&&(m=(m||this).getParent())){if(j&&j(m,true)===false)return null;l=m.getPrevious();}if(!l)return null;if(j&&j(l)===false)return null;if(i&&l.type!=i)return l.getPreviousSourceNode(false,i,j);return l;},getPrevious:function(h){var i=this.$,j;do{i=i.previousSibling;j=i&&new d.node(i);}while(j&&h&&!h(j))return j;
+},getNext:function(h){var i=this.$,j;do{i=i.nextSibling;j=i&&new d.node(i);}while(j&&h&&!h(j))return j;},getParent:function(){var h=this.$.parentNode;return h&&h.nodeType==1?new d.node(h):null;},getParents:function(h){var i=this,j=[];do j[h?'push':'unshift'](i);while(i=i.getParent())return j;},getCommonAncestor:function(h){var j=this;if(h.equals(j))return j;if(h.contains&&h.contains(j))return h;var i=j.contains?j:j.getParent();do{if(i.contains(h))return i;}while(i=i.getParent())return null;},getPosition:function(h){var i=this.$,j=h.$;if(i.compareDocumentPosition)return i.compareDocumentPosition(j);if(i==j)return 0;if(this.type==1&&h.type==1){if(i.contains){if(i.contains(j))return 16+4;if(j.contains(i))return 8+2;}if('sourceIndex' in i)return i.sourceIndex<0||j.sourceIndex<0?1:i.sourceIndex<j.sourceIndex?4:2;}var k=this.getAddress(),l=h.getAddress(),m=Math.min(k.length,l.length);for(var n=0;n<=m-1;n++){if(k[n]!=l[n]){if(n<m)return k[n]<l[n]?4:2;break;}}return k.length<l.length?16+4:8+2;},getAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return new d.node(j);j=j.parentNode;}return null;},hasAscendant:function(h,i){var j=this.$;if(!i)j=j.parentNode;while(j){if(j.nodeName&&j.nodeName.toLowerCase()==h)return true;j=j.parentNode;}return false;},move:function(h,i){h.append(this.remove(),i);},remove:function(h){var i=this.$,j=i.parentNode;if(j){if(h)for(var k;k=i.firstChild;)j.insertBefore(i.removeChild(k),i);j.removeChild(i);}return this;},replace:function(h){this.insertBefore(h);h.remove();},trim:function(){this.ltrim();this.rtrim();},ltrim:function(){var k=this;var h;while(k.getFirst&&(h=k.getFirst())){if(h.type==3){var i=e.ltrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(j-i.length);k.$.removeChild(k.$.firstChild);}}break;}},rtrim:function(){var k=this;var h;while(k.getLast&&(h=k.getLast())){if(h.type==3){var i=e.rtrim(h.getText()),j=h.getLength();if(!i){h.remove();continue;}else if(i.length<j){h.split(i.length);k.$.lastChild.parentNode.removeChild(k.$.lastChild);}}break;}if(!c&&!b.opera){h=k.$.lastChild;if(h&&h.type==1&&h.nodeName.toLowerCase()=='br')h.parentNode.removeChild(h);}},isReadOnly:function(){var h=this;while(h){if(h.type==1){if(h.is('body')||h.getCustomData('_cke_notReadOnly'))break;if(h.getAttribute('contentEditable')=='false')return h;else if(h.getAttribute('contentEditable')=='true')break;}h=h.getParent();}return false;}});d.nodeList=function(h){this.$=h;
+};d.nodeList.prototype={count:function(){return this.$.length;},getItem:function(h){var i=this.$[h];return i?new d.node(i):null;}};d.element=function(h,i){if(typeof h=='string')h=(i?i.$:document).createElement(h);d.domObject.call(this,h);};var h=d.element;h.get=function(i){return i&&(i.$?i:new h(i));};h.prototype=new d.node();h.createFromHtml=function(i,j){var k=new h('div',j);k.setHtml(i);return k.getFirst().remove();};h.setMarker=function(i,j,k,l){var m=j.getCustomData('list_marker_id')||j.setCustomData('list_marker_id',e.getNextNumber()).getCustomData('list_marker_id'),n=j.getCustomData('list_marker_names')||j.setCustomData('list_marker_names',{}).getCustomData('list_marker_names');i[m]=j;n[k]=1;return j.setCustomData(k,l);};h.clearAllMarkers=function(i){for(var j in i)h.clearMarkers(i,i[j],true);};h.clearMarkers=function(i,j,k){var l=j.getCustomData('list_marker_names'),m=j.getCustomData('list_marker_id');for(var n in l)j.removeCustomData(n);j.removeCustomData('list_marker_names');if(k){j.removeCustomData('list_marker_id');delete i[m];}};e.extend(h.prototype,{type:1,addClass:function(i){var j=this.$.className;if(j){var k=new RegExp('(?:^|\\s)'+i+'(?:\\s|$)','');if(!k.test(j))j+=' '+i;}this.$.className=j||i;},removeClass:function(i){var j=this.getAttribute('class');if(j){var k=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','i');if(k.test(j)){j=j.replace(k,'').replace(/^\s+/,'');if(j)this.setAttribute('class',j);else this.removeAttribute('class');}}},hasClass:function(i){var j=new RegExp('(?:^|\\s+)'+i+'(?=\\s|$)','');return j.test(this.getAttribute('class'));},append:function(i,j){var k=this;if(typeof i=='string')i=k.getDocument().createElement(i);if(j)k.$.insertBefore(i.$,k.$.firstChild);else k.$.appendChild(i.$);return i;},appendHtml:function(i){var k=this;if(!k.$.childNodes.length)k.setHtml(i);else{var j=new h('div',k.getDocument());j.setHtml(i);j.moveChildren(k);}},appendText:function(i){if(this.$.text!=undefined)this.$.text+=i;else this.append(new d.text(i));},appendBogus:function(){var k=this;var i=k.getLast();while(i&&i.type==3&&!e.rtrim(i.getText()))i=i.getPrevious();if(!i||!i.is||!i.is('br')){var j=b.opera?k.getDocument().createText(''):k.getDocument().createElement('br');b.gecko&&j.setAttribute('type','_moz');k.append(j);}},breakParent:function(i){var l=this;var j=new d.range(l.getDocument());j.setStartAfter(l);j.setEndAfter(i);var k=j.extractContents();j.insertNode(l.remove());k.insertAfterNode(l);},contains:c||b.webkit?function(i){var j=this.$;return i.type!=1?j.contains(i.getParent().$):j!=i.$&&j.contains(i.$);
+}:function(i){return!!(this.$.compareDocumentPosition(i.$)&16);},focus:function(){try{this.$.focus();}catch(i){}},getHtml:function(){var i=this.$.innerHTML;return c?i.replace(/<\?[^>]*>/g,''):i;},getOuterHtml:function(){var j=this;if(j.$.outerHTML)return j.$.outerHTML.replace(/<\?[^>]*>/,'');var i=j.$.ownerDocument.createElement('div');i.appendChild(j.$.cloneNode(true));return i.innerHTML;},setHtml:function(i){return this.$.innerHTML=i;},setText:function(i){h.prototype.setText=this.$.innerText!=undefined?function(j){return this.$.innerText=j;}:function(j){return this.$.textContent=j;};return this.setText(i);},getAttribute:(function(){var i=function(j){return this.$.getAttribute(j,2);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){var n=this;switch(j){case 'class':j='className';break;case 'tabindex':var k=i.call(n,j);if(k!==0&&n.$.tabIndex===0)k=null;return k;break;case 'checked':var l=n.$.attributes.getNamedItem(j),m=l.specified?l.nodeValue:n.$.checked;return m?'checked':null;case 'hspace':return n.$.hspace;case 'style':return n.$.style.cssText;}return i.call(n,j);};else return i;})(),getChildren:function(){return new d.nodeList(this.$.childNodes);},getComputedStyle:c?function(i){return this.$.currentStyle[e.cssStyleToDomStyle(i)];}:function(i){return this.getWindow().$.getComputedStyle(this.$,'').getPropertyValue(i);},getDtd:function(){var i=f[this.getName()];this.getDtd=function(){return i;};return i;},getElementsByTag:g.prototype.getElementsByTag,getTabIndex:c?function(){var i=this.$.tabIndex;if(i===0&&!f.$tabIndex[this.getName()]&&parseInt(this.getAttribute('tabindex'),10)!==0)i=-1;return i;}:b.webkit?function(){var i=this.$.tabIndex;if(i==undefined){i=parseInt(this.getAttribute('tabindex'),10);if(isNaN(i))i=-1;}return i;}:function(){return this.$.tabIndex;},getText:function(){return this.$.textContent||this.$.innerText||'';},getWindow:function(){return this.getDocument().getWindow();},getId:function(){return this.$.id||null;},getNameAtt:function(){return this.$.name||null;},getName:function(){var i=this.$.nodeName.toLowerCase();if(c){var j=this.$.scopeName;if(j!='HTML')i=j.toLowerCase()+':'+i;}return(this.getName=function(){return i;})();},getValue:function(){return this.$.value;},getFirst:function(i){var j=this.$.firstChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getNext(i);return k;},getLast:function(i){var j=this.$.lastChild,k=j&&new d.node(j);if(k&&i&&!i(k))k=k.getPrevious(i);return k;},getStyle:function(i){return this.$.style[e.cssStyleToDomStyle(i)];
+},is:function(){var i=this.getName();for(var j=0;j<arguments.length;j++){if(arguments[j]==i)return true;}return false;},isEditable:function(){var i=this.getName(),j=!f.$nonEditable[i]&&(f[i]||f.span);return j&&j['#'];},isIdentical:function(i){if(this.getName()!=i.getName())return false;var j=this.$.attributes,k=i.$.attributes,l=j.length,m=k.length;if(!c&&l!=m)return false;for(var n=0;n<l;n++){var o=j[n];if((!c||o.specified&&o.nodeName!='_cke_expando')&&o.nodeValue!=i.getAttribute(o.nodeName))return false;}if(c)for(n=0;n<m;n++){o=k[n];if(o.specified&&o.nodeName!='_cke_expando'&&o.nodeValue!=this.getAttribute(o.nodeName))return false;}return true;},isVisible:function(){var i=!!this.$.offsetHeight&&this.getComputedStyle('visibility')!='hidden',j,k;if(i&&(b.webkit||b.opera)){j=this.getWindow();if(!j.equals(a.document.getWindow())&&(k=j.$.frameElement))i=new h(k).isVisible();}return i;},isEmptyInlineRemoveable:function(){if(!f.$removeEmpty[this.getName()])return false;var i=this.getChildren();for(var j=0,k=i.count();j<k;j++){var l=i.getItem(j);if(l.type==1&&l.getAttribute('_cke_bookmark'))continue;if(l.type==1&&!l.isEmptyInlineRemoveable()||l.type==3&&e.trim(l.getText()))return false;}return true;},hasAttributes:c&&(b.ie7Compat||b.ie6Compat)?function(){var i=this.$.attributes;for(var j=0;j<i.length;j++){var k=i[j];switch(k.nodeName){case 'class':if(this.getAttribute('class'))return true;case '_cke_expando':continue;default:if(k.specified)return true;}}return false;}:function(){var i=this.$.attributes,j=i.length,k={_cke_expando:1,_moz_dirty:1};return j>0&&(j>2||!k[i[0].nodeName]||j==2&&!k[i[1].nodeName]);},hasAttribute:function(i){var j=this.$.attributes.getNamedItem(i);return!!(j&&j.specified);},hide:function(){this.setStyle('display','none');},moveChildren:function(i,j){var k=this.$;i=i.$;if(k==i)return;var l;if(j)while(l=k.lastChild)i.insertBefore(k.removeChild(l),i.firstChild);else while(l=k.firstChild)i.appendChild(k.removeChild(l));},mergeSiblings:(function(){function i(j,k,l){if(k&&k.type==1){var m=[];while(k.getAttribute('_cke_bookmark')||k.isEmptyInlineRemoveable()){m.push(k);k=l?k.getNext():k.getPrevious();if(!k||k.type!=1)return;}if(j.isIdentical(k)){var n=l?j.getLast():j.getFirst();while(m.length)m.shift().move(j,!l);k.moveChildren(j,!l);k.remove();if(n&&n.type==1)n.mergeSiblings();}}};return function(){var j=this;if(!(f.$removeEmpty[j.getName()]||j.is('a')))return;i(j,j.getNext(),true);i(j,j.getPrevious());};})(),show:function(){this.setStyles({display:'',visibility:''});
+},setAttribute:(function(){var i=function(j,k){this.$.setAttribute(j,k);return this;};if(c&&(b.ie7Compat||b.ie6Compat))return function(j,k){var l=this;if(j=='class')l.$.className=k;else if(j=='style')l.$.style.cssText=k;else if(j=='tabindex')l.$.tabIndex=k;else if(j=='checked')l.$.checked=k;else i.apply(l,arguments);return l;};else return i;})(),setAttributes:function(i){for(var j in i)this.setAttribute(j,i[j]);return this;},setValue:function(i){this.$.value=i;return this;},removeAttribute:(function(){var i=function(j){this.$.removeAttribute(j);};if(c&&(b.ie7Compat||b.ie6Compat))return function(j){if(j=='class')j='className';else if(j=='tabindex')j='tabIndex';i.call(this,j);};else return i;})(),removeAttributes:function(i){if(e.isArray(i))for(var j=0;j<i.length;j++)this.removeAttribute(i[j]);else for(var k in i)i.hasOwnProperty(k)&&this.removeAttribute(k);},removeStyle:function(i){var j=this;j.setStyle(i,'');if(j.$.style.removeAttribute)j.$.style.removeAttribute(e.cssStyleToDomStyle(i));if(!j.$.style.cssText)j.removeAttribute('style');},setStyle:function(i,j){this.$.style[e.cssStyleToDomStyle(i)]=j;return this;},setStyles:function(i){for(var j in i)this.setStyle(j,i[j]);return this;},setOpacity:function(i){if(c){i=Math.round(i*100);this.setStyle('filter',i>=100?'':'progid:DXImageTransform.Microsoft.Alpha(opacity='+i+')');}else this.setStyle('opacity',i);},unselectable:b.gecko?function(){this.$.style.MozUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:b.webkit?function(){this.$.style.KhtmlUserSelect='none';this.on('dragstart',function(i){i.data.preventDefault();});}:function(){if(c||b.opera){var i=this.$,j,k=0;i.unselectable='on';while(j=i.all[k++])switch(j.tagName.toLowerCase()){case 'iframe':case 'textarea':case 'input':case 'select':break;default:j.unselectable='on';}}},getPositionedAncestor:function(){var i=this;while(i.getName()!='html'){if(i.getComputedStyle('position')!='static')return i;i=i.getParent();}return null;},getDocumentPosition:function(i){var D=this;var j=0,k=0,l=D.getDocument().getBody(),m=D.getDocument().$.compatMode=='BackCompat',n=D.getDocument();if(document.documentElement.getBoundingClientRect){var o=D.$.getBoundingClientRect(),p=n.$,q=p.documentElement,r=q.clientTop||l.$.clientTop||0,s=q.clientLeft||l.$.clientLeft||0,t=true;if(c){var u=n.getDocumentElement().contains(D),v=n.getBody().contains(D);t=m&&v||!m&&u;}if(t){j=o.left+(!m&&q.scrollLeft||l.$.scrollLeft);j-=s;k=o.top+(!m&&q.scrollTop||l.$.scrollTop);
+k-=r;}}else{var w=D,x=null,y;while(w&&!(w.getName()=='body'||w.getName()=='html')){j+=w.$.offsetLeft-w.$.scrollLeft;k+=w.$.offsetTop-w.$.scrollTop;if(!w.equals(D)){j+=w.$.clientLeft||0;k+=w.$.clientTop||0;}var z=x;while(z&&!z.equals(w)){j-=z.$.scrollLeft;k-=z.$.scrollTop;z=z.getParent();}x=w;w=(y=w.$.offsetParent)?new h(y):null;}}if(i){var A=D.getWindow(),B=i.getWindow();if(!A.equals(B)&&A.$.frameElement){var C=new h(A.$.frameElement).getDocumentPosition(i);j+=C.x;k+=C.y;}}if(!document.documentElement.getBoundingClientRect)if(b.gecko&&!m){j+=D.$.clientLeft?1:0;k+=D.$.clientTop?1:0;}return{x:j,y:k};},scrollIntoView:function(i){var o=this;var j=o.getWindow(),k=j.getViewPaneSize().height,l=k*-1;if(i)l+=k;else{l+=o.$.offsetHeight||0;l+=parseInt(o.getComputedStyle('marginBottom')||0,10)||0;}var m=o.getDocumentPosition();l+=m.y;l=l<0?0:l;var n=j.getScrollPosition().y;if(l>n||l<n-k)j.$.scrollTo(0,l);},setState:function(i){var j=this;switch(i){case 1:j.addClass('cke_on');j.removeClass('cke_off');j.removeClass('cke_disabled');break;case 0:j.addClass('cke_disabled');j.removeClass('cke_off');j.removeClass('cke_on');break;default:j.addClass('cke_off');j.removeClass('cke_on');j.removeClass('cke_disabled');break;}},getFrameDocument:function(){var i=this.$;try{i.contentWindow.document;}catch(j){i.src=i.src;if(c&&b.version<7)window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');}return i&&new g(i.contentWindow.document);},copyAttributes:function(i,j){var p=this;var k=p.$.attributes;j=j||{};for(var l=0;l<k.length;l++){var m=k[l],n=m.nodeName.toLowerCase(),o;if(n in j)continue;if(n=='checked'&&(o=p.getAttribute(n)))i.setAttribute(n,o);else if(m.specified||c&&m.nodeValue&&n=='value'){o=p.getAttribute(n);if(o===null)o=m.nodeValue;i.setAttribute(n,o);}}if(p.$.style.cssText!=='')i.$.style.cssText=p.$.style.cssText;},renameNode:function(i){var l=this;if(l.getName()==i)return;var j=l.getDocument(),k=new h(i,j);l.copyAttributes(k);l.moveChildren(k);l.getParent()&&l.$.parentNode.replaceChild(k.$,l.$);k.$._cke_expando=l.$._cke_expando;l.$=k.$;},getChild:function(i){var j=this.$;if(!i.slice)j=j.childNodes[i];else while(i.length>0&&j)j=j.childNodes[i.shift()];return j?new d.node(j):null;},getChildCount:function(){return this.$.childNodes.length;},disableContextMenu:function(){this.on('contextmenu',function(i){if(!i.data.getTarget().hasClass('cke_enable_context_menu'))i.data.preventDefault();});},setSize:(function(){var i={width:['border-left-width','border-right-width','padding-left','padding-right'],height:['border-top-width','border-bottom-width','padding-top','padding-bottom']};
+return function(j,k,l){if(typeof k=='number'){if(l&&!(c&&b.quirks)){var m=0;for(var n=0,o=i[j].length;n<o;n++)m+=parseInt(this.getComputedStyle(i[j][n])||0,10);k-=m;}this.setStyle(j,k+'px');}};})()});a.command=function(i,j){this.uiItems=[];this.exec=function(k){if(this.state==0)return false;if(this.editorFocus)i.focus();return j.exec.call(this,i,k)!==false;};e.extend(this,j,{modes:{wysiwyg:1},editorFocus:true,state:2});a.event.call(this);};a.command.prototype={enable:function(){var i=this;if(i.state==0)i.setState(!i.preserveState||typeof i.previousState=='undefined'?2:i.previousState);},disable:function(){this.setState(0);},setState:function(i){var j=this;if(j.state==i)return false;j.previousState=j.state;j.state=i;j.fire('state');return true;},toggleState:function(){var i=this;if(i.state==2)i.setState(1);else if(i.state==1)i.setState(2);}};a.event.implementOn(a.command.prototype,true);a.ENTER_P=1;a.ENTER_BR=2;a.ENTER_DIV=3;a.config={customConfig:'config.js',autoUpdateElement:true,baseHref:'',contentsCss:a.basePath+'contents.css',contentsLangDirection:'ui',contentsLanguage:'',language:'',defaultLanguage:'en',enterMode:1,forceEnterMode:false,shiftEnterMode:2,corePlugins:'',docType:'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',bodyId:'',bodyClass:'',fullPage:false,height:200,plugins:'about,a11yhelp,basicstyles,bidi,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,dialogadvtab,div,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,liststyle,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,showborders,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',extraPlugins:'',removePlugins:'',protectedSource:[],tabIndex:0,theme:'default',skin:'kama',width:'',baseFloatZIndex:10000};var i=a.config;a.focusManager=function(j){if(j.focusManager)return j.focusManager;this.hasFocus=false;this._={editor:j};return this;};a.focusManager.prototype={focus:function(){var k=this;if(k._.timer)clearTimeout(k._.timer);if(!k.hasFocus){if(a.currentInstance)a.currentInstance.focusManager.forceBlur();var j=k._.editor;j.container.getChild(1).addClass('cke_focus');k.hasFocus=true;j.fire('focus');}},blur:function(){var j=this;if(j._.timer)clearTimeout(j._.timer);j._.timer=setTimeout(function(){delete j._.timer;
+j.forceBlur();},100);},forceBlur:function(){if(this.hasFocus){var j=this._.editor;j.container.getChild(1).removeClass('cke_focus');this.hasFocus=false;j.fire('blur');}}};(function(){var j={};a.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,'en-au':1,'en-ca':1,'en-gb':1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,'fr-ca':1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,is:1,it:1,ja:1,km:1,ko:1,lt:1,lv:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,'pt-br':1,pt:1,ro:1,ru:1,sk:1,sl:1,'sr-latn':1,sr:1,sv:1,th:1,tr:1,uk:1,vi:1,'zh-cn':1,zh:1},load:function(k,l,m){if(!k||!a.lang.languages[k])k=this.detect(l,k);if(!this[k])a.scriptLoader.load(a.getUrl('lang/'+k+'.js'),function(){m(k,this[k]);},this);else m(k,this[k]);},detect:function(k,l){var m=this.languages;l=l||navigator.userLanguage||navigator.language;var n=l.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),o=n[1],p=n[2];if(m[o+'-'+p])o=o+'-'+p;else if(!m[o])o=null;a.lang.detect=o?function(){return o;}:function(q){return q;};return o||k;}};})();a.scriptLoader=(function(){var j={},k={};return{load:function(l,m,n,o,p){var q=typeof l=='string';if(q)l=[l];if(!n)n=a;var r=l.length,s=[],t=[],u=function(z){if(m)if(q)m.call(n,z);else m.call(n,s,t);};if(r===0){u(true);return;}var v=function(z,A){(A?s:t).push(z);if(--r<=0){p&&a.document.getDocumentElement().removeStyle('cursor');u(A);}},w=function(z,A){j[z]=1;var B=k[z];delete k[z];for(var C=0;C<B.length;C++)B[C](z,A);},x=function(z){if(o!==true&&j[z]){v(z,true);return;}var A=k[z]||(k[z]=[]);A.push(v);if(A.length>1)return;var B=new h('script');B.setAttributes({type:'text/javascript',src:z});if(m)if(c)B.$.onreadystatechange=function(){if(B.$.readyState=='loaded'||B.$.readyState=='complete'){B.$.onreadystatechange=null;w(z,true);}};else{B.$.onload=function(){setTimeout(function(){w(z,true);},0);};B.$.onerror=function(){w(z,false);};}B.appendTo(a.document.getHead());};p&&a.document.getDocumentElement().setStyle('cursor','wait');for(var y=0;y<r;y++)x(l[y]);},loadCode:function(l){var m=new h('script');m.setAttribute('type','text/javascript');m.appendText(l);m.appendTo(a.document.getHead());}};})();a.resourceManager=function(j,k){var l=this;l.basePath=j;l.fileName=k;l.registered={};l.loaded={};l.externals={};l._={waitingList:{}};};a.resourceManager.prototype={add:function(j,k){if(this.registered[j])throw '[CKEDITOR.resourceManager.add] The resource name "'+j+'" is already registered.';a.fire(j+e.capitalize(this.fileName)+'Ready',this.registered[j]=k||{});},get:function(j){return this.registered[j]||null;
+},getPath:function(j){var k=this.externals[j];return a.getUrl(k&&k.dir||this.basePath+j+'/');},getFilePath:function(j){var k=this.externals[j];return a.getUrl(this.getPath(j)+(k&&typeof k.file=='string'?k.file:this.fileName+'.js'));},addExternal:function(j,k,l){j=j.split(',');for(var m=0;m<j.length;m++){var n=j[m];this.externals[n]={dir:k,file:l};}},load:function(j,k,l){if(!e.isArray(j))j=j?[j]:[];var m=this.loaded,n=this.registered,o=[],p={},q={};for(var r=0;r<j.length;r++){var s=j[r];if(!s)continue;if(!m[s]&&!n[s]){var t=this.getFilePath(s);o.push(t);if(!(t in p))p[t]=[];p[t].push(s);}else q[s]=this.get(s);}a.scriptLoader.load(o,function(u,v){if(v.length)throw '[CKEDITOR.resourceManager.load] Resource name "'+p[v[0]].join(',')+'" was not found at "'+v[0]+'".';for(var w=0;w<u.length;w++){var x=p[u[w]];for(var y=0;y<x.length;y++){var z=x[y];q[z]=this.get(z);m[z]=1;}}k.call(l,q);},this);}};a.plugins=new a.resourceManager('plugins/','plugin');var j=a.plugins;j.load=e.override(j.load,function(k){return function(l,m,n){var o={},p=function(q){k.call(this,q,function(r){e.extend(o,r);var s=[];for(var t in r){var u=r[t],v=u&&u.requires;if(v)for(var w=0;w<v.length;w++){if(!o[v[w]])s.push(v[w]);}}if(s.length)p.call(this,s);else{for(t in o){u=o[t];if(u.onLoad&&!u.onLoad._called){u.onLoad();u.onLoad._called=1;}}if(m)m.call(n||window,o);}},this);};p.call(this,l);};});j.setLang=function(k,l,m){var n=this.get(k),o=n.lang||(n.lang={});o[l]=m;};(function(){var k={},l=function(m,n){var o=function(){p.removeAllListeners();k[m]=1;n();},p=new h('img');p.on('load',o);p.on('error',o);p.setAttribute('src',m);};a.imageCacher={load:function(m,n){var o=m.length,p=function(){if(--o===0)n();};for(var q=0;q<m.length;q++){var r=m[q];if(k[r])p();else l(r,p);}}};})();a.skins=(function(){var k={},l={},m={},n=function(o,p,q,r){var s=k[p];if(!o.skin){o.skin=s;if(s.init)s.init(o);}var t=function(D){for(var E=0;E<D.length;E++)D[E]=a.getUrl(m[p]+D[E]);};function u(D,E){return D.replace(/url\s*\(([\s'"]*)(.*?)([\s"']*)\)/g,function(F,G,H,I){if(/^\/|^\w?:/.test(H))return F;else return 'url('+E+G+H+I+')';});};if(!l[p]){var v=s.preload;if(v&&v.length>0){t(v);a.imageCacher.load(v,function(){l[p]=1;n(o,p,q,r);});return;}l[p]=1;}q=s[q];var w=!q||!!q._isLoaded;if(w)r&&r();else{var x=q._pending||(q._pending=[]);x.push(r);if(x.length>1)return;var y=!q.css||!q.css.length,z=!q.js||!q.js.length,A=function(){if(y&&z){q._isLoaded=1;for(var D=0;D<x.length;D++){if(x[D])x[D]();}}};if(!y){var B=q.css;if(e.isArray(B)){t(B);
+for(var C=0;C<B.length;C++)a.document.appendStyleSheet(B[C]);}else{B=u(B,a.getUrl(m[p]));a.document.appendStyleText(B);}q.css=B;y=1;}if(!z){t(q.js);a.scriptLoader.load(q.js,function(){z=1;A();});}A();}};return{add:function(o,p){k[o]=p;p.skinPath=m[o]||(m[o]=a.getUrl('skins/'+o+'/'));},load:function(o,p,q){var r=o.skinName,s=o.skinPath;if(k[r])n(o,r,p,q);else{m[r]=s;a.scriptLoader.load(a.getUrl(s+'skin.js'),function(){n(o,r,p,q);});}}};})();a.themes=new a.resourceManager('themes/','theme');a.ui=function(k){if(k.ui)return k.ui;this._={handlers:{},items:{},editor:k};return this;};var k=a.ui;k.prototype={add:function(l,m,n){this._.items[l]={type:m,command:n.command||null,args:Array.prototype.slice.call(arguments,2)};},create:function(l){var q=this;var m=q._.items[l],n=m&&q._.handlers[m.type],o=m&&m.command&&q._.editor.getCommand(m.command),p=n&&n.create.apply(q,m.args);if(o)o.uiItems.push(p);return p;},addHandler:function(l,m){this._.handlers[l]=m;}};(function(){var l=0,m=function(){var x='editor'+ ++l;return a.instances&&a.instances[x]?m():x;},n={},o=function(x){var y=x.config.customConfig;if(!y)return false;y=a.getUrl(y);var z=n[y]||(n[y]={});if(z.fn){z.fn.call(x,x.config);if(a.getUrl(x.config.customConfig)==y||!o(x))x.fireOnce('customConfigLoaded');}else a.scriptLoader.load(y,function(){if(a.editorConfig)z.fn=a.editorConfig;else z.fn=function(){};o(x);});return true;},p=function(x,y){x.on('customConfigLoaded',function(){if(y){if(y.on)for(var z in y.on)x.on(z,y.on[z]);e.extend(x.config,y,true);delete x.config.on;}q(x);});if(y&&y.customConfig!=undefined)x.config.customConfig=y.customConfig;if(!o(x))x.fireOnce('customConfigLoaded');},q=function(x){var y=x.config.skin.split(','),z=y[0],A=a.getUrl(y[1]||'skins/'+z+'/');x.skinName=z;x.skinPath=A;x.skinClass='cke_skin_'+z;x.tabIndex=x.config.tabIndex||x.element.getAttribute('tabindex')||0;x.fireOnce('configLoaded');t(x);},r=function(x){a.lang.load(x.config.language,x.config.defaultLanguage,function(y,z){x.langCode=y;x.lang=e.prototypedCopy(z);if(b.gecko&&b.version<10900&&x.lang.dir=='rtl')x.lang.dir='ltr';var A=x.config;A.contentsLangDirection=='ui'&&(A.contentsLangDirection=x.lang.dir);s(x);});},s=function(x){var y=x.config,z=y.plugins,A=y.extraPlugins,B=y.removePlugins;if(A){var C=new RegExp('(?:^|,)(?:'+A.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');z+=','+A;}if(B){C=new RegExp('(?:^|,)(?:'+B.replace(/\s*,\s*/g,'|')+')(?=,|$)','g');z=z.replace(C,'');}j.load(z.split(','),function(D){var E=[],F=[],G=[];
+x.plugins=D;for(var H in D){var I=D[H],J=I.lang,K=j.getPath(H),L=null;I.path=K;if(J){L=e.indexOf(J,x.langCode)>=0?x.langCode:J[0];if(!I.lang[L])G.push(a.getUrl(K+'lang/'+L+'.js'));else{e.extend(x.lang,I.lang[L]);L=null;}}F.push(L);E.push(I);}a.scriptLoader.load(G,function(){var M=['beforeInit','init','afterInit'];for(var N=0;N<M.length;N++)for(var O=0;O<E.length;O++){var P=E[O];if(N===0&&F[O]&&P.lang)e.extend(x.lang,P.lang[F[O]]);if(P[M[N]])P[M[N]](x);}x.fire('pluginsLoaded');u(x);});});},t=function(x){a.skins.load(x,'editor',function(){r(x);});},u=function(x){var y=x.config.theme;a.themes.load(y,function(){var z=x.theme=a.themes.get(y);z.path=a.themes.getPath(y);z.build(x);if(x.config.autoUpdateElement)v(x);});},v=function(x){var y=x.element;if(x.elementMode==1&&y.is('textarea')){var z=y.$.form&&new h(y.$.form);if(z){function A(){x.updateElement();};z.on('submit',A);if(!z.$.submit.nodeName)z.$.submit=e.override(z.$.submit,function(B){return function(){x.updateElement();if(B.apply)B.apply(this,arguments);else B();};});x.on('destroy',function(){z.removeListener('submit',A);});}}};function w(){var x,y=this._.commands,z=this.mode;for(var A in y){x=y[A];x[x.startDisabled?'disable':x.modes[z]?'enable':'disable']();}};a.editor.prototype._init=function(){var z=this;var x=h.get(z._.element),y=z._.instanceConfig;delete z._.element;delete z._.instanceConfig;z._.commands={};z._.styles=[];z.element=x;z.name=x&&z.elementMode==1&&(x.getId()||x.getNameAtt())||m();if(z.name in a.instances)throw '[CKEDITOR.editor] The instance "'+z.name+'" already exists.';z.config=e.prototypedCopy(i);z.ui=new k(z);z.focusManager=new a.focusManager(z);a.fire('instanceCreated',null,z);z.on('mode',w,null,null,1);p(z,y);};})();e.extend(a.editor.prototype,{addCommand:function(l,m){return this._.commands[l]=new a.command(this,m);},addCss:function(l){this._.styles.push(l);},destroy:function(l){var r=this;if(!l)r.updateElement();if(r.mode)r._.modes[r.mode].unload(r.getThemeSpace('contents'));r.theme.destroy(r);var m,n=0,o,p,q;if(r.toolbox){m=r.toolbox.toolbars;for(;n<m.length;n++){p=m[n].items;for(o=0;o<p.length;o++){q=p[o];if(q.clickFn)e.removeFunction(q.clickFn);if(q.keyDownFn)e.removeFunction(q.keyDownFn);if(q.index)k.button._.instances[q.index]=null;}}}if(r.contextMenu)e.removeFunction(r.contextMenu._.functionId);if(r._.filebrowserFn)e.removeFunction(r._.filebrowserFn);r.fire('destroy');a.remove(r);a.fire('instanceDestroyed',null,r);},execCommand:function(l,m){var n=this.getCommand(l),o={name:l,commandData:m,command:n};
+if(n&&n.state!=0)if(this.fire('beforeCommandExec',o)!==true){o.returnValue=n.exec(o.commandData);if(!n.async&&this.fire('afterCommandExec',o)!==true)return o.returnValue;}return false;},getCommand:function(l){return this._.commands[l];},getData:function(){var n=this;n.fire('beforeGetData');var l=n._.data;if(typeof l!='string'){var m=n.element;if(m&&n.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();else l='';}l={dataValue:l};n.fire('getData',l);return l.dataValue;},getSnapshot:function(){var l=this.fire('getSnapshot');if(typeof l!='string'){var m=this.element;if(m&&this.elementMode==1)l=m.is('textarea')?m.getValue():m.getHtml();}return l;},loadSnapshot:function(l){this.fire('loadSnapshot',l);},setData:function(l,m){if(m)this.on('dataReady',function(o){o.removeListener();m.call(o.editor);});var n={dataValue:l};this.fire('setData',n);this._.data=n.dataValue;this.fire('afterSetData',n);},insertHtml:function(l){this.fire('insertHtml',l);},insertElement:function(l){this.fire('insertElement',l);},checkDirty:function(){return this.mayBeDirty&&this._.previousValue!==this.getSnapshot();},resetDirty:function(){if(this.mayBeDirty)this._.previousValue=this.getSnapshot();},updateElement:function(){var n=this;var l=n.element;if(l&&n.elementMode==1){var m=n.getData();if(n.config.htmlEncodeOutput)m=e.htmlEncode(m);if(l.is('textarea'))l.setValue(m);else l.setHtml(m);}}});a.on('loaded',function(){var l=a.editor._pending;if(l){delete a.editor._pending;for(var m=0;m<l.length;m++)l[m]._init();}});a.htmlParser=function(){this._={htmlPartsRegex:new RegExp("<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:[^\"'>]+)|(?:\"[^\"]*\")|(?:'[^']*'))*)\\/?>))",'g')};};(function(){var l=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,m={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};a.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(n){var A=this;var o,p,q=0,r;while(o=A._.htmlPartsRegex.exec(n)){var s=o.index;if(s>q){var t=n.substring(q,s);if(r)r.push(t);else A.onText(t);}q=A._.htmlPartsRegex.lastIndex;if(p=o[1]){p=p.toLowerCase();if(r&&f.$cdata[p]){A.onCDATA(r.join(''));r=null;}if(!r){A.onTagClose(p);continue;}}if(r){r.push(o[0]);continue;}if(p=o[3]){p=p.toLowerCase();if(/="/.test(p))continue;var u={},v,w=o[4],x=!!(w&&w.charAt(w.length-1)=='/');if(w)while(v=l.exec(w)){var y=v[1].toLowerCase(),z=v[2]||v[3]||v[4]||'';
+if(!z&&m[y])u[y]=y;else u[y]=z;}A.onTagOpen(p,u,x);if(!r&&f.$cdata[p])r=[];continue;}if(p=o[2])A.onComment(p);}if(n.length>q)A.onText(n.substring(q,n.length));}};})();a.htmlParser.comment=function(l){this.value=l;this._={isBlockLike:false};};a.htmlParser.comment.prototype={type:8,writeHtml:function(l,m){var n=this.value;if(m){if(!(n=m.onComment(n,this)))return;if(typeof n!='string'){n.parent=this.parent;n.writeHtml(l,m);return;}}l.comment(n);}};(function(){var l=/[\t\r\n ]{2,}|[\t\r\n]/g;a.htmlParser.text=function(m){this.value=m;this._={isBlockLike:false};};a.htmlParser.text.prototype={type:3,writeHtml:function(m,n){var o=this.value;if(n&&!(o=n.onText(o,this)))return;m.text(o);}};})();(function(){a.htmlParser.cdata=function(l){this.value=l;};a.htmlParser.cdata.prototype={type:3,writeHtml:function(l){l.write(this.value);}};})();a.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false};};(function(){var l={colgroup:1,dd:1,dt:1,li:1,option:1,p:1,td:1,tfoot:1,th:1,thead:1,tr:1},m=e.extend({table:1,ul:1,ol:1,dl:1},f.table,f.ul,f.ol,f.dl),n=f.$list,o=f.$listItem;a.htmlParser.fragment.fromHtml=function(p,q){var r=new a.htmlParser(),s=[],t=new a.htmlParser.fragment(),u=[],v=[],w=t,x=false,y;function z(E){var F;if(u.length>0)for(var G=0;G<u.length;G++){var H=u[G],I=H.name,J=f[I],K=w.name&&f[w.name];if((!K||K[I])&&(!E||!J||J[E]||!f[E])){if(!F){A();F=1;}H=H.clone();H.parent=w;w=H;u.splice(G,1);G--;}}};function A(E){while(v.length-(E||0)>0)w.add(v.shift());};function B(E,F,G){F=F||w||t;if(q&&!F.type){var H,I;if(E.attributes&&(I=E.attributes._cke_real_element_type))H=I;else H=E.name;if(H&&!(H in f.$body)&&!(H in f.$nonBodyContent)){var J=w;w=F;r.onTagOpen(q,{});F=w;if(G)w=J;}}if(E._.isBlockLike&&E.name!='pre'){var K=E.children.length,L=E.children[K-1],M;if(L&&L.type==3)if(!(M=e.rtrim(L.value)))E.children.length=K-1;else L.value=M;}F.add(E);if(E.returnPoint){w=E.returnPoint;delete E.returnPoint;}};r.onTagOpen=function(E,F,G){var H=new a.htmlParser.element(E,F);if(H.isUnknown&&G)H.isEmpty=true;if(f.$removeEmpty[E]){u.push(H);return;}else if(E=='pre')x=true;else if(E=='br'&&x){w.add(new a.htmlParser.text('\n'));return;}if(E=='br'){v.push(H);return;}var I=w.name,J=I&&(f[I]||(w._.isBlockLike?f.div:f.span));if(J&&!H.isUnknown&&!w.isUnknown&&!J[E]){var K=false,L;if(E in n&&I in n){var M=w.children,N=M[M.length-1];if(!(N&&N.name in o))B(N=new a.htmlParser.element('li'),w);y=w,L=N;}else if(E==I)B(w,w.parent);else{if(m[I]){if(!y)y=w;
+}else{B(w,w.parent,true);if(!l[I])u.unshift(w);}K=true;}if(L)w=L;else w=w.returnPoint||w.parent;if(K){r.onTagOpen.apply(this,arguments);return;}}z(E);A();H.parent=w;H.returnPoint=y;y=0;if(H.isEmpty)B(H);else w=H;};r.onTagClose=function(E){for(var F=u.length-1;F>=0;F--){if(E==u[F].name){u.splice(F,1);return;}}var G=[],H=[],I=w;while(I.type&&I.name!=E){if(!I._.isBlockLike)H.unshift(I);G.push(I);I=I.parent;}if(I.type){for(F=0;F<G.length;F++){var J=G[F];B(J,J.parent);}w=I;if(w.name=='pre')x=false;if(I._.isBlockLike)A();B(I,I.parent);if(I==w)w=w.parent;u=u.concat(H);}if(E=='body')q=false;};r.onText=function(E){if(!w._.hasInlineStarted&&!x){E=e.ltrim(E);if(E.length===0)return;}A();z();if(q&&(!w.type||w.name=='body')&&e.trim(E))this.onTagOpen(q,{});if(!x)E=E.replace(/[\t\r\n ]{2,}|[\t\r\n]/g,' ');w.add(new a.htmlParser.text(E));};r.onCDATA=function(E){w.add(new a.htmlParser.cdata(E));};r.onComment=function(E){w.add(new a.htmlParser.comment(E));};r.parse(p);A(!c&&1);while(w.type){var C=w.parent,D=w;if(q&&(!C.type||C.name=='body')&&!f.$body[D.name]){w=C;r.onTagOpen(q,{});C=w;}C.add(D);w=C;}return t;};a.htmlParser.fragment.prototype={add:function(p){var s=this;var q=s.children.length,r=q>0&&s.children[q-1]||null;if(r){if(p._.isBlockLike&&r.type==3){r.value=e.rtrim(r.value);if(r.value.length===0){s.children.pop();s.add(p);return;}}r.next=p;}p.previous=r;p.parent=s;s.children.push(p);s._.hasInlineStarted=p.type==3||p.type==1&&!p._.isBlockLike;},writeHtml:function(p,q){var r;this.filterChildren=function(){var s=new a.htmlParser.basicWriter();this.writeChildrenHtml.call(this,s,q,true);var t=s.getHtml();this.children=new a.htmlParser.fragment.fromHtml(t).children;r=1;};!this.name&&q&&q.onFragment(this);this.writeChildrenHtml(p,r?null:q);},writeChildrenHtml:function(p,q){for(var r=0;r<this.children.length;r++)this.children[r].writeHtml(p,q);}};})();a.htmlParser.element=function(l,m){var r=this;r.name=l;r.attributes=m||(m={});r.children=[];var n=m._cke_real_element_type||l,o=f,p=!!(o.$nonBodyContent[n]||o.$block[n]||o.$listItem[n]||o.$tableContent[n]||o.$nonEditable[n]||n=='br'),q=!!o.$empty[l];r.isEmpty=q;r.isUnknown=!o[l];r._={isBlockLike:p,hasInlineStarted:q||!p};};(function(){var l=function(m,n){m=m[0];n=n[0];return m<n?-1:m>n?1:0;};a.htmlParser.element.prototype={type:1,add:a.htmlParser.fragment.prototype.add,clone:function(){return new a.htmlParser.element(this.name,this.attributes);},writeHtml:function(m,n){var o=this.attributes,p=this,q=p.name,r,s,t,u;p.filterChildren=function(){if(!u){var z=new a.htmlParser.basicWriter();
+a.htmlParser.fragment.prototype.writeChildrenHtml.call(p,z,n);p.children=new a.htmlParser.fragment.fromHtml(z.getHtml()).children;u=1;}};if(n){for(;;){if(!(q=n.onElementName(q)))return;p.name=q;if(!(p=n.onElement(p)))return;p.parent=this.parent;if(p.name==q)break;if(p.type!=1){p.writeHtml(m,n);return;}q=p.name;if(!q){this.writeChildrenHtml.call(p,m,u?null:n);return;}}o=p.attributes;}m.openTag(q,o);var v=[];for(var w=0;w<2;w++)for(r in o){s=r;t=o[r];if(w==1)v.push([r,t]);else if(n){for(;;){if(!(s=n.onAttributeName(r))){delete o[r];break;}else if(s!=r){delete o[r];r=s;continue;}else break;}if(s)if((t=n.onAttribute(p,s,t))===false)delete o[s];else o[s]=t;}}if(m.sortAttributes)v.sort(l);var x=v.length;for(w=0;w<x;w++){var y=v[w];m.attribute(y[0],y[1]);}m.openTagClose(q,p.isEmpty);if(!p.isEmpty){this.writeChildrenHtml.call(p,m,u?null:n);m.closeTag(q);}},writeChildrenHtml:function(m,n){a.htmlParser.fragment.prototype.writeChildrenHtml.apply(this,arguments);}};})();(function(){a.htmlParser.filter=e.createClass({$:function(q){this._={elementNames:[],attributeNames:[],elements:{$length:0},attributes:{$length:0}};if(q)this.addRules(q,10);},proto:{addRules:function(q,r){var s=this;if(typeof r!='number')r=10;m(s._.elementNames,q.elementNames,r);m(s._.attributeNames,q.attributeNames,r);n(s._.elements,q.elements,r);n(s._.attributes,q.attributes,r);s._.text=o(s._.text,q.text,r)||s._.text;s._.comment=o(s._.comment,q.comment,r)||s._.comment;s._.root=o(s._.root,q.root,r)||s._.root;},onElementName:function(q){return l(q,this._.elementNames);},onAttributeName:function(q){return l(q,this._.attributeNames);},onText:function(q){var r=this._.text;return r?r.filter(q):q;},onComment:function(q,r){var s=this._.comment;return s?s.filter(q,r):q;},onFragment:function(q){var r=this._.root;return r?r.filter(q):q;},onElement:function(q){var v=this;var r=[v._.elements['^'],v._.elements[q.name],v._.elements.$],s,t;for(var u=0;u<3;u++){s=r[u];if(s){t=s.filter(q,v);if(t===false)return null;if(t&&t!=q)return v.onNode(t);if(q.parent&&!q.name)break;}}return q;},onNode:function(q){var r=q.type;return r==1?this.onElement(q):r==3?new a.htmlParser.text(this.onText(q.value)):r==8?new a.htmlParser.comment(this.onComment(q.value)):null;},onAttribute:function(q,r,s){var t=this._.attributes[r];if(t){var u=t.filter(s,q,this);if(u===false)return false;if(typeof u!='undefined')return u;}return s;}}});function l(q,r){for(var s=0;q&&s<r.length;s++){var t=r[s];q=q.replace(t[0],t[1]);}return q;};function m(q,r,s){if(typeof r=='function')r=[r];
+var t,u,v=q.length,w=r&&r.length;if(w){for(t=0;t<v&&q[t].pri<s;t++){}for(u=w-1;u>=0;u--){var x=r[u];if(x){x.pri=s;q.splice(t,0,x);}}}};function n(q,r,s){if(r)for(var t in r){var u=q[t];q[t]=o(u,r[t],s);if(!u)q.$length++;}};function o(q,r,s){if(r){r.pri=s;if(q){if(!q.splice){if(q.pri>s)q=[r,q];else q=[q,r];q.filter=p;}else m(q,r,s);return q;}else{r.filter=r;return r;}}};function p(q){var r=q.type||q instanceof a.htmlParser.fragment;for(var s=0;s<this.length;s++){if(r)var t=q.type,u=q.name;var v=this[s],w=v.apply(window,arguments);if(w===false)return w;if(r){if(w&&(w.name!=u||w.type!=t))return w;}else if(typeof w!='string')return w;w!=undefined&&(q=w);}return q;};})();a.htmlParser.basicWriter=e.createClass({$:function(){this._={output:[]};},proto:{openTag:function(l,m){this._.output.push('<',l);},openTagClose:function(l,m){if(m)this._.output.push(' />');else this._.output.push('>');},attribute:function(l,m){if(typeof m=='string')m=e.htmlEncodeAttr(m);this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){this._.output.push('</',l,'>');},text:function(l){this._.output.push(l);},comment:function(l){this._.output.push('<!--',l,'-->');},write:function(l){this._.output.push(l);},reset:function(){this._.output=[];this._.indent=false;},getHtml:function(l){var m=this._.output.join('');if(l)this.reset();return m;}}});delete a.loadFullCore;a.instances={};a.document=new g(document);a.add=function(l){a.instances[l.name]=l;l.on('focus',function(){if(a.currentInstance!=l){a.currentInstance=l;a.fire('currentInstance');}});l.on('blur',function(){if(a.currentInstance==l){a.currentInstance=null;a.fire('currentInstance');}});};a.remove=function(l){delete a.instances[l.name];};a.on('instanceDestroyed',function(){if(e.isEmpty(this.instances))a.fire('reset');});a.TRISTATE_ON=1;a.TRISTATE_OFF=2;a.TRISTATE_DISABLED=0;d.comment=e.createClass({base:d.node,$:function(l,m){if(typeof l=='string')l=(m?m.$:document).createComment(l);this.base(l);},proto:{type:8,getOuterHtml:function(){return '<!--'+this.$.nodeValue+'-->';}}});(function(){var l={address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1},m={body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,caption:1,form:1},n=function(o){var p=o.getChildren();for(var q=0,r=p.count();q<r;q++){var s=p.getItem(q);if(s.type==1&&f.$block[s.getName()])return true;}return false;};d.elementPath=function(o){var u=this;var p=null,q=null,r=[],s=o;while(s){if(s.type==1){if(!u.lastElement)u.lastElement=s;var t=s.getName();if(c&&s.$.scopeName!='HTML')t=s.$.scopeName.toLowerCase()+':'+t;
+if(!q){if(!p&&l[t])p=s;if(m[t])if(!p&&t=='div'&&!n(s))p=s;else q=s;}r.push(s);if(t=='body')break;}s=s.getParent();}u.block=p;u.blockLimit=q;u.elements=r;};})();d.elementPath.prototype={compare:function(l){var m=this.elements,n=l&&l.elements;if(!n||m.length!=n.length)return false;for(var o=0;o<m.length;o++){if(!m[o].equals(n[o]))return false;}return true;},contains:function(l){var m=this.elements;for(var n=0;n<m.length;n++){if(m[n].getName() in l)return m[n];}return null;}};d.text=function(l,m){if(typeof l=='string')l=(m?m.$:document).createTextNode(l);this.$=l;};d.text.prototype=new d.node();e.extend(d.text.prototype,{type:3,getLength:function(){return this.$.nodeValue.length;},getText:function(){return this.$.nodeValue;},split:function(l){var q=this;if(c&&l==q.getLength()){var m=q.getDocument().createText('');m.insertAfter(q);return m;}var n=q.getDocument(),o=new d.text(q.$.splitText(l),n);if(b.ie8){var p=new d.text('',n);p.insertAfter(o);p.remove();}return o;},substring:function(l,m){if(typeof m!='number')return this.$.nodeValue.substr(l);else return this.$.nodeValue.substring(l,m);}});d.documentFragment=function(l){l=l||a.document;this.$=l.$.createDocumentFragment();};e.extend(d.documentFragment.prototype,h.prototype,{type:11,insertAfterNode:function(l){l=l.$;l.parentNode.insertBefore(this.$,l.nextSibling);}},true,{append:1,appendBogus:1,getFirst:1,getLast:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});(function(){function l(t,u){if(this._.end)return null;var v,w=this.range,x,y=this.guard,z=this.type,A=t?'getPreviousSourceNode':'getNextSourceNode';if(!this._.start){this._.start=1;w.trim();if(w.collapsed){this.end();return null;}}if(!t&&!this._.guardLTR){var B=w.endContainer,C=B.getChild(w.endOffset);this._.guardLTR=function(G,H){return(!H||!B.equals(G))&&(!C||!G.equals(C))&&(G.type!=1||!H||G.getName()!='body');};}if(t&&!this._.guardRTL){var D=w.startContainer,E=w.startOffset>0&&D.getChild(w.startOffset-1);this._.guardRTL=function(G,H){return(!H||!D.equals(G))&&(!E||!G.equals(E))&&(G.type!=1||!H||G.getName()!='body');};}var F=t?this._.guardRTL:this._.guardLTR;if(y)x=function(G,H){if(F(G,H)===false)return false;return y(G,H);};else x=F;if(this.current)v=this.current[A](false,z,x);else if(t){v=w.endContainer;if(w.endOffset>0){v=v.getChild(w.endOffset-1);if(x(v)===false)v=null;}else v=x(v,true)===false?null:v.getPreviousSourceNode(true,z,x);}else{v=w.startContainer;
+v=v.getChild(w.startOffset);if(v){if(x(v)===false)v=null;}else v=x(w.startContainer,true)===false?null:w.startContainer.getNextSourceNode(true,z,x);}while(v&&!this._.end){this.current=v;if(!this.evaluator||this.evaluator(v)!==false){if(!u)return v;}else if(u&&this.evaluator)return false;v=v[A](false,z,x);}this.end();return this.current=null;};function m(t){var u,v=null;while(u=l.call(this,t))v=u;return v;};d.walker=e.createClass({$:function(t){this.range=t;this._={};},proto:{end:function(){this._.end=1;},next:function(){return l.call(this);},previous:function(){return l.call(this,true);},checkForward:function(){return l.call(this,false,true)!==false;},checkBackward:function(){return l.call(this,true,true)!==false;},lastForward:function(){return m.call(this);},lastBackward:function(){return m.call(this,true);},reset:function(){delete this.current;this._={};}}});var n={block:1,'list-item':1,table:1,'table-row-group':1,'table-header-group':1,'table-footer-group':1,'table-row':1,'table-column-group':1,'table-column':1,'table-cell':1,'table-caption':1},o={hr:1};h.prototype.isBlockBoundary=function(t){var u=e.extend({},o,t||{});return n[this.getComputedStyle('display')]||u[this.getName()];};d.walker.blockBoundary=function(t){return function(u,v){return!(u.type==1&&u.isBlockBoundary(t));};};d.walker.listItemBoundary=function(){return this.blockBoundary({br:1});};d.walker.bookmark=function(t,u){function v(w){return w&&w.getName&&w.getName()=='span'&&w.hasAttribute('_cke_bookmark');};return function(w){var x,y;x=w&&!w.getName&&(y=w.getParent())&&v(y);x=t?x:x||v(w);return u^x;};};d.walker.whitespaces=function(t){return function(u){var v=u&&u.type==3&&!e.trim(u.getText());return t^v;};};d.walker.invisible=function(t){var u=d.walker.whitespaces();return function(v){var w=u(v)||v.is&&!v.$.offsetHeight;return t^w;};};var p=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,q=d.walker.whitespaces(true),r=d.walker.bookmark(false,true),s=function(t){return r(t)&&q(t);};h.prototype.getBogus=function(){var t=this.getLast(s);if(t&&(!c?t.is&&t.is('br'):t.getText&&p.test(t.getText())))return t;return false;};})();d.range=function(l){var m=this;m.startContainer=null;m.startOffset=null;m.endContainer=null;m.endOffset=null;m.collapsed=true;m.document=l;};(function(){var l=function(t){t.collapsed=t.startContainer&&t.endContainer&&t.startContainer.equals(t.endContainer)&&t.startOffset==t.endOffset;},m=function(t,u,v){t.optimizeBookmark();var w=t.startContainer,x=t.endContainer,y=t.startOffset,z=t.endOffset,A,B;
+if(x.type==3)x=x.split(z);else if(x.getChildCount()>0)if(z>=x.getChildCount()){x=x.append(t.document.createText(''));B=true;}else x=x.getChild(z);if(w.type==3){w.split(y);if(w.equals(x))x=w.getNext();}else if(!y){w=w.getFirst().insertBeforeMe(t.document.createText(''));A=true;}else if(y>=w.getChildCount()){w=w.append(t.document.createText(''));A=true;}else w=w.getChild(y).getPrevious();var C=w.getParents(),D=x.getParents(),E,F,G;for(E=0;E<C.length;E++){F=C[E];G=D[E];if(!F.equals(G))break;}var H=v,I,J,K,L;for(var M=E;M<C.length;M++){I=C[M];if(H&&!I.equals(w))J=H.append(I.clone());K=I.getNext();while(K){if(K.equals(D[M])||K.equals(x))break;L=K.getNext();if(u==2)H.append(K.clone(true));else{K.remove();if(u==1)H.append(K);}K=L;}if(H)H=J;}H=v;for(var N=E;N<D.length;N++){I=D[N];if(u>0&&!I.equals(x))J=H.append(I.clone());if(!C[N]||I.$.parentNode!=C[N].$.parentNode){K=I.getPrevious();while(K){if(K.equals(C[N])||K.equals(w))break;L=K.getPrevious();if(u==2)H.$.insertBefore(K.$.cloneNode(true),H.$.firstChild);else{K.remove();if(u==1)H.$.insertBefore(K.$,H.$.firstChild);}K=L;}}if(H)H=J;}if(u==2){var O=t.startContainer;if(O.type==3){O.$.data+=O.$.nextSibling.data;O.$.parentNode.removeChild(O.$.nextSibling);}var P=t.endContainer;if(P.type==3&&P.$.nextSibling){P.$.data+=P.$.nextSibling.data;P.$.parentNode.removeChild(P.$.nextSibling);}}else{if(F&&G&&(w.$.parentNode!=F.$.parentNode||x.$.parentNode!=G.$.parentNode)){var Q=G.getIndex();if(A&&G.$.parentNode==w.$.parentNode)Q--;t.setStart(G.getParent(),Q);}t.collapse(true);}if(A)w.remove();if(B&&x.$.parentNode)x.remove();},n={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1};function o(t){var u=false,v=d.walker.bookmark(true);return function(w){if(v(w))return true;if(w.type==3){if(e.trim(w.getText()).length)return false;}else if(w.type==1)if(!n[w.getName()])if(!t&&!c&&w.getName()=='br'&&!u)u=true;else return false;return true;};};function p(t){return t.type!=3&&t.getName() in f.$removeEmpty||!e.trim(t.getText())||t.getParent().hasAttribute('_cke_bookmark');};var q=new d.walker.whitespaces(),r=new d.walker.bookmark();function s(t){return!q(t)&&!r(t);};d.range.prototype={clone:function(){var u=this;var t=new d.range(u.document);t.startContainer=u.startContainer;t.startOffset=u.startOffset;t.endContainer=u.endContainer;t.endOffset=u.endOffset;t.collapsed=u.collapsed;return t;},collapse:function(t){var u=this;if(t){u.endContainer=u.startContainer;
+u.endOffset=u.startOffset;}else{u.startContainer=u.endContainer;u.startOffset=u.endOffset;}u.collapsed=true;},cloneContents:function(){var t=new d.documentFragment(this.document);if(!this.collapsed)m(this,2,t);return t;},deleteContents:function(){if(this.collapsed)return;m(this,0);},extractContents:function(){var t=new d.documentFragment(this.document);if(!this.collapsed)m(this,1,t);return t;},createBookmark:function(t){var z=this;var u,v,w,x,y=z.collapsed;u=z.document.createElement('span');u.setAttribute('_cke_bookmark',1);u.setStyle('display','none');u.setHtml('&nbsp;');if(t){w='cke_bm_'+e.getNextNumber();u.setAttribute('id',w+'S');}if(!y){v=u.clone();v.setHtml('&nbsp;');if(t)v.setAttribute('id',w+'E');x=z.clone();x.collapse();x.insertNode(v);}x=z.clone();x.collapse(true);x.insertNode(u);if(v){z.setStartAfter(u);z.setEndBefore(v);}else z.moveToPosition(u,4);return{startNode:t?w+'S':u,endNode:t?w+'E':v,serializable:t,collapsed:y};},createBookmark2:function(t){var B=this;var u=B.startContainer,v=B.endContainer,w=B.startOffset,x=B.endOffset,y=B.collapsed,z,A;if(!u||!v)return{start:0,end:0};if(t){if(u.type==1){z=u.getChild(w);if(z&&z.type==3&&w>0&&z.getPrevious().type==3){u=z;w=0;}}while(u.type==3&&(A=u.getPrevious())&&A.type==3){u=A;w+=A.getLength();}if(!y){if(v.type==1){z=v.getChild(x);if(z&&z.type==3&&x>0&&z.getPrevious().type==3){v=z;x=0;}}while(v.type==3&&(A=v.getPrevious())&&A.type==3){v=A;x+=A.getLength();}}}return{start:u.getAddress(t),end:y?null:v.getAddress(t),startOffset:w,endOffset:x,normalized:t,collapsed:y,is2:true};},moveToBookmark:function(t){var B=this;if(t.is2){var u=B.document.getByAddress(t.start,t.normalized),v=t.startOffset,w=t.end&&B.document.getByAddress(t.end,t.normalized),x=t.endOffset;B.setStart(u,v);if(w)B.setEnd(w,x);else B.collapse(true);}else{var y=t.serializable,z=y?B.document.getById(t.startNode):t.startNode,A=y?B.document.getById(t.endNode):t.endNode;B.setStartBefore(z);z.remove();if(A){B.setEndBefore(A);A.remove();}else B.collapse(true);}},getBoundaryNodes:function(){var y=this;var t=y.startContainer,u=y.endContainer,v=y.startOffset,w=y.endOffset,x;if(t.type==1){x=t.getChildCount();if(x>v)t=t.getChild(v);else if(x<1)t=t.getPreviousSourceNode();else{t=t.$;while(t.lastChild)t=t.lastChild;t=new d.node(t);t=t.getNextSourceNode()||t;}}if(u.type==1){x=u.getChildCount();if(x>w)u=u.getChild(w).getPreviousSourceNode(true);else if(x<1)u=u.getPreviousSourceNode();else{u=u.$;while(u.lastChild)u=u.lastChild;u=new d.node(u);}}if(t.getPosition(u)&2)t=u;
+return{startNode:t,endNode:u};},getCommonAncestor:function(t,u){var y=this;var v=y.startContainer,w=y.endContainer,x;if(v.equals(w)){if(t&&v.type==1&&y.startOffset==y.endOffset-1)x=v.getChild(y.startOffset);else x=v;}else x=v.getCommonAncestor(w);return u&&!x.is?x.getParent():x;},optimize:function(){var v=this;var t=v.startContainer,u=v.startOffset;if(t.type!=1)if(!u)v.setStartBefore(t);else if(u>=t.getLength())v.setStartAfter(t);t=v.endContainer;u=v.endOffset;if(t.type!=1)if(!u)v.setEndBefore(t);else if(u>=t.getLength())v.setEndAfter(t);},optimizeBookmark:function(){var v=this;var t=v.startContainer,u=v.endContainer;if(t.is&&t.is('span')&&t.hasAttribute('_cke_bookmark'))v.setStartAt(t,3);if(u&&u.is&&u.is('span')&&u.hasAttribute('_cke_bookmark'))v.setEndAt(u,4);},trim:function(t,u){var B=this;var v=B.startContainer,w=B.startOffset,x=B.collapsed;if((!t||x)&&v&&v.type==3){if(!w){w=v.getIndex();v=v.getParent();}else if(w>=v.getLength()){w=v.getIndex()+1;v=v.getParent();}else{var y=v.split(w);w=v.getIndex()+1;v=v.getParent();if(B.startContainer.equals(B.endContainer))B.setEnd(y,B.endOffset-B.startOffset);else if(v.equals(B.endContainer))B.endOffset+=1;}B.setStart(v,w);if(x){B.collapse(true);return;}}var z=B.endContainer,A=B.endOffset;if(!(u||x)&&z&&z.type==3){if(!A){A=z.getIndex();z=z.getParent();}else if(A>=z.getLength()){A=z.getIndex()+1;z=z.getParent();}else{z.split(A);A=z.getIndex()+1;z=z.getParent();}B.setEnd(z,A);}},enlarge:function(t){switch(t){case 1:if(this.collapsed)return;var u=this.getCommonAncestor(),v=this.document.getBody(),w,x,y,z,A,B=false,C,D,E=this.startContainer,F=this.startOffset;if(E.type==3){if(F){E=!e.trim(E.substring(0,F)).length&&E;B=!!E;}if(E)if(!(z=E.getPrevious()))y=E.getParent();}else{if(F)z=E.getChild(F-1)||E.getLast();if(!z)y=E;}while(y||z){if(y&&!z){if(!A&&y.equals(u))A=true;if(!v.contains(y))break;if(!B||y.getComputedStyle('display')!='inline'){B=false;if(A)w=y;else this.setStartBefore(y);}z=y.getPrevious();}while(z){C=false;if(z.type==3){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;C=/[\s\ufeff]$/.test(D);}else if(z.$.offsetWidth>0&&!z.getAttribute('_cke_bookmark'))if(B&&f.$removeEmpty[z.getName()]){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;else{var G=z.$.all||z.$.getElementsByTagName('*');for(var H=0,I;I=G[H++];){if(!f.$removeEmpty[I.nodeName.toLowerCase()]){z=null;break;}}}if(z)C=!!D.length;}else z=null;if(C)if(B){if(A)w=y;else if(y)this.setStartBefore(y);}else B=true;if(z){var J=z.getPrevious();if(!y&&!J){y=z;z=null;break;
+}z=J;}else y=null;}if(y)y=y.getParent();}E=this.endContainer;F=this.endOffset;y=z=null;A=B=false;if(E.type==3){E=!e.trim(E.substring(F)).length&&E;B=!(E&&E.getLength());if(E)if(!(z=E.getNext()))y=E.getParent();}else{z=E.getChild(F);if(!z)y=E;}while(y||z){if(y&&!z){if(!A&&y.equals(u))A=true;if(!v.contains(y))break;if(!B||y.getComputedStyle('display')!='inline'){B=false;if(A)x=y;else if(y)this.setEndAfter(y);}z=y.getNext();}while(z){C=false;if(z.type==3){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;C=/^[\s\ufeff]/.test(D);}else if(z.$.offsetWidth>0&&!z.getAttribute('_cke_bookmark'))if(B&&f.$removeEmpty[z.getName()]){D=z.getText();if(/[^\s\ufeff]/.test(D))z=null;else{G=z.$.all||z.$.getElementsByTagName('*');for(H=0;I=G[H++];){if(!f.$removeEmpty[I.nodeName.toLowerCase()]){z=null;break;}}}if(z)C=!!D.length;}else z=null;if(C)if(B)if(A)x=y;else this.setEndAfter(y);if(z){J=z.getNext();if(!y&&!J){y=z;z=null;break;}z=J;}else y=null;}if(y)y=y.getParent();}if(w&&x){u=w.contains(x)?x:w;this.setStartBefore(u);this.setEndAfter(u);}break;case 2:case 3:var K=new d.range(this.document);v=this.document.getBody();K.setStartAt(v,1);K.setEnd(this.startContainer,this.startOffset);var L=new d.walker(K),M,N,O=d.walker.blockBoundary(t==3?{br:1}:null),P=function(R){var S=O(R);if(!S)M=R;return S;},Q=function(R){var S=P(R);if(!S&&R.is&&R.is('br'))N=R;return S;};L.guard=P;y=L.lastBackward();M=M||v;this.setStartAt(M,!M.is('br')&&(!y&&this.checkStartOfBlock()||y&&M.contains(y))?1:4);K=this.clone();K.collapse();K.setEndAt(v,2);L=new d.walker(K);L.guard=t==3?Q:P;M=null;y=L.lastForward();M=M||v;this.setEndAt(M,!y&&this.checkEndOfBlock()||y&&M.contains(y)?2:3);if(N)this.setEndAfter(N);}},shrink:function(t,u){if(!this.collapsed){t=t||2;var v=this.clone(),w=this.startContainer,x=this.endContainer,y=this.startOffset,z=this.endOffset,A=this.collapsed,B=1,C=1;if(w&&w.type==3)if(!y)v.setStartBefore(w);else if(y>=w.getLength())v.setStartAfter(w);else{v.setStartBefore(w);B=0;}if(x&&x.type==3)if(!z)v.setEndBefore(x);else if(z>=x.getLength())v.setEndAfter(x);else{v.setEndAfter(x);C=0;}var D=new d.walker(v);D.evaluator=function(H){return H.type==(t==1?1:3);};var E;D.guard=function(H,I){if(t==1&&H.type==3)return false;if(I&&H.equals(E))return false;if(!I&&H.type==1)E=H;return true;};if(B){var F=D[t==1?'lastForward':'next']();F&&this.setStartAt(F,u?1:3);}if(C){D.reset();var G=D[t==1?'lastBackward':'previous']();G&&this.setEndAt(G,u?2:4);}return!!(B||C);}},insertNode:function(t){var x=this;x.optimizeBookmark();
+x.trim(false,true);var u=x.startContainer,v=x.startOffset,w=u.getChild(v);if(w)t.insertBefore(w);else u.append(t);if(t.getParent().equals(x.endContainer))x.endOffset++;x.setStartBefore(t);},moveToPosition:function(t,u){this.setStartAt(t,u);this.collapse(true);},selectNodeContents:function(t){this.setStart(t,0);this.setEnd(t,t.type==3?t.getLength():t.getChildCount());},setStart:function(t,u){var v=this;if(t.type==1&&f.$empty[t.getName()])t=t.getParent(),u=t.getIndex();v.startContainer=t;v.startOffset=u;if(!v.endContainer){v.endContainer=t;v.endOffset=u;}l(v);},setEnd:function(t,u){var v=this;if(t.type==1&&f.$empty[t.getName()])t=t.getParent(),u=t.getIndex()+1;v.endContainer=t;v.endOffset=u;if(!v.startContainer){v.startContainer=t;v.startOffset=u;}l(v);},setStartAfter:function(t){this.setStart(t.getParent(),t.getIndex()+1);},setStartBefore:function(t){this.setStart(t.getParent(),t.getIndex());},setEndAfter:function(t){this.setEnd(t.getParent(),t.getIndex()+1);},setEndBefore:function(t){this.setEnd(t.getParent(),t.getIndex());},setStartAt:function(t,u){var v=this;switch(u){case 1:v.setStart(t,0);break;case 2:if(t.type==3)v.setStart(t,t.getLength());else v.setStart(t,t.getChildCount());break;case 3:v.setStartBefore(t);break;case 4:v.setStartAfter(t);}l(v);},setEndAt:function(t,u){var v=this;switch(u){case 1:v.setEnd(t,0);break;case 2:if(t.type==3)v.setEnd(t,t.getLength());else v.setEnd(t,t.getChildCount());break;case 3:v.setEndBefore(t);break;case 4:v.setEndAfter(t);}l(v);},fixBlock:function(t,u){var x=this;var v=x.createBookmark(),w=x.document.createElement(u);x.collapse(t);x.enlarge(2);x.extractContents().appendTo(w);w.trim();if(!c)w.appendBogus();x.insertNode(w);x.moveToBookmark(v);return w;},splitBlock:function(t){var D=this;var u=new d.elementPath(D.startContainer),v=new d.elementPath(D.endContainer),w=u.blockLimit,x=v.blockLimit,y=u.block,z=v.block,A=null;if(!w.equals(x))return null;if(t!='br'){if(!y){y=D.fixBlock(true,t);z=new d.elementPath(D.endContainer).block;}if(!z)z=D.fixBlock(false,t);}var B=y&&D.checkStartOfBlock(),C=z&&D.checkEndOfBlock();D.deleteContents();if(y&&y.equals(z))if(C){A=new d.elementPath(D.startContainer);D.moveToPosition(z,4);z=null;}else if(B){A=new d.elementPath(D.startContainer);D.moveToPosition(y,3);y=null;}else{z=D.splitElement(y);if(!c&&!y.is('ul','ol'))y.appendBogus();}return{previousBlock:y,nextBlock:z,wasStartOfBlock:B,wasEndOfBlock:C,elementPath:A};},splitElement:function(t){var w=this;if(!w.collapsed)return null;w.setEndAt(t,2);
+var u=w.extractContents(),v=t.clone(false);u.appendTo(v);v.insertAfter(t);w.moveToPosition(t,4);return v;},checkBoundaryOfElement:function(t,u){var v=u==1,w=this.clone();w.collapse(v);w[v?'setStartAt':'setEndAt'](t,v?1:2);var x=new d.walker(w);x.evaluator=p;return x[v?'checkBackward':'checkForward']();},checkStartOfBlock:function(){var z=this;var t=z.startContainer,u=z.startOffset;if(u&&t.type==3){var v=e.ltrim(t.substring(0,u));if(v.length)return false;}z.trim();var w=new d.elementPath(z.startContainer),x=z.clone();x.collapse(true);x.setStartAt(w.block||w.blockLimit,1);var y=new d.walker(x);y.evaluator=o(true);return y.checkBackward();},checkEndOfBlock:function(){var z=this;var t=z.endContainer,u=z.endOffset;if(t.type==3){var v=e.rtrim(t.substring(u));if(v.length)return false;}z.trim();var w=new d.elementPath(z.endContainer),x=z.clone();x.collapse(false);x.setEndAt(w.block||w.blockLimit,2);var y=new d.walker(x);y.evaluator=o(false);return y.checkForward();},moveToElementEditablePosition:function(t,u){var v;if(f.$empty[t.getName()])return false;while(t&&t.type==1){v=t.isEditable();if(v)this.moveToPosition(t,u?2:1);else if(f.$inline[t.getName()]){this.moveToPosition(t,u?4:3);return true;}if(f.$empty[t.getName()])t=t[u?'getPrevious':'getNext'](s);else t=t[u?'getLast':'getFirst'](s);if(t&&t.type==3){this.moveToPosition(t,u?4:3);return true;}}return v;},moveToElementEditStart:function(t){return this.moveToElementEditablePosition(t);},moveToElementEditEnd:function(t){return this.moveToElementEditablePosition(t,true);},getEnclosedNode:function(){var t=this.clone();t.optimize();if(t.startContainer.type!=1||t.endContainer.type!=1)return null;var u=new d.walker(t),v=d.walker.bookmark(true),w=d.walker.whitespaces(true),x=function(z){return w(z)&&v(z);};t.evaluator=x;var y=u.next();u.reset();return y&&y.equals(u.previous())?y:null;},getTouchedStartNode:function(){var t=this.startContainer;if(this.collapsed||t.type!=1)return t;return t.getChild(this.startOffset)||t;},getTouchedEndNode:function(){var t=this.endContainer;if(this.collapsed||t.type!=1)return t;return t.getChild(this.endOffset-1)||t;}};})();a.POSITION_AFTER_START=1;a.POSITION_BEFORE_END=2;a.POSITION_BEFORE_START=3;a.POSITION_AFTER_END=4;a.ENLARGE_ELEMENT=1;a.ENLARGE_BLOCK_CONTENTS=2;a.ENLARGE_LIST_ITEM_CONTENTS=3;a.START=1;a.END=2;a.STARTEND=3;a.SHRINK_ELEMENT=1;a.SHRINK_TEXT=2;(function(){d.rangeList=function(n){if(n instanceof d.rangeList)return n;if(!n)n=[];else if(n instanceof d.range)n=[n];return e.extend(n,l);
+};var l={createIterator:function(){var n=this,o=[],p;return{getNextRange:function(){p=p==undefined?0:p+1;var q=n[p];if(q&&n.length>1)if(!p)for(var r=n.length-1;r>0;r--)o.unshift(n[r].createBookmark(true));else q.moveToBookmark(o.shift());return q;}};},createBookmarks:function(n){var s=this;var o=[],p;for(var q=0;q<s.length;q++){o.push(p=s[q].createBookmark(n,true));for(var r=q+1;r<s.length;r++){s[r]=m(p,s[r]);s[r]=m(p,s[r],true);}}return o;},createBookmarks2:function(n){var o=[];for(var p=0;p<this.length;p++)o.push(this[p].createBookmark2(n));return o;},moveToBookmarks:function(n){for(var o=0;o<this.length;o++)this[o].moveToBookmark(n[o]);}};function m(n,o,p){var q=n.serializable,r=o[p?'endContainer':'startContainer'],s=p?'endOffset':'startOffset',t=q?o.document.getById(n.startNode):n.startNode,u=q?o.document.getById(n.endNode):n.endNode;if(r.equals(t.getPrevious())){o.startOffset=o.startOffset-r.getLength()-u.getPrevious().getLength();r=u.getNext();}else if(r.equals(u.getPrevious())){o.startOffset=o.startOffset-r.getLength();r=u.getNext();}r.equals(t.getParent())&&o[s]++;r.equals(u.getParent())&&o[s]++;o[p?'endContainer':'startContainer']=r;return o;};})();(function(){if(b.webkit){b.hc=false;return;}var l=c&&b.version<7,m=c&&b.version==7,n=l?a.basePath+'images/spacer.gif':m?'about:blank':'data:image/png;base64,',o=h.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;background-image:url('+n+')"></div>',a.document);o.appendTo(a.document.getHead());try{b.hc=o.getComputedStyle('background-image')=='none';}catch(p){b.hc=false;}if(b.hc)b.cssClass+=' cke_hc';o.remove();})();j.load(i.corePlugins.split(','),function(){a.status='loaded';a.fire('loaded');var l=a._.pending;if(l){delete a._.pending;for(var m=0;m<l.length;m++)a.add(l[m]);}});a.skins.add('kama',(function(){var l=[],m='cke_ui_color';if(c&&b.version<7)l.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:l,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(n){if(n.config.width&&!isNaN(n.config.width))n.config.width-=12;var o=[],p=/\$color/g,q='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';
+if(b.webkit){q=q.split('}').slice(0,-1);for(var r=0;r<q.length;r++)q[r]=q[r].split('{');}function s(v){var w=v.getById(m);if(!w){w=v.getHead().append('style');w.setAttribute('id',m);w.setAttribute('type','text/css');}return w;};function t(v,w,x){var y,z,A;for(var B=0;B<v.length;B++){if(b.webkit)for(z=0;z<w.length;z++){A=w[z][1];for(y=0;y<x.length;y++)A=A.replace(x[y][0],x[y][1]);v[B].$.sheet.addRule(w[z][0],A);}else{A=w;for(y=0;y<x.length;y++)A=A.replace(x[y][0],x[y][1]);if(c)v[B].$.styleSheet.cssText+=A;else v[B].$.innerHTML+=A;}}};var u=/\$color/g;e.extend(n,{uiColor:null,getUiColor:function(){return this.uiColor;},setUiColor:function(v){var w,x=s(a.document),y='.cke_editor_'+e.escapeCssSelector(n.name),z=[y+' .cke_wrapper',y+'_dialog .cke_dialog_contents',y+'_dialog a.cke_dialog_tab',y+'_dialog .cke_dialog_footer'].join(','),A='background-color: $color !important;';if(b.webkit)w=[[z,A]];else w=z+'{'+A+'}';return(this.setUiColor=function(B){var C=[[u,B]];n.uiColor=B;t([x],w,C);t(o,q,C);})(v);}});n.on('menuShow',function(v){var w=v.data[0],x=w.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!x.getById('cke_ui_color')){var y=s(x);o.push(y);var z=n.getUiColor();if(z)t([y],q,[[u,z]]);}});if(n.config.uiColor)n.setUiColor(n.config.uiColor);}};})());(function(){a.dialog?l():a.on('dialogPluginReady',l);function l(){a.dialog.on('resize',function(m){var n=m.data,o=n.width,p=n.height,q=n.dialog,r=q.parts.contents;if(n.skin!='kama')return;r.setStyles({width:o+'px',height:p+'px'});setTimeout(function(){var s=q.parts.dialog.getChild([0,0,0]),t=s.getChild(0),u=s.getChild(2);u.setStyle('width',t.$.offsetWidth+'px');u=s.getChild(7);u.setStyle('width',t.$.offsetWidth-28+'px');u=s.getChild(4);u.setStyle('height',t.$.offsetHeight-31-14+'px');u=s.getChild(5);u.setStyle('height',t.$.offsetHeight-31-14+'px');},100);});};})();j.add('about',{requires:['dialog'],init:function(l){var m=l.addCommand('about',new a.dialogCommand('about'));m.modes={wysiwyg:1,source:1};m.canUndo=false;l.ui.addButton('About',{label:l.lang.about.title,command:'about'});a.dialog.add('about',this.path+'dialogs/about.js');}});(function(){var l='a11yhelp',m='a11yHelp';j.add(l,{availableLangs:{en:1,he:1},init:function(n){var o=this;n.addCommand(m,{exec:function(){var p=n.langCode;p=o.availableLangs[p]?p:'en';a.scriptLoader.load(a.getUrl(o.path+'lang/'+p+'.js'),function(){e.extend(n.lang,o.lang[p]);n.openDialog(m);});},modes:{wysiwyg:1,source:1},canUndo:false});a.dialog.add(m,this.path+'dialogs/a11yhelp.js');
+}});})();j.add('basicstyles',{requires:['styles','button'],init:function(l){var m=function(p,q,r,s){var t=new a.style(s);l.attachStyleStateChange(t,function(u){l.getCommand(r).setState(u);});l.addCommand(r,new a.styleCommand(t));l.ui.addButton(p,{label:q,command:r});},n=l.config,o=l.lang;m('Bold',o.bold,'bold',n.coreStyles_bold);m('Italic',o.italic,'italic',n.coreStyles_italic);m('Underline',o.underline,'underline',n.coreStyles_underline);m('Strike',o.strike,'strike',n.coreStyles_strike);m('Subscript',o.subscript,'subscript',n.coreStyles_subscript);m('Superscript',o.superscript,'superscript',n.coreStyles_superscript);}});i.coreStyles_bold={element:'strong',overrides:'b'};i.coreStyles_italic={element:'em',overrides:'i'};i.coreStyles_underline={element:'u'};i.coreStyles_strike={element:'strike'};i.coreStyles_subscript={element:'sub'};i.coreStyles_superscript={element:'sup'};(function(){var l={table:1,ul:1,ol:1,blockquote:1,div:1},m={};e.extend(m,l,{tr:1,p:1,div:1,li:1});function n(r){var s=r.editor,t=r.data.path,u=s.config.useComputedState,v;u=u===undefined||u;if(u){var w=s.getSelection(),x=w.getRanges();v=x&&x[0].getEnclosedNode();if(!v||v&&!(v.type==1&&v.getName() in m))v=p(w,l);}v=v||t.block||t.blockLimit;if(!v||v.getName()=='body')return;var y=u?v.getComputedStyle('direction'):v.getStyle('direction')||v.getAttribute('dir');s.getCommand('bidirtl').setState(y=='rtl'?1:2);s.getCommand('bidiltr').setState(y=='ltr'?1:2);var z=s.container.getChild(1);if(y!=s.lang.dir)z.addClass('cke_mixed_dir_content');else z.removeClass('cke_mixed_dir_content');};function o(r,s,t){var u=r.getComputedStyle('direction'),v=r.getStyle('direction')||r.getAttribute('dir')||'';r.removeStyle('direction');if(v.toLowerCase()==s)r.removeAttribute('dir');else r.setAttribute('dir',s);var w=r.getComputedStyle('direction');if(w!=u){var x=new d.range(r.getDocument());x.setStartBefore(r);x.setEndAfter(r);var y=new d.walker(x),z;while(z=y.next()){if(z.type==1){if(!z.equals(r)&&z.hasAttribute('dir')){x.setStartAfter(z);y=new d.walker(x);continue;}var A=z.getStyle('margin-right'),B=z.getStyle('margin-left');A?z.setStyle('margin-left',A):z.removeStyle('margin-left');B?z.setStyle('margin-right',B):z.removeStyle('margin-right');}}}t.forceNextSelectionCheck();};function p(r,s){var t=r.getCommonAncestor();while(t.type==1&&!(t.getName() in s)&&t.getParent().getChildCount()==1)t=t.getParent();return t.type==1&&t.getName() in s&&t;};function q(r){return function(s){var t=s.getSelection(),u=s.config.enterMode,v=t.getRanges();
+if(v&&v.length){var w=v[0].getEnclosedNode();if(!w||w&&!(w.type==1&&w.getName() in m))w=p(t,l);if(w){if(!w.isReadOnly())o(w,r,s);}else{var x=t.createBookmarks(),y,z;for(var A=v.length-1;A>=0;A--){var B=[],C=new d.walker(v[A]);C.evaluator=function(G){return G.type==1&&G.getName() in l&&!(G.getName()==(u==1)?'p':'div'&&G.getParent().type==1&&G.getParent().getName()=='blockquote');};while(z=C.next()){o(z,r,s);B.push(z);}y=v[A].createIterator();y.enlargeBr=u!=2;while(z=y.getNextParagraph(u==1?'p':'div')){if(z.isReadOnly())continue;var D=0;for(var E=0;E<B.length;E++){var F=z.getParent();while(F&&F.getName()!='body'){if(F.$.isSameNode&&F.$.isSameNode(B[E].$)||F.$==B[E].$){D=1;break;}F=F.getParent();}if(D)break;}if(!D)o(z,r,s);}}s.forceNextSelectionCheck();t.selectBookmarks(x);}s.focus();}};};j.add('bidi',{requires:['styles','button'],init:function(r){var s=function(u,v,w,x){r.addCommand(w,new a.command(r,{exec:x}));r.ui.addButton(u,{label:v,command:w});},t=r.lang.bidi;s('BidiLtr',t.ltr,'bidiltr',q('ltr'));s('BidiRtl',t.rtl,'bidirtl',q('rtl'));r.on('selectionChange',n);}});})();(function(){function l(p,q){var r=q.block||q.blockLimit;if(!r||r.getName()=='body')return 2;if(r.getAscendant('blockquote',true))return 1;return 2;};function m(p){var q=p.editor,r=q.getCommand('blockquote');r.state=l(q,p.data.path);r.fire('state');};function n(p){for(var q=0,r=p.getChildCount(),s;q<r&&(s=p.getChild(q));q++){if(s.type==1&&s.isBlockBoundary())return false;}return true;};var o={exec:function(p){var q=p.getCommand('blockquote').state,r=p.getSelection(),s=r&&r.getRanges(true)[0];if(!s)return;var t=r.createBookmarks();if(c){var u=t[0].startNode,v=t[0].endNode,w;if(u&&u.getParent().getName()=='blockquote'){w=u;while(w=w.getNext()){if(w.type==1&&w.isBlockBoundary()){u.move(w,true);break;}}}if(v&&v.getParent().getName()=='blockquote'){w=v;while(w=w.getPrevious()){if(w.type==1&&w.isBlockBoundary()){v.move(w);break;}}}}var x=s.createIterator(),y;if(q==2){var z=[];while(y=x.getNextParagraph())z.push(y);if(z.length<1){var A=p.document.createElement(p.config.enterMode==1?'p':'div'),B=t.shift();s.insertNode(A);A.append(new d.text('\ufeff',p.document));s.moveToBookmark(B);s.selectNodeContents(A);s.collapse(true);B=s.createBookmark();z.push(A);t.unshift(B);}var C=z[0].getParent(),D=[];for(var E=0;E<z.length;E++){y=z[E];C=C.getCommonAncestor(y.getParent());}var F={table:1,tbody:1,tr:1,ol:1,ul:1};while(F[C.getName()])C=C.getParent();var G=null;while(z.length>0){y=z.shift();while(!y.getParent().equals(C))y=y.getParent();
+if(!y.equals(G))D.push(y);G=y;}while(D.length>0){y=D.shift();if(y.getName()=='blockquote'){var H=new d.documentFragment(p.document);while(y.getFirst()){H.append(y.getFirst().remove());z.push(H.getLast());}H.replace(y);}else z.push(y);}var I=p.document.createElement('blockquote');I.insertBefore(z[0]);while(z.length>0){y=z.shift();I.append(y);}}else if(q==1){var J=[],K={};while(y=x.getNextParagraph()){var L=null,M=null;while(y.getParent()){if(y.getParent().getName()=='blockquote'){L=y.getParent();M=y;break;}y=y.getParent();}if(L&&M&&!M.getCustomData('blockquote_moveout')){J.push(M);h.setMarker(K,M,'blockquote_moveout',true);}}h.clearAllMarkers(K);var N=[],O=[];K={};while(J.length>0){var P=J.shift();I=P.getParent();if(!P.getPrevious())P.remove().insertBefore(I);else if(!P.getNext())P.remove().insertAfter(I);else{P.breakParent(P.getParent());O.push(P.getNext());}if(!I.getCustomData('blockquote_processed')){O.push(I);h.setMarker(K,I,'blockquote_processed',true);}N.push(P);}h.clearAllMarkers(K);for(E=O.length-1;E>=0;E--){I=O[E];if(n(I))I.remove();}if(p.config.enterMode==2){var Q=true;while(N.length){P=N.shift();if(P.getName()=='div'){H=new d.documentFragment(p.document);var R=Q&&P.getPrevious()&&!(P.getPrevious().type==1&&P.getPrevious().isBlockBoundary());if(R)H.append(p.document.createElement('br'));var S=P.getNext()&&!(P.getNext().type==1&&P.getNext().isBlockBoundary());while(P.getFirst())P.getFirst().remove().appendTo(H);if(S)H.append(p.document.createElement('br'));H.replace(P);Q=false;}}}}r.selectBookmarks(t);p.focus();}};j.add('blockquote',{init:function(p){p.addCommand('blockquote',o);p.ui.addButton('Blockquote',{label:p.lang.blockquote,command:'blockquote'});p.on('selectionChange',m);},requires:['domiterator']});})();j.add('button',{beforeInit:function(l){l.ui.addHandler(1,k.button.handler);}});a.UI_BUTTON=1;k.button=function(l){e.extend(this,l,{title:l.label,className:l.className||l.command&&'cke_button_'+l.command||'',click:l.click||(function(m){m.execCommand(l.command);})});this._={};};k.button.handler={create:function(l){return new k.button(l);}};k.button.prototype={canGroup:true,render:function(l,m){var n=b,o=this._.id='cke_'+e.getNextNumber(),p='',q=this.command,r,s;this._.editor=l;var t={id:o,button:this,editor:l,focus:function(){var v=a.document.getById(o);v.focus();},execute:function(){this.button.click(l);}};t.clickFn=r=e.addFunction(t.execute,t);t.index=s=k.button._.instances.push(t)-1;if(this.modes)l.on('mode',function(){this.setState(this.modes[l.mode]?2:0);
+},this);else if(q){q=l.getCommand(q);if(q){q.on('state',function(){this.setState(q.state);},this);p+='cke_'+(q.state==1?'on':q.state==0?'disabled':'off');}}if(!q)p+='cke_off';if(this.className)p+=' '+this.className;m.push('<span class="cke_button">','<a id="',o,'" class="',p,'"',n.gecko&&n.version>=10900&&!n.hc?'':'" href="javascript:void(\''+(this.title||'').replace("'",'')+"')\"",' title="',this.title,'" tabindex="-1" hidefocus="true" role="button" aria-labelledby="'+o+'_label"'+(this.hasArrow?' aria-haspopup="true"':''));if(n.opera||n.gecko&&n.mac)m.push(' onkeypress="return false;"');if(n.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');m.push(' onkeydown="return CKEDITOR.ui.button._.keydown(',s,', event);" onfocus="return CKEDITOR.ui.button._.focus(',s,', event);" onclick="CKEDITOR.tools.callFunction(',r,', this); return false;"><span class="cke_icon"');if(this.icon){var u=(this.iconOffset||0)*-16;m.push(' style="background-image:url(',a.getUrl(this.icon),');background-position:0 '+u+'px;"');}m.push('>&nbsp;</span><span id="',o,'_label" class="cke_label">',this.label,'</span>');if(this.hasArrow)m.push('<span class="cke_buttonarrow">'+(b.hc?'&#9660;':'&nbsp;')+'</span>');m.push('</a>','</span>');if(this.onRender)this.onRender();return t;},setState:function(l){if(this._.state==l)return false;this._.state=l;var m=a.document.getById(this._.id);if(m){m.setState(l);l==0?m.setAttribute('aria-disabled',true):m.removeAttribute('aria-disabled');l==1?m.setAttribute('aria-pressed',true):m.removeAttribute('aria-pressed');return true;}else return false;}};k.button._={instances:[],keydown:function(l,m){var n=k.button._.instances[l];if(n.onkey){m=new d.event(m);return n.onkey(n,m.getKeystroke())!==false;}},focus:function(l,m){var n=k.button._.instances[l],o;if(n.onfocus)o=n.onfocus(n,new d.event(m))!==false;if(b.gecko&&b.version<10900)m.preventBubble();return o;}};k.prototype.addButton=function(l,m){this.add(l,1,m);};a.on('reset',function(){k.button._.instances=[];});(function(){var l=function(s,t){var u=s.document,v=u.getBody(),w=false,x=function(){w=true;};v.on(t,x);(b.version>7?u.$:u.$.selection.createRange()).execCommand(t);v.removeListener(t,x);return w;},m=c?function(s,t){return l(s,t);}:function(s,t){try{return s.document.$.execCommand(t);}catch(u){return false;}},n=function(s){this.type=s;this.canUndo=this.type=='cut';};n.prototype={exec:function(s,t){this.type=='cut'&&r(s);var u=m(s,this.type);if(!u)alert(s.lang.clipboard[this.type+'Error']);
+return u;}};var o={canUndo:false,exec:c?function(s){s.focus();if(!s.document.getBody().fire('beforepaste')&&!l(s,'paste')){s.fire('pasteDialog');return false;}}:function(s){try{if(!s.document.getBody().fire('beforepaste')&&!s.document.$.execCommand('Paste',false,null))throw 0;}catch(t){setTimeout(function(){s.fire('pasteDialog');},0);return false;}}},p=function(s){if(this.mode!='wysiwyg')return;switch(s.data.keyCode){case 1000+86:case 2000+45:var t=this.document.getBody();if(!c&&t.fire('beforepaste'))s.cancel();else if(b.opera||b.gecko&&b.version<10900)t.fire('paste');return;case 1000+88:case 2000+46:var u=this;this.fire('saveSnapshot');setTimeout(function(){u.fire('saveSnapshot');},0);}};function q(s,t,u){var v=this.document;if(c&&v.getById('cke_pastebin'))return;if(t=='text'&&s.data&&s.data.$.clipboardData){var w=s.data.$.clipboardData.getData('text/plain');if(w){s.data.preventDefault();u(w);return;}}var x=this.getSelection(),y=new d.range(v),z=new h(t=='text'?'textarea':b.webkit?'body':'div',v);z.setAttribute('id','cke_pastebin');b.webkit&&z.append(v.createText('\xa0'));v.getBody().append(z);z.setStyles({position:'absolute',top:x.getStartElement().getDocumentPosition().y+'px',width:'1px',height:'1px',overflow:'hidden'});z.setStyle(this.config.contentsLangDirection=='ltr'?'left':'right','-1000px');var A=x.createBookmarks();if(t=='text'){if(c){var B=v.getBody().$.createTextRange();B.moveToElementText(z.$);B.execCommand('Paste');s.data.preventDefault();}else{v.$.designMode='off';z.$.focus();}}else{y.setStartAt(z,1);y.setEndAt(z,2);y.select(true);}window.setTimeout(function(){t=='text'&&!c&&(v.$.designMode='on');z.remove();var C;z=b.webkit&&(C=z.getFirst())&&C.is&&C.hasClass('Apple-style-span')?C:z;x.selectBookmarks(A);u(z['get'+(t=='text'?'Value':'Html')]());},0);};function r(s){if(!c||s.document.$.compatMode=='BackCompat')return;var t=s.getSelection(),u;if(t.getType()==3&&(u=t.getSelectedElement())){var v=t.getRanges()[0],w=s.document.createText('');w.insertBefore(u);v.setStartBefore(w);v.setEndAfter(u);t.selectRanges([v]);setTimeout(function(){if(u.getParent()){w.remove();t.selectElement(u);}},0);}};j.add('clipboard',{requires:['dialog','htmldataprocessor'],init:function(s){s.on('paste',function(x){var y=x.data;if(y.html)s.insertHtml(y.html);else if(y.text)s.insertText(y.text);},null,null,1000);s.on('pasteDialog',function(x){setTimeout(function(){s.openDialog('paste');},0);});function t(x,y,z,A){var B=s.lang[y];s.addCommand(y,z);s.ui.addButton(x,{label:B,command:y});
+if(s.addMenuItems)s.addMenuItem(y,{label:B,command:y,group:'clipboard',order:A});};t('Cut','cut',new n('cut'),1);t('Copy','copy',new n('copy'),4);t('Paste','paste',o,8);a.dialog.add('paste',a.getUrl(this.path+'dialogs/paste.js'));s.on('key',p,s);var u=s.config.forcePasteAsPlainText?'text':'html';s.on('contentDom',function(){var x=s.document.getBody();x.on(u=='text'&&c||b.webkit?'paste':'beforepaste',function(y){if(v)return;q.call(s,y,u,function(z){if(!z)return;var A={};A[u]=z;s.fire('paste',A);});});x.on('beforecut',function(){!v&&r(s);});});if(s.contextMenu){var v;function w(x){c&&(v=1);var y=s.document.$.queryCommandEnabled(x)?2:0;v=0;return y;};s.contextMenu.addListener(function(x,y){var z=y.getCommonAncestor().isReadOnly();return{cut:!z&&w('Cut'),copy:w('Copy'),paste:!z&&(b.webkit?2:w('Paste'))};});}}});})();j.add('colorbutton',{requires:['panelbutton','floatpanel','styles'],init:function(l){var m=l.config,n=l.lang.colorButton,o;if(!b.hc){p('TextColor','fore',n.textColorTitle);p('BGColor','back',n.bgColorTitle);}function p(r,s,t){l.ui.add(r,4,{label:t,title:t,className:'cke_button_'+r.toLowerCase(),modes:{wysiwyg:1},panel:{css:l.skin.editor.css,attributes:{role:'listbox','aria-label':n.panelTitle}},onBlock:function(u,v){v.autoSize=true;v.element.addClass('cke_colorblock');v.element.setHtml(q(u,s));v.element.getDocument().getBody().setStyle('overflow','hidden');var w=v.keys,x=l.lang.dir=='rtl';w[x?37:39]='next';w[40]='next';w[9]='next';w[x?39:37]='prev';w[38]='prev';w[2000+9]='prev';w[32]='click';}});};function q(r,s){var t=[],u=m.colorButton_colors.split(','),v=u.length+(m.colorButton_enableMore?2:1),w=e.addFunction(function(C,D){if(C=='?'){var E=arguments.callee;function F(H){this.removeListener('ok',F);this.removeListener('cancel',F);H.name=='ok'&&E(this.getContentElement('picker','selectedColor').getValue(),D);};l.openDialog('colordialog',function(){this.on('ok',F);this.on('cancel',F);});return;}l.focus();r.hide();l.fire('saveSnapshot');new a.style(m['colorButton_'+D+'Style'],{color:'inherit'}).remove(l.document);if(C){var G=m['colorButton_'+D+'Style'];G.childRule=D=='back'?function(){return false;}:function(H){return H.getName()!='a';};new a.style(G,{color:C}).apply(l.document);}l.fire('saveSnapshot');});t.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',n.auto,'" onclick="CKEDITOR.tools.callFunction(',w,",null,'",s,"');return false;\" href=\"javascript:void('",n.auto,'\')" role="option" aria-posinset="1" aria-setsize="',v,'"><table role="presentation" cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" style="background-color:#000"></span></td><td colspan=7 align=center>',n.auto,'</td></tr></table></a><table role="presentation" cellspacing=0 cellpadding=0 width="100%">');
+for(var x=0;x<u.length;x++){if(x%8===0)t.push('</tr><tr>');var y=u[x].split('/'),z=y[0],A=y[1]||z;if(!y[1])z='#'+z.replace(/^(.)(.)(.)$/,'$1$1$2$2$3$3');var B=l.lang.colors[A]||A;t.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',B,'" onclick="CKEDITOR.tools.callFunction(',w,",'",z,"','",s,"'); return false;\" href=\"javascript:void('",B,'\')" role="option" aria-posinset="',x+2,'" aria-setsize="',v,'"><span class="cke_colorbox" style="background-color:#',A,'"></span></a></td>');}if(m.colorButton_enableMore)t.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',n.more,'" onclick="CKEDITOR.tools.callFunction(',w,",'?','",s,"');return false;\" href=\"javascript:void('",n.more,"')\"",' role="option" aria-posinset="',v,'" aria-setsize="',v,'">',n.more,'</a></td>');t.push('</tr></table>');return t.join('');};}});i.colorButton_enableMore=true;i.colorButton_colors='000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF';i.colorButton_foreStyle={element:'span',styles:{color:'#(color)'},overrides:[{element:'font',attributes:{color:null}}]};i.colorButton_backStyle={element:'span',styles:{'background-color':'#(color)'}};(function(){j.colordialog={init:function(l){l.addCommand('colordialog',new a.dialogCommand('colordialog'));a.dialog.add('colordialog',this.path+'dialogs/colordialog.js');}};j.add('colordialog',j.colordialog);})();j.add('contextmenu',{requires:['menu'],beforeInit:function(l){l.contextMenu=new j.contextMenu(l);l.addCommand('contextMenu',{exec:function(){l.contextMenu.show(l.document.getBody());}});}});j.contextMenu=e.createClass({$:function(l){this.id='cke_'+e.getNextNumber();this.editor=l;this._.listeners=[];this._.functionId=e.addFunction(function(m){this._.panel.hide();l.focus();l.execCommand(m);},this);this.definition={panel:{className:l.skinClass+' cke_contextmenu',attributes:{'aria-label':l.lang.contextmenu.options}}};},_:{onMenu:function(l,m,n,o){var p=this._.menu,q=this.editor;if(p){p.hide();p.removeAll();}else{p=this._.menu=new a.menu(q,this.definition);p.onClick=e.bind(function(z){p.hide();if(z.onClick)z.onClick();else if(z.command)q.execCommand(z.command);},this);p.onEscape=function(z){var A=this.parent;if(A){A._.panel.hideChild();var B=A._.panel._.panel._.currentBlock,C=B._.focusIndex;
+B._.markItem(C);}else if(z==27){this.hide();q.focus();}return false;};}var r=this._.listeners,s=[],t=this.editor.getSelection(),u=t&&t.getStartElement();p.onHide=e.bind(function(){p.onHide=null;if(c){var z=q.getSelection();z&&z.unlock();}this.onHide&&this.onHide();},this);for(var v=0;v<r.length;v++){var w=r[v](u,t);if(w)for(var x in w){var y=this.editor.getMenuItem(x);if(y){y.state=w[x];p.add(y);}}}p.items.length&&p.show(l,m||(q.lang.dir=='rtl'?2:1),n,o);}},proto:{addTarget:function(l,m){if(b.opera){var n;l.on('mousedown',function(r){r=r.data;if(r.$.button!=2){if(r.getKeystroke()==1000+1)l.fire('contextmenu',r);return;}if(m&&(b.mac?r.$.metaKey:r.$.ctrlKey))return;var s=r.getTarget();if(!n){var t=s.getDocument();n=t.createElement('input');n.$.type='button';t.getBody().append(n);}n.setAttribute('style','position:absolute;top:'+(r.$.clientY-2)+'px;left:'+(r.$.clientX-2)+'px;width:5px;height:5px;opacity:0.01');});l.on('mouseup',function(r){if(n){n.remove();n=undefined;l.fire('contextmenu',r.data);}});}l.on('contextmenu',function(r){var s=r.data;if(m&&(b.webkit?o:b.mac?s.$.metaKey:s.$.ctrlKey))return;s.preventDefault();var t=s.getTarget().getDocument().getDocumentElement(),u=s.$.clientX,v=s.$.clientY;e.setTimeout(function(){this.show(t,null,u,v);},0,this);},this);if(b.webkit){var o,p=function(r){o=b.mac?r.data.$.metaKey:r.data.$.ctrlKey;},q=function(){o=0;};l.on('keydown',p);l.on('keyup',q);l.on('contextmenu',q);}},addListener:function(l){this._.listeners.push(l);},show:function(l,m,n,o){this.editor.focus();if(c){var p=this.editor.getSelection();p&&p.lock();}this._.onMenu(l||a.document.getDocumentElement(),m,n||0,o||0);}}});(function(){function l(n){var o=this.att,p=n&&n.hasAttribute(o)&&n.getAttribute(o)||'';if(p!==undefined)this.setValue(p);};function m(){var n;for(var o=0;o<arguments.length;o++){if(arguments[o] instanceof h){n=arguments[o];break;}}if(n){var p=this.att,q=this.getValue();if(q)n.setAttribute(p,q);else n.removeAttribute(p,q);}};j.add('dialogadvtab',{createAdvancedTab:function(n,o){if(!o)o={id:1,dir:1,classes:1,styles:1};var p=n.lang.common,q={id:'advanced',label:p.advancedTab,title:p.advancedTab,elements:[{type:'vbox',padding:1,children:[]}]},r=[];if(o.id||o.dir){if(o.id)r.push({id:'advId',att:'id',type:'text',label:p.id,setup:l,commit:m});if(o.dir)r.push({id:'advLangDir',att:'dir',type:'select',label:p.langDir,'default':'',style:'width:100%',items:[[p.notSet,''],[p.langDirLTR,'ltr'],[p.langDirRTL,'rtl']],setup:l,commit:m});q.elements[0].children.push({type:'hbox',widths:['50%','50%'],children:[].concat(r)});
+}if(o.styles||o.classes){r=[];if(o.styles)r.push({id:'advStyles',att:'style',type:'text',label:p.styles,'default':'',onChange:function(){},getStyle:function(s,t){var u=this.getValue().match(new RegExp(s+'\\s*:s*([^;]*)','i'));return u?u[1]:t;},updateStyle:function(s,t){var u=this.getValue();if(u)u=u.replace(new RegExp('\\s*'+s+'s*:[^;]*(?:$|;s*)','i'),'').replace(/^[;\s]+/,'').replace(/\s+$/,'');if(t){u&&!/;\s*$/.test(u)&&(u+='; ');u+=s+': '+t;}this.setValue(u,true);},setup:l,commit:m});if(o.classes)r.push({type:'hbox',widths:['45%','55%'],children:[{id:'advCSSClasses',att:'class',type:'text',label:p.cssClasses,'default':'',setup:l,commit:m}]});q.elements[0].children.push({type:'hbox',widths:['50%','50%'],children:[].concat(r)});}return q;}});})();(function(){j.add('div',{requires:['editingblock','domiterator','styles'],init:function(l){var m=l.lang.div;l.addCommand('creatediv',new a.dialogCommand('creatediv'));l.addCommand('editdiv',new a.dialogCommand('editdiv'));l.addCommand('removediv',{exec:function(n){var o=n.getSelection(),p=o&&o.getRanges(),q,r=o.createBookmarks(),s,t=[];function u(w){var x=new d.elementPath(w),y=x.blockLimit,z=y.is('div')&&y;if(z&&!z.getAttribute('_cke_div_added')){t.push(z);z.setAttribute('_cke_div_added');}};for(var v=0;v<p.length;v++){q=p[v];if(q.collapsed)u(o.getStartElement());else{s=new d.walker(q);s.evaluator=u;s.lastForward();}}for(v=0;v<t.length;v++)t[v].remove(true);o.selectBookmarks(r);}});l.ui.addButton('CreateDiv',{label:m.toolbar,command:'creatediv'});if(l.addMenuItems){l.addMenuItems({editdiv:{label:m.edit,command:'editdiv',group:'div',order:1},removediv:{label:m.remove,command:'removediv',group:'div',order:5}});if(l.contextMenu)l.contextMenu.addListener(function(n,o){if(!n||n.isReadOnly())return null;var p=new d.elementPath(n),q=p.blockLimit;if(q&&q.getAscendant('div',true))return{editdiv:2,removediv:2};return null;});}a.dialog.add('creatediv',this.path+'dialogs/div.js');a.dialog.add('editdiv',this.path+'dialogs/div.js');}});})();(function(){var l={toolbarFocus:{exec:function(n){var o=n._.elementsPath.idBase,p=a.document.getById(o+'0');if(p)p.focus();}}},m='<span class="cke_empty">&nbsp;</span>';j.add('elementspath',{requires:['selection'],init:function(n){var o='cke_path_'+n.name,p,q=function(){if(!p)p=a.document.getById(o);return p;},r='cke_elementspath_'+e.getNextNumber()+'_';n._.elementsPath={idBase:r,filters:[]};n.on('themeSpace',function(s){if(s.data.space=='bottom')s.data.html+='<span id="'+o+'_label" class="cke_voice_label">'+n.lang.elementsPath.eleLabel+'</span>'+'<div id="'+o+'" class="cke_path" role="group" aria-labelledby="'+o+'_label">'+m+'</div>';
+});n.on('selectionChange',function(s){var t=b,u=s.data.selection,v=u.getStartElement(),w=[],x=s.editor,y=x._.elementsPath.list=[],z=x._.elementsPath.filters;while(v){var A=0;for(var B=0;B<z.length;B++){if(z[B](v)===false){A=1;break;}}if(!A){var C=y.push(v)-1,D;if(v.getAttribute('_cke_real_element_type'))D=v.getAttribute('_cke_real_element_type');else D=v.getName();var E='';if(t.opera||t.gecko&&t.mac)E+=' onkeypress="return false;"';if(t.gecko)E+=' onblur="this.style.cssText = this.style.cssText;"';var F=x.lang.elementsPath.eleTitle.replace(/%1/,D);w.unshift('<a id="',r,C,'" href="javascript:void(\'',D,'\')" tabindex="-1" title="',F,'"'+(b.gecko&&b.version<10900?' onfocus="event.preventBubble();"':'')+' hidefocus="true" '+" onkeydown=\"return CKEDITOR._.elementsPath.keydown('",x.name,"',",C,', event);"'+E," onclick=\"return CKEDITOR._.elementsPath.click('",x.name,"',",C,');"',' role="button" aria-labelledby="'+r+C+'_label">',D,'<span id="',r,C,'_label" class="cke_label">'+F+'</span>','</a>');}if(D=='body')break;v=v.getParent();}q().setHtml(w.join('')+m);});n.on('contentDomUnload',function(){p&&p.setHtml(m);});n.addCommand('elementsPathFocus',l.toolbarFocus);}});})();a._.elementsPath={click:function(l,m){var n=a.instances[l];n.focus();var o=n._.elementsPath.list[m];n.getSelection().selectElement(o);return false;},keydown:function(l,m,n){var o=k.button._.instances[m],p=a.instances[l],q=p._.elementsPath.idBase,r;n=new d.event(n);var s=p.lang.dir=='rtl';switch(n.getKeystroke()){case s?39:37:case 9:r=a.document.getById(q+(m+1));if(!r)r=a.document.getById(q+'0');r.focus();return false;case s?37:39:case 2000+9:r=a.document.getById(q+(m-1));if(!r)r=a.document.getById(q+(p._.elementsPath.list.length-1));r.focus();return false;case 27:p.focus();return false;case 13:case 32:this.click(l,m);return false;}return true;}};(function(){j.add('enterkey',{requires:['keystrokes','indent'],init:function(s){var t=s.specialKeys;t[13]=q;t[2000+13]=p;}});j.enterkey={enterBlock:function(s,t,u,v){u=u||r(s);if(!u)return;var w=u.document;if(u.checkStartOfBlock()&&u.checkEndOfBlock()){var x=new d.elementPath(u.startContainer),y=x.block;if(y&&(y.is('li')||y.getParent().is('li'))){s.execCommand('outdent');return;}}var z=t==3?'div':'p',A=u.splitBlock(z);if(!A)return;var B=A.previousBlock,C=A.nextBlock,D=A.wasStartOfBlock,E=A.wasEndOfBlock,F;if(C){F=C.getParent();if(F.is('li')){C.breakParent(F);C.move(C.getNext(),true);}}else if(B&&(F=B.getParent())&&F.is('li')){B.breakParent(F);u.moveToElementEditStart(B.getNext());
+B.move(B.getPrevious());}if(!D&&!E){if(C.is('li')&&(F=C.getFirst(d.walker.invisible(true)))&&F.is&&F.is('ul','ol'))(c?w.createText('\xa0'):w.createElement('br')).insertBefore(F);if(C)u.moveToElementEditStart(C);}else{var G;if(B){if(B.is('li')||!o.test(B.getName()))G=B.clone();}else if(C)G=C.clone();if(!G)G=w.createElement(z);else if(v&&!G.is('li'))G.renameNode(z);var H=A.elementPath;if(H)for(var I=0,J=H.elements.length;I<J;I++){var K=H.elements[I];if(K.equals(H.block)||K.equals(H.blockLimit))break;if(f.$removeEmpty[K.getName()]){K=K.clone();G.moveChildren(K);G.append(K);}}if(!c)G.appendBogus();u.insertNode(G);if(c&&D&&(!E||!B.getChildCount())){u.moveToElementEditStart(E?B:G);u.select();}u.moveToElementEditStart(D&&!E?C:G);}if(!c)if(C){var L=w.createElement('span');L.setHtml('&nbsp;');u.insertNode(L);L.scrollIntoView();u.deleteContents();}else G.scrollIntoView();u.select();},enterBr:function(s,t,u,v){u=u||r(s);if(!u)return;var w=u.document,x=t==3?'div':'p',y=u.checkEndOfBlock(),z=new d.elementPath(s.getSelection().getStartElement()),A=z.block,B=A&&z.block.getName(),C=false;if(!v&&B=='li'){n(s,t,u,v);return;}if(!v&&y&&o.test(B)){w.createElement('br').insertAfter(A);if(b.gecko)w.createText('').insertAfter(A);u.setStartAt(A.getNext(),c?3:1);}else{var D;C=B=='pre';if(C&&!b.gecko)D=w.createText(c?'\r':'\n');else D=w.createElement('br');u.deleteContents();u.insertNode(D);if(!c)w.createText('\ufeff').insertAfter(D);if(y&&!c)D.getParent().appendBogus();if(!c)D.getNext().$.nodeValue='';if(c)u.setStartAt(D,4);else u.setStartAt(D.getNext(),1);if(!c){var E=null;if(!b.gecko){E=w.createElement('span');E.setHtml('&nbsp;');}else E=w.createElement('br');E.insertBefore(D.getNext());E.scrollIntoView();E.remove();}}u.collapse(true);u.select(C);}};var l=j.enterkey,m=l.enterBr,n=l.enterBlock,o=/^h[1-6]$/;function p(s){if(s.mode!='wysiwyg')return false;if(s.getSelection().getStartElement().hasAscendant('pre',true)){setTimeout(function(){n(s,s.config.enterMode,null,true);},0);return true;}else return q(s,s.config.shiftEnterMode,true);};function q(s,t,u){u=s.config.forceEnterMode||u;if(s.mode!='wysiwyg')return false;if(!t)t=s.config.enterMode;setTimeout(function(){s.fire('saveSnapshot');if(t==2||s.getSelection().getStartElement().hasAscendant('pre',true))m(s,t,null,u);else n(s,t,null,u);},0);return true;};function r(s){var t=s.getSelection().getRanges(true);for(var u=t.length-1;u>0;u--)t[u].deleteContents();return t[0];};})();(function(){var l='nbsp,gt,lt,quot',m='iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro',n='Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml',o='Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv';
+function p(q,r){var s={},t=[],u={nbsp:'\xa0',shy:'­',gt:'>',lt:'<'};q=q.replace(/\b(nbsp|shy|gt|lt|amp)(?:,|$)/g,function(z,A){var B=r?'&'+A+';':u[A],C=r?u[A]:'&'+A+';';s[B]=C;t.push(B);return '';});if(!r){q=q.split(',');var v=document.createElement('div'),w;v.innerHTML='&'+q.join(';&')+';';w=v.innerHTML;v=null;for(var x=0;x<w.length;x++){var y=w.charAt(x);s[y]='&'+q[x]+';';t.push(y);}}s.regex=t.join(r?'|':'');return s;};j.add('entities',{afterInit:function(q){var r=q.config,s=q.dataProcessor,t=s&&s.htmlFilter;if(t){var u=l;if(r.entities){u+=','+m;if(r.entities_latin)u+=','+n;if(r.entities_greek)u+=','+o;if(r.entities_additional)u+=','+r.entities_additional;}var v=p(u),w='['+v.regex+']';delete v.regex;if(r.entities&&r.entities_processNumerical)w='[^ -~]|'+w;w=new RegExp(w,'g');function x(B){return r.entities_processNumerical=='force'||!v[B]?'&#'+B.charCodeAt(0)+';':v[B];};var y=p([l,'shy'].join(','),true),z=new RegExp(y.regex,'g');function A(B){return y[B];};t.addRules({text:function(B){return B.replace(z,A).replace(w,x);}});}}});})();i.entities=true;i.entities_latin=true;i.entities_greek=true;i.entities_processNumerical=false;i.entities_additional='#39';(function(){function l(u,v){var w=[];if(!v)return u;else for(var x in v)w.push(x+'='+encodeURIComponent(v[x]));return u+(u.indexOf('?')!=-1?'&':'?')+w.join('&');};function m(u){u+='';var v=u.charAt(0).toUpperCase();return v+u.substr(1);};function n(u){var B=this;var v=B.getDialog(),w=v.getParentEditor();w._.filebrowserSe=B;var x=w.config['filebrowser'+m(v.getName())+'WindowWidth']||w.config.filebrowserWindowWidth||'80%',y=w.config['filebrowser'+m(v.getName())+'WindowHeight']||w.config.filebrowserWindowHeight||'70%',z=B.filebrowser.params||{};z.CKEditor=w.name;z.CKEditorFuncNum=w._.filebrowserFn;if(!z.langCode)z.langCode=w.langCode;var A=l(B.filebrowser.url,z);w.popup(A,x,y,w.config.fileBrowserWindowFeatures);};function o(u){var x=this;var v=x.getDialog(),w=v.getParentEditor();w._.filebrowserSe=x;if(!v.getContentElement(x['for'][0],x['for'][1]).getInputElement().$.value)return false;if(!v.getContentElement(x['for'][0],x['for'][1]).getAction())return false;return true;};function p(u,v,w){var x=w.params||{};x.CKEditor=u.name;x.CKEditorFuncNum=u._.filebrowserFn;if(!x.langCode)x.langCode=u.langCode;v.action=l(w.url,x);v.filebrowser=w;};function q(u,v,w,x){var y,z;for(var A in x){y=x[A];if(y.type=='hbox'||y.type=='vbox')q(u,v,w,y.children);if(!y.filebrowser)continue;if(typeof y.filebrowser=='string'){var B={action:y.type=='fileButton'?'QuickUpload':'Browse',target:y.filebrowser};
+y.filebrowser=B;}if(y.filebrowser.action=='Browse'){var C=y.filebrowser.url||u.config['filebrowser'+m(v)+'BrowseUrl']||u.config.filebrowserBrowseUrl;if(C){y.onClick=n;y.filebrowser.url=C;y.hidden=false;}}else if(y.filebrowser.action=='QuickUpload'&&y['for']){C=y.filebrowser.url||u.config['filebrowser'+m(v)+'UploadUrl']||u.config.filebrowserUploadUrl;if(C){var D=y.onClick;y.onClick=function(E){var F=E.sender;if(D&&D.call(F,E)===false)return false;return o.call(F,E);};y.filebrowser.url=C;y.hidden=false;p(u,w.getContents(y['for'][0]).get(y['for'][1]),y.filebrowser);}}}};function r(u,v){var w=v.getDialog(),x=v.filebrowser.target||null;u=u.replace(/#/g,'%23');if(x){var y=x.split(':'),z=w.getContentElement(y[0],y[1]);if(z){z.setValue(u);w.selectPage(y[0]);}}};function s(u,v,w){if(w.indexOf(';')!==-1){var x=w.split(';');for(var y=0;y<x.length;y++){if(s(u,v,x[y]))return true;}return false;}var z=u.getContents(v).get(w).filebrowser;return z&&z.url;};function t(u,v){var z=this;var w=z._.filebrowserSe.getDialog(),x=z._.filebrowserSe['for'],y=z._.filebrowserSe.filebrowser.onSelect;if(x)w.getContentElement(x[0],x[1]).reset();if(typeof v=='function'&&v.call(z._.filebrowserSe)===false)return;if(y&&y.call(z._.filebrowserSe,u,v)===false)return;if(typeof v=='string'&&v)alert(v);if(u)r(u,z._.filebrowserSe);};j.add('filebrowser',{init:function(u,v){u._.filebrowserFn=e.addFunction(t,u);}});a.on('dialogDefinition',function(u){var v=u.data.definition,w;for(var x in v.contents){if(w=v.contents[x]){q(u.editor,u.data.name,v,w.elements);if(w.hidden&&w.filebrowser)w.hidden=!s(v,w.id,w.filebrowser);}}});})();j.add('find',{init:function(l){var m=j.find;l.ui.addButton('Find',{label:l.lang.findAndReplace.find,command:'find'});var n=l.addCommand('find',new a.dialogCommand('find'));n.canUndo=false;l.ui.addButton('Replace',{label:l.lang.findAndReplace.replace,command:'replace'});var o=l.addCommand('replace',new a.dialogCommand('replace'));o.canUndo=false;a.dialog.add('find',this.path+'dialogs/find.js');a.dialog.add('replace',this.path+'dialogs/find.js');},requires:['styles']});i.find_highlight={element:'span',styles:{'background-color':'#004',color:'#fff'}};(function(){var l=/\.swf(?:$|\?)/i,m=/^\d+(?:\.\d+)?$/;function n(q){if(m.test(q))return q+'px';return q;};function o(q){var r=q.attributes;return r.type=='application/x-shockwave-flash'||l.test(r.src||'');};function p(q,r){var s=q.createFakeParserElement(r,'cke_flash','flash',true),t=s.attributes.style||'',u=r.attributes.width,v=r.attributes.height;
+if(typeof u!='undefined')t=s.attributes.style=t+'width:'+n(u)+';';if(typeof v!='undefined')t=s.attributes.style=t+'height:'+n(v)+';';return s;};j.add('flash',{init:function(q){q.addCommand('flash',new a.dialogCommand('flash'));q.ui.addButton('Flash',{label:q.lang.common.flash,command:'flash'});a.dialog.add('flash',this.path+'dialogs/flash.js');q.addCss('img.cke_flash{background-image: url('+a.getUrl(this.path+'images/placeholder.png')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 80px;'+'height: 80px;'+'}');if(q.addMenuItems)q.addMenuItems({flash:{label:q.lang.flash.properties,command:'flash',group:'flash'}});q.on('doubleclick',function(r){var s=r.data.element;if(s.is('img')&&s.getAttribute('_cke_real_element_type')=='flash')r.data.dialog='flash';});if(q.contextMenu)q.contextMenu.addListener(function(r,s){if(r&&r.is('img')&&!r.isReadOnly()&&r.getAttribute('_cke_real_element_type')=='flash')return{flash:2};});},afterInit:function(q){var r=q.dataProcessor,s=r&&r.dataFilter;if(s)s.addRules({elements:{'cke:object':function(t){var u=t.attributes,v=u.classid&&String(u.classid).toLowerCase();if(!v){for(var w=0;w<t.children.length;w++){if(t.children[w].name=='cke:embed'){if(!o(t.children[w]))return null;return p(q,t);}}return null;}return p(q,t);},'cke:embed':function(t){if(!o(t))return null;return p(q,t);}}},5);},requires:['fakeobjects']});})();e.extend(i,{flashEmbedTagOnly:false,flashAddEmbedTag:true,flashConvertOnEdit:false});(function(){function l(m,n,o,p,q,r,s){var t=m.config,u=q.split(';'),v=[],w={};for(var x=0;x<u.length;x++){var y=u[x];if(y){y=y.split('/');var z={},A=u[x]=y[0];z[o]=v[x]=y[1]||A;w[A]=new a.style(s,z);w[A]._.definition.name=A;}else u.splice(x--,1);}m.ui.addRichCombo(n,{label:p.label,title:p.panelTitle,className:'cke_'+(o=='size'?'fontSize':'font'),panel:{css:m.skin.editor.css.concat(t.contentsCss),multiSelect:false,attributes:{'aria-label':p.panelTitle}},init:function(){this.startGroup(p.panelTitle);for(var B=0;B<u.length;B++){var C=u[B];this.add(C,w[C].buildPreview(),C);}},onClick:function(B){m.focus();m.fire('saveSnapshot');var C=w[B];if(this.getValue()==B)C.remove(m.document);else C.apply(m.document);m.fire('saveSnapshot');},onRender:function(){m.on('selectionChange',function(B){var C=this.getValue(),D=B.data.path,E=D.elements;for(var F=0,G;F<E.length;F++){G=E[F];for(var H in w){if(w[H].checkElementRemovable(G,true)){if(H!=C)this.setValue(H);return;}}}this.setValue('',r);},this);
+}});};j.add('font',{requires:['richcombo','styles'],init:function(m){var n=m.config;l(m,'Font','family',m.lang.font,n.font_names,n.font_defaultLabel,n.font_style);l(m,'FontSize','size',m.lang.fontSize,n.fontSize_sizes,n.fontSize_defaultLabel,n.fontSize_style);}});})();i.font_names='Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif';i.font_defaultLabel='';i.font_style={element:'span',styles:{'font-family':'#(family)'},overrides:[{element:'font',attributes:{face:null}}]};i.fontSize_sizes='8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px';i.fontSize_defaultLabel='';i.fontSize_style={element:'span',styles:{'font-size':'#(size)'},overrides:[{element:'font',attributes:{size:null}}]};j.add('format',{requires:['richcombo','styles'],init:function(l){var m=l.config,n=l.lang.format,o=m.format_tags.split(';'),p={};for(var q=0;q<o.length;q++){var r=o[q];p[r]=new a.style(m['format_'+r]);p[r]._.enterMode=l.config.enterMode;}l.ui.addRichCombo('Format',{label:n.label,title:n.panelTitle,className:'cke_format',panel:{css:l.skin.editor.css.concat(m.contentsCss),multiSelect:false,attributes:{'aria-label':n.panelTitle}},init:function(){this.startGroup(n.panelTitle);for(var s in p){var t=n['tag_'+s];this.add(s,'<'+s+'>'+t+'</'+s+'>',t);}},onClick:function(s){l.focus();l.fire('saveSnapshot');p[s].apply(l.document);setTimeout(function(){l.fire('saveSnapshot');},0);},onRender:function(){l.on('selectionChange',function(s){var t=this.getValue(),u=s.data.path;for(var v in p){if(p[v].checkActive(u)){if(v!=t)this.setValue(v,l.lang.format['tag_'+v]);return;}}this.setValue('');},this);}});}});i.format_tags='p;h1;h2;h3;h4;h5;h6;pre;address;div';i.format_p={element:'p'};i.format_div={element:'div'};i.format_pre={element:'pre'};i.format_address={element:'address'};i.format_h1={element:'h1'};i.format_h2={element:'h2'};i.format_h3={element:'h3'};i.format_h4={element:'h4'};i.format_h5={element:'h5'};i.format_h6={element:'h6'};j.add('forms',{init:function(l){var m=l.lang;l.addCss('form{border: 1px dotted #FF0000;padding: 2px;}\n');l.addCss('img.cke_hidden{background-image: url('+a.getUrl(this.path+'images/hiddenfield.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 16px !important;'+'height: 16px !important;'+'}');
+var n=function(p,q,r){l.addCommand(q,new a.dialogCommand(q));l.ui.addButton(p,{label:m.common[p.charAt(0).toLowerCase()+p.slice(1)],command:q});a.dialog.add(q,r);},o=this.path+'dialogs/';n('Form','form',o+'form.js');n('Checkbox','checkbox',o+'checkbox.js');n('Radio','radio',o+'radio.js');n('TextField','textfield',o+'textfield.js');n('Textarea','textarea',o+'textarea.js');n('Select','select',o+'select.js');n('Button','button',o+'button.js');n('ImageButton','imagebutton',j.getPath('image')+'dialogs/image.js');n('HiddenField','hiddenfield',o+'hiddenfield.js');if(l.addMenuItems)l.addMenuItems({form:{label:m.form.menu,command:'form',group:'form'},checkbox:{label:m.checkboxAndRadio.checkboxTitle,command:'checkbox',group:'checkbox'},radio:{label:m.checkboxAndRadio.radioTitle,command:'radio',group:'radio'},textfield:{label:m.textfield.title,command:'textfield',group:'textfield'},hiddenfield:{label:m.hidden.title,command:'hiddenfield',group:'hiddenfield'},imagebutton:{label:m.image.titleButton,command:'imagebutton',group:'imagebutton'},button:{label:m.button.title,command:'button',group:'button'},select:{label:m.select.title,command:'select',group:'select'},textarea:{label:m.textarea.title,command:'textarea',group:'textarea'}});if(l.contextMenu){l.contextMenu.addListener(function(p){if(p&&p.hasAscendant('form',true)&&!p.isReadOnly())return{form:2};});l.contextMenu.addListener(function(p){if(p&&!p.isReadOnly()){var q=p.getName();if(q=='select')return{select:2};if(q=='textarea')return{textarea:2};if(q=='input'){var r=p.getAttribute('type');if(r=='text'||r=='password')return{textfield:2};if(r=='button'||r=='submit'||r=='reset')return{button:2};if(r=='checkbox')return{checkbox:2};if(r=='radio')return{radio:2};if(r=='image')return{imagebutton:2};}if(q=='img'&&p.getAttribute('_cke_real_element_type')=='hiddenfield')return{hiddenfield:2};}});}l.on('doubleclick',function(p){var q=p.data.element;if(q.is('form'))p.data.dialog='form';else if(q.is('select'))p.data.dialog='select';else if(q.is('textarea'))p.data.dialog='textarea';else if(q.is('img')&&q.getAttribute('_cke_real_element_type')=='hiddenfield')p.data.dialog='hiddenfield';else if(q.is('input')){var r=q.getAttribute('type');switch(r){case 'text':case 'password':p.data.dialog='textfield';break;case 'button':case 'submit':case 'reset':p.data.dialog='button';break;case 'checkbox':p.data.dialog='checkbox';break;case 'radio':p.data.dialog='radio';break;case 'image':p.data.dialog='imagebutton';break;}}});},afterInit:function(l){var m=l.dataProcessor,n=m&&m.htmlFilter,o=m&&m.dataFilter;
+if(c)n&&n.addRules({elements:{input:function(p){var q=p.attributes,r=q.type;if(r=='checkbox'||r=='radio')q.value=='on'&&delete q.value;}}});if(o)o.addRules({elements:{input:function(p){if(p.attributes.type=='hidden')return l.createFakeParserElement(p,'cke_hidden','hiddenfield');}}});},requires:['image','fakeobjects']});if(c)h.prototype.hasAttribute=function(l){var o=this;var m=o.$.attributes.getNamedItem(l);if(o.getName()=='input')switch(l){case 'class':return o.$.className.length>0;case 'checked':return!!o.$.checked;case 'value':var n=o.getAttribute('type');if(n=='checkbox'||n=='radio')return o.$.value!='on';break;default:}return!!(m&&m.specified);};(function(){var l={canUndo:false,exec:function(n){n.insertElement(n.document.createElement('hr'));}},m='horizontalrule';j.add(m,{init:function(n){n.addCommand(m,l);n.ui.addButton('HorizontalRule',{label:n.lang.horizontalrule,command:m});}});})();(function(){var l=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,m='{cke_protected}';function n(R){var S=R.children.length,T=R.children[S-1];while(T&&T.type==3&&!e.trim(T.value))T=R.children[--S];return T;};function o(R,S){var T=R.children,U=n(R);if(U){if((S||!c)&&U.type==1&&U.name=='br')T.pop();if(U.type==3&&l.test(U.value))T.pop();}};function p(R){var S=n(R);return!S||S.type==1&&S.name=='br'||R.name=='form'&&S.name=='input';};function q(R){o(R,true);if(p(R))if(c)R.add(new a.htmlParser.text('\xa0'));else R.add(new a.htmlParser.element('br',{}));};function r(R){o(R);if(p(R))R.add(new a.htmlParser.text('\xa0'));};var s=f,t=e.extend({},s.$block,s.$listItem,s.$tableContent);for(var u in t){if(!('br' in s[u]))delete t[u];}delete t.pre;var v={elements:{},attributeNames:[[/^on/,'_cke_pa_on']]},w={elements:{}};for(u in t)w.elements[u]=q;var x={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^_cke_(saved|pa)_/,''],[/^_cke.*/,''],['hidefocus','']],elements:{$:function(R){var S=R.attributes;if(S){if(S.cke_temp)return false;var T=['name','href','src'],U;for(var V=0;V<T.length;V++){U='_cke_saved_'+T[V];U in S&&delete S[T[V]];}}return R;},embed:function(R){var S=R.parent;if(S&&S.name=='object'){var T=S.attributes.width,U=S.attributes.height;T&&(R.attributes.width=T);U&&(R.attributes.height=U);}},param:function(R){R.children=[];R.isEmpty=true;return R;},a:function(R){if(!(R.children.length||R.attributes.name||R.attributes._cke_saved_name))return false;},html:function(R){delete R.attributes.contenteditable;delete R.attributes['class'];},body:function(R){delete R.attributes.spellcheck;
+delete R.attributes.contenteditable;},style:function(R){var S=R.children[0];S&&S.value&&(S.value=e.trim(S.value));if(!R.attributes.type)R.attributes.type='text/css';},title:function(R){var S=R.children[0];S&&(S.value=R.attributes._cke_title||'');}},attributes:{'class':function(R,S){return e.ltrim(R.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}},comment:function(R){if(R.substr(0,m.length)==m){if(R.substr(m.length,3)=='{C}')R=R.substr(m.length+3);else R=R.substr(m.length);return new a.htmlParser.cdata(decodeURIComponent(R));}return R;}},y={elements:{}};for(u in t)y.elements[u]=r;if(c)x.attributes.style=function(R,S){return R.toLowerCase();};function z(R){R.attributes.contenteditable='false';};function A(R){delete R.attributes.contenteditable;};for(u in {input:1,textarea:1}){v.elements[u]=z;x.elements[u]=A;}var B=/<((?:a|area|img|input)[\s\S]*?\s)((href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))([^>]*)>/gi,C=/\s_cke_saved_src\s*=/,D=/(?:<style(?=[ >])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,E=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,F=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,G=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,H=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;function I(R){return R.replace(B,function(S,T,U,V,W){if(V=='src'&&C.test(S))return S;else return '<'+T+U+' _cke_saved_'+U+W+'>';});};function J(R){return R.replace(D,function(S){return '<cke:encoded>'+encodeURIComponent(S)+'</cke:encoded>';});};function K(R){return R.replace(E,function(S,T){return decodeURIComponent(T);});};function L(R){return R.replace(F,'$1cke:$2');};function M(R){return R.replace(G,'$1$2');};function N(R){return R.replace(H,'<cke:$1$2></cke:$1>');};function O(R){return R.replace(/<!--(?!{cke_protected})[\s\S]+?-->/g,function(S){return '<!--'+m+'{C}'+encodeURIComponent(S).replace(/--/g,'%2D%2D')+'-->';});};function P(R){return R.replace(/<!--\{cke_protected\}\{C\}([\s\S]+?)-->/g,function(S,T){return decodeURIComponent(T);});};function Q(R,S){var T=[],U=/<\!--\{cke_temp(comment)?\}(\d*?)-->/g,V=[/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(S);R=R.replace(/<!--[\s\S]*?-->/g,function(X){return '<!--{cke_tempcomment}'+(T.push(X)-1)+'-->';});for(var W=0;W<V.length;W++)R=R.replace(V[W],function(X){X=X.replace(U,function(Y,Z,aa){return T[aa];});return '<!--{cke_temp}'+(T.push(X)-1)+'-->';});R=R.replace(U,function(X,Y,Z){return '<!--'+m+(Y?'{C}':'')+encodeURIComponent(T[Z]).replace(/--/g,'%2D%2D')+'-->';
+});return R;};j.add('htmldataprocessor',{requires:['htmlwriter'],init:function(R){var S=R.dataProcessor=new a.htmlDataProcessor(R);S.writer.forceSimpleAmpersand=R.config.forceSimpleAmpersand;S.dataFilter.addRules(v);S.dataFilter.addRules(w);S.htmlFilter.addRules(x);S.htmlFilter.addRules(y);}});a.htmlDataProcessor=function(R){var S=this;S.editor=R;S.writer=new a.htmlWriter();S.dataFilter=new a.htmlParser.filter();S.htmlFilter=new a.htmlParser.filter();};a.htmlDataProcessor.prototype={toHtml:function(R,S){R=Q(R,this.editor.config.protectedSource);R=I(R);R=J(R);R=L(R);R=N(R);var T=new h('div');T.setHtml('a'+R);R=T.getHtml().substr(1);R=M(R);R=K(R);R=P(R);var U=a.htmlParser.fragment.fromHtml(R,S),V=new a.htmlParser.basicWriter();U.writeHtml(V,this.dataFilter);R=V.getHtml(true);R=O(R);return R;},toDataFormat:function(R,S){var T=this.writer,U=a.htmlParser.fragment.fromHtml(R,S);T.reset();U.writeHtml(T,this.htmlFilter);return T.getHtml(true);}};})();i.forceSimpleAmpersand=false;j.add('image',{init:function(l){var m='image';a.dialog.add(m,this.path+'dialogs/image.js');l.addCommand(m,new a.dialogCommand(m));l.ui.addButton('Image',{label:l.lang.common.image,command:m});l.on('doubleclick',function(n){var o=n.data.element;if(o.is('img')&&!o.getAttribute('_cke_realelement'))n.data.dialog='image';});if(l.addMenuItems)l.addMenuItems({image:{label:l.lang.image.menu,command:'image',group:'image'}});if(l.contextMenu)l.contextMenu.addListener(function(n,o){if(!n||!n.is('img')||n.getAttribute('_cke_realelement')||n.isReadOnly())return null;return{image:2};});}});i.image_removeLinkByEmptyURL=true;(function(){var l={ol:1,ul:1},m=d.walker.whitespaces(true),n=d.walker.bookmark(false,true);function o(t,u){t.getCommand(this.name).setState(u);};function p(t){var C=this;var u=t.editor,v=t.data.path,w=v&&v.contains(l);if(w)return o.call(C,u,2);if(!C.useIndentClasses&&C.name=='indent')return o.call(C,u,2);var x=t.data.path,y=x.block||x.blockLimit;if(!y)return o.call(C,u,0);if(C.useIndentClasses){var z=y.$.className.match(C.classNameRegex),A=0;if(z){z=z[1];A=C.indentClassMap[z];}if(C.name=='outdent'&&!A||C.name=='indent'&&A==u.config.indentClasses.length)return o.call(C,u,0);return o.call(C,u,2);}else{var B=parseInt(y.getStyle(r(y)),10);if(isNaN(B))B=0;if(B<=0)return o.call(C,u,0);return o.call(C,u,2);}};function q(t,u){var w=this;w.name=u;w.useIndentClasses=t.config.indentClasses&&t.config.indentClasses.length>0;if(w.useIndentClasses){w.classNameRegex=new RegExp('(?:^|\\s+)('+t.config.indentClasses.join('|')+')(?=$|\\s)');
+w.indentClassMap={};for(var v=0;v<t.config.indentClasses.length;v++)w.indentClassMap[t.config.indentClasses[v]]=v+1;}w.startDisabled=u=='outdent';};function r(t){return t.getComputedStyle('direction')=='ltr'?'margin-left':'margin-right';};function s(t){return t.type=1&&t.is('li');};q.prototype={exec:function(t){var u=this,v={};function w(N){var O=C.startContainer,P=C.endContainer;while(O&&!O.getParent().equals(N))O=O.getParent();while(P&&!P.getParent().equals(N))P=P.getParent();if(!O||!P)return;var Q=O,R=[],S=false;while(!S){if(Q.equals(P))S=true;R.push(Q);Q=Q.getNext();}if(R.length<1)return;var T=N.getParents(true);for(var U=0;U<T.length;U++){if(T[U].getName&&l[T[U].getName()]){N=T[U];break;}}var V=u.name=='indent'?1:-1,W=R[0],X=R[R.length-1],Y=j.list.listToArray(N,v),Z=Y[X.getCustomData('listarray_index')].indent;for(U=W.getCustomData('listarray_index');U<=X.getCustomData('listarray_index');U++){Y[U].indent+=V;var aa=Y[U].parent;Y[U].parent=new h(aa.getName(),aa.getDocument());}for(U=X.getCustomData('listarray_index')+1;U<Y.length&&Y[U].indent>Z;U++)Y[U].indent+=V;var ab=N.getAttribute('dir')||N.getStyle('direction'),ac=j.list.arrayToList(Y,v,null,t.config.enterMode,ab);if(u.name=='outdent'){var ad;if((ad=N.getParent())&&ad.is('li')){var ae=ac.listNode.getChildren(),af=[],ag=ae.count(),ah;for(U=ag-1;U>=0;U--){if((ah=ae.getItem(U))&&ah.is&&ah.is('li'))af.push(ah);}}}if(ac)ac.listNode.replace(N);if(af&&af.length)for(U=0;U<af.length;U++){var ai=af[U],aj=ai;while((aj=aj.getNext())&&aj.is&&aj.getName() in l){if(c&&!ai.getFirst(function(ak){return m(ak)&&n(ak);}))ai.append(C.document.createText('\xa0'));ai.append(aj);}ai.insertAfter(ad);}};function x(){var N=C.createIterator(),O=t.config.enterMode;N.enforceRealBlocks=true;N.enlargeBr=O!=2;var P;while(P=N.getNextParagraph())y(P);};function y(N){if(N.getCustomData('indent_processed'))return false;if(u.useIndentClasses){var O=N.$.className.match(u.classNameRegex),P=0;if(O){O=O[1];P=u.indentClassMap[O];}if(u.name=='outdent')P--;else P++;if(P<0)return false;P=Math.min(P,t.config.indentClasses.length);P=Math.max(P,0);var Q=e.ltrim(N.$.className.replace(u.classNameRegex,''));if(P<1)N.$.className=Q;else N.addClass(t.config.indentClasses[P-1]);}else{var R=r(N),S=parseInt(N.getStyle(R),10);if(isNaN(S))S=0;S+=(u.name=='indent'?1:-1)*t.config.indentOffset;if(S<0)return false;S=Math.max(S,0);S=Math.ceil(S/t.config.indentOffset)*t.config.indentOffset;N.setStyle(R,S?S+t.config.indentUnit:'');if(N.getAttribute('style')==='')N.removeAttribute('style');
+}h.setMarker(v,N,'indent_processed',true);return true;};var z=t.getSelection(),A=z.createBookmarks(true),B=z&&z.getRanges(true),C,D=function(N){return!N.hasAttribute('_cke_bookmark');},E=B.createIterator();while(C=E.getNextRange()){C.shrink(1);if(C.endContainer.getName()=='body')C.setEndAt(C.endContainer.getLast(D),2);var F=C.startContainer,G=C.endContainer,H=C.getCommonAncestor(),I=H;while(I&&!(I.type==1&&l[I.getName()]))I=I.getParent();if(I&&F.type==1&&F.getName() in l){var J=new d.walker(C);J.evaluator=s;C.startContainer=J.next();}if(I&&G.type==1&&G.getName() in l){J=new d.walker(C);J.evaluator=s;C.endContainer=J.previous();}if(I){var K=I.getFirst(function(N){return N.type==1&&N.is('li');}),L=C.startContainer,M=K.equals(L)||K.contains(L);if(!(M&&y(I)))w(I);}else x();}h.clearAllMarkers(v);t.forceNextSelectionCheck();z.selectBookmarks(A);}};j.add('indent',{init:function(t){var u=new q(t,'indent'),v=new q(t,'outdent');t.addCommand('indent',u);t.addCommand('outdent',v);t.ui.addButton('Indent',{label:t.lang.indent,command:'indent'});t.ui.addButton('Outdent',{label:t.lang.outdent,command:'outdent'});t.on('selectionChange',e.bind(p,u));t.on('selectionChange',e.bind(p,v));if(b.ie6Compat||b.ie7Compat)t.addCss('ul,ol{\tmargin-left: 0px;\tpadding-left: 40px;}');},requires:['domiterator','list']});})();e.extend(i,{indentOffset:40,indentUnit:'px',indentClasses:null});(function(){function l(p,q){var r=q.block||q.blockLimit;if(!r||r.getName()=='body')return 2;return m(r,p.config.useComputedState)==this.value?1:2;};function m(p,q){q=q===undefined||q;var r;if(q)r=p.getComputedStyle('text-align');else{while(!p.hasAttribute||!(p.hasAttribute('align')||p.getStyle('text-align'))){var s=p.getParent();if(!s)break;p=s;}r=p.getStyle('text-align')||p.getAttribute('align')||'';}r&&(r=r.replace(/-moz-|-webkit-|start|auto/i,''));!r&&q&&(r=p.getComputedStyle('direction')=='rtl'?'right':'left');return r;};function n(p){var q=p.editor.getCommand(this.name);q.state=l.call(this,p.editor,p.data.path);q.fire('state');};function o(p,q,r){var t=this;t.name=q;t.value=r;var s=p.config.justifyClasses;if(s){switch(r){case 'left':t.cssClassName=s[0];break;case 'center':t.cssClassName=s[1];break;case 'right':t.cssClassName=s[2];break;case 'justify':t.cssClassName=s[3];break;}t.cssClassRegex=new RegExp('(?:^|\\s+)(?:'+s.join('|')+')(?=$|\\s)');}};o.prototype={exec:function(p){var B=this;var q=p.getSelection(),r=p.config.enterMode;if(!q)return;var s=q.createBookmarks(),t=q.getRanges(true),u=B.cssClassName,v,w,x=p.config.useComputedState;
+x=x===undefined||x;for(var y=t.length-1;y>=0;y--){v=t[y].createIterator();v.enlargeBr=r!=2;while(w=v.getNextParagraph()){w.removeAttribute('align');w.removeStyle('text-align');var z=u&&(w.$.className=e.ltrim(w.$.className.replace(B.cssClassRegex,''))),A=B.state==2&&(!x||m(w,true)!=B.value);if(u){if(A)w.addClass(u);else if(!z)w.removeAttribute('class');}else if(A)w.setStyle('text-align',B.value);}}p.focus();p.forceNextSelectionCheck();q.selectBookmarks(s);}};j.add('justify',{init:function(p){var q=new o(p,'justifyleft','left'),r=new o(p,'justifycenter','center'),s=new o(p,'justifyright','right'),t=new o(p,'justifyblock','justify');p.addCommand('justifyleft',q);p.addCommand('justifycenter',r);p.addCommand('justifyright',s);p.addCommand('justifyblock',t);p.ui.addButton('JustifyLeft',{label:p.lang.justify.left,command:'justifyleft'});p.ui.addButton('JustifyCenter',{label:p.lang.justify.center,command:'justifycenter'});p.ui.addButton('JustifyRight',{label:p.lang.justify.right,command:'justifyright'});p.ui.addButton('JustifyBlock',{label:p.lang.justify.block,command:'justifyblock'});p.on('selectionChange',e.bind(n,q));p.on('selectionChange',e.bind(n,s));p.on('selectionChange',e.bind(n,r));p.on('selectionChange',e.bind(n,t));},requires:['domiterator']});})();e.extend(i,{justifyClasses:null});j.add('keystrokes',{beforeInit:function(l){l.keystrokeHandler=new a.keystrokeHandler(l);l.specialKeys={};},init:function(l){var m=l.config.keystrokes,n=l.config.blockedKeystrokes,o=l.keystrokeHandler.keystrokes,p=l.keystrokeHandler.blockedKeystrokes;for(var q=0;q<m.length;q++)o[m[q][0]]=m[q][1];for(q=0;q<n.length;q++)p[n[q]]=1;}});a.keystrokeHandler=function(l){var m=this;if(l.keystrokeHandler)return l.keystrokeHandler;m.keystrokes={};m.blockedKeystrokes={};m._={editor:l};return m;};(function(){var l,m=function(o){o=o.data;var p=o.getKeystroke(),q=this.keystrokes[p],r=this._.editor;l=r.fire('key',{keyCode:p})===true;if(!l){if(q){var s={from:'keystrokeHandler'};l=r.execCommand(q,s)!==false;}if(!l){var t=r.specialKeys[p];l=t&&t(r)===true;if(!l)l=!!this.blockedKeystrokes[p];}}if(l)o.preventDefault(true);return!l;},n=function(o){if(l){l=false;o.data.preventDefault(true);}};a.keystrokeHandler.prototype={attach:function(o){o.on('keydown',m,this);if(b.opera||b.gecko&&b.mac)o.on('keypress',n,this);}};})();i.blockedKeystrokes=[1000+66,1000+73,1000+85];i.keystrokes=[[4000+121,'toolbarFocus'],[4000+122,'elementsPathFocus'],[2000+121,'contextMenu'],[1000+2000+121,'contextMenu'],[1000+90,'undo'],[1000+89,'redo'],[1000+2000+90,'redo'],[1000+76,'link'],[1000+66,'bold'],[1000+73,'italic'],[1000+85,'underline'],[4000+109,'toolbarCollapse'],[4000+48,'a11yHelp']];
+j.add('link',{init:function(l){l.addCommand('link',new a.dialogCommand('link'));l.addCommand('anchor',new a.dialogCommand('anchor'));l.addCommand('unlink',new a.unlinkCommand());l.ui.addButton('Link',{label:l.lang.link.toolbar,command:'link'});l.ui.addButton('Unlink',{label:l.lang.unlink,command:'unlink'});l.ui.addButton('Anchor',{label:l.lang.anchor.toolbar,command:'anchor'});a.dialog.add('link',this.path+'dialogs/link.js');a.dialog.add('anchor',this.path+'dialogs/anchor.js');l.addCss('img.cke_anchor{background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'width: 18px !important;'+'height: 18px !important;'+'}\n'+'a.cke_anchor'+'{'+'background-image: url('+a.getUrl(this.path+'images/anchor.gif')+');'+'background-position: 0 center;'+'background-repeat: no-repeat;'+'border: 1px solid #a9a9a9;'+'padding-left: 18px;'+'}');l.on('selectionChange',function(m){var n=l.getCommand('unlink'),o=m.data.path.lastElement&&m.data.path.lastElement.getAscendant('a',true);if(o&&o.getName()=='a'&&o.getAttribute('href'))n.setState(2);else n.setState(0);});l.on('doubleclick',function(m){var n=j.link.getSelectedLink(l)||m.data.element;if(n.is('a'))m.data.dialog=n.getAttribute('name')&&!n.getAttribute('href')?'anchor':'link';else if(n.is('img')&&n.getAttribute('_cke_real_element_type')=='anchor')m.data.dialog='anchor';});if(l.addMenuItems)l.addMenuItems({anchor:{label:l.lang.anchor.menu,command:'anchor',group:'anchor'},link:{label:l.lang.link.menu,command:'link',group:'link',order:1},unlink:{label:l.lang.unlink,command:'unlink',group:'link',order:5}});if(l.contextMenu)l.contextMenu.addListener(function(m,n){if(!m||m.isReadOnly())return null;var o=m.is('img')&&m.getAttribute('_cke_real_element_type')=='anchor';if(!o){if(!(m=j.link.getSelectedLink(l)))return null;o=m.getAttribute('name')&&!m.getAttribute('href');}return o?{anchor:2}:{link:2,unlink:2};});},afterInit:function(l){var m=l.dataProcessor,n=m&&m.dataFilter;if(n)n.addRules({elements:{a:function(o){var p=o.attributes;if(p.name&&!p.href)return l.createFakeParserElement(o,'cke_anchor','anchor');}}});},requires:['fakeobjects']});j.link={getSelectedLink:function(l){try{var m=l.getSelection();if(m.getType()==3){var n=m.getSelectedElement();if(n.is('a'))return n;}var o=m.getRanges(true)[0];o.shrink(2);var p=o.getCommonAncestor();return p.getAscendant('a',true);}catch(q){return null;}}};a.unlinkCommand=function(){};a.unlinkCommand.prototype={exec:function(l){var m=l.getSelection(),n=m.createBookmarks(),o=m.getRanges(),p,q;
+for(var r=0;r<o.length;r++){p=o[r].getCommonAncestor(true);q=p.getAscendant('a',true);if(!q)continue;o[r].selectNodeContents(q);}m.selectRanges(o);l.document.$.execCommand('unlink',false,null);m.selectBookmarks(n);},startDisabled:true};e.extend(i,{linkShowAdvancedTab:true,linkShowTargetTab:true});(function(){var l={ol:1,ul:1},m=/^[\n\r\t ]*$/;j.list={listToArray:function(B,C,D,E,F){if(!l[B.getName()])return[];if(!E)E=0;if(!D)D=[];for(var G=0,H=B.getChildCount();G<H;G++){var I=B.getChild(G);if(I.$.nodeName.toLowerCase()!='li')continue;var J={parent:B,indent:E,element:I,contents:[]};if(!F){J.grandparent=B.getParent();if(J.grandparent&&J.grandparent.$.nodeName.toLowerCase()=='li')J.grandparent=J.grandparent.getParent();}else J.grandparent=F;if(C)h.setMarker(C,I,'listarray_index',D.length);D.push(J);for(var K=0,L=I.getChildCount(),M;K<L;K++){M=I.getChild(K);if(M.type==1&&l[M.getName()])j.list.listToArray(M,C,D,E+1,J.grandparent);else J.contents.push(M);}}return D;},arrayToList:function(B,C,D,E,F){if(!D)D=0;if(!B||B.length<D+1)return null;var G=B[D].parent.getDocument(),H=new d.documentFragment(G),I=null,J=D,K=Math.max(B[D].indent,0),L=null,M=E==1?'p':'div';for(;;){var N=B[J];if(N.indent==K){if(!I||B[J].parent.getName()!=I.getName()){I=B[J].parent.clone(false,true);H.append(I);}L=I.append(N.element.clone(false,true));for(var O=0;O<N.contents.length;O++)L.append(N.contents[O].clone(true,true));J++;}else if(N.indent==Math.max(K,0)+1){var P=j.list.arrayToList(B,null,J,E);L.append(P.listNode);J=P.nextIndex;}else if(N.indent==-1&&!D&&N.grandparent){L;if(l[N.grandparent.getName()])L=N.element.clone(false,true);else if(F||E!=2&&N.grandparent.getName()!='td'){L=G.createElement(M);if(F)L.setAttribute('dir',F);}else L=new d.documentFragment(G);for(O=0;O<N.contents.length;O++)L.append(N.contents[O].clone(true,true));if(L.type==11&&J!=B.length-1){if(L.getLast()&&L.getLast().type==1&&L.getLast().getAttribute('type')=='_moz')L.getLast().remove();L.appendBogus();}if(L.type==1&&L.getName()==M&&L.$.firstChild){L.trim();var Q=L.getFirst();if(Q.type==1&&Q.isBlockBoundary()){var R=new d.documentFragment(G);L.moveChildren(R);L=R;}}var S=L.$.nodeName.toLowerCase();if(!c&&(S=='div'||S=='p'))L.appendBogus();H.append(L);I=null;J++;}else return null;if(B.length<=J||Math.max(B[J].indent,0)<K)break;}if(C){var T=H.getFirst();while(T){if(T.type==1)h.clearMarkers(C,T);T=T.getNextSourceNode();}}return{listNode:H,nextIndex:J};}};function n(B,C){B.getCommand(this.name).setState(C);};function o(B){var C=B.data.path,D=C.blockLimit,E=C.elements,F;
+for(var G=0;G<E.length&&(F=E[G])&&!F.equals(D);G++){if(l[E[G].getName()])return n.call(this,B.editor,this.type==E[G].getName()?1:2);}return n.call(this,B.editor,2);};function p(B,C,D,E){var F=j.list.listToArray(C.root,D),G=[];for(var H=0;H<C.contents.length;H++){var I=C.contents[H];I=I.getAscendant('li',true);if(!I||I.getCustomData('list_item_processed'))continue;G.push(I);h.setMarker(D,I,'list_item_processed',true);}var J=C.root,K=J.getDocument().createElement(this.type);J.copyAttributes(K,{start:1,type:1});K.removeStyle('list-style-type');for(H=0;H<G.length;H++){var L=G[H].getCustomData('listarray_index');F[L].parent=K;}var M=j.list.arrayToList(F,D,null,B.config.enterMode),N,O=M.listNode.getChildCount();for(H=0;H<O&&(N=M.listNode.getChild(H));H++){if(N.getName()==this.type)E.push(N);}M.listNode.replace(C.root);};var q=/^h[1-6]$/;function r(B,C,D){var E=C.contents,F=C.root.getDocument(),G=[];if(E.length==1&&E[0].equals(C.root)){var H=F.createElement('div');E[0].moveChildren&&E[0].moveChildren(H);E[0].append(H);E[0]=H;}var I=C.contents[0].getParent();for(var J=0;J<E.length;J++)I=I.getCommonAncestor(E[J].getParent());for(J=0;J<E.length;J++){var K=E[J],L;while(L=K.getParent()){if(L.equals(I)){G.push(K);break;}K=L;}}if(G.length<1)return;var M=G[G.length-1].getNext(),N=F.createElement(this.type),O;D.push(N);while(G.length){var P=G.shift(),Q=F.createElement('li');if(P.is('pre')||q.test(P.getName()))P.appendTo(Q);else{if(P.hasAttribute('dir')){O=O||P.getAttribute('dir');P.removeAttribute('dir');}P.copyAttributes(Q);P.moveChildren(Q);P.remove();if(!c)Q.appendBogus();}Q.appendTo(N);}if(O)N.setAttribute('dir',O);if(M)N.insertBefore(M);else N.appendTo(I);};function s(B,C,D){var E=j.list.listToArray(C.root,D),F=[];for(var G=0;G<C.contents.length;G++){var H=C.contents[G];H=H.getAscendant('li',true);if(!H||H.getCustomData('list_item_processed'))continue;F.push(H);h.setMarker(D,H,'list_item_processed',true);}var I=null;for(G=0;G<F.length;G++){var J=F[G].getCustomData('listarray_index');E[J].indent=-1;I=J;}for(G=I+1;G<E.length;G++){if(E[G].indent>E[G-1].indent+1){var K=E[G-1].indent+1-E[G].indent,L=E[G].indent;while(E[G]&&E[G].indent>=L){E[G].indent+=K;G++;}G--;}}var M=j.list.arrayToList(E,D,null,B.config.enterMode,C.root.getAttribute('dir')),N=M.listNode,O,P;function Q(R){if((O=N[R?'getFirst':'getLast']())&&!(O.is&&O.isBlockBoundary())&&(P=C.root[R?'getPrevious':'getNext'](d.walker.whitespaces(true)))&&!(P.is&&P.isBlockBoundary({br:1})))B.document.createElement('br')[R?'insertBefore':'insertAfter'](O);
+};Q(true);Q();N.replace(C.root);};function t(B,C){this.name=B;this.type=C;};t.prototype={exec:function(B){B.focus();var C=B.document,D=B.getSelection(),E=D&&D.getRanges(true);if(!E||E.length<1)return;if(this.state==2){var F=C.getBody();F.trim();if(!F.getFirst()){var G=C.createElement(B.config.enterMode==1?'p':B.config.enterMode==3?'div':'br');G.appendTo(F);E=new d.rangeList([new d.range(C)]);if(G.is('br')){E[0].setStartBefore(G);E[0].setEndAfter(G);}else E[0].selectNodeContents(G);D.selectRanges(E);}else{var H=E.length==1&&E[0],I=H&&H.getEnclosedNode();if(I&&I.is&&this.type==I.getName())n.call(this,B,1);}}var J=D.createBookmarks(true),K=[],L={},M=E.createIterator(),N=0;while((H=M.getNextRange())&&++N){var O=H.getBoundaryNodes(),P=O.startNode,Q=O.endNode;if(P.type==1&&P.getName()=='td')H.setStartAt(O.startNode,1);if(Q.type==1&&Q.getName()=='td')H.setEndAt(O.endNode,2);var R=H.createIterator(),S;R.forceBrBreak=this.state==2;while(S=R.getNextParagraph()){if(S.getCustomData('list_block'))continue;else h.setMarker(L,S,'list_block',1);var T=new d.elementPath(S),U=T.elements,V=U.length,W=null,X=false,Y=T.blockLimit,Z;for(var aa=V-1;aa>=0&&(Z=U[aa]);aa--){if(l[Z.getName()]&&Y.contains(Z)){Y.removeCustomData('list_group_object_'+N);var ab=Z.getCustomData('list_group_object');if(ab)ab.contents.push(S);else{ab={root:Z,contents:[S]};K.push(ab);h.setMarker(L,Z,'list_group_object',ab);}X=true;break;}}if(X)continue;var ac=Y;if(ac.getCustomData('list_group_object_'+N))ac.getCustomData('list_group_object_'+N).contents.push(S);else{ab={root:ac,contents:[S]};h.setMarker(L,ac,'list_group_object_'+N,ab);K.push(ab);}}}var ad=[];while(K.length>0){ab=K.shift();if(this.state==2){if(l[ab.root.getName()])p.call(this,B,ab,L,ad);else r.call(this,B,ab,ad);}else if(this.state==1&&l[ab.root.getName()])s.call(this,B,ab,L);}for(aa=0;aa<ad.length;aa++){W=ad[aa];var ae,af=this;(ae=function(ag){var ah=W[ag?'getPrevious':'getNext'](d.walker.whitespaces(true));if(ah&&ah.getName&&ah.getName()==af.type){ah.remove();ah.moveChildren(W,ag?true:false);}})();ae(true);}h.clearAllMarkers(L);D.selectBookmarks(J);B.focus();}};var u=f,v=/[\t\r\n ]*(?:&nbsp;|\xa0)$/;function w(B,C){var D,E=B.children,F=E.length;for(var G=0;G<F;G++){D=E[G];if(D.name&&D.name in C)return G;}return F;};function x(B){return function(C){var D=C.children,E=w(C,u.$list),F=D[E],G=F&&F.previous,H;if(G&&(G.name&&G.name=='br'||G.value&&(H=G.value.match(v)))){var I=G;if(!(H&&H.index)&&I==D[0])D[0]=B||c?new a.htmlParser.text('\xa0'):new a.htmlParser.element('br',{});
+else if(I.name=='br')D.splice(E-1,1);else I.value=I.value.replace(v,'');}};};var y={elements:{}};for(var z in u.$listItem)y.elements[z]=x();var A={elements:{}};for(z in u.$listItem)A.elements[z]=x(true);j.add('list',{init:function(B){var C=new t('numberedlist','ol'),D=new t('bulletedlist','ul');B.addCommand('numberedlist',C);B.addCommand('bulletedlist',D);B.ui.addButton('NumberedList',{label:B.lang.numberedlist,command:'numberedlist'});B.ui.addButton('BulletedList',{label:B.lang.bulletedlist,command:'bulletedlist'});B.on('selectionChange',e.bind(o,C));B.on('selectionChange',e.bind(o,D));},afterInit:function(B){var C=B.dataProcessor;if(C){C.dataFilter.addRules(y);C.htmlFilter.addRules(A);}},requires:['domiterator']});})();(function(){j.liststyle={requires:['dialog'],init:function(l){l.addCommand('numberedListStyle',new a.dialogCommand('numberedListStyle'));a.dialog.add('numberedListStyle',this.path+'dialogs/liststyle.js');l.addCommand('bulletedListStyle',new a.dialogCommand('bulletedListStyle'));a.dialog.add('bulletedListStyle',this.path+'dialogs/liststyle.js');if(l.addMenuItems){l.addMenuGroup('list',108);l.addMenuItems({numberedlist:{label:l.lang.list.numberedTitle,group:'list',command:'numberedListStyle'},bulletedlist:{label:l.lang.list.bulletedTitle,group:'list',command:'bulletedListStyle'}});}if(l.contextMenu)l.contextMenu.addListener(function(m,n){if(!m||m.isReadOnly())return null;while(m){var o=m.getName();if(o=='ol')return{numberedlist:2};else if(o=='ul')return{bulletedlist:2};m=m.getParent();}return null;});}};j.add('liststyle',j.liststyle);})();(function(){function l(r){if(!r||r.type!=1||r.getName()!='form')return[];var s=[],t=['style','className'];for(var u=0;u<t.length;u++){var v=t[u],w=r.$.elements.namedItem(v);if(w){var x=new h(w);s.push([x,x.nextSibling]);x.remove();}}return s;};function m(r,s){if(!r||r.type!=1||r.getName()!='form')return;if(s.length>0)for(var t=s.length-1;t>=0;t--){var u=s[t][0],v=s[t][1];if(v)u.insertBefore(v);else u.appendTo(r);}};function n(r,s){var t=l(r),u={},v=r.$;if(!s){u['class']=v.className||'';v.className='';}u.inline=v.style.cssText||'';if(!s)v.style.cssText='position: static; overflow: visible';m(t);return u;};function o(r,s){var t=l(r),u=r.$;if('class' in s)u.className=s['class'];if('inline' in s)u.style.cssText=s.inline;m(t);};function p(r){var s=a.instances;for(var t in s){var u=s[t];if(u.mode=='wysiwyg'){var v=u.document.getBody();v.setAttribute('contentEditable',false);v.setAttribute('contentEditable',true);}}if(r.focusManager.hasFocus){r.toolbox.focus();
+r.focus();}};function q(r){if(!c||b.version>6)return null;var s=h.createFromHtml('<iframe frameborder="0" tabindex="-1" src="javascript:void((function(){document.open();'+(b.isCustomDomain()?"document.domain='"+this.getDocument().$.domain+"';":'')+'document.close();'+'})())"'+' style="display:block;position:absolute;z-index:-1;'+'progid:DXImageTransform.Microsoft.Alpha(opacity=0);'+'"></iframe>');return r.append(s,true);};j.add('maximize',{init:function(r){var s=r.lang,t=a.document,u=t.getWindow(),v,w,x,y;function z(){var B=u.getViewPaneSize();y&&y.setStyles({width:B.width+'px',height:B.height+'px'});r.resize(B.width,B.height,null,true);};var A=2;r.addCommand('maximize',{modes:{wysiwyg:1,source:1},editorFocus:false,exec:function(){var B=r.container.getChild(1),C=r.getThemeSpace('contents');if(r.mode=='wysiwyg'){var D=r.getSelection();v=D&&D.getRanges();w=u.getScrollPosition();}else{var E=r.textarea.$;v=!c&&[E.selectionStart,E.selectionEnd];w=[E.scrollLeft,E.scrollTop];}if(this.state==2){u.on('resize',z);x=u.getScrollPosition();var F=r.container;while(F=F.getParent()){F.setCustomData('maximize_saved_styles',n(F));F.setStyle('z-index',r.config.baseFloatZIndex-1);}C.setCustomData('maximize_saved_styles',n(C,true));B.setCustomData('maximize_saved_styles',n(B,true));if(c)t.$.documentElement.style.overflow=t.getBody().$.style.overflow='hidden';else t.getBody().setStyles({overflow:'hidden',width:'0px',height:'0px'});c?setTimeout(function(){u.$.scrollTo(0,0);},0):u.$.scrollTo(0,0);var G=u.getViewPaneSize();B.setStyle('position','absolute');B.$.offsetLeft;B.setStyles({'z-index':r.config.baseFloatZIndex-1,left:'0px',top:'0px'});y=q(B);B.addClass('cke_maximized');z();var H=B.getDocumentPosition();B.setStyles({left:-1*H.x+'px',top:-1*H.y+'px'});b.gecko&&p(r);}else if(this.state==1){u.removeListener('resize',z);var I=[C,B];for(var J=0;J<I.length;J++){o(I[J],I[J].getCustomData('maximize_saved_styles'));I[J].removeCustomData('maximize_saved_styles');}F=r.container;while(F=F.getParent()){o(F,F.getCustomData('maximize_saved_styles'));F.removeCustomData('maximize_saved_styles');}c?setTimeout(function(){u.$.scrollTo(x.x,x.y);},0):u.$.scrollTo(x.x,x.y);B.removeClass('cke_maximized');if(y){y.remove();y=null;}r.fire('resize');}this.toggleState();var K=this.uiItems[0],L=this.state==2?s.maximize:s.minimize,M=r.element.getDocument().getById(K._.id);M.getChild(1).setHtml(L);M.setAttribute('title',L);M.setAttribute('href','javascript:void("'+L+'");');if(r.mode=='wysiwyg'){if(v){b.gecko&&p(r);
+r.getSelection().selectRanges(v);var N=r.getSelection().getStartElement();N&&N.scrollIntoView(true);}else u.$.scrollTo(w.x,w.y);}else{if(v){E.selectionStart=v[0];E.selectionEnd=v[1];}E.scrollLeft=w[0];E.scrollTop=w[1];}v=w=null;A=this.state;},canUndo:false});r.ui.addButton('Maximize',{label:s.maximize,command:'maximize'});r.on('mode',function(){r.getCommand('maximize').setState(A);},null,null,100);}});})();j.add('newpage',{init:function(l){l.addCommand('newpage',{modes:{wysiwyg:1,source:1},exec:function(m){var n=this;m.setData(m.config.newpage_html,function(){setTimeout(function(){m.fire('afterCommandExec',{name:n.name,command:n});},200);});m.focus();},async:true});l.ui.addButton('NewPage',{label:l.lang.newPage,command:'newpage'});}});i.newpage_html='';j.add('pagebreak',{init:function(l){l.addCommand('pagebreak',j.pagebreakCmd);l.ui.addButton('PageBreak',{label:l.lang.pagebreak,command:'pagebreak'});l.addCss('img.cke_pagebreak{background-image: url('+a.getUrl(this.path+'images/pagebreak.gif')+');'+'background-position: center center;'+'background-repeat: no-repeat;'+'clear: both;'+'display: block;'+'float: none;'+'width:100% !important; _width:99.9% !important;'+'border-top: #999999 1px dotted;'+'border-bottom: #999999 1px dotted;'+'height: 5px !important;'+'page-break-after: always;'+'}');},afterInit:function(l){var m=l.dataProcessor,n=m&&m.dataFilter;if(n)n.addRules({elements:{div:function(o){var p=o.attributes,q=p&&p.style,r=q&&o.children.length==1&&o.children[0],s=r&&r.name=='span'&&r.attributes.style;if(s&&/page-break-after\s*:\s*always/i.test(q)&&/display\s*:\s*none/i.test(s)){var t=l.createFakeParserElement(o,'cke_pagebreak','div'),u=l.lang.pagebreakAlt;t.attributes.alt=u;t.attributes['aria-label']=u;return t;}}}});},requires:['fakeobjects']});j.pagebreakCmd={exec:function(l){var m=l.lang.pagebreakAlt,n=h.createFromHtml('<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>');n=l.createFakeElement(n,'cke_pagebreak','div');n.setAttribute('alt',m);n.setAttribute('aria-label',m);var o=l.getSelection().getRanges(true);l.fire('saveSnapshot');for(var p,q=o.length-1;q>=0;q--){p=o[q];if(q<o.length-1)n=n.clone(true);p.splitBlock('p');p.insertNode(n);if(q==o.length-1){p.moveToPosition(n,4);p.select();}var r=n.getPrevious();if(r&&f[r.getName()].div)n.move(r);}l.fire('saveSnapshot');}};(function(){j.add('pastefromword',{init:function(l){var m=0,n=function(){setTimeout(function(){m=0;},0);};l.addCommand('pastefromword',{canUndo:false,exec:function(){m=1;
+if(l.execCommand('paste')===false)l.on('dialogHide',function(o){o.removeListener();n();});else n();}});l.ui.addButton('PasteFromWord',{label:l.lang.pastefromword.toolbar,command:'pastefromword'});l.on('paste',function(o){var p=o.data,q;if((q=p.html)&&(m||/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(q))){var r=this.loadFilterRules(function(){if(r)l.fire('paste',p);else if(!l.config.pasteFromWordPromptCleanup||m||confirm(l.lang.pastefromword.confirmCleanup))p.html=a.cleanWord(q,l);});r&&o.cancel();}},this);},loadFilterRules:function(l){var m=a.cleanWord;if(m)l();else{var n=a.getUrl(i.pasteFromWordCleanupFile||this.path+'filter/default.js');a.scriptLoader.load(n,l,null,false,true);}return!m;}});})();(function(){var l={exec:function(o){var p=e.tryThese(function(){var q=window.clipboardData.getData('Text');if(!q)throw 0;return q;});if(!p){o.openDialog('pastetext');return false;}else o.fire('paste',{text:p});return true;}};function m(o,p){if(c){var q=o.selection;if(q.type=='Control')q.clear();q.createRange().pasteHTML(p);}else o.execCommand('inserthtml',false,p);};j.add('pastetext',{init:function(o){var p='pastetext',q=o.addCommand(p,l);o.ui.addButton('PasteText',{label:o.lang.pasteText.button,command:p});a.dialog.add(p,a.getUrl(this.path+'dialogs/pastetext.js'));if(o.config.forcePasteAsPlainText)o.on('beforeCommandExec',function(r){if(r.data.name=='paste'){o.execCommand('pastetext');r.cancel();}},null,null,0);},requires:['clipboard']});function n(o,p,q,r){while(q--)j.enterkey[p==2?'enterBr':'enterBlock'](o,p,null,r);};a.editor.prototype.insertText=function(o){this.focus();this.fire('saveSnapshot');var p=this.getSelection().getStartElement().hasAscendant('pre',true)?2:this.config.enterMode,q=p==2,r=this.document.$,s=this,t;o=e.htmlEncode(o.replace(/\r\n|\r/g,'\n'));var u=0;o.replace(/\n+/g,function(v,w){t=o.substring(u,w);u=w+v.length;t.length&&m(r,t);var x=v.length,y=q?0:Math.floor(x/2),z=q?x:x%2;n(s,p,y);n(s,2,z,q?false:true);});t=o.substring(u,o.length);t.length&&m(r,t);this.fire('saveSnapshot');};})();j.add('popup');e.extend(a.editor.prototype,{popup:function(l,m,n,o){m=m||'80%';n=n||'70%';if(typeof m=='string'&&m.length>1&&m.substr(m.length-1,1)=='%')m=parseInt(window.screen.width*parseInt(m,10)/100,10);if(typeof n=='string'&&n.length>1&&n.substr(n.length-1,1)=='%')n=parseInt(window.screen.height*parseInt(n,10)/100,10);if(m<640)m=640;if(n<420)n=420;var p=parseInt((window.screen.height-n)/2,10),q=parseInt((window.screen.width-m)/2,10);o=(o||'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes')+',width='+m+',height='+n+',top='+p+',left='+q;
+var r=window.open('',null,o,true);if(!r)return false;try{r.moveTo(q,p);r.resizeTo(m,n);r.focus();r.location.href=l;}catch(s){r=window.open(l,null,o,true);}return true;}});(function(){var l={modes:{wysiwyg:1,source:1},canUndo:false,exec:function(n){var o,p=n.config,q=p.baseHref?'<base href="'+p.baseHref+'"/>':'',r=b.isCustomDomain();if(p.fullPage)o=n.getData().replace(/<head>/,'$&'+q).replace(/[^>]*(?=<\/title>)/,n.lang.preview);else{var s='<body ',t=n.document&&n.document.getBody();if(t){if(t.getAttribute('id'))s+='id="'+t.getAttribute('id')+'" ';if(t.getAttribute('class'))s+='class="'+t.getAttribute('class')+'" ';}s+='>';o=n.config.docType+'<html dir="'+n.config.contentsLangDirection+'">'+'<head>'+q+'<title>'+n.lang.preview+'</title>'+e.buildStyleHtml(n.config.contentsCss)+'</head>'+s+n.getData()+'</body></html>';}var u=640,v=420,w=80;try{var x=window.screen;u=Math.round(x.width*0.8);v=Math.round(x.height*0.7);w=Math.round(x.width*0.1);}catch(A){}var y='';if(r){window._cke_htmlToLoad=o;y='javascript:void( (function(){document.open();document.domain="'+document.domain+'";'+'document.write( window.opener._cke_htmlToLoad );'+'document.close();'+'window.opener._cke_htmlToLoad = null;'+'})() )';}var z=window.open(y,null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+u+',height='+v+',left='+w);if(!r){z.document.open();z.document.write(o);z.document.close();}}},m='preview';j.add(m,{init:function(n){n.addCommand(m,l);n.ui.addButton('Preview',{label:n.lang.preview,command:m});}});})();j.add('print',{init:function(l){var m='print',n=l.addCommand(m,j.print);l.ui.addButton('Print',{label:l.lang.print,command:m});}});j.print={exec:function(l){if(b.opera)return;else if(b.gecko)l.window.$.print();else l.document.$.execCommand('Print');},canUndo:false,modes:{wysiwyg:!b.opera}};j.add('removeformat',{requires:['selection'],init:function(l){l.addCommand('removeFormat',j.removeformat.commands.removeformat);l.ui.addButton('RemoveFormat',{label:l.lang.removeFormat,command:'removeFormat'});l._.removeFormat={filters:[]};}});j.removeformat={commands:{removeformat:{exec:function(l){var m=l._.removeFormatRegex||(l._.removeFormatRegex=new RegExp('^(?:'+l.config.removeFormatTags.replace(/,/g,'|')+')$','i')),n=l._.removeAttributes||(l._.removeAttributes=l.config.removeFormatAttributes.split(',')),o=j.removeformat.filter,p=l.getSelection().getRanges(true),q=p.createIterator(),r;while(r=q.getNextRange()){if(r.collapsed)continue;r.enlarge(1);var s=r.createBookmark(),t=s.startNode,u=s.endNode,v=function(y){var z=new d.elementPath(y),A=z.elements;
+for(var B=1,C;C=A[B];B++){if(C.equals(z.block)||C.equals(z.blockLimit))break;if(m.test(C.getName())&&o(l,C))y.breakParent(C);}};v(t);v(u);var w=t.getNextSourceNode(true,1);while(w){if(w.equals(u))break;var x=w.getNextSourceNode(false,1);if(!(w.getName()=='img'&&w.getAttribute('_cke_realelement'))&&o(l,w))if(m.test(w.getName()))w.remove(true);else{w.removeAttributes(n);l.fire('removeFormatCleanup',w);}w=x;}r.moveToBookmark(s);}l.getSelection().selectRanges(p);}}},filter:function(l,m){var n=l._.removeFormat.filters;for(var o=0;o<n.length;o++){if(n[o](m)===false)return false;}return true;}};a.editor.prototype.addRemoveFormatFilter=function(l){this._.removeFormat.filters.push(l);};i.removeFormatTags='b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var';i.removeFormatAttributes='class,style,lang,width,height,align,hspace,valign';j.add('resize',{init:function(l){var m=l.config;!m.resize_dir&&(m.resize_dir='both');m.resize_maxWidth==undefined&&(m.resize_maxWidth=3000);m.resize_maxHeight==undefined&&(m.resize_maxHeight=3000);m.resize_minWidth==undefined&&(m.resize_minWidth=750);m.resize_minHeight==undefined&&(m.resize_minHeight=250);if(m.resize_enabled!==false){var n=null,o,p,q=(m.resize_dir=='both'||m.resize_dir=='horizontal')&&m.resize_minWidth!=m.resize_maxWidth,r=(m.resize_dir=='both'||m.resize_dir=='vertical')&&m.resize_minHeight!=m.resize_maxHeight;function s(v){var w=v.data.$.screenX-o.x,x=v.data.$.screenY-o.y,y=p.width,z=p.height,A=y+w*(l.lang.dir=='rtl'?-1:1),B=z+x;if(q)y=Math.max(m.resize_minWidth,Math.min(A,m.resize_maxWidth));if(r)z=Math.max(m.resize_minHeight,Math.min(B,m.resize_maxHeight));l.resize(y,z);};function t(v){a.document.removeListener('mousemove',s);a.document.removeListener('mouseup',t);if(l.document){l.document.removeListener('mousemove',s);l.document.removeListener('mouseup',t);}};var u=e.addFunction(function(v){if(!n)n=l.getResizable();p={width:n.$.offsetWidth||0,height:n.$.offsetHeight||0};o={x:v.screenX,y:v.screenY};m.resize_minWidth>p.width&&(m.resize_minWidth=p.width);m.resize_minHeight>p.height&&(m.resize_minHeight=p.height);a.document.on('mousemove',s);a.document.on('mouseup',t);if(l.document){l.document.on('mousemove',s);l.document.on('mouseup',t);}});l.on('destroy',function(){e.removeFunction(u);});l.on('themeSpace',function(v){if(v.data.space=='bottom'){var w='';if(q&&!r)w=' cke_resizer_horizontal';if(!q&&r)w=' cke_resizer_vertical';v.data.html+='<div class="cke_resizer'+w+'"'+' title="'+e.htmlEncode(l.lang.resize)+'"'+' onmousedown="CKEDITOR.tools.callFunction('+u+', event)"'+'></div>';
+}},l,null,100);}}});(function(){var l={modes:{wysiwyg:1,source:1},exec:function(n){var o=n.element.$.form;if(o)try{o.submit();}catch(p){if(o.submit.click)o.submit.click();}}},m='save';j.add(m,{init:function(n){var o=n.addCommand(m,l);o.modes={wysiwyg:!!n.element.$.form};n.ui.addButton('Save',{label:n.lang.save,command:m});}});})();(function(){var l='scaytcheck',m='';function n(s,t){var u=false,v;for(v in t){if(t[v]===s||t[v]==s){u=true;break;}}return u;};var o=function(){var s=this,t=function(){var x={};x.srcNodeRef=s.document.getWindow().$.frameElement;x.assocApp='CKEDITOR.'+a.version+'@'+a.revision;x.customerid=s.config.scayt_customerid||'1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2';x.customDictionaryIds=s.config.scayt_customDictionaryIds||'';x.userDictionaryName=s.config.scayt_userDictionaryName||'';x.sLang=s.config.scayt_sLang||'en_US';x.onLoad=function(){if(!(c&&b.version<8))this.addStyle(this.selectorCss(),'padding-bottom: 2px !important;');if(s.focusManager.hasFocus&&!p.isControlRestored(s))this.focus();};x.onBeforeChange=function(){if(p.getScayt(s)&&!s.checkDirty())setTimeout(function(){s.resetDirty();},0);};var y=window.scayt_custom_params;if(typeof y=='object')for(var z in y)x[z]=y[z];if(p.getControlId(s))x.id=p.getControlId(s);var A=new window.scayt(x);A.afterMarkupRemove.push(function(H){new h(H,A.document).mergeSiblings();});var B=p.instances[s.name];if(B){A.sLang=B.sLang;A.option(B.option());A.paused=B.paused;}p.instances[s.name]=A;var C='scaytButton',D=window.scayt.uiTags,E=[];for(var F=0,G=4;F<G;F++)E.push(D[F]&&p.uiTabs[F]);p.uiTabs=E;try{A.setDisabled(p.isPaused(s)===false);}catch(H){}s.fire('showScaytState');};s.on('contentDom',t);s.on('contentDomUnload',function(){var x=a.document.getElementsByTag('script'),y=/^dojoIoScript(\d+)$/i,z=/^https?:\/\/svc\.spellchecker\.net\/spellcheck\/script\/ssrv\.cgi/i;for(var A=0;A<x.count();A++){var B=x.getItem(A),C=B.getId(),D=B.getAttribute('src');if(C&&D&&C.match(y)&&D.match(z))B.remove();}});s.on('beforeCommandExec',function(x){if((x.data.name=='source'||x.data.name=='newpage')&&s.mode=='wysiwyg'){var y=p.getScayt(s);if(y){p.setPaused(s,!y.disabled);p.setControlId(s,y.id);y.destroy(true);delete p.instances[s.name];}}else if(x.data.name=='source'&&s.mode=='source')p.markControlRestore(s);});s.on('afterCommandExec',function(x){if(!p.isScaytEnabled(s))return;if(s.mode=='wysiwyg'&&(x.data.name=='undo'||x.data.name=='redo'))window.setTimeout(function(){p.getScayt(s).refresh();},10);
+});s.on('destroy',function(x){var y=x.editor,z=p.getScayt(y);if(!z)return;delete p.instances[y.name];p.setControlId(y,z.id);z.destroy(true);});s.on('afterSetData',function(){if(p.isScaytEnabled(s))window.setTimeout(function(){var x=p.getScayt(s);x&&x.refresh();},10);});s.on('insertElement',function(){var x=p.getScayt(s);if(p.isScaytEnabled(s)){if(c)s.getSelection().unlock(true);window.setTimeout(function(){x.focus();x.refresh();},10);}},this,null,50);s.on('insertHtml',function(){var x=p.getScayt(s);if(p.isScaytEnabled(s)){if(c)s.getSelection().unlock(true);window.setTimeout(function(){x.focus();x.refresh();},10);}},this,null,50);s.on('scaytDialog',function(x){x.data.djConfig=window.djConfig;x.data.scayt_control=p.getScayt(s);x.data.tab=m;x.data.scayt=window.scayt;});var u=s.dataProcessor,v=u&&u.htmlFilter;if(v)v.addRules({elements:{span:function(x){if(x.attributes.scayt_word&&x.attributes.scaytid){delete x.name;return x;}}}});var w=j.undo.Image.prototype;w.equals=e.override(w.equals,function(x){return function(y){var D=this;var z=D.contents,A=y.contents,B=p.getScayt(D.editor);if(B&&p.isScaytReady(D.editor)){D.contents=B.reset(z)||'';y.contents=B.reset(A)||'';}var C=x.apply(D,arguments);D.contents=z;y.contents=A;return C;};});if(s.document)t();};j.scayt={engineLoaded:false,instances:{},controlInfo:{},setControlInfo:function(s,t){if(s&&s.name&&typeof this.controlInfo[s.name]!='object')this.controlInfo[s.name]={};for(var u in t)this.controlInfo[s.name][u]=t[u];},isControlRestored:function(s){if(s&&s.name&&this.controlInfo[s.name])return this.controlInfo[s.name].restored;return false;},markControlRestore:function(s){this.setControlInfo(s,{restored:true});},setControlId:function(s,t){this.setControlInfo(s,{id:t});},getControlId:function(s){if(s&&s.name&&this.controlInfo[s.name]&&this.controlInfo[s.name].id)return this.controlInfo[s.name].id;return null;},setPaused:function(s,t){this.setControlInfo(s,{paused:t});},isPaused:function(s){if(s&&s.name&&this.controlInfo[s.name])return this.controlInfo[s.name].paused;return undefined;},getScayt:function(s){return this.instances[s.name];},isScaytReady:function(s){return this.engineLoaded===true&&'undefined'!==typeof window.scayt&&this.getScayt(s);},isScaytEnabled:function(s){var t=this.getScayt(s);return t?t.disabled===false:false;},loadEngine:function(s){if(b.gecko&&b.version<10900||b.opera)return s.fire('showScaytState');if(this.engineLoaded===true)return o.apply(s);else if(this.engineLoaded==-1)return a.on('scaytReady',function(){o.apply(s);
+});a.on('scaytReady',o,s);a.on('scaytReady',function(){this.engineLoaded=true;},this,null,0);this.engineLoaded=-1;var t=document.location.protocol;t=t.search(/https?:/)!=-1?t:'http:';var u='svc.spellchecker.net/scayt25/loader__base.js',v=s.config.scayt_srcUrl||t+'//'+u,w=p.parseUrl(v).path+'/';if(window.scayt==undefined){a._djScaytConfig={baseUrl:w,addOnLoad:[function(){a.fireOnce('scaytReady');}],isDebug:false};a.document.getHead().append(a.document.createElement('script',{attributes:{type:'text/javascript',async:'true',src:v}}));}else a.fireOnce('scaytReady');return null;},parseUrl:function(s){var t;if(s.match&&(t=s.match(/(.*)[\/\\](.*?\.\w+)$/)))return{path:t[1],file:t[2]};else return s;}};var p=j.scayt,q=function(s,t,u,v,w,x,y){s.addCommand(v,w);s.addMenuItem(v,{label:u,command:v,group:x,order:y});},r={preserveState:true,editorFocus:false,exec:function(s){if(p.isScaytReady(s)){var t=p.isScaytEnabled(s);this.setState(t?2:1);var u=p.getScayt(s);u.focus();u.setDisabled(t);}else if(!s.config.scayt_autoStartup&&p.engineLoaded>=0){this.setState(0);p.loadEngine(s);}}};j.add('scayt',{requires:['menubutton'],beforeInit:function(s){var t=s.config.scayt_contextMenuItemsOrder||'suggest|moresuggest|control',u='';t=t.split('|');if(t&&t.length)for(var v in t)u+='scayt_'+t[v]+(t.length!=parseInt(v,10)+1?',':'');s.config.menu_groups=u+','+s.config.menu_groups;},init:function(s){var t={},u={},v=s.addCommand(l,r);a.dialog.add(l,a.getUrl(this.path+'dialogs/options.js'));var w=s.config.scayt_uiTabs||'1,1,1',x=[];w=w.split(',');for(var y=0,z=3;y<z;y++){var A=parseInt(w[y]||'1',10);x.push(A);}var B='scaytButton';s.addMenuGroup(B);var C={};C.scaytToggle={label:s.lang.scayt.enable,command:l,group:B};if(x[0]==1)C.scaytOptions={label:s.lang.scayt.options,group:B,onClick:function(){m='options';s.openDialog(l);}};if(x[1]==1)C.scaytLangs={label:s.lang.scayt.langs,group:B,onClick:function(){m='langs';s.openDialog(l);}};if(x[2]==1)C.scaytDict={label:s.lang.scayt.dictionariesTab,group:B,onClick:function(){m='dictionaries';s.openDialog(l);}};C.scaytAbout={label:s.lang.scayt.about,group:B,onClick:function(){m='about';s.openDialog(l);}};x[3]=1;p.uiTabs=x;s.addMenuItems(C);s.ui.add('Scayt',5,{label:s.lang.scayt.title,title:b.opera?s.lang.scayt.opera_title:s.lang.scayt.title,className:'cke_button_scayt',onRender:function(){v.on('state',function(){this.setState(v.state);},this);},onMenu:function(){var E=p.isScaytEnabled(s);s.getMenuItem('scaytToggle').label=s.lang.scayt[E?'disable':'enable'];
+return{scaytToggle:2,scaytOptions:E&&p.uiTabs[0]?2:0,scaytLangs:E&&p.uiTabs[1]?2:0,scaytDict:E&&p.uiTabs[2]?2:0,scaytAbout:E&&p.uiTabs[3]?2:0};}});if(s.contextMenu&&s.addMenuItems)s.contextMenu.addListener(function(E,F){if(!p.isScaytEnabled(s)||F.getCommonAncestor().isReadOnly())return null;var G=p.getScayt(s),H=G.getScaytNode();if(!H)return null;var I=G.getWord(H);if(!I)return null;var J=G.getLang(),K={},L=window.scayt.getSuggestion(I,J);if(!L||!L.length)return null;for(y in t){delete s._.menuItems[y];delete s._.commands[y];}for(y in u){delete s._.menuItems[y];delete s._.commands[y];}t={};u={};var M=s.config.scayt_moreSuggestions||'on',N=false,O=s.config.scayt_maxSuggestions;typeof O!='number'&&(O=5);!O&&(O=L.length);var P=s.config.scayt_contextCommands||'all';P=P.split('|');for(var Q=0,R=L.length;Q<R;Q+=1){var S='scayt_suggestion_'+L[Q].replace(' ','_'),T=(function(X,Y){return{exec:function(){G.replace(X,Y);}};})(H,L[Q]);if(Q<O){q(s,'button_'+S,L[Q],S,T,'scayt_suggest',Q+1);K[S]=2;u[S]=2;}else if(M=='on'){q(s,'button_'+S,L[Q],S,T,'scayt_moresuggest',Q+1);t[S]=2;N=true;}}if(N){s.addMenuItem('scayt_moresuggest',{label:s.lang.scayt.moreSuggestions,group:'scayt_moresuggest',order:10,getItems:function(){return t;}});u.scayt_moresuggest=2;}if(n('all',P)||n('ignore',P)){var U={exec:function(){G.ignore(H);}};q(s,'ignore',s.lang.scayt.ignore,'scayt_ignore',U,'scayt_control',1);u.scayt_ignore=2;}if(n('all',P)||n('ignoreall',P)){var V={exec:function(){G.ignoreAll(H);}};q(s,'ignore_all',s.lang.scayt.ignoreAll,'scayt_ignore_all',V,'scayt_control',2);u.scayt_ignore_all=2;}if(n('all',P)||n('add',P)){var W={exec:function(){window.scayt.addWordToUserDictionary(H);}};q(s,'add_word',s.lang.scayt.addWord,'scayt_add_word',W,'scayt_control',3);u.scayt_add_word=2;}if(G.fireOnContextMenu)G.fireOnContextMenu(s);return u;});var D=function(){s.removeListener('showScaytState',D);if(!b.opera)v.setState(p.isScaytEnabled(s)?1:2);else v.setState(0);};s.on('showScaytState',D);if(b.opera)s.on('instanceReady',function(){D();});if(s.config.scayt_autoStartup)s.on('instanceReady',function(){p.loadEngine(s);});},afterInit:function(s){var t,u=function(v){if(v.hasAttribute('scaytid'))return false;};if(s._.elementsPath&&(t=s._.elementsPath.filters))t.push(u);s.addRemoveFormatFilter&&s.addRemoveFormatFilter(u);}});})();j.add('smiley',{requires:['dialog'],init:function(l){l.config.smiley_path=l.config.smiley_path||this.path+'images/';l.addCommand('smiley',new a.dialogCommand('smiley'));l.ui.addButton('Smiley',{label:l.lang.smiley.toolbar,command:'smiley'});
+a.dialog.add('smiley',this.path+'dialogs/smiley.js');}});i.smiley_images=['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'];i.smiley_descriptions=['smiley','sad','wink','laugh','frown','cheeky','blush','surprise','indecision','angry','angel','cool','devil','crying','enlightened','no','yes','heart','broken heart','kiss','mail'];(function(){var l='.%2 p,.%2 div,.%2 pre,.%2 address,.%2 blockquote,.%2 h1,.%2 h2,.%2 h3,.%2 h4,.%2 h5,.%2 h6{background-repeat: no-repeat;background-position: top %3;border: 1px dotted gray;padding-top: 8px;padding-%3: 8px;}.%2 p{%1p.png);}.%2 div{%1div.png);}.%2 pre{%1pre.png);}.%2 address{%1address.png);}.%2 blockquote{%1blockquote.png);}.%2 h1{%1h1.png);}.%2 h2{%1h2.png);}.%2 h3{%1h3.png);}.%2 h4{%1h4.png);}.%2 h5{%1h5.png);}.%2 h6{%1h6.png);}',m=/%1/g,n=/%2/g,o=/%3/g,p={preserveState:true,editorFocus:false,exec:function(q){this.toggleState();this.refresh(q);},refresh:function(q){var r=this.state==1?'addClass':'removeClass';q.document.getBody()[r]('cke_show_blocks');}};j.add('showblocks',{requires:['wysiwygarea'],init:function(q){var r=q.addCommand('showblocks',p);r.canUndo=false;if(q.config.startupOutlineBlocks)r.setState(1);q.addCss(l.replace(m,'background-image: url('+a.getUrl(this.path)+'images/block_').replace(n,'cke_show_blocks ').replace(o,q.lang.dir=='rtl'?'right':'left'));q.ui.addButton('ShowBlocks',{label:q.lang.showBlocks,command:'showblocks'});q.on('mode',function(){if(r.state!=0)r.refresh(q);});q.on('contentDom',function(){if(r.state!=0)r.refresh(q);});}});})();i.startupOutlineBlocks=false;(function(){var l='cke_show_border',m,n=(b.ie6Compat?['.%1 table.%2,','.%1 table.%2 td, .%1 table.%2 th,','{','border : #d3d3d3 1px dotted','}']:['.%1 table.%2,','.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,','.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,','.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,','.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th','{','border : #d3d3d3 1px dotted','}']).join('');m=n.replace(/%2/g,l).replace(/%1/g,'cke_show_borders ');var o={preserveState:true,editorFocus:false,exec:function(p){this.toggleState();this.refresh(p);},refresh:function(p){var q=this.state==1?'addClass':'removeClass';
+p.document.getBody()[q]('cke_show_borders');}};j.add('showborders',{requires:['wysiwygarea'],modes:{wysiwyg:1},init:function(p){var q=p.addCommand('showborders',o);q.canUndo=false;if(p.config.startupShowBorders!==false)q.setState(1);p.addCss(m);p.on('mode',function(){if(q.state!=0)q.refresh(p);},null,null,100);p.on('contentDom',function(){if(q.state!=0)q.refresh(p);});p.on('removeFormatCleanup',function(r){var s=r.data;if(p.getCommand('showborders').state==1&&s.is('table')&&(!s.hasAttribute('border')||parseInt(s.getAttribute('border'),10)<=0))s.addClass(l);});},afterInit:function(p){var q=p.dataProcessor,r=q&&q.dataFilter,s=q&&q.htmlFilter;if(r)r.addRules({elements:{table:function(t){var u=t.attributes,v=u['class'],w=parseInt(u.border,10);if(!w||w<=0)u['class']=(v||'')+' '+l;}}});if(s)s.addRules({elements:{table:function(t){var u=t.attributes,v=u['class'];v&&(u['class']=v.replace(l,'').replace(/\s{2}/,' ').replace(/^\s+|\s+$/,''));}}});}});a.on('dialogDefinition',function(p){var q=p.data.name;if(q=='table'||q=='tableProperties'){var r=p.data.definition,s=r.getContents('info'),t=s.get('txtBorder'),u=t.commit;t.commit=e.override(u,function(x){return function(y,z){x.apply(this,arguments);var A=parseInt(this.getValue(),10);z[!A||A<=0?'addClass':'removeClass'](l);};});var v=r.getContents('advanced'),w=v&&v.get('advCSSClasses');if(w){w.setup=e.override(w.setup,function(x){return function(){x.apply(this,arguments);this.setValue(this.getValue().replace(/cke_show_border/,''));};});w.commit=e.override(w.commit,function(x){return function(y,z){x.apply(this,arguments);if(!parseInt(z.getAttribute('border'),10))z.addClass('cke_show_border');};});}}});})();j.add('sourcearea',{requires:['editingblock'],init:function(l){var m=j.sourcearea,n=a.document.getWindow();l.on('editingBlockReady',function(){var o,p;l.addMode('source',{load:function(q,r){if(c&&b.version<8)q.setStyle('position','relative');l.textarea=o=new h('textarea');o.setAttributes({dir:'ltr',tabIndex:b.webkit?-1:l.tabIndex,role:'textbox','aria-label':l.lang.editorTitle.replace('%1',l.name)});o.addClass('cke_source');o.addClass('cke_enable_context_menu');var s={width:b.ie7Compat?'99%':'100%',height:'100%',resize:'none',outline:'none','text-align':'left'};if(c){p=function(){o.hide();o.setStyle('height',q.$.clientHeight+'px');o.setStyle('width',q.$.clientWidth+'px');o.show();};l.on('resize',p);n.on('resize',p);setTimeout(p,0);}else o.on('mousedown',function(u){u.data.stopPropagation();});q.setHtml('');q.append(o);o.setStyles(s);
+l.fire('ariaWidget',o);o.on('blur',function(){l.focusManager.blur();});o.on('focus',function(){l.focusManager.focus();});l.mayBeDirty=true;this.loadData(r);var t=l.keystrokeHandler;if(t)t.attach(o);setTimeout(function(){l.mode='source';l.fire('mode');},b.gecko||b.webkit?100:0);},loadData:function(q){o.setValue(q);l.fire('dataReady');},getData:function(){return o.getValue();},getSnapshotData:function(){return o.getValue();},unload:function(q){o.clearCustomData();l.textarea=o=null;if(p){l.removeListener('resize',p);n.removeListener('resize',p);}if(c&&b.version<8)q.removeStyle('position');},focus:function(){o.focus();}});});l.addCommand('source',m.commands.source);if(l.ui.addButton)l.ui.addButton('Source',{label:l.lang.source,command:'source'});l.on('mode',function(){l.getCommand('source').setState(l.mode=='source'?1:2);});}});j.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:false,exec:function(l){if(l.mode=='wysiwyg')l.fire('saveSnapshot');l.getCommand('source').setState(0);l.setMode(l.mode=='source'?'wysiwyg':'source');},canUndo:false}}};(function(){j.add('stylescombo',{requires:['richcombo','styles'],init:function(m){var n=m.config,o=m.lang.stylesCombo,p={},q=[];function r(s){m.getStylesSet(function(t){if(!q.length){var u,v;for(var w=0;w<t.length;w++){var x=t[w];v=x.name;u=p[v]=new a.style(x);u._name=v;u._.enterMode=n.enterMode;q.push(u);}q.sort(l);}s&&s();});};m.ui.addRichCombo('Styles',{label:o.label,title:o.panelTitle,className:'cke_styles',panel:{css:m.skin.editor.css.concat(n.contentsCss),multiSelect:true,attributes:{'aria-label':o.panelTitle}},init:function(){var s=this;r(function(){var t,u,v;for(var w=0;w<q.length;w++){t=q[w];u=t._name;var x=t.type;if(x!=v){s.startGroup(o['panelTitle'+String(x)]);v=x;}s.add(u,t.type==3?u:t.buildPreview(),u);}s.commit();s.onOpen();});},onClick:function(s){m.focus();m.fire('saveSnapshot');var t=p[s],u=m.getSelection(),v=new d.elementPath(u.getStartElement());if(t.type==2&&t.checkActive(v))t.remove(m.document);else if(t.type==3&&t.checkActive(v))t.remove(m.document);else t.apply(m.document);m.fire('saveSnapshot');},onRender:function(){m.on('selectionChange',function(s){var t=this.getValue(),u=s.data.path,v=u.elements;for(var w=0,x;w<v.length;w++){x=v[w];for(var y in p){if(p[y].checkElementRemovable(x,true)){if(y!=t)this.setValue(y);return;}}}this.setValue('');},this);},onOpen:function(){var z=this;if(c||b.webkit)m.focus();var s=m.getSelection(),t=s.getSelectedElement(),u=new d.elementPath(t||s.getStartElement()),v=[0,0,0,0];
+z.showAll();z.unmarkAll();for(var w in p){var x=p[w],y=x.type;if(x.checkActive(u))z.mark(w);else if(y==3&&!x.checkApplicable(u)){z.hideItem(w);v[y]--;}v[y]++;}if(!v[1])z.hideGroup(o['panelTitle'+String(1)]);if(!v[2])z.hideGroup(o['panelTitle'+String(2)]);if(!v[3])z.hideGroup(o['panelTitle'+String(3)]);}});m.on('instanceReady',function(){r();});}});function l(m,n){var o=m.type,p=n.type;return o==p?0:o==3?-1:p==3?1:p==1?1:-1;};})();j.add('table',{init:function(l){var m=j.table,n=l.lang.table;l.addCommand('table',new a.dialogCommand('table'));l.addCommand('tableProperties',new a.dialogCommand('tableProperties'));l.ui.addButton('Table',{label:n.toolbar,command:'table'});a.dialog.add('table',this.path+'dialogs/table.js');a.dialog.add('tableProperties',this.path+'dialogs/table.js');if(l.addMenuItems)l.addMenuItems({table:{label:n.menu,command:'tableProperties',group:'table',order:5},tabledelete:{label:n.deleteTable,command:'tableDelete',group:'table',order:1}});l.on('doubleclick',function(o){var p=o.data.element;if(p.is('table'))o.data.dialog='tableProperties';});if(l.contextMenu)l.contextMenu.addListener(function(o,p){if(!o||o.isReadOnly())return null;var q=o.is('table')||o.hasAscendant('table');if(q)return{tabledelete:2,table:2};return null;});}});(function(){function l(F,G){if(c)F.removeAttribute(G);else delete F[G];};var m=/^(?:td|th)$/;function n(F){var G=F.createBookmarks(),H=F.getRanges(),I=[],J={};function K(S){if(I.length>0)return;if(S.type==1&&m.test(S.getName())&&!S.getCustomData('selected_cell')){h.setMarker(J,S,'selected_cell',true);I.push(S);}};for(var L=0;L<H.length;L++){var M=H[L];if(M.collapsed){var N=M.getCommonAncestor(),O=N.getAscendant('td',true)||N.getAscendant('th',true);if(O)I.push(O);}else{var P=new d.walker(M),Q;P.guard=K;while(Q=P.next()){var R=Q.getParent();if(R&&m.test(R.getName())&&!R.getCustomData('selected_cell')){h.setMarker(J,R,'selected_cell',true);I.push(R);}}}}h.clearAllMarkers(J);F.selectBookmarks(G);return I;};function o(F){var G=0,H=F.length-1,I={},J,K,L;while(J=F[G++])h.setMarker(I,J,'delete_cell',true);G=0;while(J=F[G++]){if((K=J.getPrevious())&&!K.getCustomData('delete_cell')||(K=J.getNext())&&!K.getCustomData('delete_cell')){h.clearAllMarkers(I);return K;}}h.clearAllMarkers(I);L=F[0].getParent();if(L=L.getPrevious())return L.getLast();L=F[H].getParent();if(L=L.getNext())return L.getChild(0);return null;};function p(F){var G=F.cells;for(var H=0;H<G.length;H++){G[H].innerHTML='';if(!c)new h(G[H]).appendBogus();}};function q(F,G){var H=F.getStartElement().getAscendant('tr');
+if(!H)return;var I=H.clone(true);G?I.insertBefore(H):I.insertAfter(H);p(I.$);};function r(F){if(F instanceof d.selection){var G=n(F),H=G.length,I=[],J,K,L;for(var M=0;M<H;M++){var N=G[M].getParent(),O=N.$.rowIndex;!M&&(K=O-1);I[O]=N;M==H-1&&(L=O+1);}var P=N.getAscendant('table'),Q=P.$.rows,R=Q.length;J=new h(L<R&&P.$.rows[L]||K>0&&P.$.rows[K]||P.$.parentNode);for(M=I.length;M>=0;M--){if(I[M])r(I[M]);}return J;}else if(F instanceof h){P=F.getAscendant('table');if(P.$.rows.length==1)P.remove();else F.remove();}return 0;};function s(F,G){var H=F.getStartElement(),I=H.getAscendant('td',true)||H.getAscendant('th',true);if(!I)return;var J=I.getAscendant('table'),K=I.$.cellIndex;for(var L=0;L<J.$.rows.length;L++){var M=J.$.rows[L];if(M.cells.length<K+1)continue;I=new h(M.cells[K]).clone(false);if(!c)I.appendBogus();var N=new h(M.cells[K]);if(G)I.insertBefore(N);else I.insertAfter(N);}};function t(F){var G=[],H=F[0]&&F[0].getAscendant('table'),I,J,K,L;for(I=0,J=F.length;I<J;I++)G.push(F[I].$.cellIndex);G.sort();for(I=1,J=G.length;I<J;I++){if(G[I]-G[I-1]>1){K=G[I-1]+1;break;}}if(!K)K=G[0]>0?G[0]-1:G[G.length-1]+1;var M=H.$.rows;for(I=0,J=M.length;I<J;I++){L=M[I].cells[K];if(L)break;}return L?new h(L):H.getPrevious();};function u(F){if(F instanceof d.selection){var G=n(F),H=t(G);for(var I=G.length-1;I>=0;I--){if(G[I])u(G[I]);}return H;}else if(F instanceof h){var J=F.getAscendant('table');if(!J)return null;var K=F.$.cellIndex;for(I=J.$.rows.length-1;I>=0;I--){var L=new h(J.$.rows[I]);if(!K&&L.$.cells.length==1){r(L);continue;}if(L.$.cells[K])L.$.removeChild(L.$.cells[K]);}}return null;};function v(F,G){var H=F.getStartElement(),I=H.getAscendant('td',true)||H.getAscendant('th',true);if(!I)return;var J=I.clone();if(!c)J.appendBogus();if(G)J.insertBefore(I);else J.insertAfter(I);};function w(F){if(F instanceof d.selection){var G=n(F),H=G[0]&&G[0].getAscendant('table'),I=o(G);for(var J=G.length-1;J>=0;J--)w(G[J]);if(I)y(I,true);else if(H)H.remove();}else if(F instanceof h){var K=F.getParent();if(K.getChildCount()==1)K.remove();else F.remove();}};function x(F){var G=F.getBogus();G&&G.remove();F.trim();};function y(F,G){var H=new d.range(F.getDocument());if(!H['moveToElementEdit'+(G?'End':'Start')](F)){H.selectNodeContents(F);H.collapse(G?false:true);}H.select(true);};function z(F,G,H){var I=F[G];if(typeof H=='undefined')return I;for(var J=0;I&&J<I.length;J++){if(H.is&&I[J]==H.$)return J;else if(J==H)return new h(I[J]);}return H.is?-1:null;};function A(F,G,H){var I=[];for(var J=0;
+J<F.length;J++){var K=F[J];if(typeof H=='undefined')I.push(K[G]);else if(H.is&&K[G]==H.$)return J;else if(J==H)return new h(K[G]);}return typeof H=='undefined'?I:H.is?-1:null;};function B(F,G,H){var I=n(F),J;if((G?I.length!=1:I.length<2)||(J=F.getCommonAncestor())&&J.type==1&&J.is('table'))return false;var K,L=I[0],M=L.getAscendant('table'),N=e.buildTableMap(M),O=N.length,P=N[0].length,Q=L.getParent().$.rowIndex,R=z(N,Q,L);if(G){var S;try{S=N[G=='up'?Q-1:G=='down'?Q+1:Q][G=='left'?R-1:G=='right'?R+1:R];}catch(ak){return false;}if(!S||L.$==S)return false;I[G=='up'||G=='left'?'unshift':'push'](new h(S));}var T=L.getDocument(),U=Q,V=0,W=0,X=!H&&new d.documentFragment(T),Y=0;for(var Z=0;Z<I.length;Z++){K=I[Z];var aa=K.getParent(),ab=K.getFirst(),ac=K.$.colSpan,ad=K.$.rowSpan,ae=aa.$.rowIndex,af=z(N,ae,K);Y+=ac*ad;W=Math.max(W,af-R+ac);V=Math.max(V,ae-Q+ad);if(!H){if(x(K),K.getChildren().count()){if(ae!=U&&ab&&!(ab.isBlockBoundary&&ab.isBlockBoundary({br:1}))){var ag=X.getLast(d.walker.whitespaces(true));if(ag&&!(ag.is&&ag.is('br')))X.append(new h('br'));}K.moveChildren(X);}Z?K.remove():K.setHtml('');}U=ae;}if(!H){X.moveChildren(L);if(!c)L.appendBogus();if(W>=P)L.removeAttribute('rowSpan');else L.$.rowSpan=V;if(V>=O)L.removeAttribute('colSpan');else L.$.colSpan=W;var ah=new d.nodeList(M.$.rows),ai=ah.count();for(Z=ai-1;Z>=0;Z--){var aj=ah.getItem(Z);if(!aj.$.cells.length){aj.remove();ai++;continue;}}return L;}else return V*W==Y;};function C(F,G){var H=n(F);if(H.length>1)return false;else if(G)return true;var I=H[0],J=I.getParent(),K=J.getAscendant('table'),L=e.buildTableMap(K),M=J.$.rowIndex,N=z(L,M,I),O=I.$.rowSpan,P,Q,R,S;if(O>1){Q=Math.ceil(O/2);R=Math.floor(O/2);S=M+Q;var T=new h(K.$.rows[S]),U=z(L,S),V;P=I.clone();for(var W=0;W<U.length;W++){V=U[W];if(V.parentNode==T.$&&W>N){P.insertBefore(new h(V));break;}else V=null;}if(!V)T.append(P,true);}else{R=Q=1;T=J.clone();T.insertAfter(J);T.append(P=I.clone());var X=z(L,M);for(var Y=0;Y<X.length;Y++)X[Y].rowSpan++;}if(!c)P.appendBogus();I.$.rowSpan=Q;P.$.rowSpan=R;if(Q==1)I.removeAttribute('rowSpan');if(R==1)P.removeAttribute('rowSpan');return P;};function D(F,G){var H=n(F);if(H.length>1)return false;else if(G)return true;var I=H[0],J=I.getParent(),K=J.getAscendant('table'),L=e.buildTableMap(K),M=J.$.rowIndex,N=z(L,M,I),O=I.$.colSpan,P,Q,R;if(O>1){Q=Math.ceil(O/2);R=Math.floor(O/2);}else{R=Q=1;var S=A(L,N);for(var T=0;T<S.length;T++)S[T].colSpan++;}P=I.clone();P.insertAfter(I);if(!c)P.appendBogus();I.$.colSpan=Q;P.$.colSpan=R;
+if(Q==1)I.removeAttribute('colSpan');if(R==1)P.removeAttribute('colSpan');return P;};var E={thead:1,tbody:1,tfoot:1,td:1,tr:1,th:1};j.tabletools={init:function(F){var G=F.lang.table;F.addCommand('cellProperties',new a.dialogCommand('cellProperties'));a.dialog.add('cellProperties',this.path+'dialogs/tableCell.js');F.addCommand('tableDelete',{exec:function(H){var I=H.getSelection(),J=I&&I.getStartElement(),K=J&&J.getAscendant('table',true);if(!K)return;I.selectElement(K);var L=I.getRanges()[0];L.collapse();I.selectRanges([L]);var M=K.getParent();if(M.getChildCount()==1&&M.getName()!='body')M.remove();else K.remove();}});F.addCommand('rowDelete',{exec:function(H){var I=H.getSelection();y(r(I));}});F.addCommand('rowInsertBefore',{exec:function(H){var I=H.getSelection();q(I,true);}});F.addCommand('rowInsertAfter',{exec:function(H){var I=H.getSelection();q(I);}});F.addCommand('columnDelete',{exec:function(H){var I=H.getSelection(),J=u(I);J&&y(J,true);}});F.addCommand('columnInsertBefore',{exec:function(H){var I=H.getSelection();s(I,true);}});F.addCommand('columnInsertAfter',{exec:function(H){var I=H.getSelection();s(I);}});F.addCommand('cellDelete',{exec:function(H){var I=H.getSelection();w(I);}});F.addCommand('cellMerge',{exec:function(H){y(B(H.getSelection()),true);}});F.addCommand('cellMergeRight',{exec:function(H){y(B(H.getSelection(),'right'),true);}});F.addCommand('cellMergeDown',{exec:function(H){y(B(H.getSelection(),'down'),true);}});F.addCommand('cellVerticalSplit',{exec:function(H){y(C(H.getSelection()));}});F.addCommand('cellHorizontalSplit',{exec:function(H){y(D(H.getSelection()));}});F.addCommand('cellInsertBefore',{exec:function(H){var I=H.getSelection();v(I,true);}});F.addCommand('cellInsertAfter',{exec:function(H){var I=H.getSelection();v(I);}});if(F.addMenuItems)F.addMenuItems({tablecell:{label:G.cell.menu,group:'tablecell',order:1,getItems:function(){var H=F.getSelection(),I=n(H);return{tablecell_insertBefore:2,tablecell_insertAfter:2,tablecell_delete:2,tablecell_merge:B(H,null,true)?2:0,tablecell_merge_right:B(H,'right',true)?2:0,tablecell_merge_down:B(H,'down',true)?2:0,tablecell_split_vertical:C(H,true)?2:0,tablecell_split_horizontal:D(H,true)?2:0,tablecell_properties:I.length>0?2:0};}},tablecell_insertBefore:{label:G.cell.insertBefore,group:'tablecell',command:'cellInsertBefore',order:5},tablecell_insertAfter:{label:G.cell.insertAfter,group:'tablecell',command:'cellInsertAfter',order:10},tablecell_delete:{label:G.cell.deleteCell,group:'tablecell',command:'cellDelete',order:15},tablecell_merge:{label:G.cell.merge,group:'tablecell',command:'cellMerge',order:16},tablecell_merge_right:{label:G.cell.mergeRight,group:'tablecell',command:'cellMergeRight',order:17},tablecell_merge_down:{label:G.cell.mergeDown,group:'tablecell',command:'cellMergeDown',order:18},tablecell_split_horizontal:{label:G.cell.splitHorizontal,group:'tablecell',command:'cellHorizontalSplit',order:19},tablecell_split_vertical:{label:G.cell.splitVertical,group:'tablecell',command:'cellVerticalSplit',order:20},tablecell_properties:{label:G.cell.title,group:'tablecellproperties',command:'cellProperties',order:21},tablerow:{label:G.row.menu,group:'tablerow',order:1,getItems:function(){return{tablerow_insertBefore:2,tablerow_insertAfter:2,tablerow_delete:2};
+}},tablerow_insertBefore:{label:G.row.insertBefore,group:'tablerow',command:'rowInsertBefore',order:5},tablerow_insertAfter:{label:G.row.insertAfter,group:'tablerow',command:'rowInsertAfter',order:10},tablerow_delete:{label:G.row.deleteRow,group:'tablerow',command:'rowDelete',order:15},tablecolumn:{label:G.column.menu,group:'tablecolumn',order:1,getItems:function(){return{tablecolumn_insertBefore:2,tablecolumn_insertAfter:2,tablecolumn_delete:2};}},tablecolumn_insertBefore:{label:G.column.insertBefore,group:'tablecolumn',command:'columnInsertBefore',order:5},tablecolumn_insertAfter:{label:G.column.insertAfter,group:'tablecolumn',command:'columnInsertAfter',order:10},tablecolumn_delete:{label:G.column.deleteColumn,group:'tablecolumn',command:'columnDelete',order:15}});if(F.contextMenu)F.contextMenu.addListener(function(H,I){if(!H||H.isReadOnly())return null;while(H){if(H.getName() in E)return{tablecell:2,tablerow:2,tablecolumn:2};H=H.getParent();}return null;});},getSelectedCells:n};j.add('tabletools',j.tabletools);})();e.buildTableMap=function(l){var m=l.$.rows,n=-1,o=[];for(var p=0;p<m.length;p++){n++;!o[n]&&(o[n]=[]);var q=-1;for(var r=0;r<m[p].cells.length;r++){var s=m[p].cells[r];q++;while(o[n][q])q++;var t=isNaN(s.colSpan)?1:s.colSpan,u=isNaN(s.rowSpan)?1:s.rowSpan;for(var v=0;v<u;v++){if(!o[n+v])o[n+v]=[];for(var w=0;w<t;w++)o[n+v][q+w]=m[p].cells[r];}q+=t-1;}}return o;};j.add('specialchar',{init:function(l){var m='specialchar';a.dialog.add(m,this.path+'dialogs/specialchar.js');l.addCommand(m,new a.dialogCommand(m));l.ui.addButton('SpecialChar',{label:l.lang.specialChar.toolbar,command:m});}});(function(){var l={editorFocus:false,modes:{wysiwyg:1,source:1}},m={exec:function(p){p.container.focusNext(true,p.tabIndex);}},n={exec:function(p){p.container.focusPrevious(true,p.tabIndex);}};function o(p){return{editorFocus:false,canUndo:false,modes:{wysiwyg:1},exec:function(q){if(q.focusManager.hasFocus){var r=q.getSelection(),s=r.getCommonAncestor(),t;if(t=s.getAscendant('td',true)||s.getAscendant('th',true)){var u=new d.range(q.document),v=e.tryThese(function(){var C=t.getParent(),D=C.$.cells[t.$.cellIndex+(p?-1:1)];D.parentNode.parentNode;return D;},function(){var C=t.getParent(),D=C.getAscendant('table'),E=D.$.rows[C.$.rowIndex+(p?-1:1)];return E.cells[p?E.cells.length-1:0];});if(!(v||p)){var w=t.getAscendant('table').$,x=t.getParent().$.cells,y=new h(w.insertRow(-1),q.document);for(var z=0,A=x.length;z<A;z++){var B=y.append(new h(x[z],q.document).clone(false,false));
+!c&&B.appendBogus();}u.moveToElementEditStart(y);}else if(v){v=new h(v);u.moveToElementEditStart(v);if(!(u.checkStartOfBlock()&&u.checkEndOfBlock()))u.selectNodeContents(v);}else return true;u.select(true);return true;}}return false;}};};j.add('tab',{requires:['keystrokes'],init:function(p){var q=p.config.enableTabKeyTools!==false,r=p.config.tabSpaces||0,s='';while(r--)s+='\xa0';if(s)p.on('key',function(t){if(t.data.keyCode==9){p.insertHtml(s);t.cancel();}});if(q)p.on('key',function(t){if(t.data.keyCode==9&&p.execCommand('selectNextCell')||t.data.keyCode==2000+9&&p.execCommand('selectPreviousCell'))t.cancel();});if(b.webkit||b.gecko)p.on('key',function(t){var u=t.data.keyCode;if(u==9&&!s){t.cancel();p.execCommand('blur');}if(u==2000+9){p.execCommand('blurBack');t.cancel();}});p.addCommand('blur',e.extend(m,l));p.addCommand('blurBack',e.extend(n,l));p.addCommand('selectNextCell',o());p.addCommand('selectPreviousCell',o(true));}});})();h.prototype.focusNext=function(l,m){var v=this;var n=v.$,o=m===undefined?v.getTabIndex():m,p,q,r,s,t,u;if(o<=0){t=v.getNextSourceNode(l,1);while(t){if(t.isVisible()&&t.getTabIndex()===0){r=t;break;}t=t.getNextSourceNode(false,1);}}else{t=v.getDocument().getBody().getFirst();while(t=t.getNextSourceNode(false,1)){if(!p)if(!q&&t.equals(v)){q=true;if(l){if(!(t=t.getNextSourceNode(true,1)))break;p=1;}}else if(q&&!v.contains(t))p=1;if(!t.isVisible()||(u=t.getTabIndex())<0)continue;if(p&&u==o){r=t;break;}if(u>o&&(!r||!s||u<s)){r=t;s=u;}else if(!r&&u===0){r=t;s=u;}}}if(r)r.focus();};h.prototype.focusPrevious=function(l,m){var v=this;var n=v.$,o=m===undefined?v.getTabIndex():m,p,q,r,s=0,t,u=v.getDocument().getBody().getLast();while(u=u.getPreviousSourceNode(false,1)){if(!p)if(!q&&u.equals(v)){q=true;if(l){if(!(u=u.getPreviousSourceNode(true,1)))break;p=1;}}else if(q&&!v.contains(u))p=1;if(!u.isVisible()||(t=u.getTabIndex())<0)continue;if(o<=0){if(p&&t===0){r=u;break;}if(t>s){r=u;s=t;}}else{if(p&&t==o){r=u;break;}if(t<o&&(!r||t>s)){r=u;s=t;}}}if(r)r.focus();};(function(){j.add('templates',{requires:['dialog'],init:function(n){a.dialog.add('templates',a.getUrl(this.path+'dialogs/templates.js'));n.addCommand('templates',new a.dialogCommand('templates'));n.ui.addButton('Templates',{label:n.lang.templates.button,command:'templates'});}});var l={},m={};a.addTemplates=function(n,o){l[n]=o;};a.getTemplates=function(n){return l[n];};a.loadTemplates=function(n,o){var p=[];for(var q=0;q<n.length;q++){if(!m[n[q]]){p.push(n[q]);m[n[q]]=1;}}if(p.length>0)a.scriptLoader.load(p,o);
+else setTimeout(o,0);};})();i.templates='default';i.templates_files=[a.getUrl('plugins/templates/templates/default.js')];i.templates_replaceContent=true;(function(){var l=function(){this.toolbars=[];this.focusCommandExecuted=false;};l.prototype.focus=function(){for(var n=0,o;o=this.toolbars[n++];)for(var p=0,q;q=o.items[p++];){if(q.focus){q.focus();return;}}};var m={toolbarFocus:{modes:{wysiwyg:1,source:1},exec:function(n){if(n.toolbox){n.toolbox.focusCommandExecuted=true;if(c)setTimeout(function(){n.toolbox.focus();},100);else n.toolbox.focus();}}}};j.add('toolbar',{init:function(n){var o=function(p,q){var r,s,t,u=n.lang.dir=='rtl';switch(q){case u?37:39:case 9:do{r=p.next;if(!r){s=p.toolbar.next;t=s&&s.items.length;while(t===0){s=s.next;t=s&&s.items.length;}if(s)r=s.items[0];}p=r;}while(p&&!p.focus)if(p)p.focus();else n.toolbox.focus();return false;case u?39:37:case 2000+9:do{r=p.previous;if(!r){s=p.toolbar.previous;t=s&&s.items.length;while(t===0){s=s.previous;t=s&&s.items.length;}if(s)r=s.items[t-1];}p=r;}while(p&&!p.focus)if(p)p.focus();else{var v=n.toolbox.toolbars[n.toolbox.toolbars.length-1].items;v[v.length-1].focus();}return false;case 27:n.focus();return false;case 13:case 32:p.execute();return false;}return true;};n.on('themeSpace',function(p){if(p.data.space==n.config.toolbarLocation){n.toolbox=new l();var q='cke_'+e.getNextNumber(),r=['<div class="cke_toolbox" role="toolbar" aria-labelledby="',q,'"'],s=n.config.toolbarStartupExpanded!==false,t;r.push(s?'>':' style="display:none">');r.push('<span id="',q,'" class="cke_voice_label">',n.lang.toolbar,'</span>');var u=n.toolbox.toolbars,v=n.config.toolbar instanceof Array?n.config.toolbar:n.config['toolbar_'+n.config.toolbar];for(var w=0;w<v.length;w++){var x=v[w];if(!x)continue;var y='cke_'+e.getNextNumber(),z={id:y,items:[]};if(t){r.push('</div>');t=0;}if(x==='/'){r.push('<div class="cke_break"></div>');continue;}r.push('<span id="',y,'" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>');var A=u.push(z)-1;if(A>0){z.previous=u[A-1];z.previous.next=z;}for(var B=0;B<x.length;B++){var C,D=x[B];if(D=='-')C=k.separator;else C=n.ui.create(D);if(C){if(C.canGroup){if(!t){r.push('<span class="cke_toolgroup" role="presentation">');t=1;}}else if(t){r.push('</span>');t=0;}var E=C.render(n,r);A=z.items.push(E)-1;if(A>0){E.previous=z.items[A-1];E.previous.next=E;}E.toolbar=z;E.onkey=o;E.onfocus=function(){if(!n.toolbox.focusCommandExecuted)n.focus();};}}if(t){r.push('</span>');t=0;
+}r.push('<span class="cke_toolbar_end"></span></span>');}r.push('</div>');if(n.config.toolbarCanCollapse){var F=e.addFunction(function(){n.execCommand('toolbarCollapse');});n.on('destroy',function(){e.removeFunction(F);});var G='cke_'+e.getNextNumber();n.addCommand('toolbarCollapse',{exec:function(H){var I=a.document.getById(G),J=I.getPrevious(),K=H.getThemeSpace('contents'),L=J.getParent(),M=parseInt(K.$.style.height,10),N=L.$.offsetHeight,O=!J.isVisible();if(!O){J.hide();I.addClass('cke_toolbox_collapser_min');I.setAttribute('title',H.lang.toolbarExpand);}else{J.show();I.removeClass('cke_toolbox_collapser_min');I.setAttribute('title',H.lang.toolbarCollapse);}I.getFirst().setText(O?'â–²':'â—€');var P=L.$.offsetHeight-N;K.setStyle('height',M-P+'px');H.fire('resize');},modes:{wysiwyg:1,source:1}});r.push('<a title="'+(s?n.lang.toolbarCollapse:n.lang.toolbarExpand)+'" id="'+G+'" tabIndex="-1" class="cke_toolbox_collapser');if(!s)r.push(' cke_toolbox_collapser_min');r.push('" onclick="CKEDITOR.tools.callFunction('+F+')">','<span>&#9650;</span>','</a>');}p.data.html+=r.join('');}});n.addCommand('toolbarFocus',m.toolbarFocus);}});})();k.separator={render:function(l,m){m.push('<span class="cke_separator" role="separator"></span>');return{};}};i.toolbarLocation='top';i.toolbar_Basic=[['Bold','Italic','-','NumberedList','BulletedList','-','Link','Unlink','-','About']];i.toolbar_Full=[['Source','-','Save','NewPage','Preview','-','Templates'],['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print','SpellChecker','Scayt'],['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],'/',['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['BidiLtr','BidiRtl'],['Link','Unlink','Anchor'],['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],'/',['Styles','Format','Font','FontSize'],['TextColor','BGColor'],['Maximize','ShowBlocks','-','About']];i.toolbar='Full';i.toolbarCanCollapse=true;(function(){j.add('undo',{requires:['selection','wysiwygarea'],init:function(r){var s=new n(r),t=r.addCommand('undo',{exec:function(){if(s.undo()){r.selectionChange();this.fire('afterUndo');}},state:0,canUndo:false}),u=r.addCommand('redo',{exec:function(){if(s.redo()){r.selectionChange();this.fire('afterRedo');
+}},state:0,canUndo:false});s.onChange=function(){t.setState(s.undoable()?2:0);u.setState(s.redoable()?2:0);};function v(w){if(s.enabled&&w.data.command.canUndo!==false)s.save();};r.on('beforeCommandExec',v);r.on('afterCommandExec',v);r.on('saveSnapshot',function(){s.save();});r.on('contentDom',function(){r.document.on('keydown',function(w){if(!w.data.$.ctrlKey&&!w.data.$.metaKey)s.type(w);});});r.on('beforeModeUnload',function(){r.mode=='wysiwyg'&&s.save(true);});r.on('mode',function(){s.enabled=r.mode=='wysiwyg';s.onChange();});r.ui.addButton('Undo',{label:r.lang.undo,command:'undo'});r.ui.addButton('Redo',{label:r.lang.redo,command:'redo'});r.resetUndo=function(){s.reset();r.fire('saveSnapshot');};r.on('updateSnapshot',function(){if(s.currentImage&&new l(r).equals(s.currentImage))setTimeout(function(){s.update();},0);});}});j.undo={};var l=j.undo.Image=function(r){this.editor=r;var s=r.getSnapshot(),t=s&&r.getSelection();c&&s&&(s=s.replace(/\s+_cke_expando=".*?"/g,''));this.contents=s;this.bookmarks=t&&t.createBookmarks2(true);},m=/\b(?:href|src|name)="[^"]*?"/gi;l.prototype={equals:function(r,s){var t=this.contents,u=r.contents;if(c&&(b.ie7Compat||b.ie6Compat)){t=t.replace(m,'');u=u.replace(m,'');}if(t!=u)return false;if(s)return true;var v=this.bookmarks,w=r.bookmarks;if(v||w){if(!v||!w||v.length!=w.length)return false;for(var x=0;x<v.length;x++){var y=v[x],z=w[x];if(y.startOffset!=z.startOffset||y.endOffset!=z.endOffset||!e.arrayCompare(y.start,z.start)||!e.arrayCompare(y.end,z.end))return false;}}return true;}};function n(r){this.editor=r;this.reset();};var o={8:1,46:1},p={16:1,17:1,18:1},q={37:1,38:1,39:1,40:1};n.prototype={type:function(r){var s=r&&r.data.getKey(),t=s in p,u=s in o,v=this.lastKeystroke in o,w=u&&s==this.lastKeystroke,x=s in q,y=this.lastKeystroke in q,z=!u&&!x,A=u&&!w,B=!(t||this.typing)||z&&(v||y);if(B||A){var C=new l(this.editor);e.setTimeout(function(){var E=this;var D=E.editor.getSnapshot();if(c)D=D.replace(/\s+_cke_expando=".*?"/g,'');if(C.contents!=D){E.typing=true;if(!E.save(false,C,false))E.snapshots.splice(E.index+1,E.snapshots.length-E.index-1);E.hasUndo=true;E.hasRedo=false;E.typesCount=1;E.modifiersCount=1;E.onChange();}},0,this);}this.lastKeystroke=s;if(u){this.typesCount=0;this.modifiersCount++;if(this.modifiersCount>25){this.save(false,null,false);this.modifiersCount=1;}}else if(!x){this.modifiersCount=0;this.typesCount++;if(this.typesCount>25){this.save(false,null,false);this.typesCount=1;}}},reset:function(){var r=this;
+r.lastKeystroke=0;r.snapshots=[];r.index=-1;r.limit=r.editor.config.undoStackSize;r.currentImage=null;r.hasUndo=false;r.hasRedo=false;r.resetType();},resetType:function(){var r=this;r.typing=false;delete r.lastKeystroke;r.typesCount=0;r.modifiersCount=0;},fireChange:function(){var r=this;r.hasUndo=!!r.getNextImage(true);r.hasRedo=!!r.getNextImage(false);r.resetType();r.onChange();},save:function(r,s,t){var v=this;var u=v.snapshots;if(!s)s=new l(v.editor);if(s.contents===false)return false;if(v.currentImage&&s.equals(v.currentImage,r))return false;u.splice(v.index+1,u.length-v.index-1);if(u.length==v.limit)u.shift();v.index=u.push(s)-1;v.currentImage=s;if(t!==false)v.fireChange();return true;},restoreImage:function(r){var t=this;t.editor.loadSnapshot(r.contents);if(r.bookmarks)t.editor.getSelection().selectBookmarks(r.bookmarks);else if(c){var s=t.editor.document.getBody().$.createTextRange();s.collapse(true);s.select();}t.index=r.index;t.update();t.fireChange();},getNextImage:function(r){var w=this;var s=w.snapshots,t=w.currentImage,u,v;if(t)if(r)for(v=w.index-1;v>=0;v--){u=s[v];if(!t.equals(u,true)){u.index=v;return u;}}else for(v=w.index+1;v<s.length;v++){u=s[v];if(!t.equals(u,true)){u.index=v;return u;}}return null;},redoable:function(){return this.enabled&&this.hasRedo;},undoable:function(){return this.enabled&&this.hasUndo;},undo:function(){var s=this;if(s.undoable()){s.save(true);var r=s.getNextImage(true);if(r)return s.restoreImage(r),true;}return false;},redo:function(){var s=this;if(s.redoable()){s.save(true);if(s.redoable()){var r=s.getNextImage(false);if(r)return s.restoreImage(r),true;}}return false;},update:function(){var r=this;r.snapshots.splice(r.index,1,r.currentImage=new l(r.editor));}};})();i.undoStackSize=20;(function(){var l={table:1,pre:1},m=/\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\1>)?(?=\s*$|<\/body>)/gi,n=d.walker.whitespaces(true);function o(A){if(A.getType()==3)return A.getSelectedElement().isReadOnly();else return A.getCommonAncestor().isReadOnly();};function p(A){if(this.mode=='wysiwyg'){this.focus();var B=this.getSelection();if(o(B))return;var C=A.data;this.fire('saveSnapshot');if(this.dataProcessor)C=this.dataProcessor.toHtml(C);if(c){var D=B.isLocked;if(D)B.unlock();var E=B.getNative();if(E.type=='Control')E.clear();else if(B.getType()==2){var F=B.getRanges()[0],G=F&&F.endContainer;if(G&&G.type==1&&G.getAttribute('contenteditable')=='false'&&F.checkBoundaryOfElement(G,2)){F.setEndAfter(F.endContainer);
+F.deleteContents();}}try{E.createRange().pasteHTML(C);}catch(I){}if(D)this.getSelection().lock();}else this.document.$.execCommand('inserthtml',false,C);if(b.webkit){this.document.$.execCommand('inserthtml',false,'<span id="cke_paste_marker" cke_temp="1"></span>');var H=this.document.getById('cke_paste_marker');H.scrollIntoView();H.remove();}e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};function q(A){if(this.mode=='wysiwyg'){this.focus();var B=this.getSelection();if(o(B))return;this.fire('saveSnapshot');var C=B.getRanges(),D=A.data,E=D.getName(),F=f.$block[E],G=B.isLocked;if(G)B.unlock();var H,I,J,K;for(var L=C.length-1;L>=0;L--){H=C[L];H.deleteContents();I=!L&&D||D.clone(true);var M,N;if(F)while((M=H.getCommonAncestor(false,true))&&(N=f[M.getName()])&&!(N&&N[E])){if(M.getName() in f.span)H.splitElement(M);else if(H.checkStartOfBlock()&&H.checkEndOfBlock()){H.setStartBefore(M);H.collapse(true);M.remove();}else H.splitBlock();}H.insertNode(I);if(!J)J=I;}H.moveToPosition(J,4);if(F){var O=J.getNext(n),P=O&&O.type==1&&O.getName();if(P&&f.$block[P]&&f[P]['#'])H.moveToElementEditStart(O);}B.selectRanges([H]);if(G)this.getSelection().lock();e.setTimeout(function(){this.fire('saveSnapshot');},0,this);}};function r(A){if(!A.checkDirty())setTimeout(function(){A.resetDirty();},0);};var s=d.walker.whitespaces(true),t=d.walker.bookmark(false,true);function u(A){return s(A)&&t(A);};function v(A){return A.type==3&&e.trim(A.getText()).match(/^(?:&nbsp;|\xa0)$/);};function w(A){if(A.isLocked){A.unlock();setTimeout(function(){A.lock();},0);}};function x(A){return A.getOuterHtml().match(m);};s=d.walker.whitespaces(true);function y(A){var B=A.window,C=A.document,D=A.document.getBody(),E=D.getChildren().count();if(!E||E==1&&D.getFirst().hasAttribute('_moz_editor_bogus_node')){r(A);var F=A.element.getDocument(),G=F.getDocumentElement(),H=G.$.scrollTop,I=G.$.scrollLeft,J=C.$.createEvent('KeyEvents');J.initKeyEvent('keypress',true,true,B.$,false,false,false,false,0,32);C.$.dispatchEvent(J);if(H!=G.$.scrollTop||I!=G.$.scrollLeft)F.getWindow().$.scrollTo(I,H);E&&D.getFirst().remove();C.getBody().appendBogus();var K=new d.range(C);K.setStartAt(D,1);K.select();}};function z(A){var B=A.editor,C=A.data.path,D=C.blockLimit,E=A.data.selection,F=E.getRanges()[0],G=B.document.getBody(),H=B.config.enterMode;b.gecko&&y(B);if(H!=2&&F.collapsed&&D.getName()=='body'&&!C.block){B.fire('updateSnapshot');r(B);c&&w(E);var I=F.fixBlock(true,B.config.enterMode==3?'div':'p');if(c){var J=I.getFirst(u);
+J&&v(J)&&J.remove();}if(x(I)){var K=I.getNext(s);if(K&&K.type==1&&!l[K.getName()]){F.moveToElementEditStart(K);I.remove();}else{K=I.getPrevious(s);if(K&&K.type==1&&!l[K.getName()]){F.moveToElementEditEnd(K);I.remove();}}}F.select();if(!c)B.selectionChange();}var L=new d.range(B.document),M=new d.walker(L);L.selectNodeContents(G);M.evaluator=function(O){return O.type==1&&O.getName() in l;};M.guard=function(O,P){return!(O.type==3&&s(O)||P);};if(M.previous()){B.fire('updateSnapshot');r(B);c&&w(E);var N;if(H!=2)N=G.append(new h(H==1?'p':'div'));else N=G;if(!c)N.appendBogus();}};j.add('wysiwygarea',{requires:['editingblock'],init:function(A){var B=A.config.enterMode!=2?A.config.enterMode==3?'div':'p':false,C=A.lang.editorTitle.replace('%1',A.name),D;A.on('editingBlockReady',function(){var J,K,L,M,N,O,P=b.isCustomDomain(),Q=function(T){if(K)K.remove();var U='document.open();'+(P?'document.domain="'+document.domain+'";':'')+'document.close();';K=h.createFromHtml('<iframe style="width:100%;height:100%" frameBorder="0" title="'+C+'"'+' src="'+(c?'javascript:void(function(){'+encodeURIComponent(U)+'}())':'')+'"'+' tabIndex="'+(b.webkit?-1:A.tabIndex)+'"'+' allowTransparency="true"'+'></iframe>');if(document.location.protocol=='chrome:')a.event.useCapture=true;K.on('load',function(Y){N=1;Y.removeListener();var Z=K.getFrameDocument().$;Z.open('text/html','replace');Z.write(T);Z.close();});if(document.location.protocol=='chrome:')a.event.useCapture=false;var V=A.element,W=b.gecko&&!V.isVisible(),X={};if(W){V.show();X={position:V.getStyle('position'),top:V.getStyle('top')};V.setStyles({position:'absolute',top:'-3000px'});}J.append(K);if(W)setTimeout(function(){V.hide();V.setStyles(X);},1000);};D=e.addFunction(S);var R='<script id="cke_actscrpt" type="text/javascript" cke_temp="1">'+(P?'document.domain="'+document.domain+'";':'')+'window.parent.CKEDITOR.tools.callFunction( '+D+', window );'+'</script>';function S(T){if(!N)return;N=0;A.fire('ariaWidget',K);var U=T.document,V=U.body,W=U.getElementById('cke_actscrpt');W.parentNode.removeChild(W);V.spellcheck=!A.config.disableNativeSpellChecker;if(c){V.hideFocus=true;V.disabled=true;V.contentEditable=true;V.removeAttribute('disabled');}else setTimeout(function(){if(b.gecko&&b.version>=10900||b.opera)U.$.body.contentEditable=true;else if(b.webkit)U.$.body.parentNode.contentEditable=true;else U.$.designMode='on';},0);b.gecko&&e.setTimeout(y,0,null,A);T=A.window=new d.window(T);U=A.document=new g(U);U.on('dblclick',function(aa){var ab=aa.data.getTarget(),ac={element:ab,dialog:''};
+A.fire('doubleclick',ac);ac.dialog&&A.openDialog(ac.dialog);});if(!(c||b.opera))U.on('mousedown',function(aa){var ab=aa.data.getTarget();if(ab.is('img','hr','input','textarea','select'))A.getSelection().selectElement(ab);});if(b.gecko)U.on('mouseup',function(aa){if(aa.data.$.button==2){var ab=aa.data.getTarget();if(!ab.getOuterHtml().replace(m,'')){var ac=new d.range(U);ac.moveToElementEditStart(ab);ac.select(true);}}});U.on('click',function(aa){aa=aa.data;if(aa.getTarget().is('a')&&aa.$.button!=2)aa.preventDefault();});if(b.webkit){U.on('click',function(aa){if(aa.data.getTarget().is('input','select'))aa.data.preventDefault();});U.on('mouseup',function(aa){if(aa.data.getTarget().is('input','textarea'))aa.data.preventDefault();});}if(c&&U.$.compatMode=='CSS1Compat'||b.gecko||b.opera){var X=U.getDocumentElement();X.on('mousedown',function(aa){if(aa.data.getTarget().equals(X)){if(b.gecko&&b.version>=10900)H();I.focus();}});}T.on('blur',function(){A.focusManager.blur();});T.on('focus',function(){var aa=A.document;if(b.gecko&&b.version>=10900)H();else if(b.opera)aa.getBody().focus();A.focusManager.focus();});var Y=A.keystrokeHandler;if(Y)Y.attach(U);if(c){U.getDocumentElement().addClass(U.$.compatMode);U.on('keydown',function(aa){var ab=aa.data.getKeystroke();if(ab in {8:1,46:1}){var ac=A.getSelection(),ad=ac.getSelectedElement();if(ad){A.fire('saveSnapshot');var ae=ac.getRanges()[0].createBookmark();ad.remove();ac.selectBookmarks([ae]);A.fire('saveSnapshot');aa.data.preventDefault();}}});if(U.$.compatMode=='CSS1Compat'){var Z={33:1,34:1};U.on('keydown',function(aa){if(aa.data.getKeystroke() in Z)setTimeout(function(){A.getSelection().scrollIntoView();},0);});}}if(A.contextMenu)A.contextMenu.addTarget(U,A.config.browserContextMenuOnCtrl!==false);setTimeout(function(){A.fire('contentDom');if(O){A.mode='wysiwyg';A.fire('mode');O=false;}L=false;if(M){A.focus();M=false;}setTimeout(function(){A.fire('dataReady');},0);try{A.document.$.execCommand('enableObjectResizing',false,!A.config.disableObjectResizing);}catch(aa){}try{A.document.$.execCommand('enableInlineTableEditing',false,!A.config.disableNativeTableHandles);}catch(ab){}if(c)setTimeout(function(){if(A.document){var ac=A.document.$.body;ac.runtimeStyle.marginBottom='0px';ac.runtimeStyle.marginBottom='';}},1000);},0);};A.addMode('wysiwyg',{load:function(T,U,V){J=T;if(c&&b.quirks)T.setStyle('position','relative');A.mayBeDirty=true;O=true;if(V)this.loadSnapshotData(U);else this.loadData(U);},loadData:function(T){L=true;
+var U=A.config,V=U.fullPage,W=U.docType,X='<style type="text/css" cke_temp="1">'+A._.styles.join('\n')+'</style>';!V&&(X=e.buildStyleHtml(A.config.contentsCss)+X);var Y=U.baseHref?'<base href="'+U.baseHref+'" cke_temp="1" />':'';if(V)T=T.replace(/<!DOCTYPE[^>]*>/i,function(Z){A.docType=W=Z;return '';});if(A.dataProcessor)T=A.dataProcessor.toHtml(T,B);if(V){if(!/<body[\s|>]/.test(T))T='<body>'+T;if(!/<html[\s|>]/.test(T))T='<html>'+T+'</html>';if(!/<head[\s|>]/.test(T))T=T.replace(/<html[^>]*>/,'$&<head><title></title></head>');else if(!/<title[\s|>]/.test(T))T=T.replace(/<head[^>]*>/,'$&<title></title>');Y&&(T=T.replace(/<head>/,'$&'+Y));T=T.replace(/<\/head\s*>/,X+'$&');T=W+T;}else T=U.docType+'<html dir="'+U.contentsLangDirection+'"'+' lang="'+(U.contentsLanguage||A.langCode)+'">'+'<head>'+'<title>'+C+'</title>'+Y+X+'</head>'+'<body'+(U.bodyId?' id="'+U.bodyId+'"':'')+(U.bodyClass?' class="'+U.bodyClass+'"':'')+'>'+T+'</html>';T+=R;this.onDispose();Q(T);},getData:function(){var T=A.config,U=T.fullPage,V=U&&A.docType,W=K.getFrameDocument(),X=U?W.getDocumentElement().getOuterHtml():W.getBody().getHtml();if(A.dataProcessor)X=A.dataProcessor.toDataFormat(X,B);if(T.ignoreEmptyParagraph)X=X.replace(m,'');if(V)X=V+'\n'+X;return X;},getSnapshotData:function(){return K.getFrameDocument().getBody().getHtml();},loadSnapshotData:function(T){K.getFrameDocument().getBody().setHtml(T);},onDispose:function(){if(!A.document)return;A.document.getDocumentElement().clearCustomData();A.document.getBody().clearCustomData();A.window.clearCustomData();A.document.clearCustomData();K.clearCustomData();K.remove();},unload:function(T){this.onDispose();A.window=A.document=K=J=M=null;A.fire('contentDomUnload');},focus:function(){if(L)M=true;else if(b.opera&&A.document){A.document.getBody().focus();A.selectionChange();}else if(!b.opera&&A.window){A.window.focus();A.selectionChange();}}});A.on('insertHtml',p,null,null,20);A.on('insertElement',q,null,null,20);A.on('selectionChange',z,null,null,1);});var E;A.on('contentDom',function(){var J=A.document.getElementsByTag('title').getItem(0);J.setAttribute('_cke_title',A.document.$.title);A.document.$.title=C;});if(b.ie8Compat){A.addCss('html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}');var F=[];for(var G in f.$removeEmpty)F.push('html.CSS1Compat '+G+'[contenteditable=false]');A.addCss(F.join(',')+'{ display:inline-block;}');}function H(J){e.tryThese(function(){A.document.$.designMode='on';setTimeout(function(){A.document.$.designMode='off';
+A.document.getBody().focus();},50);},function(){A.document.$.designMode='off';var K=A.document.getBody();K.setAttribute('contentEditable',false);K.setAttribute('contentEditable',true);!J&&H(1);});};if(b.gecko||c||b.opera){var I;A.on('uiReady',function(){I=A.container.append(h.createFromHtml('<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>'));I.on('focus',function(){A.focus();});});A.on('destroy',function(){e.removeFunction(D);I.clearCustomData();});}A.on('insertElement',function(J){var K=J.data;if(K.type==1&&(K.is('input')||K.is('textarea')))if(!K.isReadOnly()){K.setAttribute('contentEditable',false);K.setCustomData('_cke_notReadOnly',1);}});}});if(b.gecko)(function(){var A=document.body;if(!A)window.addEventListener('load',arguments.callee,false);else{var B=A.getAttribute('onpageshow');A.setAttribute('onpageshow',(B?B+';':'')+'event.persisted && (function(){'+'var allInstances = CKEDITOR.instances, editor, doc;'+'for ( var i in allInstances )'+'{'+'\teditor = allInstances[ i ];'+'\tdoc = editor.document;'+'\tif ( doc )'+'\t{'+'\t\tdoc.$.designMode = "off";'+'\t\tdoc.$.designMode = "on";'+'\t}'+'}'+'})();');}})();})();i.disableObjectResizing=false;i.disableNativeTableHandles=true;i.disableNativeSpellChecker=true;i.ignoreEmptyParagraph=true;j.add('wsc',{requires:['dialog'],init:function(l){var m='checkspell',n=l.addCommand(m,new a.dialogCommand(m));n.modes={wysiwyg:!b.opera&&document.domain==window.location.hostname};l.ui.addButton('SpellChecker',{label:l.lang.spellCheck.toolbar,command:m});a.dialog.add(m,this.path+'dialogs/wsc.js');}});i.wsc_customerId=i.wsc_customerId||'1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk';i.wsc_customLoaderScript=i.wsc_customLoaderScript||null;a.DIALOG_RESIZE_NONE=0;a.DIALOG_RESIZE_WIDTH=1;a.DIALOG_RESIZE_HEIGHT=2;a.DIALOG_RESIZE_BOTH=3;(function(){function l(N){return!!this._.tabs[N][0].$.offsetHeight;};function m(){var R=this;var N=R._.currentTabId,O=R._.tabIdList.length,P=e.indexOf(R._.tabIdList,N)+O;for(var Q=P-1;Q>P-O;Q--){if(l.call(R,R._.tabIdList[Q%O]))return R._.tabIdList[Q%O];}return null;};function n(){var R=this;var N=R._.currentTabId,O=R._.tabIdList.length,P=e.indexOf(R._.tabIdList,N);for(var Q=P+1;Q<P+O;Q++){if(l.call(R,R._.tabIdList[Q%O]))return R._.tabIdList[Q%O];}return null;};function o(N,O){var P=N.$.getElementsByTagName('input');for(var Q=0,R=P.length;Q<R;Q++){var S=new h(P[Q]);if(S.getAttribute('type').toLowerCase()=='text')if(O){S.setAttribute('value',S.getCustomData('fake_value')||'');
+S.removeCustomData('fake_value');}else{S.setCustomData('fake_value',S.getAttribute('value'));S.setAttribute('value','');}}};a.dialog=function(N,O){var P=a.dialog._.dialogDefinitions[O];P=e.extend(P(N),q);P=e.clone(P);P=new u(this,P);var Q=a.document,R=N.theme.buildDialog(N);this._={editor:N,element:R.element,name:O,contentSize:{width:0,height:0},size:{width:0,height:0},updateSize:false,contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:false,focusList:[],currentFocusIndex:0,hasFocus:false};this.parts=R.parts;e.setTimeout(function(){N.fire('ariaWidget',this.parts.contents);},0,this);this.parts.dialog.setStyles({position:b.ie6Compat?'absolute':'fixed',top:0,left:0,visibility:'hidden'});a.event.call(this);this.definition=P=a.fire('dialogDefinition',{name:O,definition:P},N).definition;if(P.onLoad)this.on('load',P.onLoad);if(P.onShow)this.on('show',P.onShow);if(P.onHide)this.on('hide',P.onHide);if(P.onOk)this.on('ok',function(ae){N.fire('saveSnapshot');setTimeout(function(){N.fire('saveSnapshot');},0);if(P.onOk.call(this,ae)===false)ae.data.hide=false;});if(P.onCancel)this.on('cancel',function(ae){if(P.onCancel.call(this,ae)===false)ae.data.hide=false;});var S=this,T=function(ae){var af=S._.contents,ag=false;for(var ah in af)for(var ai in af[ah]){ag=ae.call(this,af[ah][ai]);if(ag)return;}};this.on('ok',function(ae){T(function(af){if(af.validate){var ag=af.validate(this);if(typeof ag=='string'){alert(ag);ag=false;}if(ag===false){if(af.select)af.select();else af.focus();ae.data.hide=false;ae.stop();return true;}}});},this,null,0);this.on('cancel',function(ae){T(function(af){if(af.isChanged()){if(!confirm(N.lang.common.confirmCancel))ae.data.hide=false;return true;}});},this,null,0);this.parts.close.on('click',function(ae){if(this.fire('cancel',{hide:true}).hide!==false)this.hide();ae.data.preventDefault();},this);function U(){var ae=S._.focusList;ae.sort(function(ah,ai){if(ah.tabIndex!=ai.tabIndex)return ai.tabIndex-ah.tabIndex;else return ah.focusIndex-ai.focusIndex;});var af=ae.length;for(var ag=0;ag<af;ag++)ae[ag].focusIndex=ag;};function V(ae){var af=S._.focusList,ag=ae?1:-1;if(af.length<1)return;var ah=S._.currentFocusIndex;try{af[ah].getInputElement().$.blur();}catch(ak){}var ai=(ah+ag+af.length)%af.length,aj=ai;while(!af[aj].isFocusable()){aj=(aj+ag+af.length)%af.length;if(aj==ai)break;}af[aj].focus();if(af[aj].type=='text')af[aj].select();};this.changeFocus=V;var W;function X(ae){var aj=this;
+if(S!=a.dialog._.currentTop)return;var af=ae.data.getKeystroke(),ag=N.lang.dir=='rtl';W=0;if(af==9||af==2000+9){var ah=af==2000+9;if(S._.tabBarMode){var ai=ah?m.call(S):n.call(S);S.selectPage(ai);S._.tabs[ai][0].focus();}else V(!ah);W=1;}else if(af==4000+121&&!S._.tabBarMode&&S.getPageCount()>1){S._.tabBarMode=true;S._.tabs[S._.currentTabId][0].focus();W=1;}else if((af==37||af==39)&&S._.tabBarMode){ai=af==(ag?39:37)?m.call(S):n.call(S);S.selectPage(ai);S._.tabs[ai][0].focus();W=1;}else if((af==13||af==32)&&S._.tabBarMode){aj.selectPage(aj._.currentTabId);aj._.tabBarMode=false;aj._.currentFocusIndex=-1;V(true);W=1;}if(W){ae.stop();ae.data.preventDefault();}};function Y(ae){W&&ae.data.preventDefault();};var Z=this._.element;this.on('show',function(){Z.on('keydown',X,this,null,0);if(b.opera||b.gecko&&b.mac)Z.on('keypress',Y,this);});this.on('hide',function(){Z.removeListener('keydown',X);if(b.opera||b.gecko&&b.mac)Z.removeListener('keypress',Y);});this.on('iframeAdded',function(ae){var af=new g(ae.data.iframe.$.contentWindow.document);af.on('keydown',X,this,null,0);});this.on('show',function(){var ai=this;U();if(N.config.dialog_startupFocusTab&&S._.pageCount>1){S._.tabBarMode=true;S._.tabs[S._.currentTabId][0].focus();}else if(!ai._.hasFocus){ai._.currentFocusIndex=-1;if(P.onFocus){var ae=P.onFocus.call(ai);ae&&ae.focus();}else V(true);if(ai._.editor.mode=='wysiwyg'&&c){var af=N.document.$.selection,ag=af.createRange();if(ag)if(ag.parentElement&&ag.parentElement().ownerDocument==N.document.$||ag.item&&ag.item(0).ownerDocument==N.document.$){var ah=document.body.createTextRange();ah.moveToElementText(ai.getElement().getFirst().$);ah.collapse(true);ah.select();}}}},this,null,4294967295);if(b.ie6Compat)this.on('load',function(ae){var af=this.getElement(),ag=af.getFirst();ag.remove();ag.appendTo(af);},this);w(this);x(this);new d.text(P.title,a.document).appendTo(this.parts.title);for(var aa=0;aa<P.contents.length;aa++){var ab=P.contents[aa];ab&&this.addPage(ab);}this.parts.tabs.on('click',function(ae){var ah=this;var af=ae.data.getTarget();if(af.hasClass('cke_dialog_tab')){var ag=af.$.id;ah.selectPage(ag.substring(4,ag.lastIndexOf('_')));if(ah._.tabBarMode){ah._.tabBarMode=false;ah._.currentFocusIndex=-1;V(true);}ae.data.preventDefault();}},this);var ac=[],ad=a.dialog._.uiElementBuilders.hbox.build(this,{type:'hbox',className:'cke_dialog_footer_buttons',widths:[],children:P.buttons},ac).getChild();this.parts.footer.setHtml(ac.join(''));for(aa=0;aa<ad.length;aa++)this._.buttons[ad[aa].id]=ad[aa];
+};function p(N,O,P){this.element=O;this.focusIndex=P;this.tabIndex=0;this.isFocusable=function(){return!O.getAttribute('disabled')&&O.isVisible();};this.focus=function(){N._.currentFocusIndex=this.focusIndex;this.element.focus();};O.on('keydown',function(Q){if(Q.data.getKeystroke() in {32:1,13:1})this.fire('click');});O.on('focus',function(){this.fire('mouseover');});O.on('blur',function(){this.fire('mouseout');});};a.dialog.prototype={destroy:function(){this.hide();this._.element.remove();},resize:(function(){return function(N,O){var P=this;if(P._.contentSize&&P._.contentSize.width==N&&P._.contentSize.height==O)return;a.dialog.fire('resize',{dialog:P,skin:P._.editor.skinName,width:N,height:O},P._.editor);P._.contentSize={width:N,height:O};P._.updateSize=true;};})(),getSize:function(){var P=this;if(!P._.updateSize)return P._.size;var N=P._.element.getFirst(),O=P._.size={width:N.$.offsetWidth||0,height:N.$.offsetHeight||0};P._.updateSize=!O.width||!O.height;return O;},move:(function(){var N;return function(O,P){var S=this;var Q=S._.element.getFirst();if(N===undefined)N=Q.getComputedStyle('position')=='fixed';if(N&&S._.position&&S._.position.x==O&&S._.position.y==P)return;S._.position={x:O,y:P};if(!N){var R=a.document.getWindow().getScrollPosition();O+=R.x;P+=R.y;}Q.setStyles({left:(O>0?O:0)+'px',top:(P>0?P:0)+'px'});};})(),getPosition:function(){return e.extend({},this._.position);},show:function(){var N=this._.editor;if(N.mode=='wysiwyg'&&c){var O=N.getSelection();O&&O.lock();}var P=this._.element,Q=this.definition;if(!(P.getParent()&&P.getParent().equals(a.document.getBody())))P.appendTo(a.document.getBody());else P.setStyle('display','block');if(b.gecko&&b.version<10900){var R=this.parts.dialog;R.setStyle('position','absolute');setTimeout(function(){R.setStyle('position','fixed');},0);}this.resize(Q.minWidth,Q.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);if(a.dialog._.currentZIndex===null)a.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex;this._.element.getFirst().setStyle('z-index',a.dialog._.currentZIndex+=10);if(a.dialog._.currentTop===null){a.dialog._.currentTop=this;this._.parentDialog=null;B(this._.editor);P.on('keydown',F);P.on(b.opera?'keypress':'keyup',G);for(var S in {keyup:1,keydown:1,keypress:1})P.on(S,M);}else{this._.parentDialog=a.dialog._.currentTop;var T=this._.parentDialog.getElement().getFirst();T.$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2);a.dialog._.currentTop=this;}H(this,this,'\x1b',null,function(){this.getButton('cancel')&&this.getButton('cancel').click();
+});this._.hasFocus=false;e.setTimeout(function(){var U=a.document.getWindow().getViewPaneSize(),V=this.getSize();this.move((U.width-Q.minWidth)/2,(U.height-V.height)/2);this.parts.dialog.setStyle('visibility','');this.fireOnce('load',{});this.fire('show',{});this._.editor.fire('dialogShow',this);this.foreach(function(W){W.setInitValue&&W.setInitValue();});},100,this);},foreach:function(N){var Q=this;for(var O in Q._.contents)for(var P in Q._.contents[O])N(Q._.contents[O][P]);return Q;},reset:(function(){var N=function(O){if(O.reset)O.reset(1);};return function(){this.foreach(N);return this;};})(),setupContent:function(){var N=arguments;this.foreach(function(O){if(O.setup)O.setup.apply(O,N);});},commitContent:function(){var N=arguments;this.foreach(function(O){if(O.commit)O.commit.apply(O,N);});},hide:function(){if(!this.parts.dialog.isVisible())return;this.fire('hide',{});this._.editor.fire('dialogHide',this);var N=this._.element;N.setStyle('display','none');this.parts.dialog.setStyle('visibility','hidden');I(this);while(a.dialog._.currentTop!=this)a.dialog._.currentTop.hide();if(!this._.parentDialog)C();else{var O=this._.parentDialog.getElement().getFirst();O.setStyle('z-index',parseInt(O.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2));}a.dialog._.currentTop=this._.parentDialog;if(!this._.parentDialog){a.dialog._.currentZIndex=null;N.removeListener('keydown',F);N.removeListener(b.opera?'keypress':'keyup',G);for(var P in {keyup:1,keydown:1,keypress:1})N.removeListener(P,M);var Q=this._.editor;Q.focus();if(Q.mode=='wysiwyg'&&c){var R=Q.getSelection();R&&R.unlock(true);}}else a.dialog._.currentZIndex-=10;delete this._.parentDialog;this.foreach(function(S){S.resetInitValue&&S.resetInitValue();});},addPage:function(N){var Z=this;var O=[],P=N.label?' title="'+e.htmlEncode(N.label)+'"':'',Q=N.elements,R=a.dialog._.uiElementBuilders.vbox.build(Z,{type:'vbox',className:'cke_dialog_page_contents',children:N.elements,expand:!!N.expand,padding:N.padding,style:N.style||'width: 100%; height: 100%;'},O),S=h.createFromHtml(O.join(''));S.setAttribute('role','tabpanel');var T=b,U='cke_'+N.id+'_'+e.getNextNumber(),V=h.createFromHtml(['<a class="cke_dialog_tab"',Z._.pageCount>0?' cke_last':'cke_first',P,!!N.hidden?' style="display:none"':'',' id="',U,'"',T.gecko&&T.version>=10900&&!T.hc?'':' href="javascript:void(0)"',' tabIndex="-1"',' hidefocus="true"',' role="tab">',N.label,'</a>'].join(''));S.setAttribute('aria-labelledby',U);Z._.tabs[N.id]=[V,S];Z._.tabIdList.push(N.id);
+!N.hidden&&Z._.pageCount++;Z._.lastTab=V;Z.updateStyle();var W=Z._.contents[N.id]={},X,Y=R.getChild();while(X=Y.shift()){W[X.id]=X;if(typeof X.getChild=='function')Y.push.apply(Y,X.getChild());}S.setAttribute('name',N.id);S.appendTo(Z.parts.contents);V.unselectable();Z.parts.tabs.append(V);if(N.accessKey){H(Z,Z,'CTRL+'+N.accessKey,K,J);Z._.accessKeyMap['CTRL+'+N.accessKey]=N.id;}},selectPage:function(N){if(this._.currentTabId==N)return;if(this.fire('selectPage',{page:N,currentPage:this._.currentTabId})===true)return;for(var O in this._.tabs){var P=this._.tabs[O][0],Q=this._.tabs[O][1];if(O!=N){P.removeClass('cke_dialog_tab_selected');Q.hide();}Q.setAttribute('aria-hidden',O!=N);}var R=this._.tabs[N];R[0].addClass('cke_dialog_tab_selected');if(b.ie6Compat||b.ie7Compat){o(R[1]);R[1].show();setTimeout(function(){o(R[1],true);},0);}else R[1].show();this._.currentTabId=N;this._.currentTabIndex=e.indexOf(this._.tabIdList,N);},updateStyle:function(){this.parts.dialog[(this._.pageCount===1?'add':'remove')+'Class']('cke_single_page');},hidePage:function(N){var P=this;var O=P._.tabs[N]&&P._.tabs[N][0];if(!O||P._.pageCount==1)return;else if(N==P._.currentTabId)P.selectPage(m.call(P));O.hide();P._.pageCount--;P.updateStyle();},showPage:function(N){var P=this;var O=P._.tabs[N]&&P._.tabs[N][0];if(!O)return;O.show();P._.pageCount++;P.updateStyle();},getElement:function(){return this._.element;},getName:function(){return this._.name;},getContentElement:function(N,O){var P=this._.contents[N];return P&&P[O];},getValueOf:function(N,O){return this.getContentElement(N,O).getValue();},setValueOf:function(N,O,P){return this.getContentElement(N,O).setValue(P);},getButton:function(N){return this._.buttons[N];},click:function(N){return this._.buttons[N].click();},disableButton:function(N){return this._.buttons[N].disable();},enableButton:function(N){return this._.buttons[N].enable();},getPageCount:function(){return this._.pageCount;},getParentEditor:function(){return this._.editor;},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement();},addFocusable:function(N,O){var Q=this;if(typeof O=='undefined'){O=Q._.focusList.length;Q._.focusList.push(new p(Q,N,O));}else{Q._.focusList.splice(O,0,new p(Q,N,O));for(var P=O+1;P<Q._.focusList.length;P++)Q._.focusList[P].focusIndex++;}}};e.extend(a.dialog,{add:function(N,O){if(!this._.dialogDefinitions[N]||typeof O=='function')this._.dialogDefinitions[N]=O;},exists:function(N){return!!this._.dialogDefinitions[N];
+},getCurrent:function(){return a.dialog._.currentTop;},okButton:(function(){var N=function(O,P){P=P||{};return e.extend({id:'ok',type:'button',label:O.lang.common.ok,'class':'cke_dialog_ui_button_ok',onClick:function(Q){var R=Q.data.dialog;if(R.fire('ok',{hide:true}).hide!==false)R.hide();}},P,true);};N.type='button';N.override=function(O){return e.extend(function(P){return N(P,O);},{type:'button'},true);};return N;})(),cancelButton:(function(){var N=function(O,P){P=P||{};return e.extend({id:'cancel',type:'button',label:O.lang.common.cancel,'class':'cke_dialog_ui_button_cancel',onClick:function(Q){var R=Q.data.dialog;if(R.fire('cancel',{hide:true}).hide!==false)R.hide();}},P,true);};N.type='button';N.override=function(O){return e.extend(function(P){return N(P,O);},{type:'button'},true);};return N;})(),addUIElement:function(N,O){this._.uiElementBuilders[N]=O;}});a.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};a.event.implementOn(a.dialog);a.event.implementOn(a.dialog.prototype,true);var q={resizable:3,minWidth:600,minHeight:400,buttons:[a.dialog.okButton,a.dialog.cancelButton]};b.mac&&q.buttons.reverse();var r=function(N,O,P){for(var Q=0,R;R=N[Q];Q++){if(R.id==O)return R;if(P&&R[P]){var S=r(R[P],O,P);if(S)return S;}}return null;},s=function(N,O,P,Q,R){if(P){for(var S=0,T;T=N[S];S++){if(T.id==P){N.splice(S,0,O);return O;}if(Q&&T[Q]){var U=s(T[Q],O,P,Q,true);if(U)return U;}}if(R)return null;}N.push(O);return O;},t=function(N,O,P){for(var Q=0,R;R=N[Q];Q++){if(R.id==O)return N.splice(Q,1);if(P&&R[P]){var S=t(R[P],O,P);if(S)return S;}}return null;},u=function(N,O){this.dialog=N;var P=O.contents;for(var Q=0,R;R=P[Q];Q++)P[Q]=R&&new v(N,R);e.extend(this,O);};u.prototype={getContents:function(N){return r(this.contents,N);},getButton:function(N){return r(this.buttons,N);},addContents:function(N,O){return s(this.contents,N,O);},addButton:function(N,O){return s(this.buttons,N,O);},removeContents:function(N){t(this.contents,N);},removeButton:function(N){t(this.buttons,N);}};function v(N,O){this._={dialog:N};e.extend(this,O);};v.prototype={get:function(N){return r(this.elements,N,'children');},add:function(N,O){return s(this.elements,N,O,'children');},remove:function(N){t(this.elements,N,'children');}};function w(N){var O=null,P=null,Q=N.getElement().getFirst(),R=N.getParentEditor(),S=R.config.dialog_magnetDistance,T=R.skin.margins||[0,0,0,0];if(typeof S=='undefined')S=20;function U(W){var X=N.getSize(),Y=a.document.getWindow().getViewPaneSize(),Z=W.data.$.screenX,aa=W.data.$.screenY,ab=Z-O.x,ac=aa-O.y,ad,ae;
+O={x:Z,y:aa};P.x+=ab;P.y+=ac;if(P.x+T[3]<S)ad=-T[3];else if(P.x-T[1]>Y.width-X.width-S)ad=Y.width-X.width+T[1];else ad=P.x;if(P.y+T[0]<S)ae=-T[0];else if(P.y-T[2]>Y.height-X.height-S)ae=Y.height-X.height+T[2];else ae=P.y;N.move(ad,ae);W.data.preventDefault();};function V(W){a.document.removeListener('mousemove',U);a.document.removeListener('mouseup',V);if(b.ie6Compat){var X=A.getChild(0).getFrameDocument();X.removeListener('mousemove',U);X.removeListener('mouseup',V);}};N.parts.title.on('mousedown',function(W){N._.updateSize=true;O={x:W.data.$.screenX,y:W.data.$.screenY};a.document.on('mousemove',U);a.document.on('mouseup',V);P=N.getPosition();if(b.ie6Compat){var X=A.getChild(0).getFrameDocument();X.on('mousemove',U);X.on('mouseup',V);}W.data.preventDefault();},N);};function x(N){var O=N.definition,P=O.minWidth||0,Q=O.minHeight||0,R=O.resizable,S=N.getParentEditor().skin.margins||[0,0,0,0];function T(ae,af){ae.y+=af;};function U(ae,af){ae.x2+=af;};function V(ae,af){ae.y2+=af;};function W(ae,af){ae.x+=af;};var X=null,Y=null,Z=N._.editor.config.magnetDistance,aa=['tl','t','tr','l','r','bl','b','br'];function ab(ae){var af=ae.listenerData.part,ag=N.getSize();Y=N.getPosition();e.extend(Y,{x2:Y.x+ag.width,y2:Y.y+ag.height});X={x:ae.data.$.screenX,y:ae.data.$.screenY};a.document.on('mousemove',ac,N,{part:af});a.document.on('mouseup',ad,N,{part:af});if(b.ie6Compat){var ah=A.getChild(0).getFrameDocument();ah.on('mousemove',ac,N,{part:af});ah.on('mouseup',ad,N,{part:af});}ae.data.preventDefault();};function ac(ae){var af=ae.data.$.screenX,ag=ae.data.$.screenY,ah=af-X.x,ai=ag-X.y,aj=a.document.getWindow().getViewPaneSize(),ak=ae.listenerData.part;if(ak.search('t')!=-1)T(Y,ai);if(ak.search('l')!=-1)W(Y,ah);if(ak.search('b')!=-1)V(Y,ai);if(ak.search('r')!=-1)U(Y,ah);X={x:af,y:ag};var al,am,an,ao;if(Y.x+S[3]<Z)al=-S[3];else if(ak.search('l')!=-1&&Y.x2-Y.x<P+Z)al=Y.x2-P;else al=Y.x;if(Y.y+S[0]<Z)am=-S[0];else if(ak.search('t')!=-1&&Y.y2-Y.y<Q+Z)am=Y.y2-Q;else am=Y.y;if(Y.x2-S[1]>aj.width-Z)an=aj.width+S[1];else if(ak.search('r')!=-1&&Y.x2-Y.x<P+Z)an=Y.x+P;else an=Y.x2;if(Y.y2-S[2]>aj.height-Z)ao=aj.height+S[2];else if(ak.search('b')!=-1&&Y.y2-Y.y<Q+Z)ao=Y.y+Q;else ao=Y.y2;N.move(al,am);N.resize(an-al,ao-am);ae.data.preventDefault();};function ad(ae){a.document.removeListener('mouseup',ad);a.document.removeListener('mousemove',ac);if(b.ie6Compat){var af=A.getChild(0).getFrameDocument();af.removeListener('mouseup',ad);af.removeListener('mousemove',ac);}};};var y,z={},A;function B(N){var O=a.document.getWindow(),P=N.config.dialog_backgroundCoverColor||'white',Q=N.config.dialog_backgroundCoverOpacity,R=N.config.baseFloatZIndex,S=e.genKey(P,Q,R),T=z[S];
+if(!T){var U=['<div style="position: ',b.ie6Compat?'absolute':'fixed','; z-index: ',R,'; top: 0px; left: 0px; ',!b.ie6Compat?'background-color: '+P:'','" class="cke_dialog_background_cover">'];if(b.ie6Compat){var V=b.isCustomDomain(),W="<html><body style=\\'background-color:"+P+";\\'></body></html>";U.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');U.push('void((function(){document.open();'+(V?"document.domain='"+document.domain+"';":'')+"document.write( '"+W+"' );"+'document.close();'+'})())');U.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');}U.push('</div>');T=h.createFromHtml(U.join(''));T.setOpacity(Q!=undefined?Q:0.5);T.appendTo(a.document.getBody());z[S]=T;}else T.show();A=T;var X=function(){var aa=O.getViewPaneSize();T.setStyles({width:aa.width+'px',height:aa.height+'px'});},Y=function(){var aa=O.getScrollPosition(),ab=a.dialog._.currentTop;T.setStyles({left:aa.x+'px',top:aa.y+'px'});do{var ac=ab.getPosition();ab.move(ac.x,ac.y);}while(ab=ab._.parentDialog)};y=X;O.on('resize',X);X();if(b.ie6Compat){var Z=function(){Y();arguments.callee.prevScrollHandler.apply(this,arguments);};O.$.setTimeout(function(){Z.prevScrollHandler=window.onscroll||(function(){});window.onscroll=Z;},0);Y();}};function C(){if(!A)return;var N=a.document.getWindow();A.hide();N.removeListener('resize',y);if(b.ie6Compat)N.$.setTimeout(function(){var O=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=O||null;},0);y=null;};function D(){for(var N in z)z[N].remove();z={};};var E={},F=function(N){var O=N.data.$.ctrlKey||N.data.$.metaKey,P=N.data.$.altKey,Q=N.data.$.shiftKey,R=String.fromCharCode(N.data.$.keyCode),S=E[(O?'CTRL+':'')+(P?'ALT+':'')+(Q?'SHIFT+':'')+R];if(!S||!S.length)return;S=S[S.length-1];S.keydown&&S.keydown.call(S.uiElement,S.dialog,S.key);N.data.preventDefault();},G=function(N){var O=N.data.$.ctrlKey||N.data.$.metaKey,P=N.data.$.altKey,Q=N.data.$.shiftKey,R=String.fromCharCode(N.data.$.keyCode),S=E[(O?'CTRL+':'')+(P?'ALT+':'')+(Q?'SHIFT+':'')+R];if(!S||!S.length)return;S=S[S.length-1];if(S.keyup){S.keyup.call(S.uiElement,S.dialog,S.key);N.data.preventDefault();}},H=function(N,O,P,Q,R){var S=E[P]||(E[P]=[]);S.push({uiElement:N,dialog:O,key:P,keyup:R||N.accessKeyUp,keydown:Q||N.accessKeyDown});},I=function(N){for(var O in E){var P=E[O];for(var Q=P.length-1;Q>=0;Q--){if(P[Q].dialog==N||P[Q].uiElement==N)P.splice(Q,1);
+}if(P.length===0)delete E[O];}},J=function(N,O){if(N._.accessKeyMap[O])N.selectPage(N._.accessKeyMap[O]);},K=function(N,O){},L={27:1,13:1},M=function(N){if(N.data.getKeystroke() in L)N.data.stopPropagation();};(function(){k.dialog={uiElement:function(N,O,P,Q,R,S,T){if(arguments.length<4)return;var U=(Q.call?Q(O):Q)||'div',V=['<',U,' '],W=(R&&R.call?R(O):R)||{},X=(S&&S.call?S(O):S)||{},Y=(T&&T.call?T.call(this,N,O):T)||'',Z=this.domId=X.id||e.getNextId()+'_uiElement',aa=this.id=O.id,ab;X.id=Z;var ac={};if(O.type)ac['cke_dialog_ui_'+O.type]=1;if(O.className)ac[O.className]=1;var ad=X['class']&&X['class'].split?X['class'].split(' '):[];for(ab=0;ab<ad.length;ab++){if(ad[ab])ac[ad[ab]]=1;}var ae=[];for(ab in ac)ae.push(ab);X['class']=ae.join(' ');if(O.title)X.title=O.title;var af=(O.style||'').split(';');for(ab in W)af.push(ab+':'+W[ab]);if(O.hidden)af.push('display:none');for(ab=af.length-1;ab>=0;ab--){if(af[ab]==='')af.splice(ab,1);}if(af.length>0)X.style=(X.style?X.style+'; ':'')+af.join('; ');for(ab in X)V.push(ab+'="'+e.htmlEncode(X[ab])+'" ');V.push('>',Y,'</',U,'>');P.push(V.join(''));(this._||(this._={})).dialog=N;if(typeof O.isChanged=='boolean')this.isChanged=function(){return O.isChanged;};if(typeof O.isChanged=='function')this.isChanged=O.isChanged;a.event.implementOn(this);this.registerEvents(O);if(this.accessKeyUp&&this.accessKeyDown&&O.accessKey)H(this,N,'CTRL+'+O.accessKey);var ag=this;N.on('load',function(){if(ag.getInputElement())ag.getInputElement().on('focus',function(){N._.tabBarMode=false;N._.hasFocus=true;ag.fire('focus');},ag);});if(this.keyboardFocusable){this.tabIndex=O.tabIndex||0;this.focusIndex=N._.focusList.push(this)-1;this.on('focus',function(){N._.currentFocusIndex=ag.focusIndex;});}e.extend(this,O);},hbox:function(N,O,P,Q,R){if(arguments.length<4)return;this._||(this._={});var S=this._.children=O,T=R&&R.widths||null,U=R&&R.height||null,V={},W,X=function(){var Z=['<tbody><tr class="cke_dialog_ui_hbox">'];for(W=0;W<P.length;W++){var aa='cke_dialog_ui_hbox_child',ab=[];if(W===0)aa='cke_dialog_ui_hbox_first';if(W==P.length-1)aa='cke_dialog_ui_hbox_last';Z.push('<td class="',aa,'" role="presentation" ');if(T){if(T[W])ab.push('width:'+e.cssLength(T[W]));}else ab.push('width:'+Math.floor(100/P.length)+'%');if(U)ab.push('height:'+e.cssLength(U));if(R&&R.padding!=undefined)ab.push('padding:'+e.cssLength(R.padding));if(ab.length>0)Z.push('style="'+ab.join('; ')+'" ');Z.push('>',P[W],'</td>');}Z.push('</tr></tbody>');return Z.join('');},Y={role:'presentation'};
+R&&R.align&&(Y.align=R.align);k.dialog.uiElement.call(this,N,R||{type:'hbox'},Q,'table',V,Y,X);},vbox:function(N,O,P,Q,R){if(arguments.length<3)return;this._||(this._={});var S=this._.children=O,T=R&&R.width||null,U=R&&R.heights||null,V=function(){var W=['<table role="presentation" cellspacing="0" border="0" '];W.push('style="');if(R&&R.expand)W.push('height:100%;');W.push('width:'+e.cssLength(T||'100%'),';');W.push('"');W.push('align="',e.htmlEncode(R&&R.align||(N.getParentEditor().lang.dir=='ltr'?'left':'right')),'" ');W.push('><tbody>');for(var X=0;X<P.length;X++){var Y=[];W.push('<tr><td role="presentation" ');if(T)Y.push('width:'+e.cssLength(T||'100%'));if(U)Y.push('height:'+e.cssLength(U[X]));else if(R&&R.expand)Y.push('height:'+Math.floor(100/P.length)+'%');if(R&&R.padding!=undefined)Y.push('padding:'+e.cssLength(R.padding));if(Y.length>0)W.push('style="',Y.join('; '),'" ');W.push(' class="cke_dialog_ui_vbox_child">',P[X],'</td></tr>');}W.push('</tbody></table>');return W.join('');};k.dialog.uiElement.call(this,N,R||{type:'vbox'},Q,'div',null,{role:'presentation'},V);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(N,O){this.getInputElement().setValue(N);!O&&this.fire('change',{value:N});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var Q=this;var N=Q.getInputElement(),O=N,P;while((O=O.getParent())&&O.$.className.search('cke_dialog_page_contents')==-1){}if(!O)return Q;P=O.getAttribute('name');if(Q._.dialog._.currentTabId!=P)Q._.dialog.selectPage(P);return Q;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(N){var O=/^on([A-Z]\w+)/,P,Q=function(S,T,U,V){T.on('load',function(){S.getInputElement().on(U,V,S);});};for(var R in N){if(!(P=R.match(O)))continue;if(this.eventProcessors[R])this.eventProcessors[R].call(this,this._.dialog,N[R]);else Q(this,this._.dialog,P[1].toLowerCase(),N[R]);}return this;},eventProcessors:{onLoad:function(N,O){N.on('load',O,this);},onShow:function(N,O){N.on('show',O,this);},onHide:function(N,O){N.on('hide',O,this);}},accessKeyDown:function(N,O){this.focus();},accessKeyUp:function(N,O){},disable:function(){var N=this.getInputElement();N.setAttribute('disabled','true');N.addClass('cke_disabled');},enable:function(){var N=this.getInputElement();
+N.removeAttribute('disabled');N.removeClass('cke_disabled');},isEnabled:function(){return!this.getInputElement().getAttribute('disabled');},isVisible:function(){return this.getInputElement().isVisible();},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(N){var O=this;if(arguments.length<1)return O._.children.concat();if(!N.splice)N=[N];if(N.length<2)return O._.children[N[0]];else return O._.children[N[0]]&&O._.children[N[0]].getChild?O._.children[N[0]].getChild(N.slice(1,N.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var N={build:function(O,P,Q){var R=P.children,S,T=[],U=[];for(var V=0;V<R.length&&(S=R[V]);V++){var W=[];T.push(W);U.push(a.dialog._.uiElementBuilders[S.type].build(O,S,W));}return new k.dialog[P.type](O,U,T,Q,P);}};a.dialog.addUIElement('hbox',N);a.dialog.addUIElement('vbox',N);})();a.dialogCommand=function(N){this.dialogName=N;};a.dialogCommand.prototype={exec:function(N){N.openDialog(this.dialogName);},canUndo:false,editorFocus:c||b.webkit};(function(){var N=/^([a]|[^a])+$/,O=/^\d*$/,P=/^\d*(?:\.\d+)?$/;a.VALIDATE_OR=1;a.VALIDATE_AND=2;a.dialog.validate={functions:function(){return function(){var W=this;var Q=W&&W.getValue?W.getValue():arguments[0],R=undefined,S=2,T=[],U;for(U=0;U<arguments.length;U++){if(typeof arguments[U]=='function')T.push(arguments[U]);else break;}if(U<arguments.length&&typeof arguments[U]=='string'){R=arguments[U];U++;}if(U<arguments.length&&typeof arguments[U]=='number')S=arguments[U];var V=S==2?true:false;for(U=0;U<T.length;U++){if(S==2)V=V&&T[U](Q);else V=V||T[U](Q);}if(!V){if(R!==undefined)alert(R);if(W&&(W.select||W.focus))W.select||W.focus();return false;}return true;};},regex:function(Q,R){return function(){var T=this;var S=T&&T.getValue?T.getValue():arguments[0];if(!Q.test(S)){if(R!==undefined)alert(R);if(T&&(T.select||T.focus))if(T.select)T.select();else T.focus();return false;}return true;};},notEmpty:function(Q){return this.regex(N,Q);},integer:function(Q){return this.regex(O,Q);},number:function(Q){return this.regex(P,Q);},equals:function(Q,R){return this.functions(function(S){return S==Q;},R);},notEqual:function(Q,R){return this.functions(function(S){return S!=Q;},R);}};a.on('instanceDestroyed',function(Q){if(e.isEmpty(a.instances)){var R;while(R=a.dialog._.currentTop)R.hide();D();}var S=Q.editor._.storedDialogs;for(var T in S)S[T].destroy();});})();})();e.extend(a.editor.prototype,{openDialog:function(l,m){var n=a.dialog._.dialogDefinitions[l],o=this.skin.dialog;
+if(typeof n=='function'&&o._isLoaded){var p=this._.storedDialogs||(this._.storedDialogs={}),q=p[l]||(p[l]=new a.dialog(this,l));m&&m.call(q,q);q.show();return q;}else if(n=='failed')throw new Error('[CKEDITOR.dialog.openDialog] Dialog "'+l+'" failed when loading definition.');var r=a.document.getBody(),s=r.$.style.cursor,t=this;r.setStyle('cursor','wait');function u(w){var x=a.dialog._.dialogDefinitions[l],y=t.skin.dialog;if(!y._isLoaded||v&&typeof w=='undefined')return;if(typeof x!='function')a.dialog._.dialogDefinitions[l]='failed';t.openDialog(l,m);r.setStyle('cursor',s);};if(typeof n=='string'){var v=1;a.scriptLoader.load(a.getUrl(n),u);}a.skins.load(this,'dialog',u);return null;}});j.add('dialog',{requires:['dialogui']});j.add('styles',{requires:['selection']});a.editor.prototype.attachStyleStateChange=function(l,m){var n=this._.styleStateChangeCallbacks;if(!n){n=this._.styleStateChangeCallbacks=[];this.on('selectionChange',function(o){for(var p=0;p<n.length;p++){var q=n[p],r=q.style.checkActive(o.data.path)?1:2;if(q.state!==r){q.fn.call(this,r);q.state=r;}}});}n.push({style:l,fn:m});};a.STYLE_BLOCK=1;a.STYLE_INLINE=2;a.STYLE_OBJECT=3;(function(){var l={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1},m={a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1},n=/\s*(?:;\s*|$)/;a.style=function(P,Q){if(Q){P=e.clone(P);H(P.attributes,Q);H(P.styles,Q);}var R=this.element=(P.element||'*').toLowerCase();this.type=R=='#'||l[R]?1:m[R]?3:2;this._={definition:P};};a.style.prototype={apply:function(P){O.call(this,P,false);},remove:function(P){O.call(this,P,true);},applyToRange:function(P){var Q=this;return(Q.applyToRange=Q.type==2?o:Q.type==1?s:Q.type==3?q:null).call(Q,P);},removeFromRange:function(P){var Q=this;return(Q.removeFromRange=Q.type==2?p:Q.type==3?r:null).call(Q,P);},applyToObject:function(P){F(P,this);},checkActive:function(P){var T=this;switch(T.type){case 1:return T.checkElementRemovable(P.block||P.blockLimit,true);case 3:case 2:var Q=P.elements;for(var R=0,S;R<Q.length;R++){S=Q[R];if(T.type==2&&(S==P.block||S==P.blockLimit))continue;if(T.type==3&&!(S.getName() in m))continue;if(T.checkElementRemovable(S,true))return true;}}return false;},checkApplicable:function(P){switch(this.type){case 2:case 1:break;case 3:return P.lastElement.getAscendant(this.element,true);}return true;},checkElementRemovable:function(P,Q){if(!P)return false;var R=this._.definition,S;if(P.getName()==this.element){if(!Q&&!P.hasAttributes())return true;
+S=I(R);if(S._length){for(var T in S){if(T=='_length')continue;var U=P.getAttribute(T)||'';if(T=='style'?N(S[T],L(U,false)):S[T]==U){if(!Q)return true;}else if(Q)return false;}if(Q)return true;}else return true;}var V=J(this)[P.getName()];if(V){if(!(S=V.attributes))return true;for(var W=0;W<S.length;W++){T=S[W][0];var X=P.getAttribute(T);if(X){var Y=S[W][1];if(Y===null||typeof Y=='string'&&X==Y||Y.test(X))return true;}}}return false;},buildPreview:function(){var P=this._.definition,Q=[],R=P.element;if(R=='bdo')R='span';Q=['<',R];var S=P.attributes;if(S)for(var T in S)Q.push(' ',T,'="',S[T],'"');var U=a.style.getStyleText(P);if(U)Q.push(' style="',U,'"');Q.push('>',P.name,'</',R,'>');return Q.join('');}};a.style.getStyleText=function(P){var Q=P._ST;if(Q)return Q;Q=P.styles;var R=P.attributes&&P.attributes.style||'',S='';if(R.length)R=R.replace(n,';');for(var T in Q){var U=Q[T],V=(T+':'+U).replace(n,';');if(U=='inherit')S+=V;else R+=V;}if(R.length)R=L(R);R+=S;return P._ST=R;};function o(P){var al=this;var Q=P.document;if(P.collapsed){var R=E(al,Q);P.insertNode(R);P.moveToPosition(R,2);return;}var S=al.element,T=al._.definition,U,V=f[S]||(U=true,f.span);P.enlarge(1);P.trim();var W=P.createBookmark(),X=W.startNode,Y=W.endNode,Z=X,aa;while(Z){var ab=false;if(Z.equals(Y)){Z=null;ab=true;}else{var ac=Z.type,ad=ac==1?Z.getName():null;if(ad&&Z.getAttribute('_cke_bookmark')){Z=Z.getNextSourceNode(true);continue;}if(!ad||V[ad]&&(Z.getPosition(Y)|4|0|8)==4+0+8&&(!T.childRule||T.childRule(Z))){var ae=Z.getParent();if(ae&&((ae.getDtd()||f.span)[S]||U)&&(!T.parentRule||T.parentRule(ae))){if(!aa&&(!ad||!f.$removeEmpty[ad]||(Z.getPosition(Y)|4|0|8)==4+0+8)){aa=new d.range(Q);aa.setStartBefore(Z);}if(ac==3||ac==1&&!Z.getChildCount()){var af=Z,ag;while(!af.$.nextSibling&&(ag=af.getParent(),V[ag.getName()])&&(ag.getPosition(X)|2|0|8)==2+0+8&&(!T.childRule||T.childRule(ag)))af=ag;aa.setEndAfter(af);if(!af.$.nextSibling)ab=true;}}else ab=true;}else ab=true;Z=Z.getNextSourceNode();}if(ab&&aa&&!aa.collapsed){var ah=E(al,Q),ai=aa.getCommonAncestor();while(ah&&ai){if(ai.getName()==S){for(var aj in T.attributes){if(ah.getAttribute(aj)==ai.getAttribute(aj))ah.removeAttribute(aj);}for(var ak in T.styles){if(ah.getStyle(ak)==ai.getStyle(ak))ah.removeStyle(ak);}if(!ah.hasAttributes()){ah=null;break;}}ai=ai.getParent();}if(ah){aa.extractContents().appendTo(ah);B(al,ah);aa.insertNode(ah);ah.mergeSiblings();if(!c)ah.$.normalize();}aa=null;}}P.moveToBookmark(W);P.shrink(2);};function p(P){P.enlarge(1);
+var Q=P.createBookmark(),R=Q.startNode;if(P.collapsed){var S=new d.elementPath(R.getParent()),T;for(var U=0,V;U<S.elements.length&&(V=S.elements[U]);U++){if(V==S.block||V==S.blockLimit)break;if(this.checkElementRemovable(V)){var W;if(P.collapsed&&(P.checkBoundaryOfElement(V,2)||(W=P.checkBoundaryOfElement(V,1)))){T=V;T.match=W?'start':'end';}else{V.mergeSiblings();A(this,V);}}}if(T){var X=R;for(U=0;true;U++){var Y=S.elements[U];if(Y.equals(T))break;else if(Y.match)continue;else Y=Y.clone();Y.append(X);X=Y;}X[T.match=='start'?'insertBefore':'insertAfter'](T);}}else{var Z=Q.endNode,aa=this;function ab(){var ae=new d.elementPath(R.getParent()),af=new d.elementPath(Z.getParent()),ag=null,ah=null;for(var ai=0;ai<ae.elements.length;ai++){var aj=ae.elements[ai];if(aj==ae.block||aj==ae.blockLimit)break;if(aa.checkElementRemovable(aj))ag=aj;}for(ai=0;ai<af.elements.length;ai++){aj=af.elements[ai];if(aj==af.block||aj==af.blockLimit)break;if(aa.checkElementRemovable(aj))ah=aj;}if(ah)Z.breakParent(ah);if(ag)R.breakParent(ag);};ab();var ac=R.getNext();while(!ac.equals(Z)){var ad=ac.getNextSourceNode();if(ac.type==1&&this.checkElementRemovable(ac)){if(ac.getName()==this.element)A(this,ac);else C(ac,J(this)[ac.getName()]);if(ad.type==1&&ad.contains(R)){ab();ad=R.getNext();}}ac=ad;}}P.moveToBookmark(Q);};function q(P){var Q=P.getCommonAncestor(true,true),R=Q.getAscendant(this.element,true);R&&F(R,this);};function r(P){var Q=P.getCommonAncestor(true,true),R=Q.getAscendant(this.element,true);if(!R)return;var S=this,T=S._.definition,U=T.attributes,V=a.style.getStyleText(T);if(U)for(var W in U)R.removeAttribute(W,U[W]);if(T.styles)for(var X in T.styles){if(!T.styles.hasOwnProperty(X))continue;R.removeStyle(X);}};function s(P){var Q=P.createBookmark(true),R=P.createIterator();R.enforceRealBlocks=true;if(this._.enterMode)R.enlargeBr=this._.enterMode!=2;var S,T=P.document,U;while(S=R.getNextParagraph()){var V=E(this,T);t(S,V);}P.moveToBookmark(Q);};function t(P,Q){var R=Q.is('pre'),S=P.is('pre'),T=R&&!S,U=!R&&S;if(T)Q=z(P,Q);else if(U)Q=y(w(P),Q);else P.moveChildren(Q);Q.replace(P);if(R)v(Q);};var u=d.walker.whitespaces(true);function v(P){var Q;if(!((Q=P.getPrevious(u))&&Q.is&&Q.is('pre')))return;var R=x(Q.getHtml(),/\n$/,'')+'\n\n'+x(P.getHtml(),/^\n/,'');if(c)P.$.outerHTML='<pre>'+R+'</pre>';else P.setHtml(R);Q.remove();};function w(P){var Q=/(\S\s*)\n(?:\s|(<span[^>]+_cke_bookmark.*?\/span>))*\n(?!$)/gi,R=P.getName(),S=x(P.getOuterHtml(),Q,function(U,V,W){return V+'</pre>'+W+'<pre>';
+}),T=[];S.replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(U,V){T.push(V);});return T;};function x(P,Q,R){var S='',T='';P=P.replace(/(^<span[^>]+_cke_bookmark.*?\/span>)|(<span[^>]+_cke_bookmark.*?\/span>$)/gi,function(U,V,W){V&&(S=V);W&&(T=W);return '';});return S+P.replace(Q,R)+T;};function y(P,Q){var R=new d.documentFragment(Q.getDocument());for(var S=0;S<P.length;S++){var T=P[S];T=T.replace(/(\r\n|\r)/g,'\n');T=x(T,/^[ \t]*\n/,'');T=x(T,/\n$/,'');T=x(T,/^[ \t]+|[ \t]+$/g,function(V,W,X){if(V.length==1)return '&nbsp;';else if(!W)return e.repeat('&nbsp;',V.length-1)+' ';else return ' '+e.repeat('&nbsp;',V.length-1);});T=T.replace(/\n/g,'<br>');T=T.replace(/[ \t]{2,}/g,function(V){return e.repeat('&nbsp;',V.length-1)+' ';});var U=Q.clone();U.setHtml(T);R.append(U);}return R;};function z(P,Q){var R=P.getHtml();R=x(R,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');R=R.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,'$1');R=R.replace(/([ \t\n\r]+|&nbsp;)/g,' ');R=R.replace(/<br\b[^>]*>/gi,'\n');if(c){var S=P.getDocument().createElement('div');S.append(Q);Q.$.outerHTML='<pre>'+R+'</pre>';Q=S.getFirst().remove();}else Q.setHtml(R);return Q;};function A(P,Q){var R=P._.definition,S=e.extend({},R.attributes,J(P)[Q.getName()]),T=R.styles,U=e.isEmpty(S)&&e.isEmpty(T);for(var V in S){if((V=='class'||P._.definition.fullMatch)&&Q.getAttribute(V)!=K(V,S[V]))continue;U=Q.hasAttribute(V);Q.removeAttribute(V);}for(var W in T){if(P._.definition.fullMatch&&Q.getStyle(W)!=K(W,T[W],true))continue;U=U||!!Q.getStyle(W);Q.removeStyle(W);}U&&D(Q);};function B(P,Q){var R=P._.definition,S=R.attributes,T=R.styles,U=J(P),V=Q.getElementsByTag(P.element);for(var W=V.count();--W>=0;)A(P,V.getItem(W));for(var X in U){if(X!=P.element){V=Q.getElementsByTag(X);for(W=V.count()-1;W>=0;W--){var Y=V.getItem(W);C(Y,U[X]);}}}};function C(P,Q){var R=Q&&Q.attributes;if(R)for(var S=0;S<R.length;S++){var T=R[S][0],U;if(U=P.getAttribute(T)){var V=R[S][1];if(V===null||V.test&&V.test(U)||typeof V=='string'&&U==V)P.removeAttribute(T);}}D(P);};function D(P){if(!P.hasAttributes()){var Q=P.getFirst(),R=P.getLast();P.remove(true);if(Q){Q.type==1&&Q.mergeSiblings();if(R&&!Q.equals(R)&&R.type==1)R.mergeSiblings();}}};function E(P,Q){var R,S=P._.definition,T=P.element;if(T=='*')T='span';R=new h(T,Q);return F(R,P);};function F(P,Q){var R=Q._.definition,S=R.attributes,T=a.style.getStyleText(R);if(S)for(var U in S)P.setAttribute(U,S[U]);if(R.styles)for(var V in R.styles){if(!R.styles.hasOwnProperty(V))continue;P.setStyle(V,R.styles[V]);
+}return P;};var G=/#\((.+?)\)/g;function H(P,Q){for(var R in P)P[R]=P[R].replace(G,function(S,T){return Q[T];});};function I(P){var Q=P._AC;if(Q)return Q;Q={};var R=0,S=P.attributes;if(S)for(var T in S){R++;Q[T]=S[T];}var U=a.style.getStyleText(P);if(U){if(!Q.style)R++;Q.style=U;}Q._length=R;return P._AC=Q;};function J(P){if(P._.overrides)return P._.overrides;var Q=P._.overrides={},R=P._.definition.overrides;if(R){if(!e.isArray(R))R=[R];for(var S=0;S<R.length;S++){var T=R[S],U,V,W;if(typeof T=='string')U=T.toLowerCase();else{U=T.element?T.element.toLowerCase():P.element;W=T.attributes;}V=Q[U]||(Q[U]={});if(W){var X=V.attributes=V.attributes||[];for(var Y in W)X.push([Y.toLowerCase(),W[Y]]);}}}return Q;};function K(P,Q,R){var S=new h('span');S[R?'setStyle':'setAttribute'](P,Q);return S[R?'getStyle':'getAttribute'](P);};function L(P,Q){var R;if(Q!==false){var S=new h('span');S.setAttribute('style',P);R=S.getAttribute('style')||'';}else R=P;return R.replace(/\s*([;:])\s*/,'$1').replace(/([^\s;])$/,'$1;').replace(/,\s+/g,',').toLowerCase();};function M(P){var Q={};P.replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(R,S,T){Q[S]=T;});return Q;};function N(P,Q){typeof P=='string'&&(P=M(P));typeof Q=='string'&&(Q=M(Q));for(var R in P){if(!(R in Q&&(Q[R]==P[R]||P[R]=='inherit'||Q[R]=='inherit')))return false;}return true;};function O(P,Q){var R=P.getSelection(),S=R.createBookmarks(),T=R.getRanges(true),U=Q?this.removeFromRange:this.applyToRange,V,W=T.createIterator();while(V=W.getNextRange())U.call(this,V);if(S.length==1&&S[0].collapsed){R.selectRanges(T);S[0].startNode.remove();}else R.selectBookmarks(S);};})();a.styleCommand=function(l){this.style=l;};a.styleCommand.prototype.exec=function(l){var n=this;l.focus();var m=l.document;if(m)if(n.state==2)n.style.apply(m);else if(n.state==1)n.style.remove(m);return!!m;};a.stylesSet=new a.resourceManager('','stylesSet');a.addStylesSet=e.bind(a.stylesSet.add,a.stylesSet);a.loadStylesSet=function(l,m,n){a.stylesSet.addExternal(l,m,'');a.stylesSet.load(l,n);};a.editor.prototype.getStylesSet=function(l){if(!this._.stylesDefinitions){var m=this,n=m.config.stylesCombo_stylesSet||m.config.stylesSet||'default';if(n instanceof Array){m._.stylesDefinitions=n;l(n);return;}var o=n.split(':'),p=o[0],q=o[1],r=j.registered.styles.path;a.stylesSet.addExternal(p,q?o.slice(1).join(':'):r+'styles/'+p+'.js','');a.stylesSet.load(p,function(s){m._.stylesDefinitions=s[p];l(m._.stylesDefinitions);});}else l(this._.stylesDefinitions);
+};j.add('domiterator');(function(){function l(o){var p=this;if(arguments.length<1)return;p.range=o;p.forceBrBreak=false;p.enlargeBr=true;p.enforceRealBlocks=false;p._||(p._={});};var m=/^[\r\n\t ]+$/,n=d.walker.bookmark();l.prototype={getNextParagraph:function(o){var P=this;var p,q,r,s,t,u;if(!P._.lastNode){q=P.range.clone();q.shrink(1,true);s=q.endContainer.hasAscendant('pre',true)||q.startContainer.hasAscendant('pre',true);q.enlarge(P.forceBrBreak&&!s||!P.enlargeBr?3:2);var v=new d.walker(q),w=d.walker.bookmark(true,true);v.evaluator=w;P._.nextNode=v.next();v=new d.walker(q);v.evaluator=w;var x=v.previous();P._.lastNode=x.getNextSourceNode(true);if(P._.lastNode&&P._.lastNode.type==3&&!e.trim(P._.lastNode.getText())&&P._.lastNode.getParent().isBlockBoundary()){var y=new d.range(q.document);y.moveToPosition(P._.lastNode,4);if(y.checkEndOfBlock()){var z=new d.elementPath(y.endContainer),A=z.block||z.blockLimit;P._.lastNode=A.getNextSourceNode(true);}}if(!P._.lastNode){P._.lastNode=P._.docEndMarker=q.document.createText('');P._.lastNode.insertAfter(x);}q=null;}var B=P._.nextNode;x=P._.lastNode;P._.nextNode=null;while(B){var C=false,D=B.hasAscendant('pre'),E=B.type!=1,F=false;if(!E){var G=B.getName();if(B.isBlockBoundary(P.forceBrBreak&&!D&&{br:1})){if(G=='br')E=true;else if(!q&&!B.getChildCount()&&G!='hr'){p=B;r=B.equals(x);break;}if(q){q.setEndAt(B,3);if(G!='br')P._.nextNode=B;}C=true;}else{if(B.getFirst()){if(!q){q=new d.range(P.range.document);q.setStartAt(B,3);}B=B.getFirst();continue;}E=true;}}else if(B.type==3)if(m.test(B.getText()))E=false;if(E&&!q){q=new d.range(P.range.document);q.setStartAt(B,3);}r=(!C||E)&&B.equals(x);if(q&&!C)while(!B.getNext()&&!r){var H=B.getParent();if(H.isBlockBoundary(P.forceBrBreak&&!D&&{br:1})){C=true;r=r||H.equals(x);break;}B=H;E=true;r=B.equals(x);F=true;}if(E)q.setEndAt(B,4);B=B.getNextSourceNode(F,null,x);r=!B;if(r||C&&q)break;}if(!p){if(!q){P._.docEndMarker&&P._.docEndMarker.remove();P._.nextNode=null;return null;}var I=new d.elementPath(q.startContainer),J=I.blockLimit,K={div:1,th:1,td:1};p=I.block;if(!p&&!P.enforceRealBlocks&&K[J.getName()]&&q.checkStartOfBlock()&&q.checkEndOfBlock())p=J;else if(!p||P.enforceRealBlocks&&p.getName()=='li'){p=P.range.document.createElement(o||'p');q.extractContents().appendTo(p);p.trim();q.insertNode(p);t=u=true;}else if(p.getName()!='li'){if(!q.checkStartOfBlock()||!q.checkEndOfBlock()){p=p.clone(false);q.extractContents().appendTo(p);p.trim();var L=q.splitBlock();t=!L.wasStartOfBlock;
+u=!L.wasEndOfBlock;q.insertNode(p);}}else if(!r)P._.nextNode=p.equals(x)?null:q.getBoundaryNodes().endNode.getNextSourceNode(true,null,x);}if(t){var M=p.getPrevious();if(M&&M.type==1)if(M.getName()=='br')M.remove();else if(M.getLast()&&M.getLast().$.nodeName.toLowerCase()=='br')M.getLast().remove();}if(u){var N=d.walker.bookmark(false,true),O=p.getLast();if(O&&O.type==1&&O.getName()=='br')if(c||O.getPrevious(N)||O.getNext(N))O.remove();}if(!P._.nextNode)P._.nextNode=r||p.equals(x)?null:p.getNextSourceNode(true,null,x);return p;}};d.range.prototype.createIterator=function(){return new l(this);};})();j.add('panelbutton',{requires:['button'],beforeInit:function(l){l.ui.addHandler(4,k.panelButton.handler);}});a.UI_PANELBUTTON=4;(function(){var l=function(m){var o=this;var n=o._;if(n.state==0)return;o.createPanel(m);if(n.on){n.panel.hide();return;}n.panel.showBlock(o._.id,o.document.getById(o._.id),4);};k.panelButton=e.createClass({base:k.button,$:function(m){var o=this;var n=m.panel;delete m.panel;o.base(m);o.document=n&&n.parent&&n.parent.getDocument()||a.document;n.block={attributes:n.attributes};o.hasArrow=true;o.click=l;o._={panelDefinition:n};},statics:{handler:{create:function(m){return new k.panelButton(m);}}},proto:{createPanel:function(m){var n=this._;if(n.panel)return;var o=this._.panelDefinition||{},p=this._.panelDefinition.block,q=o.parent||a.document.getBody(),r=this._.panel=new k.floatPanel(m,q,o),s=r.addBlock(n.id,p),t=this;r.onShow=function(){if(t.className)this.element.getFirst().addClass(t.className+'_panel');n.oldState=t._.state;t.setState(1);n.on=1;if(t.onOpen)t.onOpen();};r.onHide=function(){if(t.className)this.element.getFirst().removeClass(t.className+'_panel');t.setState(n.oldState);n.on=0;if(t.onClose)t.onClose();};r.onEscape=function(){r.hide();t.document.getById(n.id).focus();};if(this.onBlock)this.onBlock(r,s);s.onHide=function(){n.on=0;t.setState(2);};}}});})();j.add('floatpanel',{requires:['panel']});(function(){var l={},m=false;function n(o,p,q,r,s){var t=p.getUniqueId()+'-'+q.getUniqueId()+'-'+o.skinName+'-'+o.lang.dir+(o.uiColor&&'-'+o.uiColor||'')+(r.css&&'-'+r.css||'')+(s&&'-'+s||''),u=l[t];if(!u){u=l[t]=new k.panel(p,r);u.element=q.append(h.createFromHtml(u.renderHtml(o),p));u.element.setStyles({display:'none',position:'absolute'});}return u;};k.floatPanel=e.createClass({$:function(o,p,q,r){q.forceIFrame=true;var s=p.getDocument(),t=n(o,s,p,q,r||0),u=t.element,v=u.getFirst().getFirst();this.element=u;this._={panel:t,parentElement:p,definition:q,document:s,iframe:v,children:[],dir:o.lang.dir};
+},proto:{addBlock:function(o,p){return this._.panel.addBlock(o,p);},addListBlock:function(o,p){return this._.panel.addListBlock(o,p);},getBlock:function(o){return this._.panel.getBlock(o);},showBlock:function(o,p,q,r,s){var t=this._.panel,u=t.showBlock(o);this.allowBlur(false);m=true;var v=this.element,w=this._.iframe,x=this._.definition,y=p.getDocumentPosition(v.getDocument()),z=this._.dir=='rtl',A=y.x+(r||0),B=y.y+(s||0);if(z&&(q==1||q==4))A+=p.$.offsetWidth;else if(!z&&(q==2||q==3))A+=p.$.offsetWidth-1;if(q==3||q==4)B+=p.$.offsetHeight-1;this._.panel._.offsetParentId=p.getId();v.setStyles({top:'-30000px',display:''});v.setOpacity(0);v.getFirst().removeStyle('width');if(!this._.blurSet){var C=c?w:new d.window(w.$.contentWindow);a.event.useCapture=true;C.on('blur',function(D){var F=this;if(!F.allowBlur())return;var E;if(c&&!F.allowBlur()||(E=D.data.getTarget())&&E.getName&&E.getName()!='iframe')return;if(F.visible&&!F._.activeChild&&!m)F.hide();},this);C.on('focus',function(){this._.focused=true;this.hideChild();this.allowBlur(true);},this);a.event.useCapture=false;this._.blurSet=1;}t.onEscape=e.bind(function(D){if(this.onEscape&&this.onEscape(D)===false)return false;},this);e.setTimeout(function(){if(z)A-=v.$.offsetWidth;var D=e.bind(function(){var E=v.getFirst();if(u.autoSize){var F=u.element.$;if(b.gecko||b.opera)F=F.parentNode;if(c)F=F.document.body;var G=F.scrollWidth;if(c&&b.quirks&&G>0)G+=(E.$.offsetWidth||0)-(E.$.clientWidth||0);G+=4;E.setStyle('width',G+'px');u.element.addClass('cke_frameLoaded');var H=u.element.$.scrollHeight;if(c&&b.quirks&&H>0)H+=(E.$.offsetHeight||0)-(E.$.clientHeight||0);E.setStyle('height',H+'px');t._.currentBlock.element.setStyle('display','none').removeStyle('display');}else E.removeStyle('height');var I=t.element,J=I.getWindow(),K=J.getScrollPosition(),L=J.getViewPaneSize(),M={height:I.$.offsetHeight,width:I.$.offsetWidth};if(z?A<0:A+M.width>L.width+K.x)A+=M.width*(z?1:-1);if(B+M.height>L.height+K.y)B-=M.height;if(c){var N=new h(v.$.offsetParent),O=N;if(O.getName()=='html')O=O.getDocument().getBody();if(O.getComputedStyle('direction')=='rtl')if(b.ie8Compat)A-=v.getDocument().getDocumentElement().$.scrollLeft*2;else A-=N.$.scrollWidth-N.$.clientWidth;}v.setStyles({top:B+'px',left:A+'px'});v.setOpacity(1);},this);t.isLoaded?D():t.onLoad=D;e.setTimeout(function(){w.$.contentWindow.focus();this.allowBlur(true);},0,this);},0,this);this.visible=1;if(this.onShow)this.onShow.call(this);m=false;},hide:function(){var o=this;if(o.visible&&(!o.onHide||o.onHide.call(o)!==true)){o.hideChild();
+o.element.setStyle('display','none');o.visible=0;}},allowBlur:function(o){var p=this._.panel;if(o!=undefined)p.allowBlur=o;return p.allowBlur;},showAsChild:function(o,p,q,r,s,t){if(this._.activeChild==o&&o._.panel._.offsetParentId==q.getId())return;this.hideChild();o.onHide=e.bind(function(){e.setTimeout(function(){if(!this._.focused)this.hide();},0,this);},this);this._.activeChild=o;this._.focused=false;o.showBlock(p,q,r,s,t);if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){o.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var o=this._.activeChild;if(o){delete o.onHide;delete this._.activeChild;o.hide();}}}});a.on('instanceDestroyed',function(){var o=e.isEmpty(a.instances);for(var p in l){var q=l[p];if(o)q.destroy();else q.element.hide();}o&&(l={});});})();j.add('menu',{beforeInit:function(l){var m=l.config.menu_groups.split(','),n=l._.menuGroups={},o=l._.menuItems={};for(var p=0;p<m.length;p++)n[m[p]]=p+1;l.addMenuGroup=function(q,r){n[q]=r||100;};l.addMenuItem=function(q,r){if(n[r.group])o[q]=new a.menuItem(this,q,r);};l.addMenuItems=function(q){for(var r in q)this.addMenuItem(r,q[r]);};l.getMenuItem=function(q){return o[q];};},requires:['floatpanel']});(function(){a.menu=e.createClass({$:function(m,n){var q=this;n=q._.definition=n||{};q.id='cke_'+e.getNextNumber();q.editor=m;q.items=[];q._.level=n.level||1;var o=e.extend({},n.panel,{css:m.skin.editor.css,level:q._.level-1,block:{}}),p=o.block.attributes=o.attributes||{};!p.role&&(p.role='menu');q._.panelDefinition=o;},_:{showSubMenu:function(m){var u=this;var n=u._.subMenu,o=u.items[m],p=o.getItems&&o.getItems();if(!p){u._.panel.hideChild();return;}var q=u._.panel.getBlock(u.id);q._.focusIndex=m;if(n)n.removeAll();else{n=u._.subMenu=new a.menu(u.editor,e.extend({},u._.definition,{level:u._.level+1},true));n.parent=u;n.onClick=e.bind(u.onClick,u);n.onEscape=u.onEscape;}for(var r in p){var s=u.editor.getMenuItem(r);if(s){s.state=p[r];n.add(s);}}var t=u._.panel.getBlock(u.id).element.getDocument().getById(u.id+String(m));n.show(t,2);}},proto:{add:function(m){if(!m.order)m.order=this.items.length;this.items.push(m);},removeAll:function(){this.items=[];},show:function(m,n,o,p){var q=this.items,r=this.editor,s=this._.panel,t=this._.element;if(!s){s=this._.panel=new k.floatPanel(this.editor,a.document.getBody(),this._.panelDefinition,this._.level);s.onEscape=e.bind(function(E){if(this.onEscape&&this.onEscape(E)===false)return false;},this);s.onHide=e.bind(function(){this.onHide&&this.onHide();
+},this);var u=s.addBlock(this.id,this._.panelDefinition.block);u.autoSize=true;var v=u.keys;v[40]='next';v[9]='next';v[38]='prev';v[2000+9]='prev';v[32]='click';v[r.lang.dir=='rtl'?37:39]='click';t=this._.element=u.element;t.addClass(r.skinClass);var w=t.getDocument();w.getBody().setStyle('overflow','hidden');w.getElementsByTag('html').getItem(0).setStyle('overflow','hidden');this._.itemOverFn=e.addFunction(function(E){var F=this;clearTimeout(F._.showSubTimeout);F._.showSubTimeout=e.setTimeout(F._.showSubMenu,r.config.menu_subMenuDelay,F,[E]);},this);this._.itemOutFn=e.addFunction(function(E){clearTimeout(this._.showSubTimeout);},this);this._.itemClickFn=e.addFunction(function(E){var G=this;var F=G.items[E];if(F.state==0){G.hide();return;}if(F.getItems)G._.showSubMenu(E);else G.onClick&&G.onClick(F);},this);}l(q);var x=r.container.getChild(1),y=x.hasClass('cke_mixed_dir_content')?' cke_mixed_dir_content':'',z=['<div class="cke_menu'+y+'" role="presentation">'],A=q.length,B=A&&q[0].group;for(var C=0;C<A;C++){var D=q[C];if(B!=D.group){z.push('<div class="cke_menuseparator" role="separator"></div>');B=D.group;}D.render(this,C,z);}z.push('</div>');t.setHtml(z.join(''));if(this.parent)this.parent._.panel.showAsChild(s,this.id,m,n,o,p);else s.showBlock(this.id,m,n,o,p);r.fire('menuShow',[s]);},hide:function(){this._.panel&&this._.panel.hide();}}});function l(m){m.sort(function(n,o){if(n.group<o.group)return-1;else if(n.group>o.group)return 1;return n.order<o.order?-1:n.order>o.order?1:0;});};})();a.menuItem=e.createClass({$:function(l,m,n){var o=this;e.extend(o,n,{order:0,className:'cke_button_'+m});o.group=l._.menuGroups[o.group];o.editor=l;o.name=m;},proto:{render:function(l,m,n){var u=this;var o=l.id+String(m),p=typeof u.state=='undefined'?2:u.state,q=' cke_'+(p==1?'on':p==0?'disabled':'off'),r=u.label;if(u.className)q+=' '+u.className;var s=u.getItems;n.push('<span class="cke_menuitem"><a id="',o,'" class="',q,'" href="javascript:void(\'',(u.label||'').replace("'",''),'\')" title="',u.label,'" tabindex="-1"_cke_focus=1 hidefocus="true" role="menuitem"'+(s?'aria-haspopup="true"':'')+(p==0?'aria-disabled="true"':'')+(p==1?'aria-pressed="true"':''));if(b.opera||b.gecko&&b.mac)n.push(' onkeypress="return false;"');if(b.gecko)n.push(' onblur="this.style.cssText = this.style.cssText;"');var t=(u.iconOffset||0)*-16;n.push(' onmouseover="CKEDITOR.tools.callFunction(',l._.itemOverFn,',',m,');" onmouseout="CKEDITOR.tools.callFunction(',l._.itemOutFn,',',m,');" onclick="CKEDITOR.tools.callFunction(',l._.itemClickFn,',',m,'); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"'+(u.icon?' style="background-image:url('+a.getUrl(u.icon)+');background-position:0 '+t+'px;"':'')+'></span></span>'+'<span class="cke_label">');
+if(s)n.push('<span class="cke_menuarrow">','<span>&#',u.editor.lang.dir=='rtl'?'9668':'9658',';</span>','</span>');n.push(r,'</span></a></span>');}}});i.menu_subMenuDelay=400;i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div';(function(){var l=function(n,o){return n._.modes&&n._.modes[o||n.mode];},m;j.add('editingblock',{init:function(n){if(!n.config.editingBlock)return;n.on('themeSpace',function(o){if(o.data.space=='contents')o.data.html+='<br>';});n.on('themeLoaded',function(){n.fireOnce('editingBlockReady');});n.on('uiReady',function(){n.setMode(n.config.startupMode);});n.on('afterSetData',function(){if(!m){function o(){m=true;l(n).loadData(n.getData());m=false;};if(n.mode)o();else n.on('mode',function(){o();n.removeListener('mode',arguments.callee);});}});n.on('beforeGetData',function(){if(!m&&n.mode){m=true;n.setData(l(n).getData());m=false;}});n.on('getSnapshot',function(o){if(n.mode)o.data=l(n).getSnapshotData();});n.on('loadSnapshot',function(o){if(n.mode)l(n).loadSnapshotData(o.data);});n.on('mode',function(o){o.removeListener();b.webkit&&n.container.on('focus',function(){n.focus();});if(n.config.startupFocus)n.focus();setTimeout(function(){n.fireOnce('instanceReady');a.fire('instanceReady',null,n);},0);});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(n,o){o.name=n;(this._.modes||(this._.modes={}))[n]=o;};a.editor.prototype.setMode=function(n){var o,p=this.getThemeSpace('contents'),q=this.checkDirty();if(this.mode){if(n==this.mode)return;this.fire('beforeModeUnload');var r=l(this);o=r.getData();r.unload(p);this.mode='';}p.setHtml('');var s=l(this,n);if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';if(!q)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});s.load(p,typeof o!='string'?this.getData():o);};a.editor.prototype.focus=function(){var n=l(this);if(n)n.focus();};})();i.startupMode='wysiwyg';i.startupFocus=false;i.editingBlock=true;(function(){function l(){var v=this;try{var s=v.getSelection();if(!s||!s.document.getWindow().$)return;var t=s.getStartElement(),u=new d.elementPath(t);if(!u.compare(v._.selectionPreviousPath)){v._.selectionPreviousPath=u;v.fire('selectionChange',{selection:s,path:u,element:t});}}catch(w){}};var m,n;function o(){n=true;if(m)return;p.call(this);m=e.setTimeout(p,200,this);};function p(){m=null;if(n){e.setTimeout(l,0,this);
+n=false;}};var q={modes:{wysiwyg:1,source:1},exec:function(s){switch(s.mode){case 'wysiwyg':s.document.$.execCommand('SelectAll',false,null);break;case 'source':var t=s.textarea.$;if(c)t.createTextRange().execCommand('SelectAll');else{t.selectionStart=0;t.selectionEnd=t.value.length;}t.focus();}},canUndo:false};j.add('selection',{init:function(s){s.on('contentDom',function(){var t=s.document,u=t.getBody(),v=t.getDocumentElement();if(c){var w,x,y=1;u.on('focusin',function(C){if(C.data.$.srcElement.nodeName!='BODY')return;if(w){if(y)try{w.select();}catch(D){}w=null;}});u.on('focus',function(){x=true;B();});u.on('beforedeactivate',function(C){if(C.data.$.toElement)return;x=false;y=1;});if(c&&b.version<8)s.on('blur',function(C){s.document&&s.document.$.selection.empty();});v.on('mousedown',function(){y=0;});v.on('mouseup',function(){y=1;});if(c&&(b.ie7Compat||b.version<8||b.quirks))v.on('click',function(C){if(C.data.getTarget().getName()=='html')s.getSelection().getRanges()[0].select();});var z;u.on('mousedown',function(C){if(C.data.$.button==2){var D=s.document.$.selection;if(D.type=='None')z=s.window.getScrollPosition();}A();});u.on('mouseup',function(C){if(C.data.$.button==2&&z){s.document.$.documentElement.scrollLeft=z.x;s.document.$.documentElement.scrollTop=z.y;}z=null;x=true;setTimeout(function(){B(true);},0);});u.on('keydown',A);u.on('keyup',function(){x=true;B();});t.on('selectionchange',B);function A(){x=false;};function B(C){if(x){var D=s.document,E=s.getSelection(),F=E&&E.getNative();if(C&&F&&F.type=='None')if(!D.$.queryCommandEnabled('InsertImage')){e.setTimeout(B,50,this,true);return;}var G;if(F&&F.type&&F.type!='Control'&&(G=F.createRange())&&(G=G.parentElement())&&(G=G.nodeName)&&G.toLowerCase() in {input:1,textarea:1})return;w=F&&E.getRanges()[0];o.call(s);}};}else{t.on('mouseup',o,s);t.on('keyup',o,s);}});s.addCommand('selectAll',q);s.ui.addButton('SelectAll',{label:s.lang.selectAll,command:'selectAll'});s.selectionChange=o;}});a.editor.prototype.getSelection=function(){return this.document&&this.document.getSelection();};a.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath;};g.prototype.getSelection=function(){var s=new d.selection(this);return!s||s.isInvalid?null:s;};a.SELECTION_NONE=1;a.SELECTION_TEXT=2;a.SELECTION_ELEMENT=3;d.selection=function(s){var v=this;var t=s.getCustomData('cke_locked_selection');if(t)return t;v.document=s;v.isLocked=false;v._={cache:{}};if(c){var u=v.getNative().createRange();if(!u||u.item&&u.item(0).ownerDocument!=v.document.$||u.parentElement&&u.parentElement().ownerDocument!=v.document.$)v.isInvalid=true;
+}return v;};var r={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,th:1,thead:1,tfoot:1};d.selection.prototype={getNative:c?function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);}:function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());},getType:c?function(){var s=this._.cache;if(s.type)return s.type;var t=1;try{var u=this.getNative(),v=u.type;if(v=='Text')t=2;if(v=='Control')t=3;if(u.createRange().parentElement)t=2;}catch(w){}return s.type=t;}:function(){var s=this._.cache;if(s.type)return s.type;var t=2,u=this.getNative();if(!u)t=1;else if(u.rangeCount==1){var v=u.getRangeAt(0),w=v.startContainer;if(w==v.endContainer&&w.nodeType==1&&v.endOffset-v.startOffset==1&&r[w.childNodes[v.startOffset].nodeName.toLowerCase()])t=3;}return s.type=t;},getRanges:(function(){var s=c?(function(){var t=function(u,v){u=u.duplicate();u.collapse(v);var w=u.parentElement(),x=w.childNodes,y;for(var z=0;z<x.length;z++){var A=x[z];if(A.nodeType==1){y=u.duplicate();y.moveToElementText(A);var B=y.compareEndPoints('StartToStart',u),C=y.compareEndPoints('EndToStart',u);y.collapse();if(B>0)break;else if(!B||C==1&&B==-1)return{container:w,offset:z};else if(!C)return{container:w,offset:z+1};y=null;}}if(!y){y=u.duplicate();y.moveToElementText(w);y.collapse(false);}y.setEndPoint('StartToStart',u);var D=y.text.replace(/(\r\n|\r)/g,'\n').length;try{while(D>0)D-=x[--z].nodeValue.length;}catch(E){D=0;}if(D===0)return{container:w,offset:z};else return{container:x[z],offset:-D};};return function(){var E=this;var u=E.getNative(),v=u&&u.createRange(),w=E.getType(),x;if(!u)return[];if(w==2){x=new d.range(E.document);var y=t(v,true);x.setStart(new d.node(y.container),y.offset);y=t(v);x.setEnd(new d.node(y.container),y.offset);return[x];}else if(w==3){var z=[];for(var A=0;A<v.length;A++){var B=v.item(A),C=B.parentNode,D=0;x=new d.range(E.document);for(;D<C.childNodes.length&&C.childNodes[D]!=B;D++){}x.setStart(new d.node(C),D);x.setEnd(new d.node(C),D+1);z.push(x);}return z;}return[];};})():function(){var t=[],u,v=this.document,w=this.getNative();if(!w)return t;if(!w.rangeCount){u=new d.range(v);u.moveToElementEditStart(v.getBody());t.push(u);}for(var x=0;x<w.rangeCount;x++){var y=w.getRangeAt(x);u=new d.range(v);u.setStart(new d.node(y.startContainer),y.startOffset);u.setEnd(new d.node(y.endContainer),y.endOffset);t.push(u);}return t;
+};return function(t){var u=this._.cache;if(u.ranges&&!t)return u.ranges;else if(!u.ranges)u.ranges=new d.rangeList(s.call(this));if(t){var v=u.ranges;for(var w=0;w<v.length;w++){var x=v[w],y=x.getCommonAncestor();if(y.isReadOnly())v.splice(w,1);if(x.collapsed)continue;var z=x.startContainer,A=x.endContainer,B=x.startOffset,C=x.endOffset,D=x.clone(),E;if(E=z.isReadOnly())x.setStartAfter(E);if(z&&z.type==3)if(B>=z.getLength())D.setStartAfter(z);else D.setStartBefore(z);if(A&&A.type==3)if(!C)D.setEndBefore(A);else D.setEndAfter(A);var F=new d.walker(D);F.evaluator=function(G){if(G.type==1&&G.getAttribute('contenteditable')=='false'){var H=x.clone();x.setEndBefore(G);if(x.collapsed)v.splice(w--,1);if(!(G.getPosition(D.endContainer)&16)){H.setStartAfter(G);if(!H.collapsed)v.splice(w+1,0,H);}return true;}return false;};F.next();}}return u.ranges;};})(),getStartElement:function(){var z=this;var s=z._.cache;if(s.startElement!==undefined)return s.startElement;var t,u=z.getNative();switch(z.getType()){case 3:return z.getSelectedElement();case 2:var v=z.getRanges()[0];if(v)if(!v.collapsed){v.optimize();for(;;){var w=v.startContainer,x=v.startOffset;if(x==(w.getChildCount?w.getChildCount():w.getLength())&&!w.isBlockBoundary())v.setStartAfter(w);else break;}t=v.startContainer;if(t.type!=1)return t.getParent();t=t.getChild(v.startOffset);if(!t||t.type!=1)return v.startContainer;var y=t.getFirst();while(y&&y.type==1){t=y;y=y.getFirst();}return t;}if(c){v=u.createRange();v.collapse(true);t=v.parentElement();}else{t=u.anchorNode;if(t&&t.nodeType!=1)t=t.parentNode;}}return s.startElement=t?new h(t):null;},getSelectedElement:function(){var s=this._.cache;if(s.selectedElement!==undefined)return s.selectedElement;var t=this,u=e.tryThese(function(){return t.getNative().createRange().item(0);},function(){var v=t.getRanges()[0],w,x;for(var y=2;y&&!((w=v.getEnclosedNode())&&w.type==1&&r[w.getName()]&&(x=w));y--)v.shrink(1);return x.$;});return s.selectedElement=u?new h(u):null;},lock:function(){var s=this;s.getRanges();s.getStartElement();s.getSelectedElement();s._.cache.nativeSel={};s.isLocked=true;s.document.setCustomData('cke_locked_selection',s);},unlock:function(s){var x=this;var t=x.document,u=t.getCustomData('cke_locked_selection');if(u){t.setCustomData('cke_locked_selection',null);if(s){var v=u.getSelectedElement(),w=!v&&u.getRanges();x.isLocked=false;x.reset();t.getBody().focus();if(v)x.selectElement(v);else x.selectRanges(w);}}if(!u||!s){x.isLocked=false;x.reset();}},reset:function(){this._.cache={};
+},selectElement:function(s){var v=this;if(v.isLocked){var t=new d.range(v.document);t.setStartBefore(s);t.setEndAfter(s);v._.cache.selectedElement=s;v._.cache.startElement=s;v._.cache.ranges=new d.rangeList(t);v._.cache.type=3;return;}if(c){v.getNative().empty();try{t=v.document.$.body.createControlRange();t.addElement(s.$);t.select();}catch(w){t=v.document.$.body.createTextRange();t.moveToElementText(s.$);t.select();}finally{v.document.fire('selectionchange');}v.reset();}else{t=v.document.$.createRange();t.selectNode(s.$);var u=v.getNative();u.removeAllRanges();u.addRange(t);v.reset();}},selectRanges:function(s){var C=this;if(C.isLocked){C._.cache.selectedElement=null;C._.cache.startElement=s[0]&&s[0].getTouchedStartNode();C._.cache.ranges=new d.rangeList(s);C._.cache.type=2;return;}if(c){if(s.length>1){var t=s[s.length-1];s[0].setEnd(t.endContainer,t.endOffset);s.length=1;}if(s[0])s[0].select();C.reset();}else{var u=C.getNative();if(s.length)u.removeAllRanges();for(var v=0;v<s.length;v++){if(v<s.length-1){var w=s[v],x=s[v+1],y=w.clone();y.setStart(w.endContainer,w.endOffset);y.setEnd(x.startContainer,x.startOffset);if(!y.collapsed){y.shrink(1,true);if(y.getCommonAncestor().isReadOnly()){x.setStart(w.startContainer,w.startOffset);s.splice(v--,1);continue;}}}var z=s[v],A=C.document.$.createRange(),B=z.startContainer;if(z.collapsed&&(b.opera||b.gecko&&b.version<10900)&&B.type==1&&!B.getChildCount())B.appendText('');A.setStart(B.$,z.startOffset);A.setEnd(z.endContainer.$,z.endOffset);u.addRange(A);}C.reset();}},createBookmarks:function(s){return this.getRanges().createBookmarks(s);},createBookmarks2:function(s){return this.getRanges().createBookmarks2(s);},selectBookmarks:function(s){var t=[];for(var u=0;u<s.length;u++){var v=new d.range(this.document);v.moveToBookmark(s[u]);t.push(v);}this.selectRanges(t);return this;},getCommonAncestor:function(){var s=this.getRanges(),t=s[0].startContainer,u=s[s.length-1].endContainer;return t.getCommonAncestor(u);},scrollIntoView:function(){var s=this.getStartElement();s.scrollIntoView();}};})();(function(){var l=d.walker.whitespaces(true),m=/\ufeff|\u00a0/,n={table:1,tbody:1,tr:1};d.range.prototype.select=c?function(o){var y=this;var p=y.collapsed,q,r;if(y.startContainer.type==1&&y.startContainer.getName() in n||y.endContainer.type==1&&y.endContainer.getName() in n)y.shrink(1,true);var s=y.createBookmark(),t=s.startNode,u;if(!p)u=s.endNode;var v=y.document.$.body.createTextRange();v.moveToElementText(t.$);v.moveStart('character',1);
+if(u){var w=y.document.$.body.createTextRange();w.moveToElementText(u.$);v.setEndPoint('EndToEnd',w);v.moveEnd('character',-1);}else{var x=t.getNext(l);q=!(x&&x.getText&&x.getText().match(m))&&(o||!t.hasPrevious()||t.getPrevious().is&&t.getPrevious().is('br'));r=y.document.createElement('span');r.setHtml('&#65279;');r.insertBefore(t);if(q)y.document.createText('\ufeff').insertBefore(t);}y.setStartBefore(t);t.remove();if(p){if(q){v.moveStart('character',-1);v.select();y.document.$.selection.clear();}else v.select();y.moveToPosition(r,3);r.remove();}else{y.setEndBefore(u);u.remove();v.select();}y.document.fire('selectionchange');}:function(){var r=this;var o=r.startContainer;if(r.collapsed&&o.type==1&&!o.getChildCount())o.append(new d.text(''));var p=r.document.$.createRange();p.setStart(o.$,r.startOffset);try{p.setEnd(r.endContainer.$,r.endOffset);}catch(s){if(s.toString().indexOf('NS_ERROR_ILLEGAL_VALUE')>=0){r.collapse(true);p.setEnd(r.endContainer.$,r.endOffset);}else throw s;}var q=r.document.getSelection().getNative();q.removeAllRanges();q.addRange(p);};})();(function(){var l={elements:{$:function(m){var n=m.attributes,o=n&&n._cke_realelement,p=o&&new a.htmlParser.fragment.fromHtml(decodeURIComponent(o)),q=p&&p.children[0];if(q&&m.attributes._cke_resizable){var r=m.attributes.style;if(r){var s=/(?:^|\s)width\s*:\s*(\d+)/i.exec(r),t=s&&s[1];s=/(?:^|\s)height\s*:\s*(\d+)/i.exec(r);var u=s&&s[1];if(t)q.attributes.width=t;if(u)q.attributes.height=u;}}return q;}}};j.add('fakeobjects',{requires:['htmlwriter'],afterInit:function(m){var n=m.dataProcessor,o=n&&n.htmlFilter;if(o)o.addRules(l);}});})();a.editor.prototype.createFakeElement=function(l,m,n,o){var p=this.lang.fakeobjects,q={'class':m,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(l.getOuterHtml()),_cke_real_node_type:l.type,alt:p[n]||p.unknown,align:l.getAttribute('align')||''};if(n)q._cke_real_element_type=n;if(o)q._cke_resizable=o;return this.document.createElement('img',{attributes:q});};a.editor.prototype.createFakeParserElement=function(l,m,n,o){var p=this.lang.fakeobjects,q,r=new a.htmlParser.basicWriter();l.writeHtml(r);q=r.getHtml();var s={'class':m,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(q),_cke_real_node_type:l.type,alt:p[n]||p.unknown,align:l.attributes.align||''};if(n)s._cke_real_element_type=n;if(o)s._cke_resizable=o;return new a.htmlParser.element('img',s);};a.editor.prototype.restoreRealElement=function(l){if(l.getAttribute('_cke_real_node_type')!=1)return null;
+return h.createFromHtml(decodeURIComponent(l.getAttribute('_cke_realelement')),this.document);};j.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(l){l.ui.addHandler(3,k.richCombo.handler);}});a.UI_RICHCOMBO=3;k.richCombo=e.createClass({$:function(l){var n=this;e.extend(n,l,{title:l.label,modes:{wysiwyg:1}});var m=n.panel||{};delete n.panel;n.id=e.getNextNumber();n.document=m&&m.parent&&m.parent.getDocument()||a.document;m.className=(m.className||'')+' cke_rcombopanel';m.block={multiSelect:m.multiSelect,attributes:m.attributes};n._={panelDefinition:m,items:{},state:2};},statics:{handler:{create:function(l){return new k.richCombo(l);}}},proto:{renderHtml:function(l){var m=[];this.render(l,m);return m.join('');},render:function(l,m){var n=b,o='cke_'+this.id,p=e.addFunction(function(s){var v=this;var t=v._;if(t.state==0)return;v.createPanel(l);if(t.on){t.panel.hide();return;}if(!t.committed){t.list.commit();t.committed=1;}var u=v.getValue();if(u)t.list.mark(u);else t.list.unmarkAll();t.panel.showBlock(v.id,new h(s),4);},this),q={id:o,combo:this,focus:function(){var s=a.document.getById(o).getChild(1);s.focus();},clickFn:p};l.on('mode',function(){this.setState(this.modes[l.mode]?2:0);},this);var r=e.addFunction(function(s,t){s=new d.event(s);var u=s.getKeystroke();switch(u){case 13:case 32:case 40:e.callFunction(p,t);break;default:q.onkey(q,u);}s.preventDefault();});q.keyDownFn=r;m.push('<span class="cke_rcombo">','<span id=',o);if(this.className)m.push(' class="',this.className,' cke_off"');m.push('>','<span id="'+o+'_label" class=cke_label>',this.label,'</span>','<a hidefocus=true title="',this.title,'" tabindex="-1"',n.gecko&&n.version>=10900&&!n.hc?'':" href=\"javascript:void('"+this.label+"')\"",' role="button" aria-labelledby="',o,'_label" aria-describedby="',o,'_text" aria-haspopup="true"');if(b.opera||b.gecko&&b.mac)m.push(' onkeypress="return false;"');if(b.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');m.push(' onkeydown="CKEDITOR.tools.callFunction( ',r,', event, this );" onclick="CKEDITOR.tools.callFunction(',p,', this); return false;"><span><span id="'+o+'_text" class="cke_text cke_inline_label">'+this.label+'</span>'+'</span>'+'<span class=cke_openbutton>'+(b.hc?'<span>&#9660;</span>':'')+'</span>'+'</a>'+'</span>'+'</span>');if(this.onRender)this.onRender();return q;},createPanel:function(l){if(this._.panel)return;var m=this._.panelDefinition,n=this._.panelDefinition.block,o=m.parent||a.document.getBody(),p=new k.floatPanel(l,o,m),q=p.addListBlock(this.id,n),r=this;
+p.onShow=function(){if(r.className)this.element.getFirst().addClass(r.className+'_panel');r.setState(1);q.focus(!r.multiSelect&&r.getValue());r._.on=1;if(r.onOpen)r.onOpen();};p.onHide=function(){if(r.className)this.element.getFirst().removeClass(r.className+'_panel');r.setState(2);r._.on=0;if(r.onClose)r.onClose();};p.onEscape=function(){p.hide();r.document.getById('cke_'+r.id).getFirst().getNext().focus();};q.onClick=function(s,t){r.document.getWindow().focus();if(r.onClick)r.onClick.call(r,s,t);if(t)r.setValue(s,r._.items[s]);else r.setValue('');p.hide();};this._.panel=p;this._.list=q;p.getBlock(this.id).onHide=function(){r._.on=0;r.setState(2);};if(this.init)this.init();},setValue:function(l,m){var o=this;o._.value=l;var n=o.document.getById('cke_'+o.id+'_text');if(!(l||m)){m=o.label;n.addClass('cke_inline_label');}else n.removeClass('cke_inline_label');n.setHtml(typeof m!='undefined'?m:l);},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(l){this._.list.mark(l);},hideItem:function(l){this._.list.hideItem(l);},hideGroup:function(l){this._.list.hideGroup(l);},showAll:function(){this._.list.showAll();},add:function(l,m,n){this._.items[l]=n||l;this._.list.add(l,m,n);},startGroup:function(l){this._.list.startGroup(l);},commit:function(){this._.list.commit();},setState:function(l){var m=this;if(m._.state==l)return;m.document.getById('cke_'+m.id).setState(l);m._.state=l;}}});k.prototype.addRichCombo=function(l,m){this.add(l,3,m);};j.add('htmlwriter');a.htmlWriter=e.createClass({base:a.htmlParser.basicWriter,$:function(){var n=this;n.base();n.indentationChars='\t';n.selfClosingEnd=' />';n.lineBreakChars='\n';n.forceSimpleAmpersand=false;n.sortAttributes=true;n._.indent=false;n._.indentation='';n._.rules={};var l=f;for(var m in e.extend({},l.$nonBodyContent,l.$block,l.$listItem,l.$tableContent))n.setRules(m,{indent:true,breakBeforeOpen:true,breakAfterOpen:true,breakBeforeClose:!l[m]['#'],breakAfterClose:true});n.setRules('br',{breakAfterOpen:true});n.setRules('title',{indent:false,breakAfterOpen:false});n.setRules('style',{indent:false,breakBeforeClose:true});n.setRules('pre',{indent:false});},proto:{openTag:function(l,m){var o=this;var n=o._.rules[l];if(o._.indent)o.indentation();else if(n&&n.breakBeforeOpen){o.lineBreak();o.indentation();}o._.output.push('<',l);},openTagClose:function(l,m){var o=this;var n=o._.rules[l];if(m)o._.output.push(o.selfClosingEnd);else{o._.output.push('>');if(n&&n.indent)o._.indentation+=o.indentationChars;
+}if(n&&n.breakAfterOpen)o.lineBreak();},attribute:function(l,m){if(typeof m=='string'){this.forceSimpleAmpersand&&(m=m.replace(/&amp;/g,'&'));m=e.htmlEncodeAttr(m);}this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){var n=this;var m=n._.rules[l];if(m&&m.indent)n._.indentation=n._.indentation.substr(n.indentationChars.length);if(n._.indent)n.indentation();else if(m&&m.breakBeforeClose){n.lineBreak();n.indentation();}n._.output.push('</',l,'>');if(m&&m.breakAfterClose)n.lineBreak();},text:function(l){if(this._.indent){this.indentation();l=e.ltrim(l);}this._.output.push(l);},comment:function(l){if(this._.indent)this.indentation();this._.output.push('<!--',l,'-->');},lineBreak:function(){var l=this;if(l._.output.length>0)l._.output.push(l.lineBreakChars);l._.indent=true;},indentation:function(){this._.output.push(this._.indentation);this._.indent=false;},setRules:function(l,m){var n=this._.rules[l];if(n)e.extend(n,m,true);else this._.rules[l]=m;}}});j.add('menubutton',{requires:['button','contextmenu'],beforeInit:function(l){l.ui.addHandler(5,k.menuButton.handler);}});a.UI_MENUBUTTON=5;(function(){var l=function(m){var n=this._;if(n.state===0)return;n.previousState=n.state;var o=n.menu;if(!o){o=n.menu=new j.contextMenu(m);o.definition.panel.attributes['aria-label']=m.lang.common.options;o.onHide=e.bind(function(){this.setState(n.previousState);},this);if(this.onMenu)o.addListener(this.onMenu);}if(n.on){o.hide();return;}this.setState(1);o.show(a.document.getById(this._.id),4);};k.menuButton=e.createClass({base:k.button,$:function(m){var n=m.panel;delete m.panel;this.base(m);this.hasArrow=true;this.click=l;},statics:{handler:{create:function(m){return new k.menuButton(m);}}}});})();j.add('dialogui');(function(){var l=function(t){var w=this;w._||(w._={});w._['default']=w._.initValue=t['default']||'';w._.required=t.required||false;var u=[w._];for(var v=1;v<arguments.length;v++)u.push(arguments[v]);u.push(true);e.extend.apply(e,u);return w._;},m={build:function(t,u,v){return new k.dialog.textInput(t,u,v);}},n={build:function(t,u,v){return new k.dialog[u.type](t,u,v);}},o={build:function(t,u,v){var w=u.children,x,y=[],z=[];for(var A=0;A<w.length&&(x=w[A]);A++){var B=[];y.push(B);z.push(a.dialog._.uiElementBuilders[x.type].build(t,x,B));}return new k.dialog[u.type](t,z,y,v,u);}},p={isChanged:function(){return this.getValue()!=this.getInitValue();},reset:function(t){this.setValue(this.getInitValue(),t);},setInitValue:function(){this._.initValue=this.getValue();
+},resetInitValue:function(){this._.initValue=this._['default'];},getInitValue:function(){return this._.initValue;}},q=e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onChange:function(t,u){if(!this._.domOnChangeRegistered){t.on('load',function(){this.getInputElement().on('change',function(){if(!t.parts.dialog.isVisible())return;this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',u);}},true),r=/^on([A-Z]\w+)/,s=function(t){for(var u in t){if(r.test(u)||u=='title'||u=='type')delete t[u];}return t;};e.extend(k.dialog,{labeledElement:function(t,u,v,w){if(arguments.length<4)return;var x=l.call(this,u);x.labelId=e.getNextId()+'_label';var y=this._.children=[],z=function(){var A=[],B=u.required?' cke_required':'';if(u.labelLayout!='horizontal')A.push('<label class="cke_dialog_ui_labeled_label'+B+'" ',' id="'+x.labelId+'"',' for="'+x.inputId+'"',' style="'+u.labelStyle+'">',u.label,'</label>','<div class="cke_dialog_ui_labeled_content" role="presentation">',w.call(this,t,u),'</div>');else{var C={type:'hbox',widths:u.widths,padding:0,children:[{type:'html',html:'<label class="cke_dialog_ui_labeled_label'+B+'"'+' id="'+x.labelId+'"'+' for="'+x.inputId+'"'+' style="'+u.labelStyle+'">'+e.htmlEncode(u.label)+'</span>'},{type:'html',html:'<span class="cke_dialog_ui_labeled_content">'+w.call(this,t,u)+'</span>'}]};a.dialog._.uiElementBuilders.hbox.build(t,C,A);}return A.join('');};k.dialog.uiElement.call(this,t,u,v,'div',null,{role:'presentation'},z);},textInput:function(t,u,v){if(arguments.length<3)return;l.call(this,u);var w=this._.inputId=e.getNextId()+'_textInput',x={'class':'cke_dialog_ui_input_'+u.type,id:w,type:'text'},y;if(u.validate)this.validate=u.validate;if(u.maxLength)x.maxlength=u.maxLength;if(u.size)x.size=u.size;if(u.controlStyle)x.style=u.controlStyle;var z=this,A=false;t.on('load',function(){z.getInputElement().on('keydown',function(C){if(C.data.getKeystroke()==13)A=true;});z.getInputElement().on('keyup',function(C){if(C.data.getKeystroke()==13&&A){t.getButton('ok')&&setTimeout(function(){t.getButton('ok').click();},0);A=false;}},null,null,1000);});var B=function(){var C=['<div class="cke_dialog_ui_input_',u.type,'" role="presentation"'];if(u.width)C.push('style="width:'+u.width+'" ');C.push('><input ');x['aria-labelledby']=this._.labelId;this._.required&&(x['aria-required']=this._.required);for(var D in x)C.push(D+'="'+x[D]+'" ');C.push(' /></div>');return C.join('');};k.dialog.labeledElement.call(this,t,u,v,B);
+},textarea:function(t,u,v){if(arguments.length<3)return;l.call(this,u);var w=this,x=this._.inputId=e.getNextId()+'_textarea',y={};if(u.validate)this.validate=u.validate;y.rows=u.rows||5;y.cols=u.cols||20;var z=function(){y['aria-labelledby']=this._.labelId;this._.required&&(y['aria-required']=this._.required);var A=['<div class="cke_dialog_ui_input_textarea" role="presentation"><textarea class="cke_dialog_ui_input_textarea" id="',x,'" '];for(var B in y)A.push(B+'="'+e.htmlEncode(y[B])+'" ');A.push('>',e.htmlEncode(w._['default']),'</textarea></div>');return A.join('');};k.dialog.labeledElement.call(this,t,u,v,z);},checkbox:function(t,u,v){if(arguments.length<3)return;var w=l.call(this,u,{'default':!!u['default']});if(u.validate)this.validate=u.validate;var x=function(){var y=e.extend({},u,{id:u.id?u.id+'_checkbox':e.getNextId()+'_checkbox'},true),z=[],A=e.getNextId()+'_label',B={'class':'cke_dialog_ui_checkbox_input',type:'checkbox','aria-labelledby':A};s(y);if(u['default'])B.checked='checked';if(typeof y.controlStyle!='undefined')y.style=y.controlStyle;w.checkbox=new k.dialog.uiElement(t,y,z,'input',null,B);z.push(' <label id="',A,'" for="',B.id,'">',e.htmlEncode(u.label),'</label>');return z.join('');};k.dialog.uiElement.call(this,t,u,v,'span',null,null,x);},radio:function(t,u,v){if(arguments.length<3)return;l.call(this,u);if(!this._['default'])this._['default']=this._.initValue=u.items[0][1];if(u.validate)this.validate=u.valdiate;var w=[],x=this,y=function(){var z=[],A=[],B={'class':'cke_dialog_ui_radio_item','aria-labelledby':this._.labelId},C=u.id?u.id+'_radio':e.getNextId()+'_radio';for(var D=0;D<u.items.length;D++){var E=u.items[D],F=E[2]!==undefined?E[2]:E[0],G=E[1]!==undefined?E[1]:E[0],H=e.getNextId()+'_radio_input',I=H+'_label',J=e.extend({},u,{id:H,title:null,type:null},true),K=e.extend({},J,{title:F},true),L={type:'radio','class':'cke_dialog_ui_radio_input',name:C,value:G,'aria-labelledby':I},M=[];if(x._['default']==G)L.checked='checked';s(J);s(K);if(typeof J.controlStyle!='undefined')J.style=J.controlStyle;w.push(new k.dialog.uiElement(t,J,M,'input',null,L));M.push(' ');new k.dialog.uiElement(t,K,M,'label',null,{id:I,'for':L.id},E[0]);z.push(M.join(''));}new k.dialog.hbox(t,[],z,A);return A.join('');};k.dialog.labeledElement.call(this,t,u,v,y);this._.children=w;},button:function(t,u,v){if(!arguments.length)return;if(typeof u=='function')u=u(t.getParentEditor());l.call(this,u,{disabled:u.disabled||false});a.event.implementOn(this);var w=this;t.on('load',function(z){var A=this.getElement();
+(function(){A.on('click',function(B){w.fire('click',{dialog:w.getDialog()});B.data.preventDefault();});A.on('keydown',function(B){if(B.data.getKeystroke() in {32:1}){w.click();B.data.preventDefault();}});})();A.unselectable();},this);var x=e.extend({},u);delete x.style;var y=e.getNextId()+'_label';k.dialog.uiElement.call(this,t,x,v,'a',null,{style:u.style,href:'javascript:void(0)',title:u.label,hidefocus:'true','class':u['class'],role:'button','aria-labelledby':y},'<span id="'+y+'" class="cke_dialog_ui_button">'+e.htmlEncode(u.label)+'</span>');},select:function(t,u,v){if(arguments.length<3)return;var w=l.call(this,u);if(u.validate)this.validate=u.validate;w.inputId=e.getNextId()+'_select';var x=function(){var y=e.extend({},u,{id:u.id?u.id+'_select':e.getNextId()+'_select'},true),z=[],A=[],B={id:w.inputId,'class':'cke_dialog_ui_input_select','aria-labelledby':this._.labelId};if(u.size!=undefined)B.size=u.size;if(u.multiple!=undefined)B.multiple=u.multiple;s(y);for(var C=0,D;C<u.items.length&&(D=u.items[C]);C++)A.push('<option value="',e.htmlEncode(D[1]!==undefined?D[1]:D[0]),'" /> ',e.htmlEncode(D[0]));if(typeof y.controlStyle!='undefined')y.style=y.controlStyle;w.select=new k.dialog.uiElement(t,y,z,'select',null,B,A.join(''));return z.join('');};k.dialog.labeledElement.call(this,t,u,v,x);},file:function(t,u,v){if(arguments.length<3)return;if(u['default']===undefined)u['default']='';var w=e.extend(l.call(this,u),{definition:u,buttons:[]});if(u.validate)this.validate=u.validate;var x=function(){w.frameId=e.getNextId()+'_fileInput';var y=b.isCustomDomain(),z=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="',w.frameId,'" title="',u.label,'" src="javascript:void('];z.push(y?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');z.push(')"></iframe>');return z.join('');};t.on('load',function(){var y=a.document.getById(w.frameId),z=y.getParent();z.addClass('cke_dialog_ui_input_file');});k.dialog.labeledElement.call(this,t,u,v,x);},fileButton:function(t,u,v){if(arguments.length<3)return;var w=l.call(this,u),x=this;if(u.validate)this.validate=u.validate;var y=e.extend({},u),z=y.onClick;y.className=(y.className?y.className+' ':'')+'cke_dialog_ui_button';y.onClick=function(A){var B=u['for'];if(!z||z.call(this,A)!==false){t.getContentElement(B[0],B[1]).submit();this.disable();}};t.on('load',function(){t.getContentElement(u['for'][0],u['for'][1])._.buttons.push(x);});k.dialog.button.call(this,t,y,v);
+},html:(function(){var t=/^\s*<[\w:]+\s+([^>]*)?>/,u=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,v=/\/$/;return function(w,x,y){if(arguments.length<3)return;var z=[],A,B=x.html,C,D;if(B.charAt(0)!='<')B='<span>'+B+'</span>';var E=x.focus;if(E){var F=this.focus;this.focus=function(){F.call(this);typeof E=='function'&&E.call(this);this.fire('focus');};if(x.isFocusable){var G=this.isFocusable;this.isFocusable=G;}this.keyboardFocusable=true;}k.dialog.uiElement.call(this,w,x,z,'span',null,null,'');A=z.join('');C=A.match(t);D=B.match(u)||['','',''];if(v.test(D[1])){D[1]=D[1].slice(0,-1);D[2]='/'+D[2];}y.push([D[1],' ',C[1]||'',D[2]].join(''));};})(),fieldset:function(t,u,v,w,x){var y=x.label,z=function(){var A=[];y&&A.push('<legend>'+y+'</legend>');for(var B=0;B<v.length;B++)A.push(v[B]);return A.join('');};this._={children:u};k.dialog.uiElement.call(this,t,x,w,'fieldset',null,null,z);}},true);k.dialog.html.prototype=new k.dialog.uiElement();k.dialog.labeledElement.prototype=e.extend(new k.dialog.uiElement(),{setLabel:function(t){var u=a.document.getById(this._.labelId);if(u.getChildCount()<1)new d.text(t,a.document).appendTo(u);else u.getChild(0).$.nodeValue=t;return this;},getLabel:function(){var t=a.document.getById(this._.labelId);if(!t||t.getChildCount()<1)return '';else return t.getChild(0).getText();},eventProcessors:q},true);k.dialog.button.prototype=e.extend(new k.dialog.uiElement(),{click:function(){var t=this;if(!t._.disabled)return t.fire('click',{dialog:t._.dialog});t.getElement().$.blur();return false;},enable:function(){this._.disabled=false;var t=this.getElement();t&&t.removeClass('disabled');},disable:function(){this._.disabled=true;this.getElement().addClass('disabled');},isVisible:function(){return this.getElement().getFirst().isVisible();},isEnabled:function(){return!this._.disabled;},eventProcessors:e.extend({},k.dialog.uiElement.prototype.eventProcessors,{onClick:function(t,u){this.on('click',u);}},true),accessKeyUp:function(){this.click();},accessKeyDown:function(){this.focus();},keyboardFocusable:true},true);k.dialog.textInput.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return a.document.getById(this._.inputId);},focus:function(){var t=this.selectParentTab();setTimeout(function(){var u=t.getInputElement();u&&u.$.focus();},0);},select:function(){var t=this.selectParentTab();setTimeout(function(){var u=t.getInputElement();if(u){u.$.focus();u.$.select();}},0);},accessKeyUp:function(){this.select();},setValue:function(t){!t&&(t='');
+return k.dialog.uiElement.prototype.setValue.apply(this,arguments);},keyboardFocusable:true},p,true);k.dialog.textarea.prototype=new k.dialog.textInput();k.dialog.select.prototype=e.extend(new k.dialog.labeledElement(),{getInputElement:function(){return this._.select.getElement();},add:function(t,u,v){var w=new h('option',this.getDialog().getParentEditor().document),x=this.getInputElement().$;w.$.text=t;w.$.value=u===undefined||u===null?t:u;if(v===undefined||v===null){if(c)x.add(w.$);else x.add(w.$,null);}else x.add(w.$,v);return this;},remove:function(t){var u=this.getInputElement().$;u.remove(t);return this;},clear:function(){var t=this.getInputElement().$;while(t.length>0)t.remove(0);return this;},keyboardFocusable:true},p,true);k.dialog.checkbox.prototype=e.extend(new k.dialog.uiElement(),{getInputElement:function(){return this._.checkbox.getElement();},setValue:function(t,u){this.getInputElement().$.checked=t;!u&&this.fire('change',{value:t});},getValue:function(){return this.getInputElement().$.checked;},accessKeyUp:function(){this.setValue(!this.getValue());},eventProcessors:{onChange:function(t,u){if(!c)return q.onChange.apply(this,arguments);else{t.on('load',function(){var v=this._.checkbox.getElement();v.on('propertychange',function(w){w=w.data.$;if(w.propertyName=='checked')this.fire('change',{value:v.$.checked});},this);},this);this.on('change',u);}return null;}},keyboardFocusable:true},p,true);k.dialog.radio.prototype=e.extend(new k.dialog.uiElement(),{setValue:function(t,u){var v=this._.children,w;for(var x=0;x<v.length&&(w=v[x]);x++)w.getElement().$.checked=w.getValue()==t;!u&&this.fire('change',{value:t});},getValue:function(){var t=this._.children;for(var u=0;u<t.length;u++){if(t[u].getElement().$.checked)return t[u].getValue();}return null;},accessKeyUp:function(){var t=this._.children,u;for(u=0;u<t.length;u++){if(t[u].getElement().$.checked){t[u].getElement().focus();return;}}t[0].getElement().focus();},eventProcessors:{onChange:function(t,u){if(!c)return q.onChange.apply(this,arguments);else{t.on('load',function(){var v=this._.children,w=this;for(var x=0;x<v.length;x++){var y=v[x].getElement();y.on('propertychange',function(z){z=z.data.$;if(z.propertyName=='checked'&&this.$.checked)w.fire('change',{value:this.getAttribute('value')});});}},this);this.on('change',u);}return null;}},keyboardFocusable:true},p,true);k.dialog.file.prototype=e.extend(new k.dialog.labeledElement(),p,{getInputElement:function(){var t=a.document.getById(this._.frameId).getFrameDocument();
+return t.$.forms.length>0?new h(t.$.forms[0].elements[0]):this.getElement();},submit:function(){this.getInputElement().getParent().$.submit();return this;},getAction:function(){return this.getInputElement().getParent().$.action;},registerEvents:function(t){var u=/^on([A-Z]\w+)/,v,w=function(y,z,A,B){y.on('formLoaded',function(){y.getInputElement().on(A,B,y);});};for(var x in t){if(!(v=x.match(u)))continue;if(this.eventProcessors[x])this.eventProcessors[x].call(this,this._.dialog,t[x]);else w(this,this._.dialog,v[1].toLowerCase(),t[x]);}return this;},reset:function(){var t=a.document.getById(this._.frameId),u=t.getFrameDocument(),v=this._.definition,w=this._.buttons,x=this.formLoadedNumber,y=this.formUnloadNumber,z=this._.dialog._.editor.lang.dir,A=this._.dialog._.editor.langCode;if(!x){x=this.formLoadedNumber=e.addFunction(function(){this.fire('formLoaded');},this);y=this.formUnloadNumber=e.addFunction(function(){this.getInputElement().clearCustomData();},this);this.getDialog()._.editor.on('destroy',function(){e.removeFunction(x);e.removeFunction(y);});}function B(){u.$.open();if(b.isCustomDomain())u.$.domain=document.domain;var C='';if(v.size)C=v.size-(c?7:0);u.$.write(['<html dir="'+z+'" lang="'+A+'"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" dir="'+z+'" lang="'+A+'" action="',e.htmlEncode(v.action),'">','<input type="file" name="',e.htmlEncode(v.id||'cke_upload'),'" size="',e.htmlEncode(C>0?C:''),'" />','</form>','</body></html>','<script>window.parent.CKEDITOR.tools.callFunction('+x+');','window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction('+y+')}</script>'].join(''));u.$.close();for(var D=0;D<w.length;D++)w[D].enable();};if(b.gecko)setTimeout(B,500);else B();},getValue:function(){return this.getInputElement().$.value;},setInitValue:function(){this._.initValue='';},eventProcessors:{onChange:function(t,u){if(!this._.domOnChangeRegistered){this.on('formLoaded',function(){this.getInputElement().on('change',function(){this.fire('change',{value:this.getValue()});},this);},this);this._.domOnChangeRegistered=true;}this.on('change',u);}},keyboardFocusable:true},true);k.dialog.fileButton.prototype=new k.dialog.button();k.dialog.fieldset.prototype=e.clone(k.dialog.hbox.prototype);a.dialog.addUIElement('text',m);a.dialog.addUIElement('password',m);a.dialog.addUIElement('textarea',n);a.dialog.addUIElement('checkbox',n);a.dialog.addUIElement('radio',n);
+a.dialog.addUIElement('button',n);a.dialog.addUIElement('select',n);a.dialog.addUIElement('file',n);a.dialog.addUIElement('fileButton',n);a.dialog.addUIElement('html',n);a.dialog.addUIElement('fieldset',o);})();j.add('panel',{beforeInit:function(l){l.ui.addHandler(2,k.panel.handler);}});a.UI_PANEL=2;k.panel=function(l,m){var n=this;if(m)e.extend(n,m);e.extend(n,{className:'',css:[]});n.id=e.getNextNumber();n.document=l;n._={blocks:{}};};k.panel.handler={create:function(l){return new k.panel(l);}};k.panel.prototype={renderHtml:function(l){var m=[];this.render(l,m);return m.join('');},render:function(l,m){var o=this;var n='cke_'+o.id;m.push('<div class="',l.skinClass,'" lang="',l.langCode,'" role="presentation" style="display:none;z-index:'+(l.config.baseFloatZIndex+1)+'">'+'<div'+' id=',n,' dir=',l.lang.dir,' role="presentation" class="cke_panel cke_',l.lang.dir);if(o.className)m.push(' ',o.className);m.push('">');if(o.forceIFrame||o.css.length){m.push('<iframe id="',n,'_frame" frameborder="0" role="application" src="javascript:void(');m.push(b.isCustomDomain()?"(function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})()':'0');m.push(')"></iframe>');}m.push('</div></div>');return n;},getHolderElement:function(){var l=this._.holder;if(!l){if(this.forceIFrame||this.css.length){var m=this.document.getById('cke_'+this.id+'_frame'),n=m.getParent(),o=n.getAttribute('dir'),p=n.getParent().getAttribute('class'),q=n.getParent().getAttribute('lang'),r=m.getFrameDocument();r.$.open();if(b.isCustomDomain())r.$.domain=document.domain;var s=e.addFunction(e.bind(function(u){this.isLoaded=true;if(this.onLoad)this.onLoad();},this));r.$.write('<!DOCTYPE html><html dir="'+o+'" class="'+p+'_container" lang="'+q+'">'+'<head>'+'<style>.'+p+'_container{visibility:hidden}</style>'+'</head>'+'<body class="cke_'+o+' cke_panel_frame '+b.cssClass+'" style="margin:0;padding:0"'+' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction('+s+');"></body>'+e.buildStyleHtml(this.css)+'</html>');r.$.close();var t=r.getWindow();t.$.CKEDITOR=a;r.on('keydown',function(u){var x=this;var v=u.data.getKeystroke(),w=x.document.getById('cke_'+x.id).getAttribute('dir');if(x._.onKeyDown&&x._.onKeyDown(v)===false){u.data.preventDefault();return;}if(v==27||v==(w=='rtl'?39:37))if(x.onEscape&&x.onEscape(v)===false)u.data.preventDefault();},this);l=r.getBody();l.unselectable();}else l=this.document.getById('cke_'+this.id);this._.holder=l;}return l;},addBlock:function(l,m){var n=this;
+m=n._.blocks[l]=m instanceof k.panel.block?m:new k.panel.block(n.getHolderElement(),m);if(!n._.currentBlock)n.showBlock(l);return m;},getBlock:function(l){return this._.blocks[l];},showBlock:function(l){var m=this._.blocks,n=m[l],o=this._.currentBlock,p=this.forceIFrame?this.document.getById('cke_'+this.id+'_frame'):this._.holder;p.getParent().getParent().disableContextMenu();if(o){p.removeAttributes(o.attributes);o.hide();}this._.currentBlock=n;p.setAttributes(n.attributes);a.fire('ariaWidget',p);n._.focusIndex=-1;this._.onKeyDown=n.onKeyDown&&e.bind(n.onKeyDown,n);n.onMark=function(q){p.setAttribute('aria-activedescendant',q.getId()+'_option');};n.onUnmark=function(){p.removeAttribute('aria-activedescendant');};n.show();return n;},destroy:function(){this.element&&this.element.remove();}};k.panel.block=e.createClass({$:function(l,m){var n=this;n.element=l.append(l.getDocument().createElement('div',{attributes:{tabIndex:-1,'class':'cke_panel_block',role:'presentation'},styles:{display:'none'}}));if(m)e.extend(n,m);if(!n.attributes.title)n.attributes.title=n.attributes['aria-label'];n.keys={};n._.focusIndex=-1;n.element.disableContextMenu();},_:{markItem:function(l){var o=this;if(l==-1)return;var m=o.element.getElementsByTag('a'),n=m.getItem(o._.focusIndex=l);if(b.webkit)n.getDocument().getWindow().focus();n.focus();o.onMark&&o.onMark(n);}},proto:{show:function(){this.element.setStyle('display','');},hide:function(){var l=this;if(!l.onHide||l.onHide.call(l)!==true)l.element.setStyle('display','none');},onKeyDown:function(l){var q=this;var m=q.keys[l];switch(m){case 'next':var n=q._.focusIndex,o=q.element.getElementsByTag('a'),p;while(p=o.getItem(++n)){if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){q._.focusIndex=n;p.focus();break;}}return false;case 'prev':n=q._.focusIndex;o=q.element.getElementsByTag('a');while(n>0&&(p=o.getItem(--n))){if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){q._.focusIndex=n;p.focus();break;}}return false;case 'click':n=q._.focusIndex;p=n>=0&&q.element.getElementsByTag('a').getItem(n);if(p)p.$.click?p.$.click():p.$.onclick();return false;}return true;}}});j.add('listblock',{requires:['panel'],onLoad:function(){k.panel.prototype.addListBlock=function(l,m){return this.addBlock(l,new k.listBlock(this.getHolderElement(),m));};k.listBlock=e.createClass({base:k.panel.block,$:function(l,m){var p=this;m=m||{};var n=m.attributes||(m.attributes={});(p.multiSelect=!!m.multiSelect)&&(n['aria-multiselectable']=true);!n.role&&(n.role='listbox');
+p.base.apply(p,arguments);var o=p.keys;o[40]='next';o[9]='next';o[38]='prev';o[2000+9]='prev';o[32]='click';p._.pendingHtml=[];p._.items={};p._.groups={};},_:{close:function(){if(this._.started){this._.pendingHtml.push('</ul>');delete this._.started;}},getClick:function(){if(!this._.click)this._.click=e.addFunction(function(l){var n=this;var m=true;if(n.multiSelect)m=n.toggle(l);else n.mark(l);if(n.onClick)n.onClick(l,m);},this);return this._.click;}},proto:{add:function(l,m,n){var q=this;var o=q._.pendingHtml,p='cke_'+e.getNextNumber();if(!q._.started){o.push('<ul role="presentation" class=cke_panel_list>');q._.started=1;q._.size=q._.size||0;}q._.items[l]=p;o.push('<li id=',p,' class=cke_panel_listItem><a id="',p,'_option" _cke_focus=1 hidefocus=true title="',n||l,'" href="javascript:void(\'',l,'\')" onclick="CKEDITOR.tools.callFunction(',q._.getClick(),",'",l,"'); return false;\"",' role="option" aria-posinset="'+ ++q._.size+'">',m||l,'</a></li>');},startGroup:function(l){this._.close();var m='cke_'+e.getNextNumber();this._.groups[l]=m;this._.pendingHtml.push('<h1 role="presentation" id=',m,' class=cke_panel_grouptitle>',l,'</h1>');},commit:function(){var o=this;o._.close();o.element.appendHtml(o._.pendingHtml.join(''));var l=o._.items,m=o.element.getDocument();for(var n in l)m.getById(l[n]+'_option').setAttribute('aria-setsize',o._.size);delete o._.size;o._.pendingHtml=[];},toggle:function(l){var m=this.isMarked(l);if(m)this.unmark(l);else this.mark(l);return!m;},hideGroup:function(l){var m=this.element.getDocument().getById(this._.groups[l]),n=m&&m.getNext();if(m){m.setStyle('display','none');if(n&&n.getName()=='ul')n.setStyle('display','none');}},hideItem:function(l){this.element.getDocument().getById(this._.items[l]).setStyle('display','none');},showAll:function(){var l=this._.items,m=this._.groups,n=this.element.getDocument();for(var o in l)n.getById(l[o]).setStyle('display','');for(var p in m){var q=n.getById(m[p]),r=q.getNext();q.setStyle('display','');if(r&&r.getName()=='ul')r.setStyle('display','');}},mark:function(l){var o=this;if(!o.multiSelect)o.unmarkAll();var m=o._.items[l],n=o.element.getDocument().getById(m);n.addClass('cke_selected');o.element.getDocument().getById(m+'_option').setAttribute('aria-selected',true);o.element.setAttribute('aria-activedescendant',m+'_option');o.onMark&&o.onMark(n);},unmark:function(l){var m=this;m.element.getDocument().getById(m._.items[l]).removeClass('cke_selected');m.onUnmark&&m.onUnmark(m._.items[l]);},unmarkAll:function(){var o=this;
+var l=o._.items,m=o.element.getDocument();for(var n in l)m.getById(l[n]).removeClass('cke_selected');o.onUnmark&&o.onUnmark();},isMarked:function(l){return this.element.getDocument().getById(this._.items[l]).hasClass('cke_selected');},focus:function(l){this._.focusIndex=-1;if(l){var m=this.element.getDocument().getById(this._.items[l]).getFirst(),n=this.element.getElementsByTag('a'),o,p=-1;while(o=n.getItem(++p)){if(o.equals(m)){this._.focusIndex=p;break;}}setTimeout(function(){m.focus();},0);}}}});}});a.themes.add('default',(function(){function l(m,n){var o,p;p=m.config.sharedSpaces;p=p&&p[n];p=p&&a.document.getById(p);if(p){var q='<span class="cke_shared"><span class="'+m.skinClass+' cke_editor_'+m.name+'">'+'<span class="'+b.cssClass+'">'+'<span class="cke_wrapper cke_'+m.lang.dir+'">'+'<span class="cke_editor">'+'<div class="cke_'+n+'">'+'</div></span></span></span></span></span>',r=p.append(h.createFromHtml(q,p.getDocument()));if(p.getCustomData('cke_hasshared'))r.hide();else p.setCustomData('cke_hasshared',1);o=r.getChild([0,0,0,0]);m.on('focus',function(){for(var s=0,t,u=p.getChildren();t=u.getItem(s);s++){if(t.type==1&&!t.equals(r)&&t.hasClass('cke_shared'))t.hide();}r.show();});m.on('destroy',function(){r.remove();});}return o;};return{build:function(m,n){var o=m.name,p=m.element,q=m.elementMode;if(!p||q==0)return;if(q==1)p.hide();var r=m.fire('themeSpace',{space:'top',html:''}).html,s=m.fire('themeSpace',{space:'contents',html:''}).html,t=m.fireOnce('themeSpace',{space:'bottom',html:''}).html,u=s&&m.config.height,v=m.config.tabIndex||m.element.getAttribute('tabindex')||0;if(!s)u='auto';else if(!isNaN(u))u+='px';var w='',x=m.config.width;if(x){if(!isNaN(x))x+='px';w+='width: '+x+';';}var y=r&&l(m,'top'),z=l(m,'bottom');y&&(y.setHtml(r),r='');z&&(z.setHtml(t),t='');var A=h.createFromHtml(['<span id="cke_',o,'" onmousedown="return false;" class="',m.skinClass,' cke_editor_',o,'" dir="',m.lang.dir,'" title="',b.gecko?' ':'','" lang="',m.langCode,'"'+(b.webkit?' tabindex="'+v+'"':'')+' role="application"'+' aria-labelledby="cke_',o,'_arialbl"'+(w?' style="'+w+'"':'')+'>'+'<span id="cke_',o,'_arialbl" class="cke_voice_label">'+m.lang.editor+'</span>'+'<span class="',b.cssClass,'" role="presentation"><span class="cke_wrapper cke_',m.lang.dir,'" role="presentation"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody><tr',r?'':' style="display:none"',' role="presentation"><td id="cke_top_',o,'" class="cke_top" role="presentation">',r,'</td></tr><tr',s?'':' style="display:none"',' role="presentation"><td id="cke_contents_',o,'" class="cke_contents" style="height:',u,'" role="presentation">',s,'</td></tr><tr',t?'':' style="display:none"',' role="presentation"><td id="cke_bottom_',o,'" class="cke_bottom" role="presentation">',t,'</td></tr></tbody></table><style>.',m.skinClass,'{visibility:hidden;}</style></span></span></span>'].join(''));
+A.getChild([1,0,0,0,0]).unselectable();A.getChild([1,0,0,0,2]).unselectable();if(q==1)A.insertAfter(p);else p.append(A);m.container=A;A.disableContextMenu();m.fireOnce('themeLoaded');m.fireOnce('uiReady');},buildDialog:function(m){var n=e.getNextNumber(),o=h.createFromHtml(['<div class="cke_editor_'+m.name.replace('.','\\.')+'_dialog cke_skin_',m.skinName,'" dir="',m.lang.dir,'" lang="',m.langCode,'" role="dialog" aria-labelledby="%title#"><table class="cke_dialog',' '+b.cssClass,' cke_',m.lang.dir,'" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="%body" role="presentation"><div id="%title#" class="%title" role="presentation"></div><a id="%close_button#" class="%close_button" href="javascript:void(0)" title="'+m.lang.common.close+'" role="button"><span class="cke_label">X</span></a>'+'<div id="%tabs#" class="%tabs" role="tablist"></div>'+'<table class="%contents" role="presentation"><tr>'+'<td id="%contents#" class="%contents" role="presentation"></td>'+'</tr></table>'+'<div id="%footer#" class="%footer" role="presentation"></div>'+'</div>'+'<div id="%tl#" class="%tl"></div>'+'<div id="%tc#" class="%tc"></div>'+'<div id="%tr#" class="%tr"></div>'+'<div id="%ml#" class="%ml"></div>'+'<div id="%mr#" class="%mr"></div>'+'<div id="%bl#" class="%bl"></div>'+'<div id="%bc#" class="%bc"></div>'+'<div id="%br#" class="%br"></div>'+'</td></tr>'+'</table>',c?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+n).replace(/%/g,'cke_dialog_')),p=o.getChild([0,0,0,0,0]),q=p.getChild(0),r=p.getChild(1);q.unselectable();r.unselectable();return{element:o,parts:{dialog:o.getChild(0),title:q,close:r,tabs:p.getChild(2),contents:p.getChild([3,0,0,0]),footer:p.getChild(4)}};},destroy:function(m){var n=m.container;n.clearCustomData();m.element.clearCustomData();if(n)n.remove();if(m.elementMode==1)m.element.show();delete m.element;}};})());a.editor.prototype.getThemeSpace=function(l){var m='cke_'+l,n=this._[m]||(this._[m]=a.document.getById(m+'_'+this.name));return n;};a.editor.prototype.resize=function(l,m,n,o){var p=this.container,q=a.document.getById('cke_contents_'+this.name),r=o?p.getChild(1):p;b.webkit&&r.setStyle('display','none');r.setSize('width',l,true);if(b.webkit){r.$.offsetWidth;r.setStyle('display','');}var s=n?0:(r.$.offsetHeight||0)-(q.$.clientHeight||0);q.setStyle('height',Math.max(m-s,0)+'px');this.fire('resize');};a.editor.prototype.getResizable=function(){return this.container.getChild(1);
+};})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/config.js b/rt/share/html/NoAuth/RichText/ckeditor/config.js
new file mode 100644
index 000000000..ff0b510e1
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/config.js
@@ -0,0 +1,47 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.editorConfig = function( config )
+{
+ // Define changes to default configuration here. For example:
+ // config.language = 'fr';
+ // config.uiColor = '#AADC6E';
+ config.toolbar = 'Full';
+
+config.toolbar_Full =
+[
+ ['Cut','Copy','Paste','PasteText','PasteFromWord'],
+ ['Undo','Redo','-','-','SelectAll','RemoveFormat'],
+ ['Table','HorizontalRule','SpecialChar'],
+ '/',
+ ['Bold','Italic','Underline','Strike'],
+ ['NumberedList','BulletedList','-','Outdent','Indent'],
+ ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
+ '/',
+ ['Format','Font','FontSize'],
+ ['TextColor'],
+ ['Link']
+];
+
+config.enterMode = CKEDITOR.ENTER_BR;
+config.shiftEnterMode = CKEDITOR.ENTER_P;
+config.enableTabKeyTools = true;
+config.htmlEncodeOutput = false;
+
+config.disableNativeSpellChecker = false;
+config.browserContextMenuOnCtrl = true;
+
+
+config.toolbarStartupExpanded = false;
+config.font_names =
+ 'Arial/Arial, Helvetica, sans-serif;' +
+ 'Courier New/Courier New, Courier, monospace;' +
+ 'Georgia/Georgia, serif;' +
+ 'Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;' +
+ 'Tahoma/Tahoma, Geneva, sans-serif;' +
+ 'Times New Roman/Times New Roman, Times, serif;' +
+ 'Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;' +
+ 'Verdana/Verdana, Geneva, sans-serif';
+};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/contents.css b/rt/share/html/NoAuth/RichText/ckeditor/contents.css
new file mode 100644
index 000000000..dd44ff706
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/contents.css
@@ -0,0 +1,35 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body
+{
+ /* Font */
+ font-family: Arial, Verdana, sans-serif;
+ font-size: 12px;
+
+ /* Text color */
+ color: #222;
+
+ /* Remove the background color to make it transparent */
+ background-color: transparent;
+}
+
+html
+{
+ /* #3658: [IE6] Editor document has horizontal scrollbar on long lines
+ To prevent this misbehavior, we show the scrollbar always */
+ _overflow-y: scroll
+}
+
+img:-moz-broken
+{
+ -moz-force-broken-image-icon : 1;
+ width : 24px;
+ height : 24px;
+}
+img, input, textarea
+{
+ cursor: default;
+}
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/spacer.gif b/rt/share/html/NoAuth/RichText/ckeditor/images/spacer.gif
index 5bfd67a2d..5bfd67a2d 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/images/spacer.gif
+++ b/rt/share/html/NoAuth/RichText/ckeditor/images/spacer.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/_languages.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/_languages.js
new file mode 100644
index 000000000..b5e01ed07
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/_languages.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+var CKEDITOR_LANGS=(function(){var b={af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',cy:'Welsh',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-gb':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French','fr-ca':'French (Canada)',gl:'Galician',gu:'Gujarati',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',is:'Icelandic',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},c=[];for(var d in b)c.push({code:d,name:b[d]});c.sort(function(e,f){return e.name<f.name?-1:1;});return c;})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt b/rt/share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt
new file mode 100644
index 000000000..06d973db6
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt
@@ -0,0 +1,60 @@
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+
+af.js Found: 287 Missing: 244
+ar.js Found: 451 Missing: 80
+bg.js Found: 280 Missing: 251
+bn.js Found: 281 Missing: 250
+bs.js Found: 187 Missing: 344
+ca.js Found: 490 Missing: 41
+cs.js Found: 411 Missing: 120
+cy.js Found: 452 Missing: 79
+da.js Found: 404 Missing: 127
+de.js Found: 528 Missing: 3
+el.js Found: 286 Missing: 245
+en-au.js Found: 369 Missing: 162
+en-ca.js Found: 369 Missing: 162
+en-gb.js Found: 370 Missing: 161
+eo.js Found: 259 Missing: 272
+es.js Found: 524 Missing: 7
+et.js Found: 301 Missing: 230
+eu.js Found: 403 Missing: 128
+fa.js Found: 302 Missing: 229
+fi.js Found: 518 Missing: 13
+fo.js Found: 420 Missing: 111
+fr-ca.js Found: 301 Missing: 230
+fr.js Found: 403 Missing: 128
+gl.js Found: 283 Missing: 248
+gu.js Found: 300 Missing: 231
+he.js Found: 531 Missing: 0
+hi.js Found: 302 Missing: 229
+hr.js Found: 404 Missing: 127
+hu.js Found: 445 Missing: 86
+is.js Found: 307 Missing: 224
+it.js Found: 404 Missing: 127
+ja.js Found: 413 Missing: 118
+km.js Found: 275 Missing: 256
+ko.js Found: 293 Missing: 238
+lt.js Found: 306 Missing: 225
+lv.js Found: 283 Missing: 248
+mn.js Found: 300 Missing: 231
+ms.js Found: 265 Missing: 266
+nb.js Found: 470 Missing: 61
+nl.js Found: 531 Missing: 0
+no.js Found: 470 Missing: 61
+pl.js Found: 411 Missing: 120
+pt-br.js Found: 524 Missing: 7
+pt.js Found: 282 Missing: 249
+ro.js Found: 301 Missing: 230
+ru.js Found: 467 Missing: 64
+sk.js Found: 302 Missing: 229
+sl.js Found: 410 Missing: 121
+sr-latn.js Found: 276 Missing: 255
+sr.js Found: 275 Missing: 256
+sv.js Found: 299 Missing: 232
+th.js Found: 287 Missing: 244
+tr.js Found: 524 Missing: 7
+uk.js Found: 404 Missing: 127
+vi.js Found: 481 Missing: 50
+zh-cn.js Found: 531 Missing: 0
+zh.js Found: 404 Missing: 127
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/af.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/af.js
new file mode 100644
index 000000000..4e38c5a63
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/af.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.af={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'Nuwe Bladsy',save:'Bewaar',preview:'Voorskou',cut:'Uitsny ',copy:'Kopieer',paste:'Byvoeg',print:'Druk',underline:'Onderstreep',bold:'Vet',italic:'Skuins',selectAll:'Selekteer alles',removeFormat:'Formaat verweider',strike:'Gestreik',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Horisontale lyn byvoeg',pagebreak:'Bladsy breek byvoeg',unlink:'Skakel verweider',undo:'Ont-skep',redo:'Her-skep',common:{browseServer:'Server deurblaai',url:'URL',protocol:'Protokol',upload:'Oplaai',uploadSubmit:'Stuur dit na die Server',image:'Beeld',flash:'Flash',form:'Form',checkbox:'HakBox',radio:'PuntBox',textField:'Byvoegbare karakter strook',textarea:'Byvoegbare karakter area',hiddenField:'Blinde strook',button:'Knop',select:'Opklapbare keuse strook',imageButton:'Beeld knop',notSet:'<geen instelling>',id:'Id',name:'Naam',langDir:'Taal rigting',langDirLtr:'Links na regs (LTR)',langDirRtl:'Regs na links (RTL)',langCode:'Taal kode',longDescr:'Lang beskreiwing URL',cssClass:'Skakel Tiepe',advisoryTitle:'Voorbeveelings Titel',cssStyle:'Styl',ok:'OK',cancel:'Kanseleer',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Ingewikkeld',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Spesiaale Karakter byvoeg',title:'Kies spesiale karakter',options:'Special Character Options'},link:{toolbar:'Skakel byvoeg/verander',other:'<ander>',menu:'Verander skakel',title:'Skakel',info:'Skakel informasie',target:'Mikpunt',upload:'Oplaai',advanced:'Ingewikkeld',type:'Skakel soort',toUrl:'URL',toAnchor:'Skakel na plekhouers in text',toEmail:'E-Mail',targetFrame:'<raam>',targetPopup:'<popup venster>',targetFrameName:'Mikpunt Venster Naam',targetPopupName:'Popup Venster Naam',popupFeatures:'Popup Venster Geaartheid',popupResizable:'Resizable',popupStatusBar:'Status Balk',popupLocationBar:'Adres Balk',popupToolbar:'Gereedskap Balk',popupMenuBar:'Menu Balk',popupFullScreen:'Voll Skerm (IE)',popupScrollBars:'Gleibalkstuk',popupDependent:'Afhanklik (Netscape)',popupWidth:'Weite',popupLeft:'Links Posisie',popupHeight:'Hoogde',popupTop:'Bo Posisie',id:'Id',langDir:'Taal rigting',langDirLTR:'Links na regs (LTR)',langDirRTL:'Regs na links (RTL)',acccessKey:'Toegang sleutel',name:'Naam',langCode:'Taal rigting',tabIndex:'Tab Index',advisoryTitle:'Voorbeveelings Titel',advisoryContentType:'Voorbeveelings inhoud soort',cssClasses:'Skakel Tiepe',charset:'Geskakelde voorbeeld karakterstel',styles:'Styl',selectAnchor:"Kies 'n plekhouer",anchorName:'Volgens plekhouer naam',anchorId:'Volgens element Id',emailAddress:'E-Mail Adres',emailSubject:'Boodskap Opskrif',emailBody:'Boodskap Inhoud',noAnchors:'(Geen plekhouers beskikbaar in dokument}',noUrl:'Voeg asseblief die URL in',noEmail:'Voeg asseblief die e-mail adres in'},anchor:{toolbar:'Plekhouer byvoeg/verander',menu:'Plekhouer eienskappe',title:'Plekhouer eienskappe',name:'Plekhouer Naam',errorName:'Voltooi die plekhouer naam asseblief'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Vind',replace:'Vervang',findWhat:'Soek wat:',replaceWith:'Vervang met:',notFoundMsg:'Die gespesifiseerde karakters word nie gevind nie.',matchCase:'Vergelyk karakter skryfweise',matchWord:'Vergelyk komplete woord',matchCyclic:'Match cyclic',replaceAll:'Vervang alles',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabel',title:'Tabel eienskappe',menu:'Tabel eienskappe',deleteTable:'Tabel verweider',rows:'Reie',columns:'Kolome',border:'Kant groote',align:'Parideering',alignLeft:'Links',alignCenter:'Middel',alignRight:'Regs',width:'Weite',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',height:'Hoogde',cellSpace:'Cell spasieering',cellPad:'Cell buffer',caption:'Beskreiwing',summary:'Opsomming',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Cell verweider',merge:'Cell verenig',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Ry',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Ry verweider'},column:{menu:'Kolom',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Kolom verweider'}},button:{title:'Knop eienskappe',text:'Karakters (Waarde)',type:'Soort',typeBtn:'Knop',typeSbm:'Indien',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'HakBox eienskappe',radioTitle:'PuntBox eienskappe',value:'Waarde',selected:'Uitgekies'},form:{title:'Form eienskappe',menu:'Form eienskappe',action:'Aksie',method:'Metode',encoding:'Encoding'},select:{title:'Opklapbare keuse strook eienskappe',selectInfo:'Info',opAvail:'Beskikbare Opsies',value:'Waarde',size:'Grote',lines:'lyne',chkMulti:'Laat meerere keuses toe',opText:'Karakters',opValue:'Waarde',btnAdd:'Byvoeg',btnModify:'Verander',btnUp:'Op',btnDown:'Af',btnSetValue:'Stel as uitgekiesde waarde',btnDelete:'Verweider'},textarea:{title:'Karakter area eienskappe',cols:'Kolom',rows:'Reie'},textfield:{title:'Karakter strook eienskappe',name:'Naam',value:'Waarde',charWidth:'Karakter weite',maxChars:'Maximale karakters',type:'Soort',typeText:'Karakters',typePass:'Wagwoord'},hidden:{title:'Blinde strook eienskappe',name:'Naam',value:'Waarde'},image:{title:'Beeld eienskappe',titleButton:'Beeld knop eienskappe',menu:'Beeld eienskappe',infoTab:'Beeld informasie',btnUpload:'Stuur dit na die Server',upload:'Uplaai',alt:'Alternatiewe beskrywing',width:'Weidte',height:'Hoogde',lockRatio:'Behou preporsie',unlockRatio:'Unlock Ratio',resetSize:'Herstel groote',border:'Kant',hSpace:'HSpasie',vSpace:'VSpasie',align:'Paradeer',alignLeft:'Links',alignRight:'Regs',alertUrl:'Voeg asseblief Beeld URL in.',linkTab:'Skakel',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash eienskappe',propertiesTab:'Properties',title:'Flash eienskappe',chkPlay:'Automaties Speel',chkLoop:'Herhaling',chkMenu:'Laat Flash Menu toe',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Wys alles',scaleNoBorder:'Geen kante',scaleFit:'Presiese pas',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Paradeer',alignLeft:'Links',alignAbsBottom:'Abs Onder',alignAbsMiddle:'Abs Middel',alignBaseline:'Baseline',alignBottom:'Onder',alignMiddle:'Middel',alignRight:'Regs',alignTextTop:'Text Bo',alignTop:'Bo',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Agtergrond kleur',width:'Weidte',height:'Hoogde',hSpace:'HSpasie',vSpace:'VSpasie',validateSrc:'Voeg asseblief die URL in',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Spelling nagaan',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nie in woordeboek nie',changeTo:'Verander na',btnIgnore:'Ignoreer',btnIgnoreAll:'Ignoreer na-volgende',btnReplace:'Vervang',btnReplaceAll:'vervang na-volgende',btnUndo:'Ont-skep',noSuggestions:'- Geen voorstel -',progress:'Spelling word beproef...',noMispell:'Spellproef kompleet: Geen foute',noChanges:'Spellproef kompleet: Geen woord veranderings',oneChange:'Spellproef kompleet: Een woord verander',manyChanges:'Spellproef kompleet: %1 woorde verander',ieSpellDownload:'Geen Spellproefer geinstaleer nie. Wil U dit aflaai?'},smiley:{toolbar:'Smiley',title:'Voeg Smiley by',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Genommerde lys',bulletedlist:'Gepunkte lys',indent:'Paradeering verleng',outdent:'Paradeering verkort',justify:{left:'Links rig',center:'Rig Middel',right:'Regs rig',block:'Blok paradeer'},blockquote:'Block Quote',clipboard:{title:'Byvoeg',cutError:'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl/Cmd+X).',copyError:'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl/Cmd+C).',pasteMsg:'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(<STRONG>Ctrl/Cmd+V</STRONG>) en druk <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Van Word af byvoeg',title:'Van Word af byvoeg',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Voeg slegs karakters by',title:'Voeg slegs karakters by'},templates:{button:'Templates',title:'Inhoud Templates',options:'Template Options',insertOption:'Vervang bestaande inhoud',selectPromptMsg:'Kies die template om te gebruik in die editor<br>(Inhoud word vervang!):',emptyListMsg:'(Geen templates gedefinieerd)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styl',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Karakter formaat',panelTitle:'Karakter formaat',tag_p:'Normaal',tag_pre:'Geformateerd',tag_address:'Adres',tag_h1:'Opskrif 1',tag_h2:'Opskrif 2',tag_h3:'Opskrif 3',tag_h4:'Opskrif 4',tag_h5:'Opskrif 5',tag_h6:'Opskrif 6',tag_div:'Normaal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Karakters',voiceLabel:'Font',panelTitle:'Karakters'},fontSize:{label:'Karakter grote',voiceLabel:'Font Size',panelTitle:'Karakter grote'},colorButton:{textColorTitle:'Karakter kleur',bgColorTitle:'Agtergrond kleur',panelTitle:'Colors',auto:'Automaties',more:'Meer Kleure...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ar.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ar.js
new file mode 100644
index 000000000..74b7cf56e
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ar.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ar={dir:'rtl',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'المصدر',newPage:'ØµÙØ­Ø© جديدة',save:'Ø­ÙØ¸',preview:'معاينة Ø§Ù„ØµÙØ­Ø©',cut:'قص',copy:'نسخ',paste:'لصق',print:'طباعة',underline:'تسطير',bold:'غامق',italic:'مائل',selectAll:'تحديد الكل',removeFormat:'إزالة التنسيقات',strike:'يتوسطه خط',subscript:'Ù…Ù†Ø®ÙØ¶',superscript:'Ù…Ø±ØªÙØ¹',horizontalrule:'خط ÙØ§ØµÙ„',pagebreak:'إدخال ØµÙØ­Ø© جديدة',unlink:'إزالة رابط',undo:'تراجع',redo:'إعادة',common:{browseServer:'ØªØµÙØ­',url:'الرابط',protocol:'البروتوكول',upload:'Ø±ÙØ¹',uploadSubmit:'أرسل',image:'صورة',flash:'Ùلاش',form:'نموذج',checkbox:'خانة إختيار',radio:'زر اختيار',textField:'مربع نص',textarea:'مساحة نصية',hiddenField:'إدراج حقل Ø®ÙÙŠ',button:'زر ضغط',select:'اختار',imageButton:'زر صورة',notSet:'<بدون تحديد>',id:'الرقم',name:'الاسم',langDir:'إتجاه النص',langDirLtr:'اليسار لليمين (LTR)',langDirRtl:'اليمين لليسار (RTL)',langCode:'رمز اللغة',longDescr:'Ø§Ù„ÙˆØµÙ Ø§Ù„ØªÙØµÙŠÙ„Ù‰',cssClass:'ÙØ¦Ø§Øª التنسيق',advisoryTitle:'عنوان التقرير',cssStyle:'نمط',ok:'مواÙÙ‚',cancel:'إلغاء الأمر',close:'Close',preview:'Preview',generalTab:'عام',advancedTab:'متقدم',validateNumberFailed:'لايوجد نتيجة',confirmNewPage:'ستÙقد أي متغييرات اذا لم تقم Ø¨Ø­ÙØ¸Ù‡Ø§ اولا. هل أنت متأكد أنك تريد ØµÙØ­Ø© جديدة؟',confirmCancel:'بعض الخيارات قد تغيرت. هل أنت متأكد من إغلاق مربع النص؟',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, غير متاح</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'إدراج خاص.Ù',title:'اختر الخواص',options:'Special Character Options'},link:{toolbar:'رابط',other:'<أخرى>',menu:'تحرير رابط',title:'إرتباط تشعبي',info:'معلومات الرابط',target:'هد٠الرابط',upload:'Ø±ÙØ¹',advanced:'متقدم',type:'نوع الربط',toUrl:'URL',toAnchor:'مكان ÙÙŠ هذا المستند',toEmail:'بريد إلكتروني',targetFrame:'<إطار>',targetPopup:'<Ù†Ø§ÙØ°Ø© منبثقة>',targetFrameName:'اسم الإطار المستهدÙ',targetPopupName:'اسم Ø§Ù„Ù†Ø§ÙØ°Ø© المنبثقة',popupFeatures:'خصائص Ø§Ù„Ù†Ø§ÙØ°Ø© المنبثقة',popupResizable:'قابلة التشكيل',popupStatusBar:'شريط الحالة',popupLocationBar:'شريط العنوان',popupToolbar:'شريط الأدوات',popupMenuBar:'القوائم الرئيسية',popupFullScreen:'ملئ الشاشة (IE)',popupScrollBars:'أشرطة التمرير',popupDependent:'تابع (Netscape)',popupWidth:'العرض',popupLeft:'التمركز لليسار',popupHeight:'Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹',popupTop:'التمركز للأعلى',id:'هوية',langDir:'إتجاه النص',langDirLTR:'اليسار لليمين (LTR)',langDirRTL:'اليمين لليسار (RTL)',acccessKey:'Ù…ÙØ§ØªÙŠØ­ الإختصار',name:'الاسم',langCode:'كود النص',tabIndex:'الترتيب',advisoryTitle:'عنوان التقرير',advisoryContentType:'نوع التقرير',cssClasses:'ÙØ¦Ø§Øª التنسيق',charset:'ترميز المادة المطلوبة',styles:'نمط',selectAnchor:'اختر علامة مرجعية',anchorName:'حسب الاسم',anchorId:'حسب رقم العنصر',emailAddress:'عنوان البريد إلكتروني',emailSubject:'موضوع الرسالة',emailBody:'محتوى الرسالة',noAnchors:'(لا توجد علامات مرجعية ÙÙŠ هذا المستند)',noUrl:'من ÙØ¶Ù„Ùƒ أدخل عنوان الموقع الذي يشير إليه الرابط',noEmail:'من ÙØ¶Ù„Ùƒ أدخل عنوان البريد الإلكتروني'},anchor:{toolbar:'إشارة مرجعية',menu:'تحرير الإشارة المرجعية',title:'خصائص الإشارة المرجعية',name:'اسم الإشارة المرجعية',errorName:'الرجاء كتابة اسم الإشارة المرجعية'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'بحث واستبدال',find:'بحث',replace:'إستبدال',findWhat:'البحث بـ:',replaceWith:'إستبدال بـ:',notFoundMsg:'لم يتم العثور على النص المحدد.',matchCase:'مطابقة حالة الأحرÙ',matchWord:'مطابقة بالكامل',matchCyclic:'مطابقة دورية',replaceAll:'إستبدال الكل',replaceSuccessMsg:'تم استبدال 1% من الحالات '},table:{toolbar:'جدول',title:'خصائص الجدول',menu:'خصائص الجدول',deleteTable:'حذ٠الجدول',rows:'صÙÙˆÙ',columns:'أعمدة',border:'الحدود',align:'المحاذاة',alignLeft:'يسار',alignCenter:'وسط',alignRight:'يمين',width:'العرض',widthPx:'بكسل',widthPc:'بالمئة',widthUnit:'width unit',height:'Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹',cellSpace:'تباعد الخلايا',cellPad:'Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة',caption:'الوصÙ',summary:'الخلاصة',headers:'العناوين',headersNone:'بدون',headersColumn:'العمود الأول',headersRow:'الص٠الأول',headersBoth:'كلاهما',invalidRows:'عدد الصÙو٠يجب أن يكون عدداً أكبر من ØµÙØ±.',invalidCols:'عدد الأعمدة يجب أن يكون عدداً أكبر من ØµÙØ±.',invalidBorder:'حجم الحد يجب أن يكون عدداً.',invalidWidth:'عرض الجدول يجب أن يكون عدداً.',invalidHeight:'Ø§Ø±ØªÙØ§Ø¹ الجدول يجب أن يكون عدداً.',invalidCellSpacing:'Ø§Ù„Ù…Ø³Ø§ÙØ© بين الخلايا يجب أن تكون عدداً.',invalidCellPadding:'Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة يجب أن تكون عدداً',cell:{menu:'خلية',insertBefore:'إدراج خلية قبل',insertAfter:'إدراج خلية بعد',deleteCell:'حذ٠خلية',merge:'دمج خلايا',mergeRight:'دمج لليمين',mergeDown:'دمج للأسÙÙ„',splitHorizontal:'تقسيم الخلية Ø£Ùقياً',splitVertical:'تقسيم الخلية عمودياً',title:'خصائص الخلية',cellType:'نوع الخلية',rowSpan:'امتداد الصÙÙˆÙ',colSpan:'امتداد الأعمدة',wordWrap:'Ø§Ù„ØªÙØ§Ù النص',hAlign:'محاذاة Ø£Ùقية',vAlign:'محاذاة رأسية',alignTop:'أعلى',alignMiddle:'وسط',alignBottom:'أسÙÙ„',alignBaseline:'خط القاعدة',bgColor:'لون الخلÙية',borderColor:'لون الحدود',data:'بيانات',header:'عنوان',yes:'نعم',no:'لا',invalidWidth:'عرض الخلية يجب أن يكون عدداً.',invalidHeight:'Ø§Ø±ØªÙØ§Ø¹ الخلية يجب أن يكون عدداً.',invalidRowSpan:'امتداد الصÙو٠يجب أن يكون عدداً صحيحاً.',invalidColSpan:'امتداد الأعمدة يجب أن يكون عدداً صحيحاً.',chooseColor:'اختر'},row:{menu:'صÙ',insertBefore:'إدراج ص٠قبل',insertAfter:'إدراج ص٠بعد',deleteRow:'حذ٠صÙÙˆÙ'},column:{menu:'عمود',insertBefore:'إدراج عمود قبل',insertAfter:'إدراج عمود بعد',deleteColumn:'حذ٠أعمدة'}},button:{title:'خصائص زر الضغط',text:'القيمة/التسمية',type:'نوع الزر',typeBtn:'زر',typeSbm:'إرسال',typeRst:'إعادة تعيين'},checkboxAndRadio:{checkboxTitle:'خصائص خانة الإختيار',radioTitle:'خصائص زر الخيار',value:'القيمة',selected:'محدد'},form:{title:'خصائص النموذج',menu:'خصائص النموذج',action:'اسم الملÙ',method:'الأسلوب',encoding:'تشÙير'},select:{title:'خصائص اختيار الحقل',selectInfo:'اختار معلومات',opAvail:'الخيارات المتاحة',value:'القيمة',size:'الحجم',lines:'الأسطر',chkMulti:'السماح بتحديدات متعددة',opText:'النص',opValue:'القيمة',btnAdd:'Ø¥Ø¶Ø§ÙØ©',btnModify:'تعديل',btnUp:'أعلى',btnDown:'أسÙÙ„',btnSetValue:'إجعلها محددة',btnDelete:'إزالة'},textarea:{title:'خصائص مساحة النص',cols:'الأعمدة',rows:'الصÙÙˆÙ'},textfield:{title:'خصائص مربع النص',name:'الاسم',value:'القيمة',charWidth:'عرض السمات',maxChars:'اقصى عدد للسمات',type:'نوع المحتوى',typeText:'نص',typePass:'كلمة مرور'},hidden:{title:'خصائص الحقل المخÙÙŠ',name:'الاسم',value:'القيمة'},image:{title:'خصائص الصورة',titleButton:'خصائص زر الصورة',menu:'خصائص الصورة',infoTab:'معلومات الصورة',btnUpload:'أرسلها للخادم',upload:'Ø±ÙØ¹',alt:'عنوان الصورة',width:'العرض',height:'Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹',lockRatio:'تناسق الحجم',unlockRatio:'Unlock Ratio',resetSize:'إستعادة الحجم الأصلي',border:'سمك الحدود',hSpace:'تباعد Ø£Ùقي',vSpace:'تباعد عمودي',align:'محاذاة',alignLeft:'يسار',alignRight:'يمين',alertUrl:'ÙØ¶Ù„اً أكتب الموقع الذي توجد عليه هذه الصورة.',linkTab:'الرابط',button2Img:'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟',img2Button:'هل تريد تحويل الصورة المختارة إلى زر صورة؟',urlMissing:'عنوان مصدر الصورة Ù…Ùقود',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'خصائص الÙلاش',propertiesTab:'الخصائص',title:'خصائص Ùيلم الÙلاش',chkPlay:'تشغيل تلقائي',chkLoop:'تكرار',chkMenu:'تمكين قائمة Ùيلم الÙلاش',chkFull:'ملء الشاشة',scale:'الحجم',scaleAll:'إظهار الكل',scaleNoBorder:'بلا حدود',scaleFit:'ضبط تام',access:'دخول النص البرمجي',accessAlways:'دائماً',accessSameDomain:'Ù†ÙØ³ النطاق',accessNever:'مطلقاً',align:'محاذاة',alignLeft:'يسار',alignAbsBottom:'أسÙÙ„ النص',alignAbsMiddle:'وسط السطر',alignBaseline:'على السطر',alignBottom:'أسÙÙ„',alignMiddle:'وسط',alignRight:'يمين',alignTextTop:'أعلى النص',alignTop:'أعلى',quality:'جودة',qualityBest:'Ø£ÙØ¶Ù„',qualityHigh:'عالية',qualityAutoHigh:'عالية تلقائياً',qualityMedium:'متوسطة',qualityAutoLow:'Ù…Ù†Ø®ÙØ¶Ø© تلقائياً',qualityLow:'Ù…Ù†Ø®ÙØ¶Ø©',windowModeWindow:'Ù†Ø§ÙØ°Ø©',windowModeOpaque:'غير Ø´ÙØ§Ù',windowModeTransparent:'Ø´ÙØ§Ù',windowMode:'وضع Ø§Ù„Ù†Ø§ÙØ°Ø©',flashvars:'متغيرات الÙلاش',bgcolor:'لون الخلÙية',width:'العرض',height:'Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹',hSpace:'تباعد Ø£Ùقي',vSpace:'تباعد عمودي',validateSrc:'ÙØ¶Ù„اً أدخل عنوان الموقع الذي يشير إليه الرابط',validateWidth:'العرض يجب أن يكون عدداً.',validateHeight:'Ø§Ù„Ø§Ø±ØªÙØ§Ø¹ يجب أن يكون عدداً.',validateHSpace:'HSpace يجب أن يكون عدداً.',validateVSpace:'VSpace يجب أن يكون عدداً.'},spellCheck:{toolbar:'تدقيق إملائي',title:'التدقيق الإملائي',notAvailable:'عÙواً، ولكن هذه الخدمة غير متاحة الان',errorLoading:'خطأ ÙÙŠ تحميل تطبيق خدمة Ø§Ù„Ø§Ø³ØªØ¶Ø§ÙØ©: %s.',notInDic:'ليست ÙÙŠ القاموس',changeTo:'التغيير إلى',btnIgnore:'تجاهل',btnIgnoreAll:'تجاهل الكل',btnReplace:'تغيير',btnReplaceAll:'تغيير الكل',btnUndo:'تراجع',noSuggestions:'- لا توجد إقتراحات -',progress:'جاري التدقيق الاملائى',noMispell:'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية',noChanges:'تم التدقيق الإملائي: لم يتم تغيير أي كلمة',oneChange:'تم التدقيق الإملائي: تم تغيير كلمة واحدة Ùقط',manyChanges:'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات',ieSpellDownload:'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟'},smiley:{toolbar:'ابتسامات',title:'إدراج ابتسامات',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'عنصر 1%'},numberedlist:'ادخال/حذ٠تعداد رقمي',bulletedlist:'ادخال/حذ٠تعداد نقطي',indent:'زيادة Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة',outdent:'إنقاص Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة',justify:{left:'محاذاة إلى اليسار',center:'توسيط',right:'محاذاة إلى اليمين',block:'ضبط'},blockquote:'اقتباس',clipboard:{title:'لصق',cutError:'الإعدادات الأمنية Ù„Ù„Ù…ØªØµÙØ­ الذي تستخدمه تمنع القص التلقائي. ÙØ¶Ù„اً إستخدم لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ Ù„ÙØ¹Ù„ ذلك (Ctrl/Cmd+X).',copyError:'الإعدادات الأمنية Ù„Ù„Ù…ØªØµÙØ­ الذي تستخدمه تمنع النسخ التلقائي. ÙØ¶Ù„اً إستخدم لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ Ù„ÙØ¹Ù„ ذلك (Ctrl/Cmd+C).',pasteMsg:'الصق داخل الصندوق بإستخدام زرائر (<STRONG>Ctrl/Cmd+V</STRONG>) ÙÙŠ لوحة Ø§Ù„Ù…ÙØ§ØªÙŠØ­ØŒ ثم اضغط زر <STRONG>مواÙÙ‚</STRONG>.',securityMsg:'نظراً لإعدادات الأمان الخاصة Ø¨Ù…ØªØµÙØ­ÙƒØŒ لن يتمكن هذا المحرر من الوصول لمحتوى Ø­Ø§ÙØ¸ØªÙƒØŒ لذلك يجب عليك لصق المحتوى مرة أخرى ÙÙŠ هذه Ø§Ù„Ù†Ø§ÙØ°Ø©.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيÙÙ‡ قبل الشروع ÙÙŠ عملية اللصق؟',toolbar:'لصق من وورد',title:'لصق من وورد',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'لصق كنص بسيط',title:'لصق كنص بسيط'},templates:{button:'القوالب',title:'قوالب المحتوى',options:'Template Options',insertOption:'استبدال المحتوى',selectPromptMsg:'اختر القالب الذي تود وضعه ÙÙŠ المحرر',emptyListMsg:'(لم يتم تعري٠أي قالب)'},showBlocks:'مخطط ØªÙØµÙŠÙ„ÙŠ',stylesCombo:{label:'أنماط',panelTitle:'Formatting Styles',panelTitle1:'أنماط الÙقرة',panelTitle2:'أنماط مضمنة',panelTitle3:'أنماط الكائن'},format:{label:'تنسيق',panelTitle:'تنسيق الÙقرة',tag_p:'عادي',tag_pre:'منسّق',tag_address:'عنوان',tag_h1:'العنوان 1',tag_h2:'العنوان 2',tag_h3:'العنوان 3',tag_h4:'العنوان 4',tag_h5:'العنوان 5',tag_h6:'العنوان 6',tag_div:'عادي (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'خط',voiceLabel:'حجم الخط',panelTitle:'حجم الخط'},fontSize:{label:'حجم الخط',voiceLabel:'حجم الخط',panelTitle:'حجم الخط'},colorButton:{textColorTitle:'لون النص',bgColorTitle:'لون الخلÙية',panelTitle:'Colors',auto:'تلقائي',more:'ألوان إضاÙية...'},colors:{'000':'أسود',800000:'كستنائي','8B4513':'بني ÙØ§ØªØ­','2F4F4F':'رمادي أردوازي غامق','008080':'أزرق مخضر','000080':'أزرق داكن','4B0082':'كحلي',696969:'رمادي داكن',B22222:'طوبي',A52A2A:'بني',DAA520:'ذهبي داكن','006400':'أخضر داكن','40E0D0':'Ùيروزي','0000CD':'أزرق متوسط',800080:'Ø¨Ù†ÙØ³Ø¬ÙŠ ØºØ§Ù…Ù‚',808080:'رمادي',F00:'أحمر',FF8C00:'برتقالي داكن',FFD700:'ذهبي','008000':'أخضر','0FF':'تركواز','00F':'أزرق',EE82EE:'Ø¨Ù†ÙØ³Ø¬ÙŠ',A9A9A9:'رمادي شاحب',FFA07A:'برتقالي وردي',FFA500:'برتقالي',FFFF00:'Ø£ØµÙØ±','00FF00':'ليموني',AFEEEE:'Ùيروزي شاحب',ADD8E6:'أزرق ÙØ§ØªØ­',DDA0DD:'Ø¨Ù†ÙØ³Ø¬ÙŠ ÙØ§ØªØ­',D3D3D3:'رمادي ÙØ§ØªØ­',FFF0F5:'وردي ÙØ§ØªØ­',FAEBD7:'أبيض عتيق',FFFFE0:'Ø£ØµÙØ± ÙØ§ØªØ­',F0FFF0:'أبيض مائل للأخضر',F0FFFF:'سماوي',F0F8FF:'لبني',E6E6FA:'أرجواني',FFF:'أبيض'},scayt:{title:'تدقيق إملائي أثناء الكتابة',opera_title:'Not supported by Opera',enable:'ØªÙØ¹ÙŠÙ„ SCAYT',disable:'تعطيل SCAYT',about:'عن SCAYT',toggle:'تثبيت SCAYT',options:'خيارات',langs:'لغات',moreSuggestions:'المزيد من المقترحات',ignore:'تجاهل',ignoreAll:'تجاهل الكل',addWord:'Ø¥Ø¶Ø§ÙØ© كلمة',emptyDic:'اسم القاموس يجب ألا يكون ÙØ§Ø±ØºØ§Ù‹.',optionsTab:'خيارات',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'لغات',dictionariesTab:'قواميس',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'عن'},about:{title:'عن CKEditor',dlgTitle:'عن CKEditor',moreInfo:'للحصول على معلومات الترخيص ØŒ يرجى زيارة موقعنا على شبكة الانترنت:',copy:'حقوق النشر &copy; $1. جميع الحقوق محÙوظة.'},maximize:'تكبير',minimize:'تصغير',fakeobjects:{anchor:'إرساء',flash:'رسم متحرك بالÙلاش',div:'ÙØ§ØµÙ„ ØµÙØ­Ø©',unknown:'كائن غير معروÙ'},resize:'اسحب لتغيير الحجم',colordialog:{title:'اختر لون',options:'Color Options',highlight:'إلقاء الضوء',selected:'Ù…ÙØ®ØªØ§Ø±',clear:'مسح'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/bg.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/bg.js
new file mode 100644
index 000000000..720be121f
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/bg.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bg={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Код',newPage:'Ðова Ñтраница',save:'Запази',preview:'Предварителен изглед',cut:'Изрежи',copy:'Запамети',paste:'Вмъкни',print:'Печат',underline:'Подчертан',bold:'Удебелен',italic:'КурÑив',selectAll:'Селектирай вÑичко',removeFormat:'Изтрий форматирането',strike:'Зачертан',subscript:'Ð˜Ð½Ð´ÐµÐºÑ Ð·Ð° база',superscript:'Ð˜Ð½Ð´ÐµÐºÑ Ð·Ð° Ñтепен',horizontalrule:'Вмъкни хоризонтална линиÑ',pagebreak:'Вмъкни нов ред',unlink:'Изтрий връзка',undo:'Отмени',redo:'Повтори',common:{browseServer:'Разгледай Ñървъра',url:'Пълен път (URL)',protocol:'Протокол',upload:'Качи',uploadSubmit:'Прати към Ñървъра',image:'Изображение',flash:'Flash',form:'ФормулÑÑ€',checkbox:'Поле за отметка',radio:'Поле за опциÑ',textField:'ТекÑтово поле',textarea:'ТекÑтова облаÑÑ‚',hiddenField:'Скрито поле',button:'Бутон',select:'Падащо меню Ñ Ð¾Ð¿Ñ†Ð¸Ð¸',imageButton:'Бутон-изображение',notSet:'<не е наÑтроен>',id:'Идентификатор',name:'Име',langDir:'поÑока на речта',langDirLtr:'От лÑво на дÑÑно',langDirRtl:'От дÑÑно на лÑво',langCode:'Код на езика',longDescr:'ОпиÑание на връзката',cssClass:'ÐšÐ»Ð°Ñ Ð¾Ñ‚ Ñтиловите таблици',advisoryTitle:'Препоръчително заглавие',cssStyle:'Стил',ok:'ОК',cancel:'Отказ',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'ПодробноÑти...',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Вмъкни Ñпециален Ñимвол',title:'Изберете Ñпециален Ñимвол',options:'Special Character Options'},link:{toolbar:'Добави/Редактирай връзка',other:'<друг>',menu:'Редактирай връзка',title:'Връзка',info:'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° връзката',target:'Цел',upload:'Качи',advanced:'ПодробноÑти...',type:'Вид на връзката',toUrl:'URL',toAnchor:'Котва в текущата Ñтраница',toEmail:'Е-поща',targetFrame:'<рамка>',targetPopup:'<дъщерен прозорец>',targetFrameName:'Име на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†',targetPopupName:'Име на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†',popupFeatures:'Параметри на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†',popupResizable:'Resizable',popupStatusBar:'Поле за ÑтатуÑ',popupLocationBar:'Поле за адреÑ',popupToolbar:'Панел Ñ Ð±ÑƒÑ‚Ð¾Ð½Ð¸',popupMenuBar:'Меню',popupFullScreen:'ГолÑм екран (MS IE)',popupScrollBars:'Плъзгач',popupDependent:'ЗавиÑим (Netscape)',popupWidth:'Ширина',popupLeft:'Координати - X',popupHeight:'ВиÑочина',popupTop:'Координати - Y',id:'Id',langDir:'поÑока на речта',langDirLTR:'От лÑво на дÑÑно',langDirRTL:'От дÑÑно на лÑво',acccessKey:'Бърз клавиш',name:'Име',langCode:'поÑока на речта',tabIndex:'Ред на доÑтъп',advisoryTitle:'Препоръчително заглавие',advisoryContentType:'Препоръчителен тип на Ñъдържанието',cssClasses:'ÐšÐ»Ð°Ñ Ð¾Ñ‚ Ñтиловите таблици',charset:'Тип на ÑÐ²ÑŠÑ€Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ',styles:'Стил',selectAnchor:'Изберете котва',anchorName:'По име на котвата',anchorId:'По идентификатор на елемент',emailAddress:'ÐÐ´Ñ€ÐµÑ Ð·Ð° е-поща',emailSubject:'Тема на пиÑмото',emailBody:'ТекÑÑ‚ на пиÑмото',noAnchors:'(ÐÑма котви в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚)',noUrl:'МолÑ, напишете Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¿ÑŠÑ‚ (URL)',noEmail:'МолÑ, напишете адреÑа за е-поща'},anchor:{toolbar:'Добави/Редактирай котва',menu:'Параметри на котвата',title:'Параметри на котвата',name:'Име на котвата',errorName:'МолÑ, въведете име на котвата'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'ТърÑи',replace:'ЗамеÑти',findWhat:'ТърÑи:',replaceWith:'ЗамеÑти Ñ:',notFoundMsg:'Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ не беше намерен.',matchCase:'Ð¡ÑŠÑ ÑÑŠÑ‰Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтър',matchWord:'ТърÑи Ñъщата дума',matchCyclic:'Match cyclic',replaceAll:'ЗамеÑти вÑички',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Таблица',title:'Параметри на таблицата',menu:'Параметри на таблицата',deleteTable:'Изтрий таблицата',rows:'Редове',columns:'Колони',border:'Размер на рамката',align:'ПодравнÑване',alignLeft:'ЛÑво',alignCenter:'Център',alignRight:'ДÑÑно',width:'Ширина',widthPx:'пикÑели',widthPc:'проценти',widthUnit:'width unit',height:'ВиÑочина',cellSpace:'РазÑтоÑние между клетките',cellPad:'ОтÑтъп на Ñъдържанието в клетките',caption:'Заглавие',summary:'Резюме',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Изтрий клетките',merge:'Обедини клетките',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Изтрий редовете'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Изтрий колоните'}},button:{title:'Параметри на бутона',text:'ТекÑÑ‚ (СтойноÑÑ‚)',type:'Тип',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Параметри на полето за отметка',radioTitle:'Параметри на полето за опциÑ',value:'СтойноÑÑ‚',selected:'Отметнато'},form:{title:'Параметри на формулÑра',menu:'Параметри на формулÑра',action:'ДейÑтвие',method:'Метод',encoding:'Encoding'},select:{title:'Параметри на падащото меню Ñ Ð¾Ð¿Ñ†Ð¸Ð¸',selectInfo:'ИнформациÑ',opAvail:'Възможни опции',value:'СтойноÑÑ‚',size:'Размер',lines:'линии',chkMulti:'Разрешено множеÑтвено Ñелектиране',opText:'ТекÑÑ‚',opValue:'СтойноÑÑ‚',btnAdd:'Добави',btnModify:'Промени',btnUp:'Ðагоре',btnDown:'Ðадолу',btnSetValue:'ÐаÑтрой като избрана ÑтойноÑÑ‚',btnDelete:'Изтрий'},textarea:{title:'Параметри на текÑтовата облаÑÑ‚',cols:'Колони',rows:'Редове'},textfield:{title:'Параметри на текÑтовото-поле',name:'Име',value:'СтойноÑÑ‚',charWidth:'Ширина на Ñимволите',maxChars:'МакÑимум Ñимволи',type:'Тип',typeText:'ТекÑÑ‚',typePass:'Парола'},hidden:{title:'Параметри на Ñкритото поле',name:'Име',value:'СтойноÑÑ‚'},image:{title:'Параметри на изображението',titleButton:'Параметри на бутона-изображение',menu:'Параметри на изображението',infoTab:'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изображението',btnUpload:'Прати към Ñървъра',upload:'Качи',alt:'Ðлтернативен текÑÑ‚',width:'Ширина',height:'ВиÑочина',lockRatio:'Запази пропорциÑта',unlockRatio:'Unlock Ratio',resetSize:'ВъзÑтанови размера',border:'Рамка',hSpace:'Хоризонтален отÑтъп',vSpace:'Вертикален отÑтъп',align:'ПодравнÑване',alignLeft:'ЛÑво',alignRight:'ДÑÑно',alertUrl:'МолÑ, въведете Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¿ÑŠÑ‚ до изображението',linkTab:'Връзка',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Параметри на Flash обекта',propertiesTab:'Properties',title:'Параметри на Flash обекта',chkPlay:'Ðвтоматично Ñтартиране',chkLoop:'Ðово Ñтартиране Ñлед завършването',chkMenu:'Разрешено Flash меню',chkFull:'Allow Fullscreen',scale:'ОразмерÑване',scaleAll:'Покажи Ñ†ÐµÐ»Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚',scaleNoBorder:'Без рамка',scaleFit:'Според мÑÑтото',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'ПодравнÑване',alignLeft:'ЛÑво',alignAbsBottom:'Ðай-долу',alignAbsMiddle:'Точно по Ñредата',alignBaseline:'По базовата линиÑ',alignBottom:'Долу',alignMiddle:'По Ñредата',alignRight:'ДÑÑно',alignTextTop:'Върху текÑта',alignTop:'Отгоре',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'ЦвÑÑ‚ на фона',width:'Ширина',height:'ВиÑочина',hSpace:'Хоризонтален отÑтъп',vSpace:'Вертикален отÑтъп',validateSrc:'МолÑ, напишете Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð¿ÑŠÑ‚ (URL)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Провери правопиÑа',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'ЛипÑва в речника',changeTo:'Промени на',btnIgnore:'Игнорирай',btnIgnoreAll:'Игнорирай вÑички',btnReplace:'ЗамеÑти',btnReplaceAll:'ЗамеÑти вÑички',btnUndo:'Отмени',noSuggestions:'- ÐÑма Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ -',progress:'Извършване на проверката за правопиÑ...',noMispell:'Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: не Ñа открити правопиÑни грешки',noChanges:'Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: нÑма променени думи',oneChange:'Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: една дума е променена',manyChanges:'Проверката за Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐµÐ½Ð°: %1 думи Ñа променени',ieSpellDownload:'ИнÑтрументът за проверка на Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð½Ðµ е инÑталиран. Желаете ли да го инÑталирате ?'},smiley:{toolbar:'УÑмивка',title:'Добави уÑмивка',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Ðумериран ÑпиÑък',bulletedlist:'Ðенумериран ÑпиÑък',indent:'Увеличи отÑтъпа',outdent:'Ðамали отÑтъпа',justify:{left:'ПодравнÑване в лÑво',center:'ПодравнÑвне в Ñредата',right:'ПодравнÑване в дÑÑно',block:'ДвуÑтранно подравнÑване'},blockquote:'Block Quote',clipboard:{title:'Вмъкни',cutError:'ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°Ð·ÑƒÑŠÑ€ не разрешават на редактора да изпълни изрÑзването. За целта използвайте клавиатурата (Ctrl/Cmd+X).',copyError:'ÐаÑтройките за ÑигурноÑÑ‚ на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°Ð·ÑƒÑŠÑ€ не разрешават на редактора да изпълни запаметÑването. За целта използвайте клавиатурата (Ctrl/Cmd+C).',pasteMsg:'Вмъкнете тук Ñъдъжанието Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÐ°Ñ€Ð°Ñ‚Ð° (<STRONG>Ctrl/Cmd+V</STRONG>) и натиÑнете <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Вмъкни от MS Word',title:'Вмъкни от MS Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Вмъкни като чиÑÑ‚ текÑÑ‚',title:'Вмъкни като чиÑÑ‚ текÑÑ‚'},templates:{button:'Шаблони',title:'Шаблони',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Изберете шаблон <br>(текущото Ñъдържание на редактора ще бъде загубено):',emptyListMsg:'(ÐÑма дефинирани шаблони)'},showBlocks:'Show Blocks',stylesCombo:{label:'Стил',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',panelTitle:'Формат',tag_p:'Ðормален',tag_pre:'Форматиран',tag_address:'ÐдреÑ',tag_h1:'Заглавие 1',tag_h2:'Заглавие 2',tag_h3:'Заглавие 3',tag_h4:'Заглавие 4',tag_h5:'Заглавие 5',tag_h6:'Заглавие 6',tag_div:'Параграф (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Шрифт',voiceLabel:'Font',panelTitle:'Шрифт'},fontSize:{label:'Размер',voiceLabel:'Font Size',panelTitle:'Размер'},colorButton:{textColorTitle:'ЦвÑÑ‚ на текÑта',bgColorTitle:'ЦвÑÑ‚ на фона',panelTitle:'Colors',auto:'По подразбиране',more:'Други цветове...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/bn.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/bn.js
new file mode 100644
index 000000000..c7debfc75
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/bn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bn={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'সোরà§à¦¸',newPage:'নতà§à¦¨ পেজ',save:'সংরকà§à¦·à¦¨ কর',preview:'পà§à¦°à¦¿à¦­à¦¿à¦‰',cut:'কাট',copy:'কপি',paste:'পেসà§à¦Ÿ',print:'পà§à¦°à¦¿à¦¨à§à¦Ÿ',underline:'আনà§à¦¡à¦¾à¦°à¦²à¦¾à¦‡à¦¨',bold:'বোলà§à¦¡',italic:'ইটালিক',selectAll:'সব সিলেকà§à¦Ÿ কর',removeFormat:'ফরমেট সরাও',strike:'সà§à¦Ÿà§à¦°à¦¾à¦‡à¦• থà§à¦°à§',subscript:'অধোলেখ',superscript:'অভিলেখ',horizontalrule:'রেখা যà§à¦•à§à¦¤ কর',pagebreak:'পেজ বà§à¦°à§‡à¦•',unlink:'লিংক সরাও',undo:'আনডà§',redo:'রি-ডà§',common:{browseServer:'বà§à¦°à¦¾à¦‰à¦œ সারà§à¦­à¦¾à¦°',url:'URL',protocol:'পà§à¦°à§‹à¦Ÿà§‹à¦•ল',upload:'আপলোড',uploadSubmit:'ইহাকে সারà§à¦­à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর',image:'ছবির লেবেল যà§à¦•à§à¦¤ কর',flash:'ফà§à¦²à¦¾à¦¶ লেবেল যà§à¦•à§à¦¤ কর',form:'ফরà§à¦®',checkbox:'চেক বাকà§à¦¸',radio:'রেডিও বাটন',textField:'টেকà§à¦¸à¦Ÿ ফীলà§à¦¡',textarea:'টেকà§à¦¸à¦Ÿ à¦à¦°à¦¿à§Ÿà¦¾',hiddenField:'গà§à¦ªà§à¦¤ ফীলà§à¦¡',button:'বাটন',select:'বাছাই ফীলà§à¦¡',imageButton:'ছবির বাটন',notSet:'<সেট নেই>',id:'আইডি',name:'নাম',langDir:'ভাষা লেখার দিক',langDirLtr:'বাম থেকে ডান (LTR)',langDirRtl:'ডান থেকে বাম (RTL)',langCode:'ভাষা কোড',longDescr:'URL à¦à¦° লমà§à¦¬à¦¾ বরà§à¦£à¦¨à¦¾',cssClass:'সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸',advisoryTitle:'পরামরà§à¦¶ শীরà§à¦·à¦•',cssStyle:'সà§à¦Ÿà¦¾à¦‡à¦²',ok:'ওকে',cancel:'বাতিল',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'à¦à¦¡à¦­à¦¾à¦¨à§à¦¸à¦¡',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'বিশেষ অকà§à¦·à¦° যà§à¦•à§à¦¤ কর',title:'বিশেষ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° বাছাই কর',options:'Special Character Options'},link:{toolbar:'লিংক যà§à¦•à§à¦¤ কর',other:'<other>',menu:'লিংক সমà§à¦ªà¦¾à¦¦à¦¨',title:'লিংক',info:'লিংক তথà§à¦¯',target:'টারà§à¦—েট',upload:'আপলোড',advanced:'à¦à¦¡à¦­à¦¾à¦¨à§à¦¸à¦¡',type:'লিংক পà§à¦°à¦•ার',toUrl:'URL',toAnchor:'à¦à¦‡ পেজে নোঙর কর',toEmail:'ইমেইল',targetFrame:'<ফà§à¦°à§‡à¦®>',targetPopup:'<পপআপ উইনà§à¦¡à§‹>',targetFrameName:'টারà§à¦—েট ফà§à¦°à§‡à¦®à§‡à¦° নাম',targetPopupName:'পপআপ উইনà§à¦¡à§‹à¦° নাম',popupFeatures:'পপআপ উইনà§à¦¡à§‹ ফীচার সমূহ',popupResizable:'Resizable',popupStatusBar:'সà§à¦Ÿà§à¦¯à¦¾à¦Ÿà¦¾à¦¸ বার',popupLocationBar:'লোকেশন বার',popupToolbar:'টà§à¦² বার',popupMenuBar:'মেনà§à¦¯à§ বার',popupFullScreen:'পূরà§à¦£ পরà§à¦¦à¦¾ জà§à§œà§‡ (IE)',popupScrollBars:'সà§à¦•à§à¦°à¦² বার',popupDependent:'ডিপেনà§à¦¡à§‡à¦¨à§à¦Ÿ (Netscape)',popupWidth:'পà§à¦°à¦¸à§à¦¥',popupLeft:'বামের পজিশন',popupHeight:'দৈরà§à¦˜à§à¦¯',popupTop:'ডানের পজিশন',id:'Id',langDir:'ভাষা লেখার দিক',langDirLTR:'বাম থেকে ডান (LTR)',langDirRTL:'ডান থেকে বাম (RTL)',acccessKey:'à¦à¦•à§à¦¸à§‡à¦¸ কী',name:'নাম',langCode:'ভাষা লেখার দিক',tabIndex:'টà§à¦¯à¦¾à¦¬ ইনà§à¦¡à§‡à¦•à§à¦¸',advisoryTitle:'পরামরà§à¦¶ শীরà§à¦·à¦•',advisoryContentType:'পরামরà§à¦¶ কনà§à¦Ÿà§‡à¦¨à§à¦Ÿà§‡à¦° পà§à¦°à¦•ার',cssClasses:'সà§à¦Ÿà¦¾à¦‡à¦²-শীট কà§à¦²à¦¾à¦¸',charset:'লিংক রিসোরà§à¦¸ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦° সেট',styles:'সà§à¦Ÿà¦¾à¦‡à¦²',selectAnchor:'নোঙর বাছাই',anchorName:'নোঙরের নাম দিয়ে',anchorId:'নোঙরের আইডি দিয়ে',emailAddress:'ইমেইল ঠিকানা',emailSubject:'মেসেজের বিষয়',emailBody:'মেসেজের দেহ',noAnchors:'(No anchors available in the document)',noUrl:'অনà§à¦—à§à¦°à¦¹ করে URL লিংক টাইপ করà§à¦¨',noEmail:'অনà§à¦—à§à¦°à¦¹ করে ইমেইল à¦à¦¡à§à¦°à§‡à¦¸ টাইপ করà§à¦¨'},anchor:{toolbar:'নোঙà§à¦—র',menu:'নোঙর পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',title:'নোঙর পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',name:'নোঙরের নাম',errorName:'নোঙরের নাম টাইপ করà§à¦¨'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'খোজো',replace:'রিপà§à¦²à§‡à¦¸',findWhat:'যা খà§à¦à¦œà¦¤à§‡ হবে:',replaceWith:'যার সাথে বদলাতে হবে:',notFoundMsg:'আপনার উলà§à¦²à§‡à¦–িত টেকসà§à¦Ÿ পাওয়া যায়নি',matchCase:'কেস মিলাও',matchWord:'পà§à¦°à¦¾ শবà§à¦¦ মেলাও',matchCyclic:'Match cyclic',replaceAll:'সব বদলে দাও',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'টেবিলের লেবেল যà§à¦•à§à¦¤ কর',title:'টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',menu:'টেবিল পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',deleteTable:'টেবিল ডিলীট কর',rows:'রো',columns:'কলাম',border:'বরà§à¦¡à¦¾à¦° সাইজ',align:'à¦à¦²à¦¾à¦‡à¦¨à¦®à§‡à¦¨à§à¦Ÿ',alignLeft:'বামে',alignCenter:'মাà¦à¦–ানে',alignRight:'ডানে',width:'পà§à¦°à¦¸à§à¦¥',widthPx:'পিকà§à¦¸à§‡à¦²',widthPc:'শতকরা',widthUnit:'width unit',height:'দৈরà§à¦˜à§à¦¯',cellSpace:'সেল সà§à¦ªà§‡à¦¸',cellPad:'সেল পà§à¦¯à¦¾à¦¡à¦¿à¦‚',caption:'শীরà§à¦·à¦•',summary:'সারাংশ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'সেল',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'সেল মà§à¦›à§‡ দাও',merge:'সেল জোড়া দাও',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'রো',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'রো মà§à¦›à§‡ দাও'},column:{menu:'কলাম',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'কলাম মà§à¦›à§‡ দাও'}},button:{title:'বাটন পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',text:'টেকà§à¦¸à¦Ÿ (ভà§à¦¯à¦¾à¦²à§)',type:'পà§à¦°à¦•ার',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'চেক বকà§à¦¸ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',radioTitle:'রেডিও বাটন পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',value:'ভà§à¦¯à¦¾à¦²à§',selected:'সিলেকà§à¦Ÿà§‡à¦¡'},form:{title:'ফরà§à¦® পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',menu:'ফরà§à¦® পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',action:'à¦à¦•শà§à¦¯à¦¨',method:'পদà§à¦§à¦¤à¦¿',encoding:'Encoding'},select:{title:'বাছাই ফীলà§à¦¡ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',selectInfo:'তথà§à¦¯',opAvail:'অনà§à¦¯à¦¾à¦¨à§à¦¯ বিকলà§à¦ª',value:'ভà§à¦¯à¦¾à¦²à§',size:'সাইজ',lines:'লাইন সমূহ',chkMulti:'à¦à¦•াধিক সিলেকশন à¦à¦²à¦¾à¦‰ কর',opText:'টেকà§à¦¸à¦Ÿ',opValue:'ভà§à¦¯à¦¾à¦²à§',btnAdd:'যà§à¦•à§à¦¤',btnModify:'বদলে দাও',btnUp:'উপর',btnDown:'নীচে',btnSetValue:'বাছাই করা ভà§à¦¯à¦¾à¦²à§ হিসেবে সেট কর',btnDelete:'ডিলীট'},textarea:{title:'টেকà§à¦¸à¦Ÿ à¦à¦°à¦¿à§Ÿà¦¾ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',cols:'কলাম',rows:'রো'},textfield:{title:'টেকà§à¦¸à¦Ÿ ফীলà§à¦¡ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',name:'নাম',value:'ভà§à¦¯à¦¾à¦²à§',charWidth:'কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° পà§à¦°à¦¶à¦¸à§à¦¤à¦¤à¦¾',maxChars:'সরà§à¦¬à¦¾à¦§à¦¿à¦• কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦°',type:'টাইপ',typeText:'টেকà§à¦¸à¦Ÿ',typePass:'পাসওয়ারà§à¦¡'},hidden:{title:'গà§à¦ªà§à¦¤ ফীলà§à¦¡ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',name:'নাম',value:'ভà§à¦¯à¦¾à¦²à§'},image:{title:'ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',titleButton:'ছবি বাটন পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',menu:'ছবির পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',infoTab:'ছবির তথà§à¦¯',btnUpload:'ইহাকে সারà§à¦­à¦¾à¦°à§‡ পà§à¦°à§‡à¦°à¦¨ কর',upload:'আপলোড',alt:'বিকলà§à¦ª টেকà§à¦¸à¦Ÿ',width:'পà§à¦°à¦¸à§à¦¥',height:'দৈরà§à¦˜à§à¦¯',lockRatio:'অনà§à¦ªà¦¾à¦¤ লক কর',unlockRatio:'Unlock Ratio',resetSize:'সাইজ পূরà§à¦¬à¦¾à¦¬à¦¸à§à¦¥à¦¾à§Ÿ ফিরিয়ে দাও',border:'বরà§à¦¡à¦¾à¦°',hSpace:'হরাইজনà§à¦Ÿà¦¾à¦² সà§à¦ªà§‡à¦¸',vSpace:'ভারà§à¦Ÿà¦¿à¦•েল সà§à¦ªà§‡à¦¸',align:'à¦à¦²à¦¾à¦‡à¦¨',alignLeft:'বামে',alignRight:'ডানে',alertUrl:'অনà§à¦—à§à¦°à¦¹à¦• করে ছবির URL টাইপ করà§à¦¨',linkTab:'লিংক',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ফà§à¦²à¦¾à¦¶ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',propertiesTab:'Properties',title:'ফà§à¦²à§à¦¯à¦¾à¦¶ পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿',chkPlay:'অটো পà§à¦²à§‡',chkLoop:'লূপ',chkMenu:'ফà§à¦²à§à¦¯à¦¾à¦¶ মেনৠà¦à¦¨à¦¾à¦¬à¦² কর',chkFull:'Allow Fullscreen',scale:'সà§à¦•েল',scaleAll:'সব দেখাও',scaleNoBorder:'কোনো বরà§à¦¡à¦¾à¦° নেই',scaleFit:'নিখà§à¦à¦¤ ফিট',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'à¦à¦²à¦¾à¦‡à¦¨',alignLeft:'বামে',alignAbsBottom:'Abs নীচে',alignAbsMiddle:'Abs উপর',alignBaseline:'মূল রেখা',alignBottom:'নীচে',alignMiddle:'মধà§à¦¯',alignRight:'ডানে',alignTextTop:'টেকà§à¦¸à¦Ÿ উপর',alignTop:'উপর',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'বেকগà§à¦°à¦¾à¦‰à¦¨à§à¦¡ রং',width:'পà§à¦°à¦¸à§à¦¥',height:'দৈরà§à¦˜à§à¦¯',hSpace:'হরাইজনà§à¦Ÿà¦¾à¦² সà§à¦ªà§‡à¦¸',vSpace:'ভারà§à¦Ÿà¦¿à¦•েল সà§à¦ªà§‡à¦¸',validateSrc:'অনà§à¦—à§à¦°à¦¹ করে URL লিংক টাইপ করà§à¦¨',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'বানান চেক',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'শবà§à¦¦à¦•োষে নেই',changeTo:'à¦à¦¤à§‡ বদলাও',btnIgnore:'ইগনোর কর',btnIgnoreAll:'সব ইগনোর কর',btnReplace:'বদলে দাও',btnReplaceAll:'সব বদলে দাও',btnUndo:'আনà§à¦¡à§',noSuggestions:'- কোন সাজেশন নেই -',progress:'বানান পরীকà§à¦·à¦¾ চলছে...',noMispell:'বানান পরীকà§à¦·à¦¾ শেষ: কোন ভà§à¦² বানান পাওয়া যায়নি',noChanges:'বানান পরীকà§à¦·à¦¾ শেষ: কোন শবà§à¦¦ পরিবরà§à¦¤à¦¨ করা হয়নি',oneChange:'বানান পরীকà§à¦·à¦¾ শেষ: à¦à¦•টি মাতà§à¦° শবà§à¦¦ পরিবরà§à¦¤à¦¨ করা হয়েছে',manyChanges:'বানান পরীকà§à¦·à¦¾ শেষ: %1 গà§à¦²à§‹ শবà§à¦¦ বদলে গà§à¦¯à¦¾à¦›à§‡',ieSpellDownload:'বানান পরীকà§à¦·à¦• ইনসà§à¦Ÿà¦² করা নেই। আপনি কি à¦à¦–নই à¦à¦Ÿà¦¾ ডাউনলোড করতে চান?'},smiley:{toolbar:'সà§à¦®à¦¾à¦‡à¦²à§€',title:'সà§à¦®à¦¾à¦‡à¦²à§€ যà§à¦•à§à¦¤ কর',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'সাংখà§à¦¯à¦¿à¦• লিসà§à¦Ÿà§‡à¦° লেবেল',bulletedlist:'বà§à¦²à§‡à¦Ÿ লিসà§à¦Ÿ লেবেল',indent:'ইনডেনà§à¦Ÿ বাড়াও',outdent:'ইনডেনà§à¦Ÿ কমাও',justify:{left:'বা দিকে ঘেà¦à¦·à¦¾',center:'মাঠবরাবর ঘেষা',right:'ডান দিকে ঘেà¦à¦·à¦¾',block:'বà§à¦²à¦• জাসà§à¦Ÿà¦¿à¦«à¦¾à¦‡'},blockquote:'Block Quote',clipboard:{title:'পেসà§à¦Ÿ',cutError:'আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস à¦à¦¡à¦¿à¦Ÿà¦°à¦•ে অটোমেটিক কাট করার অনà§à¦®à¦¤à¦¿ দেয়নি। দয়া করে à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl/Cmd+X)।',copyError:'আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° সà§à¦°à¦•à§à¦·à¦¾ সেটিংস à¦à¦¡à¦¿à¦Ÿà¦°à¦•ে অটোমেটিক কপি করার অনà§à¦®à¦¤à¦¿ দেয়নি। দয়া করে à¦à¦‡ কাজের জনà§à¦¯ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨ (Ctrl/Cmd+C)।',pasteMsg:'অনà§à¦—à§à¦°à¦¹ করে নীচের বাকà§à¦¸à§‡ কিবোরà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে (<STRONG>Ctrl/Cmd+V</STRONG>) পেসà§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ <STRONG>OK</STRONG> চাপ দিন',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'পেসà§à¦Ÿ (শবà§à¦¦)',title:'পেসà§à¦Ÿ (শবà§à¦¦)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'সাদা টেকà§à¦¸à¦Ÿ হিসেবে পেসà§à¦Ÿ কর',title:'সাদা টেকà§à¦¸à¦Ÿ হিসেবে পেসà§à¦Ÿ কর'},templates:{button:'টেমপà§à¦²à§‡à¦Ÿ',title:'কনটেনà§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿ',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'অনà§à¦—à§à¦°à¦¹ করে à¦à¦¡à¦¿à¦Ÿà¦°à§‡ ওপেন করার জনà§à¦¯ টেমপà§à¦²à§‡à¦Ÿ বাছাই করà§à¦¨<br>(আসল কনটেনà§à¦Ÿ হারিয়ে যাবে):',emptyListMsg:'(কোন টেমপà§à¦²à§‡à¦Ÿ ডিফাইন করা নেই)'},showBlocks:'Show Blocks',stylesCombo:{label:'সà§à¦Ÿà¦¾à¦‡à¦²',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ফনà§à¦Ÿ ফরমেট',panelTitle:'ফনà§à¦Ÿ ফরমেট',tag_p:'সাধারণ',tag_pre:'ফরà§à¦®à§‡à¦Ÿà§‡à¦¡',tag_address:'ঠিকানা',tag_h1:'শীরà§à¦·à¦• à§§',tag_h2:'শীরà§à¦·à¦• ২',tag_h3:'শীরà§à¦·à¦• à§©',tag_h4:'শীরà§à¦·à¦• ৪',tag_h5:'শীরà§à¦·à¦• à§«',tag_h6:'শীরà§à¦·à¦• ৬',tag_div:'শীরà§à¦·à¦• (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'ফনà§à¦Ÿ',voiceLabel:'Font',panelTitle:'ফনà§à¦Ÿ'},fontSize:{label:'সাইজ',voiceLabel:'Font Size',panelTitle:'সাইজ'},colorButton:{textColorTitle:'টেকà§à¦¸à§à¦Ÿ রং',bgColorTitle:'বেকগà§à¦°à¦¾à¦‰à¦¨à§à¦¡ রং',panelTitle:'Colors',auto:'অটোমেটিক',more:'আরও রং...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/bs.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/bs.js
new file mode 100644
index 000000000..803425997
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/bs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.bs={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'HTML kôd',newPage:'Novi dokument',save:'Snimi',preview:'Prikaži',cut:'Izreži',copy:'Kopiraj',paste:'Zalijepi',print:'Štampaj',underline:'Podvuci',bold:'Boldiraj',italic:'Ukosi',selectAll:'Selektuj sve',removeFormat:'Poništi format',strike:'Precrtaj',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Ubaci horizontalnu liniju',pagebreak:'Insert Page Break for Printing',unlink:'Izbriši link',undo:'Vrati',redo:'Ponovi',common:{browseServer:'Browse Server',url:'URL',protocol:'Protokol',upload:'Šalji',uploadSubmit:'Šalji na server',image:'Slika',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<nije podešeno>',id:'Id',name:'Naziv',langDir:'Smjer pisanja',langDirLtr:'S lijeva na desno (LTR)',langDirRtl:'S desna na lijevo (RTL)',langCode:'Jezièni kôd',longDescr:'Dugaèki opis URL-a',cssClass:'Klase CSS stilova',advisoryTitle:'Advisory title',cssStyle:'Stil',ok:'OK',cancel:'Odustani',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Naprednije',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ubaci specijalni karater',title:'Izaberi specijalni karakter',options:'Special Character Options'},link:{toolbar:'Ubaci/Izmjeni link',other:'<other>',menu:'Izmjeni link',title:'Link',info:'Link info',target:'Prozor',upload:'Šalji',advanced:'Naprednije',type:'Tip linka',toUrl:'URL',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',targetFrame:'<frejm>',targetPopup:'<popup prozor>',targetFrameName:'Target Frame Name',targetPopupName:'Naziv popup prozora',popupFeatures:'Moguænosti popup prozora',popupResizable:'Resizable',popupStatusBar:'Statusna traka',popupLocationBar:'Traka za lokaciju',popupToolbar:'Traka sa alatima',popupMenuBar:'Izborna traka',popupFullScreen:'Cijeli ekran (IE)',popupScrollBars:'Scroll traka',popupDependent:'Ovisno (Netscape)',popupWidth:'Širina',popupLeft:'Lijeva pozicija',popupHeight:'Visina',popupTop:'Gornja pozicija',id:'Id',langDir:'Smjer pisanja',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',acccessKey:'Pristupna tipka',name:'Naziv',langCode:'Smjer pisanja',tabIndex:'Tab indeks',advisoryTitle:'Advisory title',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Klase CSS stilova',charset:'Linked Resource Charset',styles:'Stil',selectAnchor:'Izaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id-u elementa',emailAddress:'E-Mail Adresa',emailSubject:'Subjekt poruke',emailBody:'Poruka',noAnchors:'(Nema dostupnih sidra na stranici)',noUrl:'Molimo ukucajte URL link',noEmail:'Molimo ukucajte e-mail adresu'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Naði',replace:'Zamjeni',findWhat:'Naði šta:',replaceWith:'Zamjeni sa:',notFoundMsg:'Traženi tekst nije pronaðen.',matchCase:'Uporeðuj velika/mala slova',matchWord:'Uporeðuj samo cijelu rijeè',matchCyclic:'Match cyclic',replaceAll:'Zamjeni sve',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Svojstva tabele',menu:'Svojstva tabele',deleteTable:'Delete Table',rows:'Redova',columns:'Kolona',border:'Okvir',align:'Poravnanje',alignLeft:'Lijevo',alignCenter:'Centar',alignRight:'Desno',width:'Širina',widthPx:'piksela',widthPc:'posto',widthUnit:'width unit',height:'Visina',cellSpace:'Razmak æelija',cellPad:'Uvod æelija',caption:'Naslov',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Briši æelije',merge:'Spoji æelije',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Briši redove'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Briši kolone'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Svojstva slike',titleButton:'Image Button Properties',menu:'Svojstva slike',infoTab:'Info slike',btnUpload:'Šalji na server',upload:'Šalji',alt:'Tekst na slici',width:'Širina',height:'Visina',lockRatio:'Zakljuèaj odnos',unlockRatio:'Unlock Ratio',resetSize:'Resetuj dimenzije',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',align:'Poravnanje',alignLeft:'Lijevo',alignRight:'Desno',alertUrl:'Molimo ukucajte URL od slike.',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Poravnanje',alignLeft:'Lijevo',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dno',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Boja pozadine',width:'Širina',height:'Visina',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Molimo ukucajte URL link',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smješko',title:'Ubaci smješka',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numerisana lista',bulletedlist:'Lista',indent:'Poveæaj uvod',outdent:'Smanji uvod',justify:{left:'Lijevo poravnanje',center:'Centralno poravnanje',right:'Desno poravnanje',block:'Puno poravnanje'},blockquote:'Block Quote',clipboard:{title:'Zalijepi',cutError:'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).',copyError:'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Zalijepi iz Word-a',title:'Zalijepi iz Word-a',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Zalijepi kao obièan tekst',title:'Zalijepi kao obièan tekst'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Velièina',voiceLabel:'Font Size',panelTitle:'Velièina'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',panelTitle:'Colors',auto:'Automatska',more:'Više boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ca.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ca.js
new file mode 100644
index 000000000..fe782c7ef
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ca.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ca={dir:'ltr',editorTitle:'Editor de text enriquit, %1, prem ALT 0 per obtenir ajuda.',toolbar:"Barra d'eines",editor:'Editor de text enriquit',source:'Codi font',newPage:'Nova pàgina',save:'Desa',preview:'Visualització prèvia',cut:'Retalla',copy:'Copia',paste:'Enganxa',print:'Imprimeix',underline:'Subratllat',bold:'Negreta',italic:'Cursiva',selectAll:'Selecciona-ho tot',removeFormat:'Elimina Format',strike:'Barrat',subscript:'Subíndex',superscript:'Superíndex',horizontalrule:'Insereix línia horitzontal',pagebreak:'Insereix salt de pàgina',unlink:"Elimina l'enllaç",undo:'Desfés',redo:'Refés',common:{browseServer:'Veure servidor',url:'URL',protocol:'Protocol',upload:'Puja',uploadSubmit:'Envia-la al servidor',image:'Imatge',flash:'Flash',form:'Formulari',checkbox:'Casella de verificació',radio:"Botó d'opció",textField:'Camp de text',textarea:'Àrea de text',hiddenField:'Camp ocult',button:'Botó',select:'Camp de selecció',imageButton:"Botó d'imatge",notSet:'<no definit>',id:'Id',name:'Nom',langDir:"Direcció de l'idioma",langDirLtr:"D'esquerra a dreta (LTR)",langDirRtl:'De dreta a esquerra (RTL)',langCode:"Codi d'idioma",longDescr:'Descripció llarga de la URL',cssClass:"Classes del full d'estil",advisoryTitle:'Títol consultiu',cssStyle:'Estil',ok:"D'acord",cancel:'Cancel·la',close:'Tanca',preview:'Previsualitza',generalTab:'General',advancedTab:'Avançat',validateNumberFailed:'Aquest valor no és un número.',confirmNewPage:'Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?',confirmCancel:"Algunes opcions s'han canviat. Esteu segur que voleu tancar la finestra de diàleg?",options:'Opcions',target:'Destí',targetNew:'Nova finestra (_blank)',targetTop:'Finestra major (_top)',targetSelf:'Mateixa finestra (_self)',targetParent:'Finestra pare (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, no disponible</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insereix caràcter especial',title:'Selecciona el caràcter especial',options:'Special Character Options'},link:{toolbar:'Insereix/Edita enllaç',other:'<altre>',menu:"Edita l'enllaç",title:'Enllaç',info:"Informació de l'enllaç",target:'Destí',upload:'Puja',advanced:'Avançat',type:"Tipus d'enllaç",toUrl:'URL',toAnchor:'Àncora en aquesta pàgina',toEmail:'Correu electrònic',targetFrame:'<marc>',targetPopup:'<finestra emergent>',targetFrameName:'Nom del marc de destí',targetPopupName:'Nom finestra popup',popupFeatures:'Característiques finestra popup',popupResizable:'Redimensionable',popupStatusBar:"Barra d'estat",popupLocationBar:"Barra d'adreça",popupToolbar:"Barra d'eines",popupMenuBar:'Barra de menú',popupFullScreen:'Pantalla completa (IE)',popupScrollBars:"Barres d'scroll",popupDependent:'Depenent (Netscape)',popupWidth:'Amplada',popupLeft:'Posició esquerra',popupHeight:'Alçada',popupTop:'Posició dalt',id:'Id',langDir:"Direcció de l'idioma",langDirLTR:"D'esquerra a dreta (LTR)",langDirRTL:'De dreta a esquerra (RTL)',acccessKey:"Clau d'accés",name:'Nom',langCode:"Direcció de l'idioma",tabIndex:'Index de Tab',advisoryTitle:'Títol consultiu',advisoryContentType:'Tipus de contingut consultiu',cssClasses:"Classes del full d'estil",charset:'Conjunt de caràcters font enllaçat',styles:'Estil',selectAnchor:'Selecciona una àncora',anchorName:"Per nom d'àncora",anchorId:"Per Id d'element",emailAddress:'Adreça de correu electrònic',emailSubject:'Assumpte del missatge',emailBody:'Cos del missatge',noAnchors:'(No hi ha àncores disponibles en aquest document)',noUrl:"Si us plau, escrigui l'enllaç URL",noEmail:"Si us plau, escrigui l'adreça correu electrònic"},anchor:{toolbar:'Insereix/Edita àncora',menu:"Propietats de l'àncora",title:"Propietats de l'àncora",name:"Nom de l'àncora",errorName:"Si us plau, escriviu el nom de l'ancora"},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Cerca i reemplaça',find:'Cerca',replace:'Reemplaça',findWhat:'Cerca:',replaceWith:'Remplaça amb:',notFoundMsg:"El text especificat no s'ha trobat.",matchCase:'Distingeix majúscules/minúscules',matchWord:'Només paraules completes',matchCyclic:'Match cyclic',replaceAll:'Reemplaça-ho tot',replaceSuccessMsg:'%1 ocurrència/es reemplaçada/es.'},table:{toolbar:'Taula',title:'Propietats de la taula',menu:'Propietats de la taula',deleteTable:'Suprimeix la taula',rows:'Files',columns:'Columnes',border:'Mida vora',align:'Alineació',alignLeft:'Esquerra',alignCenter:'Centre',alignRight:'Dreta',width:'Amplada',widthPx:'píxels',widthPc:'percentatge',widthUnit:"unitat d'amplada",height:'Alçada',cellSpace:'Espaiat de cel·les',cellPad:'Encoixinament de cel·les',caption:'Títol',summary:'Resum',headers:'Capçaleres',headersNone:'Cap',headersColumn:'Primera columna',headersRow:'Primera fila',headersBoth:'Ambdues',invalidRows:'El nombre de files ha de ser un nombre major que 0.',invalidCols:'El nombre de columnes ha de ser un nombre major que 0.',invalidBorder:'El gruix de la vora ha de ser un nombre.',invalidWidth:"L'amplada de la taula ha de ser un nombre.",invalidHeight:"L'alçada de la taula ha de ser un nombre.",invalidCellSpacing:"L'espaiat de cel·la ha de ser un nombre.",invalidCellPadding:"L'encoixinament de cel·la ha de ser un nombre.",cell:{menu:'Cel·la',insertBefore:'Insereix cel·la abans de',insertAfter:'Insereix cel·la darrera',deleteCell:'Suprimeix les cel·les',merge:'Fusiona les cel·les',mergeRight:'Fusiona cap a la dreta',mergeDown:'Fusiona cap avall',splitHorizontal:'Divideix la cel·la horitzontalment',splitVertical:'Divideix la cel·la verticalment',title:'Propertiat de la cel·la',cellType:'Tipus de cel·la',rowSpan:'Expansió de files',colSpan:'Expansió de columnes',wordWrap:'Ajustar al contingut',hAlign:'Aliniació Horizontal',vAlign:'Aliniació Vertical',alignTop:'A dalt',alignMiddle:'Al mig',alignBottom:'A baix',alignBaseline:'A la línia base',bgColor:'Color de fons',borderColor:'Color de la vora',data:'Data',header:'Capçalera',yes:'Sí',no:'No',invalidWidth:"L'amplada de cel·la ha de ser un nombre.",invalidHeight:"L'alçada de cel·la ha de ser un nombre.",invalidRowSpan:"L'expansió de files ha de ser un nombre enter.",invalidColSpan:"L'expansió de columnes ha de ser un nombre enter.",chooseColor:'Trieu'},row:{menu:'Fila',insertBefore:'Insereix fila abans de',insertAfter:'Insereix fila darrera',deleteRow:'Suprimeix una fila'},column:{menu:'Columna',insertBefore:'Insereix columna abans de',insertAfter:'Insereix columna darrera',deleteColumn:'Suprimeix una columna'}},button:{title:'Propietats del botó',text:'Text (Valor)',type:'Tipus',typeBtn:'Botó',typeSbm:'Transmet formulari',typeRst:'Reinicia formulari'},checkboxAndRadio:{checkboxTitle:'Propietats de la casella de verificació',radioTitle:"Propietats del botó d'opció",value:'Valor',selected:'Seleccionat'},form:{title:'Propietats del formulari',menu:'Propietats del formulari',action:'Acció',method:'Mètode',encoding:'Codificació'},select:{title:'Propietats del camp de selecció',selectInfo:'Info',opAvail:'Opcions disponibles',value:'Valor',size:'Mida',lines:'Línies',chkMulti:'Permet múltiples seleccions',opText:'Text',opValue:'Valor',btnAdd:'Afegeix',btnModify:'Modifica',btnUp:'Amunt',btnDown:'Avall',btnSetValue:'Selecciona per defecte',btnDelete:'Elimina'},textarea:{title:"Propietats de l'àrea de text",cols:'Columnes',rows:'Files'},textfield:{title:'Propietats del camp de text',name:'Nom',value:'Valor',charWidth:'Amplada',maxChars:'Nombre màxim de caràcters',type:'Tipus',typeText:'Text',typePass:'Contrasenya'},hidden:{title:'Propietats del camp ocult',name:'Nom',value:'Valor'},image:{title:'Propietats de la imatge',titleButton:"Propietats del botó d'imatge",menu:'Propietats de la imatge',infoTab:'Informació de la imatge',btnUpload:'Envia-la al servidor',upload:'Puja',alt:'Text alternatiu',width:'Amplada',height:'Alçada',lockRatio:'Bloqueja les proporcions',unlockRatio:'Desbloqueja el ràtio',resetSize:'Restaura la mida',border:'Vora',hSpace:'Espaiat horit.',vSpace:'Espaiat vert.',align:'Alineació',alignLeft:"Ajusta a l'esquerra",alignRight:'Ajusta a la dreta',alertUrl:'Si us plau, escriviu la URL de la imatge',linkTab:'Enllaç',button2Img:"Voleu transformar el botó d'imatge seleccionat en una simple imatge?",img2Button:"Voleu transformar la imatge seleccionada en un botó d'imatge?",urlMissing:'Falta la URL de la imatge.',validateWidth:"L'amplada ha de ser un nombre enter.",validateHeight:"L'alçada ha de ser un nombre enter.",validateBorder:'La vora ha de ser un nombre enter.',validateHSpace:'HSpace ha de ser un nombre enter.',validateVSpace:'VSpace ha de ser un nombre enter.'},flash:{properties:'Propietats del Flash',propertiesTab:'Propietats',title:'Propietats del Flash',chkPlay:'Reprodució automàtica',chkLoop:'Bucle',chkMenu:'Habilita menú Flash',chkFull:'Permetre la pantalla completa',scale:'Escala',scaleAll:'Mostra-ho tot',scaleNoBorder:'Sense vores',scaleFit:'Mida exacta',access:'Accés a scripts',accessAlways:'Sempre',accessSameDomain:'El mateix domini',accessNever:'Mai',align:'Alineació',alignLeft:"Ajusta a l'esquerra",alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Ajusta a la dreta',alignTextTop:'Text Top',alignTop:'Top',quality:'Qualitat',qualityBest:'La millor',qualityHigh:'Alta',qualityAutoHigh:'Alta automàtica',qualityMedium:'Mitjana',qualityAutoLow:'Baixa automàtica',qualityLow:'Baixa',windowModeWindow:'Finestra',windowModeOpaque:'Opaca',windowModeTransparent:'Transparent',windowMode:'Mode de la finestra',flashvars:'Variables de Flash',bgcolor:'Color de Fons',width:'Amplada',height:'Alçada',hSpace:'Espaiat horit.',vSpace:'Espaiat vert.',validateSrc:"Si us plau, escrigui l'enllaç URL",validateWidth:"L'amplada ha de ser un nombre.",validateHeight:"L'alçada ha de ser un nombre.",validateHSpace:"L'espaiat horitzonatal ha de ser un nombre.",validateVSpace:"L'espaiat vertical ha de ser un nombre."},spellCheck:{toolbar:"Revisa l'ortografia",title:"Comprova l'ortografia",notAvailable:'El servei no es troba disponible ara.',errorLoading:'Error carregant el servidor: %s.',notInDic:'No és al diccionari',changeTo:'Reemplaça amb',btnIgnore:'Ignora',btnIgnoreAll:'Ignora-les totes',btnReplace:'Canvia',btnReplaceAll:'Canvia-les totes',btnUndo:'Desfés',noSuggestions:'Cap suggeriment',progress:'Verificació ortogràfica en curs...',noMispell:'Verificació ortogràfica acabada: no hi ha cap paraula mal escrita',noChanges:"Verificació ortogràfica: no s'ha canviat cap paraula",oneChange:"Verificació ortogràfica: s'ha canviat una paraula",manyChanges:"Verificació ortogràfica: s'han canviat %1 paraules",ieSpellDownload:'Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?'},smiley:{toolbar:'Icona',title:'Insereix una icona',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Llista numerada',bulletedlist:'Llista de pics',indent:'Augmenta el sagnat',outdent:'Redueix el sagnat',justify:{left:"Alinia a l'esquerra",center:'Centrat',right:'Alinia a la dreta',block:'Justificat'},blockquote:'Bloc de cita',clipboard:{title:'Enganxa',cutError:'La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).',copyError:'La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).',pasteMsg:'Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.',securityMsg:"A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.",pasteArea:"Àrea d'enganxat"},pastefromword:{confirmCleanup:'El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?',toolbar:'Enganxa des del Word',title:'Enganxa des del Word',error:'No ha estat possible netejar les dades enganxades degut a un error intern'},pasteText:{button:'Enganxa com a text no formatat',title:'Enganxa com a text no formatat'},templates:{button:'Plantilles',title:'Contingut plantilles',options:'Template Options',insertOption:'Reemplaça el contingut actual',selectPromptMsg:"Si us plau, seleccioneu la plantilla per obrir a l'editor<br>(el contingut actual no serà enregistrat):",emptyListMsg:'(No hi ha plantilles definides)'},showBlocks:'Mostra els blocs',stylesCombo:{label:'Estil',panelTitle:'Estils de format',panelTitle1:'Estils de bloc',panelTitle2:'Estils incrustats',panelTitle3:"Estils d'objecte"},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatejat',tag_address:'Adreça',tag_h1:'Encapçalament 1',tag_h2:'Encapçalament 2',tag_h3:'Encapçalament 3',tag_h4:'Encapçalament 4',tag_h5:'Encapçalament 5',tag_h6:'Encapçalament 6',tag_div:'Normal (DIV)'},div:{title:'Crea un contenidor Div',toolbar:'Crea un contenidor Div',cssClassInputLabel:"Classes de la fulla d'estils",styleSelectLabel:'Estil',IdInputLabel:'Id',languageCodeInputLabel:" Codi d'idioma",inlineStyleInputLabel:'Estil en línia',advisoryTitleInputLabel:'Títol de guia',langDirLabel:"Direcció de l'idioma",langDirLTRLabel:"D'esquerra a dreta (LTR)",langDirRTLLabel:'De dreta a esquerra (RTL)',edit:'Edita Div',remove:'Elimina Div'},font:{label:'Tipus de lletra',voiceLabel:'Tipus de lletra',panelTitle:'Tipus de lletra'},fontSize:{label:'Mida',voiceLabel:'Mida de la lletra',panelTitle:'Mida'},colorButton:{textColorTitle:'Color de Text',bgColorTitle:'Color de Fons',panelTitle:'Colors',auto:'Automàtic',more:'Més colors...'},colors:{'000':'Negre',800000:'Granat','8B4513':'Marró sella','2F4F4F':'Gris pissarra fosca','008080':'Blau xarxet','000080':'Blau marí','4B0082':'Indi',696969:'Gris intens',B22222:'Maó',A52A2A:'Marró (web)',DAA520:'Solidago','006400':'Verd fosc','40E0D0':'Turquesa','0000CD':'Atzur',800080:'Lila',808080:'Gris',F00:'Vermell',FF8C00:'Taronja fosc',FFD700:'Or','008000':'Verd','0FF':'Cian','00F':'Blau',EE82EE:'Lavanda rosat',A9A9A9:'Gris clar',FFA07A:'Salmó clar',FFA500:'Taronja',FFFF00:'Groc','00FF00':'Verd llima',AFEEEE:'Blau pàlid',ADD8E6:'Blau clar',DDA0DD:'Pruna',D3D3D3:'Gris clar',FFF0F5:'Lavanda rosat',FAEBD7:'Blanc antic',FFFFE0:'Groc clar',F0FFF0:'Verd pàlid',F0FFFF:'Blau cel pàlid',F0F8FF:'Cian pàlid',E6E6FA:'Lavanda',FFF:'Blanc'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:"Habilitat l'SCAYT",disable:'Deshabilita SCAYT',about:"Quant a l'SCAYT",toggle:"Commuta l'SCAYT",options:'Opcions',langs:'Idiomes',moreSuggestions:'Més suggerències',ignore:'Ignora',ignoreAll:"Ignora'ls tots",addWord:'Afegeix una paraula',emptyDic:"El nom del diccionari no hauria d'estar buit.",optionsTab:'Opcions',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Idiomes',dictionariesTab:'Diccionaris',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Quant a'},about:{title:'Quan al CKEditor',dlgTitle:'Quan al CKEditor',moreInfo:'Per informació sobre llicències visiteu el web:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximitza',minimize:'Minimitza',fakeobjects:{anchor:'Àncora',flash:'Animació Flash',div:'Salt de pàgina',unknown:'Objecte desconegut'},resize:'Arrossegueu per redimensionar',colordialog:{title:'Selecciona el color',options:'Color Options',highlight:'Destacat',selected:'Seleccionat',clear:'Neteja'},toolbarCollapse:"Redueix la barra d'eines",toolbarExpand:"Amplia la barra d'eines",bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/cs.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/cs.js
new file mode 100644
index 000000000..9c152e0db
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/cs.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.cs={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Zdroj',newPage:'Nová stránka',save:'Uložit',preview:'Náhled',cut:'Vyjmout',copy:'Kopírovat',paste:'Vložit',print:'Tisk',underline:'Podtržené',bold:'TuÄné',italic:'Kurzíva',selectAll:'Vybrat vÅ¡e',removeFormat:'Odstranit formátování',strike:'PÅ™eÅ¡krtnuté',subscript:'Dolní index',superscript:'Horní index',horizontalrule:'Vložit vodorovnou linku',pagebreak:'Vložit konec stránky',unlink:'Odstranit odkaz',undo:'ZpÄ›t',redo:'Znovu',common:{browseServer:'Vybrat na serveru',url:'URL',protocol:'Protokol',upload:'Odeslat',uploadSubmit:'Odeslat na server',image:'Obrázek',flash:'Flash',form:'Formulář',checkbox:'ZaÅ¡krtávací políÄko',radio:'PÅ™epínaÄ',textField:'Textové pole',textarea:'Textová oblast',hiddenField:'Skryté pole',button:'TlaÄítko',select:'Seznam',imageButton:'Obrázkové tlaÄítko',notSet:'<nenastaveno>',id:'Id',name:'Jméno',langDir:'Orientace jazyka',langDirLtr:'Zleva do prava (LTR)',langDirRtl:'Zprava do leva (RTL)',langCode:'Kód jazyka',longDescr:'Dlouhý popis URL',cssClass:'Třída stylu',advisoryTitle:'Pomocný titulek',cssStyle:'Styl',ok:'OK',cancel:'Storno',close:'Close',preview:'Preview',generalTab:'Obecné',advancedTab:'Rozšířené',validateNumberFailed:'Zadaná hodnota není Äíselná.',confirmNewPage:'Jakékoliv neuložené zmÄ›ny obsahu budou ztraceny. SkuteÄnÄ› chete otevrít novou stránku?',confirmCancel:'NÄ›která z nastavení byla zmÄ›nÄ›na. SkuteÄnÄ› chete zavřít dialogové okno?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, nedostupné</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Vložit speciální znaky',title:'VýbÄ›r speciálního znaku',options:'Special Character Options'},link:{toolbar:'Vložit/zmÄ›nit odkaz',other:'<jiný>',menu:'ZmÄ›nit odkaz',title:'Odkaz',info:'Informace o odkazu',target:'Cíl',upload:'Odeslat',advanced:'Rozšířené',type:'Typ odkazu',toUrl:'URL',toAnchor:'Kotva v této stránce',toEmail:'E-Mail',targetFrame:'<rámec>',targetPopup:'<vyskakovací okno>',targetFrameName:'Název cílového rámu',targetPopupName:'Název vyskakovacího okna',popupFeatures:'Vlastnosti vyskakovacího okna',popupResizable:'Umožňující mÄ›nit velikost',popupStatusBar:'Stavový řádek',popupLocationBar:'Panel umístÄ›ní',popupToolbar:'Panel nástrojů',popupMenuBar:'Panel nabídky',popupFullScreen:'Celá obrazovka (IE)',popupScrollBars:'Posuvníky',popupDependent:'Závislost (Netscape)',popupWidth:'Šířka',popupLeft:'Levý okraj',popupHeight:'Výška',popupTop:'Horní okraj',id:'Id',langDir:'Orientace jazyka',langDirLTR:'Zleva do prava (LTR)',langDirRTL:'Zprava do leva (RTL)',acccessKey:'Přístupový klíÄ',name:'Jméno',langCode:'Orientace jazyka',tabIndex:'PoÅ™adí prvku',advisoryTitle:'Pomocný titulek',advisoryContentType:'Pomocný typ obsahu',cssClasses:'Třída stylu',charset:'PÅ™iÅ™azená znaková sada',styles:'Styl',selectAnchor:'Vybrat kotvu',anchorName:'Podle jména kotvy',anchorId:'Podle Id objektu',emailAddress:'E-Mailová adresa',emailSubject:'PÅ™edmÄ›t zprávy',emailBody:'TÄ›lo zprávy',noAnchors:'(Ve stránce není definována žádná kotva!)',noUrl:'Zadejte prosím URL odkazu',noEmail:'Zadejte prosím e-mailovou adresu'},anchor:{toolbar:'Vložít/zmÄ›nit záložku',menu:'Vlastnosti záložky',title:'Vlastnosti záložky',name:'Název záložky',errorName:'Zadejte prosím název záložky'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Najít a nahradit',find:'Hledat',replace:'Nahradit',findWhat:'Co hledat:',replaceWith:'Čím nahradit:',notFoundMsg:'Hledaný text nebyl nalezen.',matchCase:'RozliÅ¡ovat velikost písma',matchWord:'Pouze celá slova',matchCyclic:'Procházet opakovanÄ›',replaceAll:'Nahradit vÅ¡e',replaceSuccessMsg:'%1 nahrazení.'},table:{toolbar:'Tabulka',title:'Vlastnosti tabulky',menu:'Vlastnosti tabulky',deleteTable:'Smazat tabulku',rows:'Řádky',columns:'Sloupce',border:'OhraniÄení',align:'Zarovnání',alignLeft:'Vlevo',alignCenter:'Na stÅ™ed',alignRight:'Vpravo',width:'Šířka',widthPx:'bodů',widthPc:'procent',widthUnit:'width unit',height:'Výška',cellSpace:'Vzdálenost bunÄ›k',cellPad:'Odsazení obsahu v buňce',caption:'Popis',summary:'Souhrn',headers:'Záhlaví',headersNone:'Žádné',headersColumn:'První sloupec',headersRow:'První řádek',headersBoth:'Obojí',invalidRows:'PoÄet řádků musí být Äíslo vÄ›tší než 0.',invalidCols:'PoÄet sloupců musí být Äíslo vÄ›tší než 0.',invalidBorder:'Zdaná velikost okraje musí být Äíselná.',invalidWidth:'Zadaná šířka tabulky musí být Äíselná.',invalidHeight:'zadaná výška tabulky musí být Äíselná.',invalidCellSpacing:'Zadaná vzdálenost bunÄ›k musí být Äíselná.',invalidCellPadding:'Zadané odsazení obsahu v buňce musí být Äíselné.',cell:{menu:'Buňka',insertBefore:'Vložit buňku pÅ™ed',insertAfter:'Vložit buňku za',deleteCell:'Smazat buňky',merge:'SlouÄit buňky',mergeRight:'SlouÄit doprava',mergeDown:'SlouÄit dolů',splitHorizontal:'RozdÄ›lit buňky vodorovnÄ›',splitVertical:'RozdÄ›lit buňky svisle',title:'Vlastnosti buňky',cellType:'Typ buňky',rowSpan:'Spojit řádky',colSpan:'Spojit sloupce',wordWrap:'Zalamování',hAlign:'Vodorovné zarovnání',vAlign:'Svislé zarovnání',alignTop:'Nahoru',alignMiddle:'DoprostÅ™ed',alignBottom:'Dolů',alignBaseline:'Na úÄaří',bgColor:'Barva pozadí',borderColor:'Barva okraje',data:'Data',header:'HlaviÄka',yes:'Ano',no:'Ne',invalidWidth:'Zadaná šířka buňky musí být Äíslená.',invalidHeight:'Zadaná výška buňky musí být Äíslená.',invalidRowSpan:'Zadaný poÄet slouÄených řádků musí být celé Äíslo.',invalidColSpan:'Zadaný poÄet slouÄených sloupců musí být celé Äíslo.',chooseColor:'VýbÄ›r'},row:{menu:'Řádek',insertBefore:'Vložit řádek pÅ™ed',insertAfter:'Vložit řádek za',deleteRow:'Smazat řádky'},column:{menu:'Sloupec',insertBefore:'Vložit sloupec pÅ™ed',insertAfter:'Vložit sloupec za',deleteColumn:'Smazat sloupec'}},button:{title:'Vlastnosti tlaÄítka',text:'Popisek',type:'Typ',typeBtn:'TlaÄítko',typeSbm:'Odeslat',typeRst:'Obnovit'},checkboxAndRadio:{checkboxTitle:'Vlastnosti zaÅ¡krtávacího políÄka',radioTitle:'Vlastnosti pÅ™epínaÄe',value:'Hodnota',selected:'ZaÅ¡krtnuto'},form:{title:'Vlastnosti formuláře',menu:'Vlastnosti formuláře',action:'Akce',method:'Metoda',encoding:'Kódování'},select:{title:'Vlastnosti seznamu',selectInfo:'Info',opAvail:'Dostupná nastavení',value:'Hodnota',size:'Velikost',lines:'Řádků',chkMulti:'Povolit mnohonásobné výbÄ›ry',opText:'Text',opValue:'Hodnota',btnAdd:'PÅ™idat',btnModify:'ZmÄ›nit',btnUp:'Nahoru',btnDown:'Dolů',btnSetValue:'Nastavit jako vybranou hodnotu',btnDelete:'Smazat'},textarea:{title:'Vlastnosti textové oblasti',cols:'Sloupců',rows:'Řádků'},textfield:{title:'Vlastnosti textového pole',name:'Název',value:'Hodnota',charWidth:'Šířka ve znacích',maxChars:'Maximální poÄet znaků',type:'Typ',typeText:'Text',typePass:'Heslo'},hidden:{title:'Vlastnosti skrytého pole',name:'Název',value:'Hodnota'},image:{title:'Vlastnosti obrázku',titleButton:'Vlastností obrázkového tlaÄítka',menu:'Vlastnosti obrázku',infoTab:'Informace o obrázku',btnUpload:'Odeslat na server',upload:'Odeslat',alt:'Alternativní text',width:'Šířka',height:'Výška',lockRatio:'Zámek',unlockRatio:'Unlock Ratio',resetSize:'Původní velikost',border:'Okraje',hSpace:'H-mezera',vSpace:'V-mezera',align:'Zarovnání',alignLeft:'Vlevo',alignRight:'Vpravo',alertUrl:'Zadejte prosím URL obrázku',linkTab:'Odkaz',button2Img:'SkuteÄnÄ› chcete pÅ™evést zvolené obrázkové tlaÄítko na obyÄejný obrázek?',img2Button:'SkuteÄnÄ› chcete pÅ™evést zvolený obrázek na obrázkové tlaÄítko?',urlMissing:'Zadané URL zdroje obrázku nebylo nalezeno.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Vlastnosti Flashe',propertiesTab:'Vlastnosti',title:'Vlastnosti Flashe',chkPlay:'Automatické spuÅ¡tÄ›ní',chkLoop:'Opakování',chkMenu:'Nabídka Flash',chkFull:'Povolit celoobrazovkový režim',scale:'Zobrazit',scaleAll:'Zobrazit vÅ¡e',scaleNoBorder:'Bez okraje',scaleFit:'PÅ™izpůsobit',access:'Přístup ke skriptu',accessAlways:'Vždy',accessSameDomain:'Ve stejné doménÄ›',accessNever:'Nikdy',align:'Zarovnání',alignLeft:'Vlevo',alignAbsBottom:'Zcela dolů',alignAbsMiddle:'DoprostÅ™ed',alignBaseline:'Na úÄaří',alignBottom:'Dolů',alignMiddle:'Na stÅ™ed',alignRight:'Vpravo',alignTextTop:'Na horní okraj textu',alignTop:'Nahoru',quality:'Kvalita',qualityBest:'Nejlepší',qualityHigh:'Vysoká',qualityAutoHigh:'Vysoká - auto',qualityMedium:'StÅ™ední',qualityAutoLow:'Nízká - auto',qualityLow:'Nejnižší',windowModeWindow:'Okno',windowModeOpaque:'Neprůhledné',windowModeTransparent:'Průhledné',windowMode:'Režim okna',flashvars:'PromÄ›nné pro Flash',bgcolor:'Barva pozadí',width:'Šířka',height:'Výška',hSpace:'H-mezera',vSpace:'V-mezera',validateSrc:'Zadejte prosím URL odkazu',validateWidth:'Zadaná šířka musí být Äíslo.',validateHeight:'Zadaná výška musí být Äíslo.',validateHSpace:'Zadaná H-mezera musí být Äíslo.',validateVSpace:'Zadaná V-mezera musí být Äíslo.'},spellCheck:{toolbar:'Zkontrolovat pravopis',title:'Kontrola pravopisu',notAvailable:'Omlouváme se, ale služba nyní není dostupná.',errorLoading:'Chyba nahrávání služby aplikace z: %s.',notInDic:'Není ve slovníku',changeTo:'ZmÄ›nit na',btnIgnore:'PÅ™eskoÄit',btnIgnoreAll:'PÅ™eskakovat vÅ¡e',btnReplace:'ZamÄ›nit',btnReplaceAll:'Zaměňovat vÅ¡e',btnUndo:'ZpÄ›t',noSuggestions:'- žádné návrhy -',progress:'Probíhá kontrola pravopisu...',noMispell:'Kontrola pravopisu dokonÄena: Žádné pravopisné chyby nenalezeny',noChanges:'Kontrola pravopisu dokonÄena: Beze zmÄ›n',oneChange:'Kontrola pravopisu dokonÄena: Jedno slovo zmÄ›nÄ›no',manyChanges:'Kontrola pravopisu dokonÄena: %1 slov zmÄ›nÄ›no',ieSpellDownload:'Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?'},smiley:{toolbar:'Smajlíky',title:'Vkládání smajlíků',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 objekt'},numberedlist:'Číslování',bulletedlist:'Odrážky',indent:'ZvÄ›tÅ¡it odsazení',outdent:'ZmenÅ¡it odsazení',justify:{left:'Zarovnat vlevo',center:'Zarovnat na stÅ™ed',right:'Zarovnat vpravo',block:'Zarovnat do bloku'},blockquote:'Citace',clipboard:{title:'Vložit',cutError:'BezpeÄnostní nastavení VaÅ¡eho prohlížeÄe nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjmÄ›te zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).',copyError:'BezpeÄnostní nastavení VaÅ¡eho prohlížeÄe nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).',pasteMsg:'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stisknÄ›te <STRONG>OK</STRONG>.',securityMsg:'Z důvodů nastavení bezpeÄnosti VaÅ¡eho prohlížeÄe nemůže editor pÅ™istupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Jak je vidÄ›t, vkládaný text je kopírován z Wordu. Chcete jej pÅ™ed vložením vyÄistit?',toolbar:'Vložit z Wordu',title:'Vložit z Wordu',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Vložit jako Äistý text',title:'Vložit jako Äistý text'},templates:{button:'Å ablony',title:'Å ablony obsahu',options:'Template Options',insertOption:'Nahradit aktuální obsah',selectPromptMsg:'Prosím zvolte Å¡ablonu pro otevÅ™ení v editoru<br>(aktuální obsah editoru bude ztracen):',emptyListMsg:'(Není definována žádná Å¡ablona)'},showBlocks:'Ukázat bloky',stylesCombo:{label:'Styl',panelTitle:'Formatting Styles',panelTitle1:'Blokové styly',panelTitle2:'Řádkové styly',panelTitle3:'Objektové styly'},format:{label:'Formát',panelTitle:'Formát',tag_p:'Normální',tag_pre:'Naformátováno',tag_address:'Adresa',tag_h1:'Nadpis 1',tag_h2:'Nadpis 2',tag_h3:'Nadpis 3',tag_h4:'Nadpis 4',tag_h5:'Nadpis 5',tag_h6:'Nadpis 6',tag_div:'Normální (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Písmo',voiceLabel:'Písmo',panelTitle:'Písmo'},fontSize:{label:'Velikost',voiceLabel:'Velikost písma',panelTitle:'Velikost'},colorButton:{textColorTitle:'Barva textu',bgColorTitle:'Barva pozadí',panelTitle:'Colors',auto:'Automaticky',more:'Více barev...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Kontrola pravopisu bÄ›hem psaní (SCAYT)',opera_title:'Not supported by Opera',enable:'Zapnout SCAYT',disable:'Vypnout SCAYT',about:'O aplikaci SCAYT',toggle:'VypínaÄ SCAYT',options:'Nastavení',langs:'Jazyky',moreSuggestions:'Více návrhů',ignore:'PÅ™eskoÄit',ignoreAll:'PÅ™eskoÄit vÅ¡e',addWord:'PÅ™idat slovo',emptyDic:'Název slovníku nesmí být prázdný.',optionsTab:'Nastavení',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Jazyky',dictionariesTab:'Slovníky',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'O aplikaci'},about:{title:'O aplikaci CKEditor',dlgTitle:'O aplikaci CKEditor',moreInfo:'Pro informace o lincenci navÅ¡tivte naÅ¡i webovou stránku:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximalizovat',minimize:'Minimalizovat',fakeobjects:{anchor:'Záložka',flash:'Flash animace',div:'Zalomení stránky',unknown:'Neznámý objekt'},resize:'Uchopit pro zmÄ›nu velikosti',colordialog:{title:'VýbÄ›r barvy',options:'Color Options',highlight:'Zvýraznit',selected:'Vybráno',clear:'VyÄistit'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/cy.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/cy.js
new file mode 100644
index 000000000..793c04614
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/cy.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.cy={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Tarddle',newPage:'Tudalen newydd',save:'Cadw',preview:'Rhagolwg',cut:'Torri',copy:'Copïo',paste:'Gludo',print:'Argraffu',underline:'Tanlinellu',bold:'Bras',italic:'Italig',selectAll:'Dewis Popeth',removeFormat:'Tynnu Fformat',strike:'Llinell Trwyddo',subscript:'Is-sgript',superscript:'Uwchsgript',horizontalrule:'Mewnosod Llinell Lorweddol',pagebreak:'Mewnosod Toriad Tudalen i Argraffu',unlink:'Datgysylltu',undo:'Dadwneud',redo:'Ailadrodd',common:{browseServer:"Pori'r Gweinydd",url:'URL',protocol:'Protocol',upload:'Lanlwytho',uploadSubmit:"Anfon i'r Gweinydd",image:'Delwedd',flash:'Flash',form:'Ffurflen',checkbox:'Blwch ticio',radio:'Botwm Radio',textField:'Maes Testun',textarea:'Ardal Testun',hiddenField:'Maes Cudd',button:'Botwm',select:'Maes Dewis',imageButton:'Botwm Delwedd',notSet:'<heb osod>',id:'Id',name:'Name',langDir:'Cyfeiriad Iaith',langDirLtr:"Chwith i'r Dde (LTR)",langDirRtl:"Dde i'r Chwith (RTL)",langCode:'Cod Iaith',longDescr:'URL Disgrifiad Hir',cssClass:'Dosbarth Dalen Arddull',advisoryTitle:'Teitl Cynghorol',cssStyle:'Arddull',ok:'Iawn',cancel:'Diddymu',close:'Close',preview:'Preview',generalTab:'Cyffredinol',advancedTab:'Uwch',validateNumberFailed:"Nid yw'r gwerth hwn yn rhif.",confirmNewPage:"Byddwch yn colli unrhyw newidiadau i'r cynnwys sydd heb eu cadw. A ydych am barhau i lwytho tudalen newydd?",confirmCancel:"Mae rhai o'r opsiynau wedi'u newid. A ydych wir am gau'r deialog?",options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, ddim ar gael</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Mewnosod Nodau Arbennig',title:'Dewis Nod Arbennig',options:'Special Character Options'},link:{toolbar:'Dolen',other:'<eraill>',menu:'Golygu Dolen',title:'Dolen',info:'Gwyb ar y Ddolen',target:'Targed',upload:'Lanlwytho',advanced:'Uwch',type:'Math y Ddolen',toUrl:'URL',toAnchor:'Dolen at angor yn y testun',toEmail:'E-bost',targetFrame:'<ffrâm>',targetPopup:'<ffenestr bop>',targetFrameName:'Enw Ffrâm y Targed',targetPopupName:'Enw Ffenestr Bop',popupFeatures:'Nodweddion Ffenestr Bop',popupResizable:'Ailfeintiol',popupStatusBar:'Bar Statws',popupLocationBar:'Bar Safle',popupToolbar:'Bar Offer',popupMenuBar:'Dewislen',popupFullScreen:'Sgrin Llawn (IE)',popupScrollBars:'Barrau Sgrolio',popupDependent:'Dibynnol (Netscape)',popupWidth:'Lled',popupLeft:'Safle Chwith',popupHeight:'Uchder',popupTop:'Safle Top',id:'Id',langDir:'Cyfeiriad Iaith',langDirLTR:"Chwith i'r Dde (LTR)",langDirRTL:"Dde i'r Chwith (RTL)",acccessKey:'Allwedd Mynediad',name:'Enw',langCode:'Cod Iaith',tabIndex:'Indecs Tab',advisoryTitle:'Teitl Cynghorol',advisoryContentType:'Math y Cynnwys Cynghorol',cssClasses:'Dosbarthiadau Dalen Arddull',charset:"Set nodau'r Adnodd Cysylltiedig",styles:'Arddull',selectAnchor:'Dewiswch Angor',anchorName:"Gan Enw'r Angor",anchorId:'Gan Id yr Elfen',emailAddress:'Cyfeiriad E-Bost',emailSubject:'Testun y Message Subject',emailBody:'Pwnc y Neges',noAnchors:'(Dim angorau ar gael yn y ddogfen)',noUrl:'Teipiwch URL y ddolen',noEmail:'Teipiwch gyfeiriad yr e-bost'},anchor:{toolbar:'Angor',menu:'Golygwch yr Angor',title:"Priodweddau'r Angor",name:"Enw'r Angor",errorName:"Teipiwch enw'r angor"},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Chwilio ac Amnewid',find:'Chwilio',replace:'Amnewid',findWhat:"Chwilio'r term:",replaceWith:'Amnewid gyda:',notFoundMsg:"Nid oedd y testun wedi'i ddarganfod.",matchCase:"Cyfateb i'r cas",matchWord:'Cyfateb gair cyfan',matchCyclic:'Cyfateb cylchol',replaceAll:'Amnewid pob un',replaceSuccessMsg:'Amnewidiwyd %1 achlysur.'},table:{toolbar:'Tabl',title:'Nodweddion Tabl',menu:'Nodweddion Tabl',deleteTable:'Dileu Tabl',rows:'Rhesi',columns:'Colofnau',border:'Maint yr Ymyl',align:'Aliniad',alignLeft:'Chwith',alignCenter:'Canol',alignRight:'Dde',width:'Lled',widthPx:'picsel',widthPc:'y cant',widthUnit:'width unit',height:'Uchder',cellSpace:"Bylchu'r gell",cellPad:"Padio'r gell",caption:'Pennawd',summary:'Crynodeb',headers:'Penynnau',headersNone:'Dim',headersColumn:'Colofn gyntaf',headersRow:'Rhes gyntaf',headersBoth:'Y Ddau',invalidRows:"Mae'n rhaid cael o leiaf un rhes.",invalidCols:"Mae'n rhaid cael o leiaf un golofn.",invalidBorder:"Mae'n rhaid i faint yr ymyl fod yn rhif.",invalidWidth:"Mae'n rhaid i led y tabl fod yn rhif.",invalidHeight:"Mae'n rhaid i uchder y tabl fod yn rhif.",invalidCellSpacing:"Mae'n rhaid i fylchiad y gell fod yn rhif.",invalidCellPadding:"Mae'n rhaid i badiad y gell fod yn rhif.",cell:{menu:'Cell',insertBefore:'Mewnosod Cell Cyn',insertAfter:'Mewnosod Cell Ar Ôl',deleteCell:'Dileu Celloedd',merge:'Cyfuno Celloedd',mergeRight:"Cyfuno i'r Dde",mergeDown:'Cyfuno i Lawr',splitHorizontal:"Hollti'r Gell yn Lorweddol",splitVertical:"Hollti'r Gell yn Fertigol",title:"Priodweddau'r Gell",cellType:'Math y Gell',rowSpan:'Rhychwant Rhesi',colSpan:'Rhychwant Colofnau',wordWrap:'Lapio Geiriau',hAlign:'Aliniad Llorweddol',vAlign:'Aliniad Fertigol',alignTop:'Top',alignMiddle:'Canol',alignBottom:'Gwaelod',alignBaseline:'Baslinell',bgColor:'Lliw Cefndir',borderColor:'Lliw Ymyl',data:'Data',header:'Pennyn',yes:'Ie',no:'Na',invalidWidth:"Mae'n rhaid i led y gell fod yn rhif.",invalidHeight:"Mae'n rhaid i uchder y gell fod yn rhif.",invalidRowSpan:"Mae'n rhaid i rychwant y rhesi fod yn gyfanrif.",invalidColSpan:"Mae'n rhaid i rychwant y colofnau fod yn gyfanrif.",chooseColor:'Choose'},row:{menu:'Rhes',insertBefore:'Mewnosod Rhes Cyn',insertAfter:'Mewnosod Rhes Ar Ôl',deleteRow:'Dileu Rhesi'},column:{menu:'Colofn',insertBefore:'Mewnosod Colofn Cyn',insertAfter:'Mewnosod Colofn Ar Ôl',deleteColumn:'Dileu Colofnau'}},button:{title:'Priodweddau Botymau',text:'Testun (Gwerth)',type:'Math',typeBtn:'Botwm',typeSbm:'Gyrru',typeRst:'Ailosod'},checkboxAndRadio:{checkboxTitle:'Priodweddau Blwch Ticio',radioTitle:'Priodweddau Botwm Radio',value:'Gwerth',selected:'Dewiswyd'},form:{title:'Priodweddau Ffurflen',menu:'Priodweddau Ffurflen',action:'Gweithred',method:'Dull',encoding:'Amgodio'},select:{title:'Priodweddau Maes Dewis',selectInfo:'Gwyb Dewis',opAvail:'Opsiynau ar Gael',value:'Gwerth',size:'Maint',lines:'llinellau',chkMulti:'Caniatàu aml-ddewisiadau',opText:'Testun',opValue:'Gwerth',btnAdd:'Ychwanegu',btnModify:'Newid',btnUp:'Lan',btnDown:'Lawr',btnSetValue:'Gosod fel gwerth a ddewiswyd',btnDelete:'Dileu'},textarea:{title:'Priodweddau Ardal Testun',cols:'Colofnau',rows:'Rhesi'},textfield:{title:'Priodweddau Maes Testun',name:'Enw',value:'Gwerth',charWidth:'Lled Nod',maxChars:'Uchafswm y Nodau',type:'Math',typeText:'Testun',typePass:'Cyfrinair'},hidden:{title:'Priodweddau Maes Cudd',name:'Enw',value:'Gwerth'},image:{title:'Priodweddau Delwedd',titleButton:'Priodweddau Botwm Delwedd',menu:'Priodweddau Delwedd',infoTab:'Gwyb Delwedd',btnUpload:"Anfon i'r Gweinydd",upload:'lanlwytho',alt:'Testun Amgen',width:'Lled',height:'Uchder',lockRatio:'Cloi Cymhareb',unlockRatio:'Unlock Ratio',resetSize:'Ailosod Maint',border:'Ymyl',hSpace:'BwlchLl',vSpace:'BwlchF',align:'Alinio',alignLeft:'Chwith',alignRight:'Dde',alertUrl:'Rhowch URL y ddelwedd',linkTab:'Dolen',button2Img:"Ydych am drawsffurfio'r botwm ddelwedd hwn ar ddelwedd syml?",img2Button:"Ydych am drawsffurfio'r ddelwedd hon ar fotwm delwedd?",urlMissing:"URL tarddle'r ddelwedd ar goll.",validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Priodweddau Flash',propertiesTab:'Priodweddau',title:'Priodweddau Flash',chkPlay:'AwtoChwarae',chkLoop:'Lwpio',chkMenu:'Galluogi Dewislen Flash',chkFull:'Caniatàu Sgrin Llawn',scale:'Graddfa',scaleAll:'Dangos pob',scaleNoBorder:'Dim Ymyl',scaleFit:'Ffit Union',access:'Mynediad Sgript',accessAlways:'Pob amser',accessSameDomain:"R'un parth",accessNever:'Byth',align:'Alinio',alignLeft:'Chwith',alignAbsBottom:'Gwaelod Abs',alignAbsMiddle:'Canol Abs',alignBaseline:'Baslinell',alignBottom:'Gwaelod',alignMiddle:'Canol',alignRight:'Dde',alignTextTop:'Testun Top',alignTop:'Top',quality:'Ansawdd',qualityBest:'Gorau',qualityHigh:'Uchel',qualityAutoHigh:'Uchel Awto',qualityMedium:'Canolig',qualityAutoLow:'Isel Awto',qualityLow:'Isel',windowModeWindow:'Ffenestr',windowModeOpaque:'Afloyw',windowModeTransparent:'Tryloyw',windowMode:'Modd ffenestr',flashvars:'Newidynnau ar gyfer Flash',bgcolor:'Lliw cefndir',width:'Lled',height:'Uchder',hSpace:'BwlchLl',vSpace:'BwlchF',validateSrc:'Ni all yr URL fod yn wag.',validateWidth:"Rhaid i'r Lled fod yn rhif.",validateHeight:"Rhaid i'r Uchder fod yn rhif.",validateHSpace:"Rhaid i'r BwlchLl fod yn rhif.",validateVSpace:"Rhaid i'r BwlchF fod yn rhif."},spellCheck:{toolbar:'Gwirio Sillafu',title:'Gwirio Sillafu',notAvailable:"Nid yw'r gwasanaeth hwn ar gael yn bresennol.",errorLoading:'Error loading application service host: %s.',notInDic:"Nid i'w gael yn y geiriadur",changeTo:'Newid i',btnIgnore:'Anwybyddu Un',btnIgnoreAll:'Anwybyddu Pob',btnReplace:'Amnewid Un',btnReplaceAll:'Amnewid Pob',btnUndo:'Dadwneud',noSuggestions:'- Dim awgrymiadau -',progress:'Gwirio sillafu yn ar y gweill...',noMispell:'Gwirio sillafu wedi gorffen: Dim camsillaf.',noChanges:'Gwirio sillafu wedi gorffen: Dim newidiadau',oneChange:'Gwirio sillafu wedi gorffen: Newidiwyd 1 gair',manyChanges:'Gwirio sillafu wedi gorffen: Newidiwyd %1 gair',ieSpellDownload:'Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?'},smiley:{toolbar:'Gwenoglun',title:'Mewnosod Gwenoglun',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'Elfen %1'},numberedlist:'Mewnosod/Tynnu Rhestr Rhifol',bulletedlist:'Mewnosod/Tynnu Rhestr Bwled',indent:"Cynyddu'r Mewnoliad",outdent:"Lleihau'r Mewnoliad",justify:{left:"Alinio i'r Chwith",center:"Alinio i'r Canol",right:"Alinio i'r Dde",block:'Aliniad Bloc'},blockquote:'Dyfyniad bloc',clipboard:{title:'Gludo',cutError:"Nid yw gosodiadau diogelwch eich porwr yn caniatàu'r golygydd i gynnal 'gweithredoedd torri' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).",copyError:"Nid yw gosodiadau diogelwch eich porwr yn caniatàu'r golygydd i gynnal 'gweithredoedd copïo' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).",pasteMsg:"Gludwch i mewn i'r blwch canlynol gan ddefnyddio'r bysellfwrdd (<strong>Ctrl/Cmd+V</strong>) a phwyso <strong>Iawn</strong>.",securityMsg:"Oherwydd gosodiadau diogelwch eich porwr, nid yw'r porwr yn gallu ennill mynediad i'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i'r ffenestr hon.",pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Gludo o Word',title:'Gludo o Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Gludo fel testun plaen',title:'Gludo fel Testun Plaen'},templates:{button:'Templedi',title:'Templedi Cynnwys',options:'Template Options',insertOption:'Amnewid y cynnwys go iawn',selectPromptMsg:"Dewiswch dempled i'w agor yn y golygydd",emptyListMsg:"(Dim templedi wedi'u diffinio)"},showBlocks:'Dangos Blociau',stylesCombo:{label:'Arddulliau',panelTitle:'Formatting Styles',panelTitle1:'Arddulliau Bloc',panelTitle2:'Arddulliau Mewnol',panelTitle3:'Arddulliau Gwrthrych'},format:{label:'Fformat',panelTitle:'Fformat Paragraff',tag_p:'Normal',tag_pre:"Wedi'i Fformatio",tag_address:'Cyfeiriad',tag_h1:'Pennawd 1',tag_h2:'Pennawd 2',tag_h3:'Pennawd 3',tag_h4:'Pennawd 4',tag_h5:'Pennawd 5',tag_h6:'Pennawd 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Ffont',voiceLabel:'Ffont',panelTitle:"Enw'r Ffont"},fontSize:{label:'Maint',voiceLabel:'Maint y Ffont',panelTitle:'Maint y Ffont'},colorButton:{textColorTitle:'Lliw Testun',bgColorTitle:'Lliw Cefndir',panelTitle:'Colors',auto:'Awtomatig',more:'Mwy o Liwiau...'},colors:{'000':'Du',800000:'Marwn','8B4513':'Brown Cyfrwy','2F4F4F':'Llechen Tywyll','008080':'Corhwyad','000080':'Nefi','4B0082':'Indigo',696969:'Llwyd Pwl',B22222:'Bric Tân',A52A2A:'Brown',DAA520:'Rhoden Aur','006400':'Gwyrdd Tywyll','40E0D0':'Gwyrddlas','0000CD':'Glas Canolig',800080:'Porffor',808080:'Llwyd',F00:'Coch',FF8C00:'Oren Tywyll',FFD700:'Aur','008000':'Gwyrdd','0FF':'Cyan','00F':'Glas',EE82EE:'Fioled',A9A9A9:'Llwyd Tywyll',FFA07A:'Samwn Golau',FFA500:'Oren',FFFF00:'Melyn','00FF00':'Leim',AFEEEE:'Gwyrddlas Golau',ADD8E6:'Glas Golau',DDA0DD:'Eirinen',D3D3D3:'Llwyd Golau',FFF0F5:'Gwrid Lafant',FAEBD7:'Gwyn Hynafol',FFFFE0:'Melyn Golau',F0FFF0:'Melwn Gwyrdd Golau',F0FFFF:'Aswr',F0F8FF:'Glas Alys',E6E6FA:'Lafant',FFF:'Gwyn'},scayt:{title:"Gwirio'r Sillafu Wrth Deipio",opera_title:'Not supported by Opera',enable:'Galluogi SCAYT',disable:'Analluogi SCAYT',about:'Ynghylch SCAYT',toggle:'Togl SCAYT',options:'Opsiynau',langs:'Ieithoedd',moreSuggestions:'Awgrymiadau pellach',ignore:'Anwybyddu',ignoreAll:'Anwybyddu pob',addWord:'Ychwanegu Gair',emptyDic:"Ni ddylai enw'r geiriadur fod yn wag.",optionsTab:'Opsiynau',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Ieithoedd',dictionariesTab:'Geiriaduron',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Ynghylch'},about:{title:'Ynghylch CKEditor',dlgTitle:'Ynghylch CKEditor',moreInfo:"Am wybodaeth ynghylch trwyddedau, ewch i'n gwefan:",copy:'Hawlfraint &copy; $1. Cedwir pob hawl.'},maximize:'Mwyhau',minimize:'Lleihau',fakeobjects:{anchor:'Angor',flash:'Animeiddiant Flash',div:'Toriad Tudalen',unknown:'Gwrthrych Anhysbys'},resize:'Llusgo i ailfeintio',colordialog:{title:'Dewis lliw',options:'Color Options',highlight:'Uwcholeuo',selected:'Dewiswyd',clear:'Clirio'},toolbarCollapse:"Cyfangu'r Bar Offer",toolbarExpand:"Ehangu'r Bar Offer",bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/da.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/da.js
new file mode 100644
index 000000000..5b096be51
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/da.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.da={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Kilde',newPage:'Ny side',save:'Gem',preview:'Vis eksempel',cut:'Klip',copy:'Kopiér',paste:'Indsæt',print:'Udskriv',underline:'Understreget',bold:'Fed',italic:'Kursiv',selectAll:'Vælg alt',removeFormat:'Fjern formatering',strike:'Gennemstreget',subscript:'Sænket skrift',superscript:'Hævet skrift',horizontalrule:'Indsæt vandret streg',pagebreak:'Indsæt sideskift',unlink:'Fjern hyperlink',undo:'Fortryd',redo:'Annullér fortryd',common:{browseServer:'Gennemse...',url:'URL',protocol:'Protokol',upload:'Upload',uploadSubmit:'Upload',image:'Indsæt billede',flash:'Indsæt Flash',form:'Indsæt formular',checkbox:'Indsæt afkrydsningsfelt',radio:'Indsæt alternativknap',textField:'Indsæt tekstfelt',textarea:'Indsæt tekstboks',hiddenField:'Indsæt skjult felt',button:'Indsæt knap',select:'Indsæt liste',imageButton:'Indsæt billedknap',notSet:'<intet valgt>',id:'Id',name:'Navn',langDir:'Tekstretning',langDirLtr:'Fra venstre mod højre (LTR)',langDirRtl:'Fra højre mod venstre (RTL)',langCode:'Sprogkode',longDescr:'Udvidet beskrivelse',cssClass:'Typografiark (CSS)',advisoryTitle:'Titel',cssStyle:'Typografi (CSS)',ok:'OK',cancel:'Annullér',close:'Close',preview:'Preview',generalTab:'Generelt',advancedTab:'Avanceret',validateNumberFailed:'Værdien er ikke et tal.',confirmNewPage:'Alt indhold, der ikke er blevet gemt, vil gå tabt. Er du sikker på, at du vil indlæse en ny side?',confirmCancel:'Nogle af indstillingerne er blevet ændret. Er du sikker på, at du vil lukke vinduet?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, ikke tilgængelig</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Indsæt symbol',title:'Vælg symbol',options:'Special Character Options'},link:{toolbar:'Indsæt/redigér hyperlink',other:'<anden>',menu:'Redigér hyperlink',title:'Egenskaber for hyperlink',info:'Generelt',target:'Mål',upload:'Upload',advanced:'Avanceret',type:'Type',toUrl:'URL',toAnchor:'Bogmærke på denne side',toEmail:'E-mail',targetFrame:'<ramme>',targetPopup:'<popup vindue>',targetFrameName:'Destinationsvinduets navn',targetPopupName:'Popup vinduets navn',popupFeatures:'Egenskaber for popup',popupResizable:'Justérbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Værktøjslinje',popupMenuBar:'Menulinje',popupFullScreen:'Fuld skærm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Koblet/dependent (Netscape)',popupWidth:'Bredde',popupLeft:'Position fra venstre',popupHeight:'Højde',popupTop:'Position fra toppen',id:'Id',langDir:'Tekstretning',langDirLTR:'Fra venstre mod højre (LTR)',langDirRTL:'Fra højre mod venstre (RTL)',acccessKey:'Genvejstast',name:'Navn',langCode:'Tekstretning',tabIndex:'Tabulator indeks',advisoryTitle:'Titel',advisoryContentType:'Indholdstype',cssClasses:'Typografiark',charset:'Tegnsæt',styles:'Typografi',selectAnchor:'Vælg et anker',anchorName:'Efter anker navn',anchorId:'Efter element Id',emailAddress:'E-mail adresse',emailSubject:'Emne',emailBody:'Besked',noAnchors:'(Ingen bogmærker i dokumentet)',noUrl:'Indtast hyperlink URL!',noEmail:'Indtast e-mail adresse!'},anchor:{toolbar:'Indsæt/redigér bogmærke',menu:'Egenskaber for bogmærke',title:'Egenskaber for bogmærke',name:'Bogmærke navn',errorName:'Indtast bogmærke navn'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Søg og erstat',find:'Søg',replace:'Erstat',findWhat:'Søg efter:',replaceWith:'Erstat med:',notFoundMsg:'Søgeteksten blev ikke fundet',matchCase:'Forskel på store og små bogstaver',matchWord:'Kun hele ord',matchCyclic:'Match cyklisk',replaceAll:'Erstat alle',replaceSuccessMsg:'%1 forekomst(er) erstattet.'},table:{toolbar:'Tabel',title:'Egenskaber for tabel',menu:'Egenskaber for tabel',deleteTable:'Slet tabel',rows:'Rækker',columns:'Kolonner',border:'Rammebredde',align:'Justering',alignLeft:'Venstrestillet',alignCenter:'Centreret',alignRight:'Højrestillet',width:'Bredde',widthPx:'pixels',widthPc:'procent',widthUnit:'width unit',height:'Højde',cellSpace:'Celleafstand',cellPad:'Cellemargen',caption:'Titel',summary:'Resumé',headers:'Header',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første række',headersBoth:'Begge',invalidRows:'Antallet af rækker skal være større end 0.',invalidCols:'Antallet af kolonner skal være større end 0.',invalidBorder:'Rammetykkelse skal være et tal.',invalidWidth:'Tabelbredde skal være et tal.',invalidHeight:'Tabelhøjde skal være et tal.',invalidCellSpacing:'Celleafstand skal være et tal.',invalidCellPadding:'Cellemargen skal være et tal.',cell:{menu:'Celle',insertBefore:'Indsæt celle før',insertAfter:'Indsæt celle efter',deleteCell:'Slet celle',merge:'Flet celler',mergeRight:'Flet til højre',mergeDown:'Flet nedad',splitHorizontal:'Del celle vandret',splitVertical:'Del celle lodret',title:'Celleegenskaber',cellType:'Celletype',rowSpan:'Række span (rows span)',colSpan:'Kolonne span (columns span)',wordWrap:'Tekstombrydning',hAlign:'Vandret justering',vAlign:'Lodret justering',alignTop:'Top',alignMiddle:'Midt',alignBottom:'Bund',alignBaseline:'Grundlinje',bgColor:'Baggrundsfarve',borderColor:'Rammefarve',data:'Data',header:'Header',yes:'Ja',no:'Nej',invalidWidth:'Cellebredde skal være et tal.',invalidHeight:'Cellehøjde skal være et tal.',invalidRowSpan:'Række span skal være et heltal.',invalidColSpan:'Kolonne span skal være et heltal.',chooseColor:'Choose'},row:{menu:'Række',insertBefore:'Indsæt række før',insertAfter:'Indsæt række efter',deleteRow:'Slet række'},column:{menu:'Kolonne',insertBefore:'Indsæt kolonne før',insertAfter:'Indsæt kolonne efter',deleteColumn:'Slet kolonne'}},button:{title:'Egenskaber for knap',text:'Tekst',type:'Type',typeBtn:'Knap',typeSbm:'Send',typeRst:'Nulstil'},checkboxAndRadio:{checkboxTitle:'Egenskaber for afkrydsningsfelt',radioTitle:'Egenskaber for alternativknap',value:'Værdi',selected:'Valgt'},form:{title:'Egenskaber for formular',menu:'Egenskaber for formular',action:'Handling',method:'Metode',encoding:'Kodning (encoding)'},select:{title:'Egenskaber for liste',selectInfo:'Generelt',opAvail:'Valgmuligheder',value:'Værdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillad flere valg',opText:'Tekst',opValue:'Værdi',btnAdd:'Tilføj',btnModify:'Redigér',btnUp:'Op',btnDown:'Ned',btnSetValue:'Sæt som valgt',btnDelete:'Slet'},textarea:{title:'Egenskaber for tekstboks',cols:'Kolonner',rows:'Rækker'},textfield:{title:'Egenskaber for tekstfelt',name:'Navn',value:'Værdi',charWidth:'Bredde (tegn)',maxChars:'Max. antal tegn',type:'Type',typeText:'Tekst',typePass:'Adgangskode'},hidden:{title:'Egenskaber for skjult felt',name:'Navn',value:'Værdi'},image:{title:'Egenskaber for billede',titleButton:'Egenskaber for billedknap',menu:'Egenskaber for billede',infoTab:'Generelt',btnUpload:'Upload',upload:'Upload',alt:'Alternativ tekst',width:'Bredde',height:'Højde',lockRatio:'Lås størrelsesforhold',unlockRatio:'Unlock Ratio',resetSize:'Nulstil størrelse',border:'Ramme',hSpace:'Vandret margen',vSpace:'Lodret margen',align:'Justering',alignLeft:'Venstre',alignRight:'Højre',alertUrl:'Indtast stien til billedet',linkTab:'Hyperlink',button2Img:'Vil du lave billedknappen om til et almindeligt billede?',img2Button:'Vil du lave billedet om til en billedknap?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Egenskaber for Flash',propertiesTab:'Egenskaber',title:'Egenskaber for Flash',chkPlay:'Automatisk afspilning',chkLoop:'Gentagelse',chkMenu:'Vis Flash menu',chkFull:'Tillad fuldskærm',scale:'Skalér',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Tilpas størrelse',access:'Script adgang',accessAlways:'Altid',accessSameDomain:'Samme domæne',accessNever:'Aldrig',align:'Justering',alignLeft:'Venstre',alignAbsBottom:'Absolut nederst',alignAbsMiddle:'Absolut centreret',alignBaseline:'Grundlinje',alignBottom:'Nederst',alignMiddle:'Centreret',alignRight:'Højre',alignTextTop:'Toppen af teksten',alignTop:'Øverst',quality:'Kvalitet',qualityBest:'Bedste',qualityHigh:'Høj',qualityAutoHigh:'Auto høj',qualityMedium:'Medium',qualityAutoLow:'Auto lav',qualityLow:'Lav',windowModeWindow:'Vindue',windowModeOpaque:'Gennemsigtig (opaque)',windowModeTransparent:'Transparent',windowMode:'Vinduestilstand',flashvars:'Variabler for Flash',bgcolor:'Baggrundsfarve',width:'Bredde',height:'Højde',hSpace:'Vandret margen',vSpace:'Lodret margen',validateSrc:'Indtast hyperlink URL!',validateWidth:'Bredde skal være et tal.',validateHeight:'Højde skal være et tal.',validateHSpace:'Vandret margen skal være et tal.',validateVSpace:'Lodret margen skal være et tal.'},spellCheck:{toolbar:'Stavekontrol',title:'Stavekontrol',notAvailable:'Stavekontrol er desværre ikke tilgængelig.',errorLoading:'Fejl ved indlæsning af host: %s.',notInDic:'Ikke i ordbogen',changeTo:'Forslag',btnIgnore:'Ignorér',btnIgnoreAll:'Ignorér alle',btnReplace:'Erstat',btnReplaceAll:'Erstat alle',btnUndo:'Tilbage',noSuggestions:'(ingen forslag)',progress:'Stavekontrollen arbejder...',noMispell:'Stavekontrol færdig: Ingen fejl fundet',noChanges:'Stavekontrol færdig: Ingen ord ændret',oneChange:'Stavekontrol færdig: Et ord ændret',manyChanges:'Stavekontrol færdig: %1 ord ændret',ieSpellDownload:'Stavekontrol ikke installeret. Vil du installere den nu?'},smiley:{toolbar:'Smiley',title:'Vælg smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Talopstilling',bulletedlist:'Punktopstilling',indent:'Forøg indrykning',outdent:'Formindsk indrykning',justify:{left:'Venstrestillet',center:'Centreret',right:'Højrestillet',block:'Lige margener'},blockquote:'Blokcitat',clipboard:{title:'Indsæt',cutError:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).',copyError:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).',pasteMsg:'Indsæt i feltet herunder (<STRONG>Ctrl/Cmd+V</STRONG>) og klik på <STRONG>OK</STRONG>.',securityMsg:'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.<br><br>Du skal indsætte udklipsholderens indhold i dette vindue igen.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?',toolbar:'Indsæt fra Word',title:'Indsæt fra Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Indsæt som ikke-formateret tekst',title:'Indsæt som ikke-formateret tekst'},templates:{button:'Skabeloner',title:'Indholdsskabeloner',options:'Template Options',insertOption:'Erstat det faktiske indhold',selectPromptMsg:'Vælg den skabelon, som skal åbnes i editoren (nuværende indhold vil blive overskrevet):',emptyListMsg:'(Der er ikke defineret nogen skabelon)'},showBlocks:'Vis afsnitsmærker',stylesCombo:{label:'Typografi',panelTitle:'Formatting Styles',panelTitle1:'Block typografi',panelTitle2:'Inline typografi',panelTitle3:'Object typografi'},format:{label:'Formatering',panelTitle:'Formatering',tag_p:'Normal',tag_pre:'Formateret',tag_address:'Adresse',tag_h1:'Overskrift 1',tag_h2:'Overskrift 2',tag_h3:'Overskrift 3',tag_h4:'Overskrift 4',tag_h5:'Overskrift 5',tag_h6:'Overskrift 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Skrifttype',voiceLabel:'Skrifttype',panelTitle:'Skrifttype'},fontSize:{label:'Skriftstørrelse',voiceLabel:'Skriftstørrelse',panelTitle:'Skriftstørrelse'},colorButton:{textColorTitle:'Tekstfarve',bgColorTitle:'Baggrundsfarve',panelTitle:'Colors',auto:'Automatisk',more:'Flere farver...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Stavekontrol mens du skriver',opera_title:'Not supported by Opera',enable:'Aktivér SCAYT',disable:'Deaktivér SCAYT',about:'Om SCAYT',toggle:'Skift/toggle SCAYT',options:'Indstillinger',langs:'Sprog',moreSuggestions:'Flere forslag',ignore:'Ignorér',ignoreAll:'Ignorér alle',addWord:'Tilføj ord',emptyDic:'Ordbogsnavn må ikke være tom.',optionsTab:'Indstillinger',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Sprog',dictionariesTab:'Ordbøger',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',moreInfo:'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):',copy:'Copyright &copy; $1. Alle rettigheder forbeholdes.'},maximize:'Maximér',minimize:'Minimize',fakeobjects:{anchor:'Anker',flash:'Flashanimation',div:'Sideskift',unknown:'Ukendt objekt'},resize:'Træk for at skalere',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/de.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/de.js
new file mode 100644
index 000000000..cc146b36b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/de.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.de={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Quellcode',newPage:'Neue Seite',save:'Speichern',preview:'Vorschau',cut:'Ausschneiden',copy:'Kopieren',paste:'Einfügen',print:'Drucken',underline:'Unterstrichen',bold:'Fett',italic:'Kursiv',selectAll:'Alles auswählen',removeFormat:'Formatierungen entfernen',strike:'Durchgestrichen',subscript:'Tiefgestellt',superscript:'Hochgestellt',horizontalrule:'Horizontale Linie einfügen',pagebreak:'Seitenumbruch einfügen',unlink:'Link entfernen',undo:'Rückgängig',redo:'Wiederherstellen',common:{browseServer:'Server durchsuchen',url:'URL',protocol:'Protokoll',upload:'Upload',uploadSubmit:'Zum Server senden',image:'Bild',flash:'Flash',form:'Formular',checkbox:'Checkbox',radio:'Radiobutton',textField:'Textfeld einzeilig',textarea:'Textfeld mehrzeilig',hiddenField:'verstecktes Feld',button:'Klickbutton',select:'Auswahlfeld',imageButton:'Bildbutton',notSet:'<nichts>',id:'ID',name:'Name',langDir:'Schreibrichtung',langDirLtr:'Links nach Rechts (LTR)',langDirRtl:'Rechts nach Links (RTL)',langCode:'Sprachenkürzel',longDescr:'Langform URL',cssClass:'Stylesheet Klasse',advisoryTitle:'Titel Beschreibung',cssStyle:'Style',ok:'OK',cancel:'Abbrechen',close:'Schließen',preview:'Vorschau',generalTab:'Allgemein',advancedTab:'Erweitert',validateNumberFailed:'Dieser Wert ist keine Nummer.',confirmNewPage:'Alle nicht gespeicherten Änderungen gehen verlohren. Sind sie sicher die neue Seite zu laden?',confirmCancel:'Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?',options:'Optionen',target:'Zielseite',targetNew:'Neues Fenster (_blank)',targetTop:'Oberstes Fenster (_top)',targetSelf:'Gleiches Fenster (_self)',targetParent:'Oberes Fenster (_parent)',langDirLTR:'Links nach Rechts (LNR)',langDirRTL:'Rechts nach Links (RNL)',styles:'Style',cssClasses:'Stylesheet Klasse',unavailable:'%1<span class="cke_accessibility">, nicht verfügbar</span>'},contextmenu:{options:'Context Menu Optionen'},specialChar:{toolbar:'Sonderzeichen einfügen/editieren',title:'Sonderzeichen auswählen',options:'Sonderzeichen Optionen'},link:{toolbar:'Link einfügen/editieren',other:'<andere>',menu:'Link editieren',title:'Link',info:'Link-Info',target:'Zielseite',upload:'Upload',advanced:'Erweitert',type:'Link-Typ',toUrl:'URL',toAnchor:'Anker in dieser Seite',toEmail:'E-Mail',targetFrame:'<Frame>',targetPopup:'<Pop-up Fenster>',targetFrameName:'Ziel-Fenster-Name',targetPopupName:'Pop-up Fenster-Name',popupFeatures:'Pop-up Fenster-Eigenschaften',popupResizable:'Größe änderbar',popupStatusBar:'Statusleiste',popupLocationBar:'Adress-Leiste',popupToolbar:'Werkzeugleiste',popupMenuBar:'Menü-Leiste',popupFullScreen:'Vollbild (IE)',popupScrollBars:'Rollbalken',popupDependent:'Abhängig (Netscape)',popupWidth:'Breite',popupLeft:'Linke Position',popupHeight:'Höhe',popupTop:'Obere Position',id:'Id',langDir:'Schreibrichtung',langDirLTR:'Links nach Rechts (LTR)',langDirRTL:'Rechts nach Links (RTL)',acccessKey:'Zugriffstaste',name:'Name',langCode:'Schreibrichtung',tabIndex:'Tab-Index',advisoryTitle:'Titel Beschreibung',advisoryContentType:'Inhaltstyp',cssClasses:'Stylesheet Klasse',charset:'Ziel-Zeichensatz',styles:'Style',selectAnchor:'Anker auswählen',anchorName:'nach Anker Name',anchorId:'nach Element Id',emailAddress:'E-Mail Addresse',emailSubject:'Betreffzeile',emailBody:'Nachrichtentext',noAnchors:'(keine Anker im Dokument vorhanden)',noUrl:'Bitte geben Sie die Link-URL an',noEmail:'Bitte geben Sie e-Mail Adresse an'},anchor:{toolbar:'Anker einfügen/editieren',menu:'Anker-Eigenschaften',title:'Anker-Eigenschaften',name:'Anker Name',errorName:'Bitte geben Sie den Namen des Ankers ein'},list:{numberedTitle:'Nummerierte Listen-Eigenschaften',bulletedTitle:'Listen-Eigenschaften',type:'Typ',start:'Start',validateStartNumber:'List Startnummer muss eine ganze Zahl sein.',circle:'Ring',disc:'Kreis',square:'Quadrat',none:'Keine',notset:'<nicht gesetzt>',armenian:'Armenisch Nummerierung',georgian:'Georgisch Nummerierung (an, ban, gan, etc.)',lowerRoman:'Klein römisch (i, ii, iii, iv, v, etc.)',upperRoman:'Groß römisch (I, II, III, IV, V, etc.)',lowerAlpha:'Klein alpha (a, b, c, d, e, etc.)',upperAlpha:'Groß alpha (A, B, C, D, E, etc.)',lowerGreek:'Klein griechisch (alpha, beta, gamma, etc.)',decimal:'Dezimal (1, 2, 3, etc.)',decimalLeadingZero:'Dezimal mit führende Null (01, 02, 03, etc.)'},findAndReplace:{title:'Suchen und Ersetzen',find:'Suchen',replace:'Ersetzen',findWhat:'Suche nach:',replaceWith:'Ersetze mit:',notFoundMsg:'Der gesuchte Text wurde nicht gefunden.',matchCase:'Groß-Kleinschreibung beachten',matchWord:'Nur ganze Worte suchen',matchCyclic:'zyklische suche',replaceAll:'Alle Ersetzen',replaceSuccessMsg:'%1 vorkommen ersetzt.'},table:{toolbar:'Tabelle',title:'Tabellen-Eigenschaften',menu:'Tabellen-Eigenschaften',deleteTable:'Tabelle löschen',rows:'Zeile',columns:'Spalte',border:'Rahmen',align:'Ausrichtung',alignLeft:'Links',alignCenter:'Zentriert',alignRight:'Rechts',width:'Breite',widthPx:'Pixel',widthPc:'%',widthUnit:'Breite Einheit',height:'Höhe',cellSpace:'Zellenabstand außen',cellPad:'Zellenabstand innen',caption:'Überschrift',summary:'Inhaltsübersicht',headers:'Headers',headersNone:'Keine',headersColumn:'Erste Spalte',headersRow:'Erste Zeile',headersBoth:'Beide',invalidRows:'Die Anzahl der Zeilen muß größer als 0 sein.',invalidCols:'Die Anzahl der Spalten muß größer als 0 sein..',invalidBorder:'Die Rahmenbreite muß eine Zahl sein.',invalidWidth:'Die Tabellenbreite muss eine Zahl sein.',invalidHeight:'Die Tabellenbreite muß eine Zahl sein.',invalidCellSpacing:'Der Zellenabstand außen muß eine Zahl sein.',invalidCellPadding:'Der Zellenabstand innen muß eine Zahl sein.',cell:{menu:'Zelle',insertBefore:'Zelle davor einfügen',insertAfter:'Zelle danach einfügen',deleteCell:'Zelle löschen',merge:'Zellen verbinden',mergeRight:'nach rechts verbinden',mergeDown:'nach unten verbinden',splitHorizontal:'Zelle horizontal teilen',splitVertical:'Zelle vertikal teilen',title:'Zellen Eigenschaften',cellType:'Zellart',rowSpan:'Anzahl Zeilen verbinden',colSpan:'Anzahl Spalten verbinden',wordWrap:'Zeilenumbruch',hAlign:'Horizontale Ausrichtung',vAlign:'Vertikale Ausrichtung',alignTop:'Oben',alignMiddle:'Mitte',alignBottom:'Unten',alignBaseline:'Grundlinie',bgColor:'Hintergrundfarbe',borderColor:'Rahmenfarbe',data:'Daten',header:'Überschrift',yes:'Ja',no:'Nein',invalidWidth:'Zellenbreite muß eine Zahl sein.',invalidHeight:'Zellenhöhe muß eine Zahl sein.',invalidRowSpan:'"Anzahl Zeilen verbinden" muss eine Ganzzahl sein.',invalidColSpan:'"Anzahl Spalten verbinden" muss eine Ganzzahl sein.',chooseColor:'Wählen'},row:{menu:'Zeile',insertBefore:'Zeile oberhalb einfügen',insertAfter:'Zeile unterhalb einfügen',deleteRow:'Zeile entfernen'},column:{menu:'Spalte',insertBefore:'Spalte links davor einfügen',insertAfter:'Spalte rechts danach einfügen',deleteColumn:'Spalte löschen'}},button:{title:'Button-Eigenschaften',text:'Text (Wert)',type:'Typ',typeBtn:'Button',typeSbm:'Absenden',typeRst:'Zurücksetzen'},checkboxAndRadio:{checkboxTitle:'Checkbox-Eigenschaften',radioTitle:'Optionsfeld-Eigenschaften',value:'Wert',selected:'ausgewählt'},form:{title:'Formular-Eigenschaften',menu:'Formular-Eigenschaften',action:'Action',method:'Method',encoding:'Zeichenkodierung'},select:{title:'Auswahlfeld-Eigenschaften',selectInfo:'Info',opAvail:'Mögliche Optionen',value:'Wert',size:'Größe',lines:'Linien',chkMulti:'Erlaube Mehrfachauswahl',opText:'Text',opValue:'Wert',btnAdd:'Hinzufügen',btnModify:'Ändern',btnUp:'Hoch',btnDown:'Runter',btnSetValue:'Setze als Standardwert',btnDelete:'Entfernen'},textarea:{title:'Textfeld (mehrzeilig) Eigenschaften',cols:'Spalten',rows:'Reihen'},textfield:{title:'Textfeld (einzeilig) Eigenschaften',name:'Name',value:'Wert',charWidth:'Zeichenbreite',maxChars:'Max. Zeichen',type:'Typ',typeText:'Text',typePass:'Passwort'},hidden:{title:'Verstecktes Feld-Eigenschaften',name:'Name',value:'Wert'},image:{title:'Bild-Eigenschaften',titleButton:'Bildbutton-Eigenschaften',menu:'Bild-Eigenschaften',infoTab:'Bild-Info',btnUpload:'Zum Server senden',upload:'Hochladen',alt:'Alternativer Text',width:'Breite',height:'Höhe',lockRatio:'Größenverhältnis beibehalten',unlockRatio:'Ratio Freischalten',resetSize:'Größe zurücksetzen',border:'Rahmen',hSpace:'Horizontal-Abstand',vSpace:'Vertikal-Abstand',align:'Ausrichtung',alignLeft:'Links',alignRight:'Rechts',alertUrl:'Bitte geben Sie die Bild-URL an',linkTab:'Link',button2Img:'Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?',img2Button:'Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?',urlMissing:'Imagequelle URL fehlt.',validateWidth:'Breite muß eine ganze Zahl sein.',validateHeight:'Höhe muß eine ganze Zahl sein.',validateBorder:'Rahmen muß eine ganze Zahl sein.',validateHSpace:'Horizontal-Abstand muß eine ganze Zahl sein.',validateVSpace:'Vertikal-Abstand must be a whole number.'},flash:{properties:'Flash-Eigenschaften',propertiesTab:'Eigenschaften',title:'Flash-Eigenschaften',chkPlay:'autom. Abspielen',chkLoop:'Endlosschleife',chkMenu:'Flash-Menü aktivieren',chkFull:'Vollbildmodus erlauben',scale:'Skalierung',scaleAll:'Alles anzeigen',scaleNoBorder:'ohne Rand',scaleFit:'Passgenau',access:'Skript Zugang',accessAlways:'Immer',accessSameDomain:'Gleiche Domain',accessNever:'Nie',align:'Ausrichtung',alignLeft:'Links',alignAbsBottom:'Abs Unten',alignAbsMiddle:'Abs Mitte',alignBaseline:'Baseline',alignBottom:'Unten',alignMiddle:'Mitte',alignRight:'Rechts',alignTextTop:'Text Oben',alignTop:'Oben',quality:'Qualität',qualityBest:'Beste',qualityHigh:'Hoch',qualityAutoHigh:'Auto Hoch',qualityMedium:'Medium',qualityAutoLow:'Auto Niedrig',qualityLow:'Niedrig',windowModeWindow:'Fenster',windowModeOpaque:'Deckend',windowModeTransparent:'Transparent',windowMode:'Fenster Modus',flashvars:'Variablen für Flash',bgcolor:'Hintergrundfarbe',width:'Breite',height:'Höhe',hSpace:'Horizontal-Abstand',vSpace:'Vertikal-Abstand',validateSrc:'Bitte geben Sie die Link-URL an',validateWidth:'Breite muss eine Zahl sein.',validateHeight:'Höhe muss eine Zahl sein.',validateHSpace:'HSpace muss eine Zahl sein.',validateVSpace:'VSpace muss eine Zahl sein.'},spellCheck:{toolbar:'Rechtschreibprüfung',title:'Rechtschreibprüfung',notAvailable:'Entschuldigung, aber dieser Dienst steht im Moment nicht zur verfügung.',errorLoading:'Fehler beim laden des Dienstanbieters: %s.',notInDic:'Nicht im Wörterbuch',changeTo:'Ändern in',btnIgnore:'Ignorieren',btnIgnoreAll:'Alle Ignorieren',btnReplace:'Ersetzen',btnReplaceAll:'Alle Ersetzen',btnUndo:'Rückgängig',noSuggestions:' - keine Vorschläge - ',progress:'Rechtschreibprüfung läuft...',noMispell:'Rechtschreibprüfung abgeschlossen - keine Fehler gefunden',noChanges:'Rechtschreibprüfung abgeschlossen - keine Worte geändert',oneChange:'Rechtschreibprüfung abgeschlossen - ein Wort geändert',manyChanges:'Rechtschreibprüfung abgeschlossen - %1 Wörter geändert',ieSpellDownload:'Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?'},smiley:{toolbar:'Smiley',title:'Smiley auswählen',options:'Smiley Optionen'},elementsPath:{eleLabel:'Elements Pfad',eleTitle:'%1 Element'},numberedlist:'Nummerierte Liste',bulletedlist:'Liste',indent:'Einzug erhöhen',outdent:'Einzug verringern',justify:{left:'Linksbündig',center:'Zentriert',right:'Rechtsbündig',block:'Blocksatz'},blockquote:'Zitatblock',clipboard:{title:'Einfügen',cutError:'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).',copyError:'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).',pasteMsg:'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.',securityMsg:'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.',pasteArea:'Einfügebereich'},pastefromword:{confirmCleanup:'Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?',toolbar:'aus MS-Word einfügen',title:'aus MS-Word einfügen',error:'Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen'},pasteText:{button:'Als Text einfügen',title:'Als Text einfügen'},templates:{button:'Vorlagen',title:'Vorlagen',options:'Vorlagen Optionen',insertOption:'Aktuellen Inhalt ersetzen',selectPromptMsg:'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):',emptyListMsg:'(keine Vorlagen definiert)'},showBlocks:'Blöcke anzeigen',stylesCombo:{label:'Stil',panelTitle:'Formatierungenstil',panelTitle1:'Block Stilart',panelTitle2:'Inline Stilart',panelTitle3:'Objekt Stilart'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatiert',tag_address:'Addresse',tag_h1:'Überschrift 1',tag_h2:'Überschrift 2',tag_h3:'Überschrift 3',tag_h4:'Überschrift 4',tag_h5:'Überschrift 5',tag_h6:'Überschrift 6',tag_div:'Normal (DIV)'},div:{title:'Div Container erzeugen',toolbar:'Div Container erzeugen',cssClassInputLabel:'Stylesheet Klasse',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Sprache Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Beratungs Titel',langDirLabel:'Sprache Richtung',langDirLTRLabel:'Links nach Rechs (LTR)',langDirRTLLabel:'Rechs nach Links (RTL)',edit:'Div Bearbeiten',remove:'Div Entfernen'},font:{label:'Schriftart',voiceLabel:'Schriftart',panelTitle:'Schriftart'},fontSize:{label:'Größe',voiceLabel:'Schrifgröße',panelTitle:'Größe'},colorButton:{textColorTitle:'Textfarbe',bgColorTitle:'Hintergrundfarbe',panelTitle:'Farben',auto:'Automatisch',more:'Weitere Farben...'},colors:{'000':'Schwarz',800000:'Kastanienbraun','8B4513':'Braun','2F4F4F':'Dunkles Schiefergrau','008080':'Blaugrün','000080':'Navy','4B0082':'Indigo',696969:'Dunkelgrau',B22222:'Ziegelrot',A52A2A:'Braun',DAA520:'Goldgelb','006400':'Dunkelgrün','40E0D0':'Türkis','0000CD':'Medium Blau',800080:'Lila',808080:'Grau',F00:'Rot',FF8C00:'Dunkelorange',FFD700:'Gold','008000':'Grün','0FF':'Cyan','00F':'Blau',EE82EE:'Hellviolett',A9A9A9:'Dunkelgrau',FFA07A:'Helles Lachsrosa',FFA500:'Orange',FFFF00:'Gelb','00FF00':'Lime',AFEEEE:'Blaß-Türkis',ADD8E6:'Hellblau',DDA0DD:'Pflaumenblau',D3D3D3:'Hellgrau',FFF0F5:'Lavendel',FAEBD7:'Antik Weiß',FFFFE0:'Hellgelb',F0FFF0:'Honigtau',F0FFFF:'Azurblau',F0F8FF:'Alice Blau',E6E6FA:'Lavendel',FFF:'Weiß'},scayt:{title:'Rechtschreibprüfung während der Texteingabe',opera_title:'Nicht von Opera unterstützt',enable:'SCAYT einschalten',disable:'SCAYT ausschalten',about:'Über SCAYT',toggle:'SCAYT umschalten',options:'Optionen',langs:'Sprachen',moreSuggestions:'Mehr Vorschläge',ignore:'Ignorieren',ignoreAll:'Alle ignorieren',addWord:'Wort hinzufügen',emptyDic:'Wörterbuchname sollte leer sein.',optionsTab:'Optionen',allCaps:'Groß geschriebenen Wörter ignorieren',ignoreDomainNames:'Domain-Namen ignorieren',mixedCase:'Wörter mit gemischte Setzkasten ignorieren',mixedWithDigits:'Wörter mit Zahlen ignorieren',languagesTab:'Sprachen',dictionariesTab:'Wörterbücher',dic_field_name:'Wörterbuchname',dic_create:'Erzeugen',dic_restore:'Wiederherstellen',dic_delete:'Löschen',dic_rename:'Umbenennen',dic_info:'Anfangs wird das Benutzerwörterbuch in einem Cookie gespeichert. Allerdings sind Cookies in der Größe begrenzt. Wenn das Benutzerwörterbuch bis zu einem Punkt wächst, wo es nicht mehr in einem Cookie gespeichert werden kann, wird das Benutzerwörterbuch auf dem Server gespeichert. Um Ihr persönliches Wörterbuch auf dem Server zu speichern, müssen Sie einen Namen für das Wörterbuch angeben. Falls Sie schon ein gespeicherte Wörterbuch haben, geben Sie bitte dessen Namen ein und klicken Sie auf die Schaltfläche Wiederherstellen.',aboutTab:'Über'},about:{title:'Über CKEditor',dlgTitle:'Über CKEditor',moreInfo:'Für Informationen Liztenzbestimmungen besuchen sie bitte unsere Webseite:',copy:'Copyright &copy; $1. Alle Rechte vorbehalten.'},maximize:'Maximieren',minimize:'Minimieren',fakeobjects:{anchor:'Anker',flash:'Flash Animation',div:'Seitenumbruch',unknown:'Unbekanntes Objekt'},resize:'Zum Vergrößern ziehen',colordialog:{title:'Farbe wählen',options:'Farbeoptionen',highlight:'Hervorheben',selected:'Ausgewählte Farbe',clear:'Entfernen'},toolbarCollapse:'Symbolleiste einklappen',toolbarExpand:'Symbolleiste ausklappen',bidi:{ltr:'Leserichtung von Links nach Rechts',rtl:'Leserichtung von Rechts nach Links'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/el.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/el.js
new file mode 100644
index 000000000..0987a04df
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/el.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.el={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'HTML κώδικας',newPage:'Îέα Σελίδα',save:'Αποθήκευση',preview:'ΠÏοεπισκόπιση',cut:'Αποκοπή',copy:'ΑντιγÏαφή',paste:'Επικόλληση',print:'ΕκτÏπωση',underline:'ΥπογÏάμμιση',bold:'Έντονα',italic:'Πλάγια',selectAll:'Επιλογή όλων',removeFormat:'ΑφαίÏεση ΜοÏφοποίησης',strike:'ΔιαγÏάμμιση',subscript:'Δείκτης',superscript:'Εκθέτης',horizontalrule:'Εισαγωγή ΟÏιζόντιας ΓÏαμμής',pagebreak:'Εισαγωγή τέλους σελίδας',unlink:'ΑφαίÏεση Συνδέσμου (Link)',undo:'ΑναίÏεση',redo:'ΕπαναφοÏά',common:{browseServer:'ΕξεÏεÏνηση διακομιστή',url:'URL',protocol:'ΠÏοτόκολο',upload:'Αποστολή',uploadSubmit:'Αποστολή στον Διακομιστή',image:'Εικόνα',flash:'Εισαγωγή Flash',form:'ΦόÏμα',checkbox:'Κουτί επιλογής',radio:'Κουμπί Radio',textField:'Πεδίο κειμένου',textarea:'ΠεÏιοχή κειμένου',hiddenField:'ΚÏυφό πεδίο',button:'Κουμπί',select:'Πεδίο επιλογής',imageButton:'Κουμπί εικόνας',notSet:'<χωÏίς>',id:'Id',name:'Όνομα',langDir:'ΚατεÏθυνση κειμένου',langDirLtr:'ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)',langDirRtl:'Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)',langCode:'Κωδικός Γλώσσας',longDescr:'Αναλυτική πεÏιγÏαφή URL',cssClass:'Stylesheet Classes',advisoryTitle:'Συμβουλευτικός τίτλος',cssStyle:'ΣτÏλ',ok:'OK',cancel:'ΑκÏÏωση',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Για Ï€ÏοχωÏημένους',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Εισαγωγή Î•Î¹Î´Î¹ÎºÎ¿Ï Î£Ï…Î¼Î²ÏŒÎ»Î¿Ï…',title:'Επιλέξτε ένα Ειδικό ΣÏμβολο',options:'Special Character Options'},link:{toolbar:'Εισαγωγή/Μεταβολή Συνδέσμου (Link)',other:'<άλλος>',menu:'Μεταβολή Συνδέσμου (Link)',title:'ΣÏνδεσμος (Link)',info:'Link',target:'ΠαÏάθυÏο Στόχος (Target)',upload:'Αποστολή',advanced:'Για Ï€ÏοχωÏημένους',type:'ΤÏπος συνδέσμου (Link)',toUrl:'URL',toAnchor:'ΆγκυÏα σε αυτή τη σελίδα',toEmail:'E-Mail',targetFrame:'<πλαίσιο>',targetPopup:'<παÏάθυÏο popup>',targetFrameName:'Όνομα πλαισίου στόχου',targetPopupName:'Όνομα Popup Window',popupFeatures:'Επιλογές Popup Window',popupResizable:'Resizable',popupStatusBar:'ΜπάÏα Status',popupLocationBar:'ΜπάÏα Τοποθεσίας',popupToolbar:'ΜπάÏα ΕÏγαλείων',popupMenuBar:'ΜπάÏα Menu',popupFullScreen:'ΟλόκληÏη η Οθόνη (IE)',popupScrollBars:'ΜπάÏες ΚÏλισης',popupDependent:'Dependent (Netscape)',popupWidth:'Πλάτος',popupLeft:'Τοποθεσία ΑÏιστεÏής ΆκÏης',popupHeight:'Ύψος',popupTop:'Τοποθεσία Πάνω ΆκÏης',id:'Id',langDir:'ΚατεÏθυνση κειμένου',langDirLTR:'ΑÏιστεÏά Ï€Ïος Δεξιά (LTR)',langDirRTL:'Δεξιά Ï€Ïος ΑÏιστεÏά (RTL)',acccessKey:'Συντόμευση (Access Key)',name:'Όνομα',langCode:'ΚατεÏθυνση κειμένου',tabIndex:'Tab Index',advisoryTitle:'Συμβουλευτικός τίτλος',advisoryContentType:'Συμβουλευτικός τίτλος πεÏιεχομένου',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'ΣτÏλ',selectAnchor:'Επιλέξτε μια άγκυÏα',anchorName:'Βάσει του Ονόματος (Name) της άγκυÏας',anchorId:'Βάσει του Element Id',emailAddress:'ΔιεÏθυνση ΗλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Î¤Î±Ï‡Ï…Î´Ïομείου',emailSubject:'Θέμα ΜηνÏματος',emailBody:'Κείμενο ΜηνÏματος',noAnchors:'(Δεν υπάÏχουν άγκυÏες στο κείμενο)',noUrl:'Εισάγετε την τοποθεσία (URL) του υπεÏσυνδέσμου (Link)',noEmail:'Εισάγετε την διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου'},anchor:{toolbar:'Εισαγωγή/επεξεÏγασία Anchor',menu:'Ιδιότητες άγκυÏας',title:'Ιδιότητες άγκυÏας',name:'Όνομα άγκυÏας',errorName:'ΠαÏακαλοÏμε εισάγετε όνομα άγκυÏας'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Αναζήτηση',replace:'Αντικατάσταση',findWhat:'Αναζήτηση:',replaceWith:'Αντικατάσταση με:',notFoundMsg:'Το κείμενο δεν βÏέθηκε.',matchCase:'Έλεγχος πεζών/κεφαλαίων',matchWord:'ΕÏÏεση πλήÏους λέξης',matchCyclic:'Match cyclic',replaceAll:'Αντικατάσταση Όλων',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Πίνακας',title:'Ιδιότητες Πίνακα',menu:'Ιδιότητες Πίνακα',deleteTable:'ΔιαγÏαφή πίνακα',rows:'ΓÏαμμές',columns:'Κολώνες',border:'Μέγεθος ΠεÏιθωÏίου',align:'Στοίχιση',alignLeft:'ΑÏιστεÏά',alignCenter:'ΚέντÏο',alignRight:'Δεξιά',width:'Πλάτος',widthPx:'pixels',widthPc:'%',widthUnit:'width unit',height:'Ύψος',cellSpace:'Απόσταση κελιών',cellPad:'Γέμισμα κελιών',caption:'ΥπέÏτιτλος',summary:'ΠεÏίληψη',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Κελί',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'ΔιαγÏαφή Κελιών',merge:'Ενοποίηση Κελιών',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'ΣειÏά',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'ΔιαγÏαφή ΓÏαμμών'},column:{menu:'Στήλη',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'ΔιαγÏαφή Κολωνών'}},button:{title:'Ιδιότητες κουμπιοÏ',text:'Κείμενο (Τιμή)',type:'ΤÏπος',typeBtn:'Κουμπί',typeSbm:'ΚαταχώÏηση',typeRst:'ΕπαναφοÏά'},checkboxAndRadio:{checkboxTitle:'Ιδιότητες ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÏ€Î¹Î»Î¿Î³Î®Ï‚',radioTitle:'Ιδιότητες ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï radio',value:'Τιμή',selected:'Επιλεγμένο'},form:{title:'Ιδιότητες φόÏμας',menu:'Ιδιότητες φόÏμας',action:'ΔÏάση',method:'Μάθοδος',encoding:'Encoding'},select:{title:'Ιδιότητες πεδίου επιλογής',selectInfo:'ΠληÏοφοÏίες',opAvail:'Διαθέσιμες επιλογές',value:'Τιμή',size:'Μέγεθος',lines:'γÏαμμές',chkMulti:'Πολλαπλές επιλογές',opText:'Κείμενο',opValue:'Τιμή',btnAdd:'ΠÏοσθήκη',btnModify:'Αλλαγή',btnUp:'Πάνω',btnDown:'Κάτω',btnSetValue:'ΠÏοεπιλεγμένη επιλογή',btnDelete:'ΔιαγÏαφή'},textarea:{title:'Ιδιότητες πεÏιοχής κειμένου',cols:'Στήλες',rows:'ΣειÏές'},textfield:{title:'Ιδιότητες πεδίου κειμένου',name:'Όνομα',value:'Τιμή',charWidth:'Μήκος χαÏακτήÏων',maxChars:'Μέγιστοι χαÏακτήÏες',type:'ΤÏπος',typeText:'Κείμενο',typePass:'Κωδικός'},hidden:{title:'Ιδιότητες κÏÏ…Ï†Î¿Ï Ï€ÎµÎ´Î¯Î¿Ï…',name:'Όνομα',value:'Τιμή'},image:{title:'Ιδιότητες Εικόνας',titleButton:'Ιδιότητες ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï ÎµÎ¹ÎºÏŒÎ½Î±Ï‚',menu:'Ιδιότητες Εικόνας',infoTab:'ΠληÏοφοÏίες Εικόνας',btnUpload:'Αποστολή στον Διακομιστή',upload:'Αποστολή',alt:'Εναλλακτικό Κείμενο (ALT)',width:'Πλάτος',height:'Ύψος',lockRatio:'Κλείδωμα Αναλογίας',unlockRatio:'Unlock Ratio',resetSize:'ΕπαναφοÏά ΑÏÏ‡Î¹ÎºÎ¿Ï ÎœÎµÎ³Î­Î¸Î¿Ï…Ï‚',border:'ΠεÏιθώÏιο',hSpace:'ΟÏιζόντιος ΧώÏος (HSpace)',vSpace:'Κάθετος ΧώÏος (VSpace)',align:'ΕυθυγÏάμμιση (Align)',alignLeft:'ΑÏιστεÏά',alignRight:'Δεξιά (Right)',alertUrl:'Εισάγετε την τοποθεσία (URL) της εικόνας',linkTab:'ΣÏνδεσμος',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Ιδιότητες Flash',propertiesTab:'Properties',title:'Ιδιότητες flash',chkPlay:'Αυτόματη έναÏξη',chkLoop:'Επανάληψη',chkMenu:'ΕνεÏγοποίηση Flash Menu',chkFull:'Allow Fullscreen',scale:'Κλίμακα',scaleAll:'Εμφάνιση όλων',scaleNoBorder:'ΧωÏίς ÏŒÏια',scaleFit:'ΑκÏιβής εφαÏμογή',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'ΕυθυγÏάμμιση (Align)',alignLeft:'ΑÏιστεÏά',alignAbsBottom:'Απόλυτα Κάτω (Abs Bottom)',alignAbsMiddle:'Απόλυτα στη Μέση (Abs Middle)',alignBaseline:'ΓÏαμμή Βάσης (Baseline)',alignBottom:'Κάτω (Bottom)',alignMiddle:'Μέση (Middle)',alignRight:'Δεξιά (Right)',alignTextTop:'ΚοÏυφή Κειμένου (Text Top)',alignTop:'Πάνω (Top)',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'ΧÏώμα ΥποβάθÏου',width:'Πλάτος',height:'Ύψος',hSpace:'ΟÏιζόντιος ΧώÏος (HSpace)',vSpace:'Κάθετος ΧώÏος (VSpace)',validateSrc:'Εισάγετε την τοποθεσία (URL) του υπεÏσυνδέσμου (Link)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ΟÏθογÏαφικός έλεγχος',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Δεν υπάÏχει στο λεξικό',changeTo:'Αλλαγή σε',btnIgnore:'Αγνόηση',btnIgnoreAll:'Αγνόηση όλων',btnReplace:'Αντικατάσταση',btnReplaceAll:'Αντικατάσταση όλων',btnUndo:'ΑναίÏεση',noSuggestions:'- Δεν υπάÏχουν Ï€Ïοτάσεις -',progress:'ΟÏθογÏαφικός έλεγχος σε εξέλιξη...',noMispell:'Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: Δεν βÏέθηκαν λάθη',noChanges:'Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: Δεν άλλαξαν λέξεις',oneChange:'Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: Μια λέξη άλλαξε',manyChanges:'Ο οÏθογÏαφικός έλεγχος ολοκληÏώθηκε: %1 λέξεις άλλαξαν',ieSpellDownload:'Δεν υπάÏχει εγκατεστημένος οÏθογÏάφος. Θέλετε να τον κατεβάσετε τώÏα;'},smiley:{toolbar:'Smiley',title:'Επιλέξτε ένα Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Λίστα με ΑÏιθμοÏÏ‚',bulletedlist:'Λίστα με Bullets',indent:'ΑÏξηση Εσοχής',outdent:'Μείωση Εσοχής',justify:{left:'Στοίχιση ΑÏιστεÏά',center:'Στοίχιση στο ΚέντÏο',right:'Στοίχιση Δεξιά',block:'ΠλήÏης Στοίχιση (Block)'},blockquote:'Block Quote',clipboard:{title:'Επικόλληση',cutError:'Οι Ïυθμίσεις ασφαλείας του φυλλομετÏητή σας δεν επιτÏέπουν την επιλεγμένη εÏγασία αποκοπής. ΧÏησιμοποιείστε το πληκτÏολόγιο (Ctrl/Cmd+X).',copyError:'Οι Ïυθμίσεις ασφαλείας του φυλλομετÏητή σας δεν επιτÏέπουν την επιλεγμένη εÏγασία αντιγÏαφής. ΧÏησιμοποιείστε το πληκτÏολόγιο (Ctrl/Cmd+C).',pasteMsg:'ΠαÏακαλώ επικολήστε στο ακόλουθο κουτί χÏησιμοποιόντας το πληκτÏολόγιο (<STRONG>Ctrl/Cmd+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Επικόλληση από το Word',title:'Επικόλληση από το Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Επικόλληση ως Απλό Κείμενο',title:'Επικόλληση ως Απλό Κείμενο'},templates:{button:'ΠÏότυπα',title:'ΠÏότυπα πεÏιεχομένου',options:'Template Options',insertOption:'Αντικατάσταση υπάÏχοντων πεÏιεχομένων',selectPromptMsg:'ΠαÏακαλώ επιλέξτε Ï€Ïότυπο για εισαγωγή στο Ï€ÏόγÏαμμα<br>(τα υπάÏχοντα πεÏιεχόμενα θα χαθοÏν):',emptyListMsg:'(Δεν έχουν καθοÏιστεί Ï€Ïότυπα)'},showBlocks:'Show Blocks',stylesCombo:{label:'Στυλ',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ΜοÏφή ΓÏαμματοσειÏάς',panelTitle:'ΜοÏφή ΓÏαμματοσειÏάς',tag_p:'Κανονικό',tag_pre:'ΜοÏφοποιημένο',tag_address:'ΔιεÏθυνση',tag_h1:'Επικεφαλίδα 1',tag_h2:'Επικεφαλίδα 2',tag_h3:'Επικεφαλίδα 3',tag_h4:'Επικεφαλίδα 4',tag_h5:'Επικεφαλίδα 5',tag_h6:'Επικεφαλίδα 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'ΓÏαμματοσειÏά',voiceLabel:'Font',panelTitle:'ΓÏαμματοσειÏά'},fontSize:{label:'Μέγεθος',voiceLabel:'Font Size',panelTitle:'Μέγεθος'},colorButton:{textColorTitle:'ΧÏώμα ΓÏαμμάτων',bgColorTitle:'ΧÏώμα ΥποβάθÏου',panelTitle:'Colors',auto:'Αυτόματο',more:'ΠεÏισσότεÏα χÏώματα...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/en-au.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/en-au.js
new file mode 100644
index 000000000..c7560ce5a
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/en-au.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-au']={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignLeft:'Left',alignCenter:'Centre',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',unlockRatio:'Unlock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignRight:'Right',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Centre Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',panelTitle:'Colors',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/en-ca.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/en-ca.js
new file mode 100644
index 000000000..a933aa563
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/en-ca.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-ca']={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignLeft:'Left',alignCenter:'Centre',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',unlockRatio:'Unlock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignRight:'Right',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Centre Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',panelTitle:'Colors',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/en-gb.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/en-gb.js
new file mode 100644
index 000000000..f1c0c38a5
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/en-gb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['en-gb']={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignLeft:'Left',alignCenter:'Centre',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',unlockRatio:'Unlock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignRight:'Right',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background colour',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Centre Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Colour',bgColorTitle:'Background Colour',panelTitle:'Colors',auto:'Automatic',more:'More Colours...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/en.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/en.js
new file mode 100644
index 000000000..62bffbb7e
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.en={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'New Page',save:'Save',preview:'Preview',cut:'Cut',copy:'Copy',paste:'Paste',print:'Print',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Select All',removeFormat:'Remove Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Insert Horizontal Line',pagebreak:'Insert Page Break for Printing',unlink:'Unlink',undo:'Undo',redo:'Redo',common:{browseServer:'Browse Server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Send it to the Server',image:'Image',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<not set>',id:'Id',name:'Name',langDir:'Language Direction',langDirLtr:'Left to Right (LTR)',langDirRtl:'Right to Left (RTL)',langCode:'Language Code',longDescr:'Long Description URL',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'OK',cancel:'Cancel',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insert Special Character',title:'Select Special Character',options:'Special Character Options'},link:{toolbar:'Link',other:'<other>',menu:'Edit Link',title:'Link',info:'Link Info',target:'Target',upload:'Upload',advanced:'Advanced',type:'Link Type',toUrl:'URL',toAnchor:'Link to anchor in the text',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Target Frame Name',targetPopupName:'Popup Window Name',popupFeatures:'Popup Window Features',popupResizable:'Resizable',popupStatusBar:'Status Bar',popupLocationBar:'Location Bar',popupToolbar:'Toolbar',popupMenuBar:'Menu Bar',popupFullScreen:'Full Screen (IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Width',popupLeft:'Left Position',popupHeight:'Height',popupTop:'Top Position',id:'Id',langDir:'Language Direction',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',acccessKey:'Access Key',name:'Name',langCode:'Language Code',tabIndex:'Tab Index',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'Select an Anchor',anchorName:'By Anchor Name',anchorId:'By Element Id',emailAddress:'E-Mail Address',emailSubject:'Message Subject',emailBody:'Message Body',noAnchors:'(No anchors available in the document)',noUrl:'Please type the link URL',noEmail:'Please type the e-mail address'},anchor:{toolbar:'Anchor',menu:'Edit Anchor',title:'Anchor Properties',name:'Anchor Name',errorName:'Please type the anchor name'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Find',replace:'Replace',findWhat:'Find what:',replaceWith:'Replace with:',notFoundMsg:'The specified text was not found.',matchCase:'Match case',matchWord:'Match whole word',matchCyclic:'Match cyclic',replaceAll:'Replace All',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Table',title:'Table Properties',menu:'Table Properties',deleteTable:'Delete Table',rows:'Rows',columns:'Columns',border:'Border size',align:'Alignment',alignLeft:'Left',alignCenter:'Center',alignRight:'Right',width:'Width',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',height:'Height',cellSpace:'Cell spacing',cellPad:'Cell padding',caption:'Caption',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Delete Cells',merge:'Merge Cells',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Delete Rows'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Delete Columns'}},button:{title:'Button Properties',text:'Text (Value)',type:'Type',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Checkbox Properties',radioTitle:'Radio Button Properties',value:'Value',selected:'Selected'},form:{title:'Form Properties',menu:'Form Properties',action:'Action',method:'Method',encoding:'Encoding'},select:{title:'Selection Field Properties',selectInfo:'Select Info',opAvail:'Available Options',value:'Value',size:'Size',lines:'lines',chkMulti:'Allow multiple selections',opText:'Text',opValue:'Value',btnAdd:'Add',btnModify:'Modify',btnUp:'Up',btnDown:'Down',btnSetValue:'Set as selected value',btnDelete:'Delete'},textarea:{title:'Textarea Properties',cols:'Columns',rows:'Rows'},textfield:{title:'Text Field Properties',name:'Name',value:'Value',charWidth:'Character Width',maxChars:'Maximum Characters',type:'Type',typeText:'Text',typePass:'Password'},hidden:{title:'Hidden Field Properties',name:'Name',value:'Value'},image:{title:'Image Properties',titleButton:'Image Button Properties',menu:'Image Properties',infoTab:'Image Info',btnUpload:'Send it to the Server',upload:'Upload',alt:'Alternative Text',width:'Width',height:'Height',lockRatio:'Lock Ratio',unlockRatio:'Unlock Ratio',resetSize:'Reset Size',border:'Border',hSpace:'HSpace',vSpace:'VSpace',align:'Align',alignLeft:'Left',alignRight:'Right',alertUrl:'Please type the image URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Align',alignLeft:'Left',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'Baseline',alignBottom:'Bottom',alignMiddle:'Middle',alignRight:'Right',alignTextTop:'Text Top',alignTop:'Top',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Background color',width:'Width',height:'Height',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'URL must not be empty.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Check Spelling',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Not in dictionary',changeTo:'Change to',btnIgnore:'Ignore',btnIgnoreAll:'Ignore All',btnReplace:'Replace',btnReplaceAll:'Replace All',btnUndo:'Undo',noSuggestions:'- No suggestions -',progress:'Spell check in progress...',noMispell:'Spell check complete: No misspellings found',noChanges:'Spell check complete: No words changed',oneChange:'Spell check complete: One word changed',manyChanges:'Spell check complete: %1 words changed',ieSpellDownload:'Spell checker not installed. Do you want to download it now?'},smiley:{toolbar:'Smiley',title:'Insert a Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Insert/Remove Numbered List',bulletedlist:'Insert/Remove Bulleted List',indent:'Increase Indent',outdent:'Decrease Indent',justify:{left:'Left Justify',center:'Center Justify',right:'Right Justify',block:'Block Justify'},blockquote:'Block Quote',clipboard:{title:'Paste',cutError:"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).",copyError:"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).",pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Paste from Word',title:'Paste from Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Paste as plain text',title:'Paste as Plain Text'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Paragraph Format',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font Name'},fontSize:{label:'Size',voiceLabel:'Font Size',panelTitle:'Font Size'},colorButton:{textColorTitle:'Text Color',bgColorTitle:'Background Color',panelTitle:'Colors',auto:'Automatic',more:'More Colors...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/eo.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/eo.js
new file mode 100644
index 000000000..f34e32915
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/eo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.eo={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Fonto',newPage:'Nova PaÄo',save:'Sekurigi',preview:'Vidigi Aspekton',cut:'Eltondi',copy:'Kopii',paste:'Interglui',print:'Presi',underline:'Substreko',bold:'Grasa',italic:'Kursiva',selectAll:'Elekti ĉion',removeFormat:'Forigi Formaton',strike:'Trastreko',subscript:'Subskribo',superscript:'Superskribo',horizontalrule:'Enmeti Horizonta Linio',pagebreak:'Insert Page Break for Printing',unlink:'Forigi Ligilon',undo:'Malfari',redo:'Refari',common:{browseServer:'Foliumi en la Servilo',url:'URL',protocol:'Protokolo',upload:'AlÅuti',uploadSubmit:'Sendu al Servilo',image:'Bildo',flash:'Flash',form:'Formularo',checkbox:'Markobutono',radio:'Radiobutono',textField:'Teksta kampo',textarea:'Teksta Areo',hiddenField:'KaÅita Kampo',button:'Butono',select:'Elekta Kampo',imageButton:'Bildbutono',notSet:'<DefaÅ­lta>',id:'Id',name:'Nomo',langDir:'Skribdirekto',langDirLtr:'De maldekstro dekstren (LTR)',langDirRtl:'De dekstro maldekstren (RTL)',langCode:'Lingva Kodo',longDescr:'URL de Longa Priskribo',cssClass:'Klasoj de Stilfolioj',advisoryTitle:'Indika Titolo',cssStyle:'Stilo',ok:'Akcepti',cancel:'Rezigni',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Speciala',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Enmeti Specialan Signon',title:'Enmeti Specialan Signon',options:'Special Character Options'},link:{toolbar:'Enmeti/ÅœanÄi Ligilon',other:'<other>',menu:'Modifier Ligilon',title:'Ligilo',info:'Informoj pri la Ligilo',target:'Celo',upload:'AlÅuti',advanced:'Speciala',type:'Tipo de Ligilo',toUrl:'URL',toAnchor:'Ankri en tiu ĉi paÄo',toEmail:'RetpoÅto',targetFrame:'<kadro>',targetPopup:'<Åprucfenestro>',targetFrameName:'Nomo de Kadro',targetPopupName:'Nomo de Åœprucfenestro',popupFeatures:'Atributoj de la Åœprucfenestro',popupResizable:'Resizable',popupStatusBar:'Statobreto',popupLocationBar:'Adresobreto',popupToolbar:'Ilobreto',popupMenuBar:'Menubreto',popupFullScreen:'Tutekrane (IE)',popupScrollBars:'Rulumlisteloj',popupDependent:'Dependa (Netscape)',popupWidth:'LarÄo',popupLeft:'Pozicio de Maldekstro',popupHeight:'Alto',popupTop:'Pozicio de Supro',id:'Id',langDir:'Skribdirekto',langDirLTR:'De maldekstro dekstren (LTR)',langDirRTL:'De dekstro maldekstren (RTL)',acccessKey:'Fulmoklavo',name:'Nomo',langCode:'Skribdirekto',tabIndex:'Taba Ordo',advisoryTitle:'Indika Titolo',advisoryContentType:'Indika Enhavotipo',cssClasses:'Klasoj de Stilfolioj',charset:'Signaro de la Ligita Rimedo',styles:'Stilo',selectAnchor:'Elekti Ankron',anchorName:'Per Ankronomo',anchorId:'Per Elementidentigilo',emailAddress:'Retadreso',emailSubject:'Temlinio',emailBody:'MesaÄa korpo',noAnchors:'<Ne disponeblas ankroj en la dokumento>',noUrl:'Bonvolu entajpi la URL-on',noEmail:'Bonvolu entajpi la retadreson'},anchor:{toolbar:'Enmeti/ÅœanÄi Ankron',menu:'Ankraj Atributoj',title:'Ankraj Atributoj',name:'Ankra Nomo',errorName:'Bv tajpi la ankran nomon'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Serĉi',replace:'AnstataÅ­igi',findWhat:'Serĉi:',replaceWith:'AnstataÅ­igi per:',notFoundMsg:'La celteksto ne estas trovita.',matchCase:'Kongruigi Usklecon',matchWord:'Tuta Vorto',matchCyclic:'Match cyclic',replaceAll:'AnstataÅ­igi Ĉiun',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabelo',title:'Atributoj de Tabelo',menu:'Atributoj de Tabelo',deleteTable:'Delete Table',rows:'Linioj',columns:'Kolumnoj',border:'Bordero',align:'Äœisrandigo',alignLeft:'Maldekstre',alignCenter:'Centre',alignRight:'Dekstre',width:'LarÄo',widthPx:'Bitbilderoj',widthPc:'elcentoj',widthUnit:'width unit',height:'Alto',cellSpace:'Interspacigo de Ĉeloj',cellPad:'ĈirkaÅ­enhava Plenigado',caption:'Titolo',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Forigi Ĉelojn',merge:'Kunfandi Ĉelojn',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Forigi Liniojn'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Forigi Kolumnojn'}},button:{title:'Butonaj Atributoj',text:'Teksto (Valoro)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Markobutonaj Atributoj',radioTitle:'Radiobutonaj Atributoj',value:'Valoro',selected:'Elektita'},form:{title:'Formularaj Atributoj',menu:'Formularaj Atributoj',action:'Ago',method:'Metodo',encoding:'Encoding'},select:{title:'Atributoj de Elekta Kampo',selectInfo:'Select Info',opAvail:'Elektoj Disponeblaj',value:'Valoro',size:'Grando',lines:'Linioj',chkMulti:'Permesi Plurajn Elektojn',opText:'Teksto',opValue:'Valoro',btnAdd:'Aldoni',btnModify:'Modifi',btnUp:'Supren',btnDown:'Malsupren',btnSetValue:'Agordi kiel Elektitan Valoron',btnDelete:'Forigi'},textarea:{title:'Atributoj de Teksta Areo',cols:'Kolumnoj',rows:'Vicoj'},textfield:{title:'Atributoj de Teksta Kampo',name:'Nomo',value:'Valoro',charWidth:'SignolarÄo',maxChars:'Maksimuma Nombro da Signoj',type:'Tipo',typeText:'Teksto',typePass:'Pasvorto'},hidden:{title:'Atributoj de KaÅita Kampo',name:'Nomo',value:'Valoro'},image:{title:'Atributoj de Bildo',titleButton:'Bildbutonaj Atributoj',menu:'Atributoj de Bildo',infoTab:'Informoj pri Bildo',btnUpload:'Sendu al Servilo',upload:'AlÅuti',alt:'AnstataÅ­iga Teksto',width:'LarÄo',height:'Alto',lockRatio:'Konservi Proporcion',unlockRatio:'Unlock Ratio',resetSize:'Origina Grando',border:'Bordero',hSpace:'HSpaco',vSpace:'VSpaco',align:'Äœisrandigo',alignLeft:'Maldekstre',alignRight:'Dekstre',alertUrl:'Bonvolu tajpi la URL de la bildo',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Äœisrandigo',alignLeft:'Maldekstre',alignAbsBottom:'Abs Malsupre',alignAbsMiddle:'Abs Centre',alignBaseline:'Je Malsupro de Teksto',alignBottom:'Malsupre',alignMiddle:'Centre',alignRight:'Dekstre',alignTextTop:'Je Supro de Teksto',alignTop:'Supre',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fona Koloro',width:'LarÄo',height:'Alto',hSpace:'HSpaco',vSpace:'VSpaco',validateSrc:'Bonvolu entajpi la URL-on',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Literumada Kontrolilo',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ne trovita en la vortaro',changeTo:'ÅœanÄi al',btnIgnore:'Malatenti',btnIgnoreAll:'Malatenti Ĉiun',btnReplace:'AnstataÅ­igi',btnReplaceAll:'AnstataÅ­igi Ĉiun',btnUndo:'Malfari',noSuggestions:'- Neniu propono -',progress:'Literumkontrolado daÅ­ras...',noMispell:'Literumkontrolado finita: neniu fuÅo trovita',noChanges:'Literumkontrolado finita: neniu vorto ÅanÄita',oneChange:'Literumkontrolado finita: unu vorto ÅanÄita',manyChanges:'Literumkontrolado finita: %1 vortoj ÅanÄitaj',ieSpellDownload:'Literumada Kontrolilo ne instalita. Ĉu vi volas elÅuti Äin nun?'},smiley:{toolbar:'Mienvinjeto',title:'Enmeti Mienvinjeton',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numera Listo',bulletedlist:'Bula Listo',indent:'Pligrandigi KrommarÄenon',outdent:'Malpligrandigi KrommarÄenon',justify:{left:'Maldekstrigi',center:'Centrigi',right:'Dekstrigi',block:'Äœisrandigi AmbaÅ­flanke'},blockquote:'Block Quote',clipboard:{title:'Interglui',cutError:'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).',copyError:'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Interglui el Word',title:'Interglui el Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Interglui kiel Tekston',title:'Interglui kiel Tekston'},templates:{button:'Templates',title:'Content Templates',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Please select the template to open in the editor',emptyListMsg:'(No templates defined)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stilo',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normala',tag_pre:'Formatita',tag_address:'Adreso',tag_h1:'Titolo 1',tag_h2:'Titolo 2',tag_h3:'Titolo 3',tag_h4:'Titolo 4',tag_h5:'Titolo 5',tag_h6:'Titolo 6',tag_div:'Paragrafo (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Tiparo',voiceLabel:'Font',panelTitle:'Tiparo'},fontSize:{label:'Grando',voiceLabel:'Font Size',panelTitle:'Grando'},colorButton:{textColorTitle:'Teksta Koloro',bgColorTitle:'Fona Koloro',panelTitle:'Colors',auto:'AÅ­tomata',more:'Pli da Koloroj...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/es.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/es.js
new file mode 100644
index 000000000..74d7eadfe
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/es.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.es={dir:'ltr',editorTitle:'Editor de texto, %1, pulse ALT 0 para ayuda.',toolbar:'Barra de herramientas',editor:'Editor de texto enriquecido',source:'Fuente HTML',newPage:'Nueva Página',save:'Guardar',preview:'Vista Previa',cut:'Cortar',copy:'Copiar',paste:'Pegar',print:'Imprimir',underline:'Subrayado',bold:'Negrita',italic:'Cursiva',selectAll:'Seleccionar Todo',removeFormat:'Eliminar Formato',strike:'Tachado',subscript:'Subíndice',superscript:'Superíndice',horizontalrule:'Insertar Línea Horizontal',pagebreak:'Insertar Salto de Página',unlink:'Eliminar Vínculo',undo:'Deshacer',redo:'Rehacer',common:{browseServer:'Ver Servidor',url:'URL',protocol:'Protocolo',upload:'Cargar',uploadSubmit:'Enviar al Servidor',image:'Imagen',flash:'Flash',form:'Formulario',checkbox:'Casilla de Verificación',radio:'Botones de Radio',textField:'Campo de Texto',textarea:'Area de Texto',hiddenField:'Campo Oculto',button:'Botón',select:'Campo de Selección',imageButton:'Botón Imagen',notSet:'<No definido>',id:'Id',name:'Nombre',langDir:'Orientación',langDirLtr:'Izquierda a Derecha (LTR)',langDirRtl:'Derecha a Izquierda (RTL)',langCode:'Cód. de idioma',longDescr:'Descripción larga URL',cssClass:'Clases de hojas de estilo',advisoryTitle:'Título',cssStyle:'Estilo',ok:'Aceptar',cancel:'Cancelar',close:'Cerrar',preview:'Previsualización',generalTab:'General',advancedTab:'Avanzado',validateNumberFailed:'El valor no es un número.',confirmNewPage:'Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?',confirmCancel:'Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?',options:'Opciones',target:'Destino',targetNew:'Nueva ventana (_blank)',targetTop:'Ventana principal (_top)',targetSelf:'Misma ventana (_self)',targetParent:'Ventana padre (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, no disponible</span>'},contextmenu:{options:'Opciones del menú contextual'},specialChar:{toolbar:'Insertar Caracter Especial',title:'Seleccione un caracter especial',options:'Opciones de caracteres especiales'},link:{toolbar:'Insertar/Editar Vínculo',other:'<otro>',menu:'Editar Vínculo',title:'Vínculo',info:'Información de Vínculo',target:'Destino',upload:'Cargar',advanced:'Avanzado',type:'Tipo de vínculo',toUrl:'URL',toAnchor:'Referencia en esta página',toEmail:'E-Mail',targetFrame:'<marco>',targetPopup:'<ventana emergente>',targetFrameName:'Nombre del Marco Destino',targetPopupName:'Nombre de Ventana Emergente',popupFeatures:'Características de Ventana Emergente',popupResizable:'Redimensionable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de ubicación',popupToolbar:'Barra de Herramientas',popupMenuBar:'Barra de Menú',popupFullScreen:'Pantalla Completa (IE)',popupScrollBars:'Barras de desplazamiento',popupDependent:'Dependiente (Netscape)',popupWidth:'Anchura',popupLeft:'Posición Izquierda',popupHeight:'Altura',popupTop:'Posición Derecha',id:'Id',langDir:'Orientación',langDirLTR:'Izquierda a Derecha (LTR)',langDirRTL:'Derecha a Izquierda (RTL)',acccessKey:'Clave de Acceso',name:'Nombre',langCode:'Código idioma',tabIndex:'Indice de tabulación',advisoryTitle:'Título',advisoryContentType:'Tipo de Contenido',cssClasses:'Clases de hojas de estilo',charset:'Fuente de caracteres vinculado',styles:'Estilo',selectAnchor:'Seleccionar una referencia',anchorName:'Por Nombre de Referencia',anchorId:'Por ID de elemento',emailAddress:'Dirección de E-Mail',emailSubject:'Título del Mensaje',emailBody:'Cuerpo del Mensaje',noAnchors:'(No hay referencias disponibles en el documento)',noUrl:'Por favor tipee el vínculo URL',noEmail:'Por favor tipee la dirección de e-mail'},anchor:{toolbar:'Referencia',menu:'Propiedades de Referencia',title:'Propiedades de Referencia',name:'Nombre de la Referencia',errorName:'Por favor, complete el nombre de la Referencia'},list:{numberedTitle:'Propiedades de lista numerada',bulletedTitle:'Propiedades de viñetas',type:'Tipo',start:'Inicio',validateStartNumber:'List start number must be a whole number.',circle:'Círculo',disc:'Disco',square:'Cuadrado',none:'Ninguno',notset:'<sin establecer>',armenian:'Numeración armenia',georgian:'Numeración georgiana (an, ban, gan, etc.)',lowerRoman:'Números romanos en minúsculas (i, ii, iii, iv, v, etc.)',upperRoman:'Números romanos en mayúsculas (I, II, III, IV, V, etc.)',lowerAlpha:'Alfabeto en minúsculas (a, b, c, d, e, etc.)',upperAlpha:'Alfabeto en mayúsculas (A, B, C, D, E, etc.)',lowerGreek:'Letras griegas (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal con cero inicial (01, 02, 03, etc.)'},findAndReplace:{title:'Buscar y Reemplazar',find:'Buscar',replace:'Reemplazar',findWhat:'Texto a buscar:',replaceWith:'Reemplazar con:',notFoundMsg:'El texto especificado no ha sido encontrado.',matchCase:'Coincidir may/min',matchWord:'Coincidir toda la palabra',matchCyclic:'Buscar en todo el contenido',replaceAll:'Reemplazar Todo',replaceSuccessMsg:'La expresión buscada ha sido reemplazada %1 veces.'},table:{toolbar:'Tabla',title:'Propiedades de Tabla',menu:'Propiedades de Tabla',deleteTable:'Eliminar Tabla',rows:'Filas',columns:'Columnas',border:'Tamaño de Borde',align:'Alineación',alignLeft:'Izquierda',alignCenter:'Centrado',alignRight:'Derecha',width:'Anchura',widthPx:'pixeles',widthPc:'porcentaje',widthUnit:'unidad de la anchura',height:'Altura',cellSpace:'Esp. e/celdas',cellPad:'Esp. interior',caption:'Título',summary:'Síntesis',headers:'Encabezados',headersNone:'Ninguno',headersColumn:'Primera columna',headersRow:'Primera fila',headersBoth:'Ambas',invalidRows:'El número de filas debe ser un número mayor que 0.',invalidCols:'El número de columnas debe ser un número mayor que 0.',invalidBorder:'El tamaño del borde debe ser un número.',invalidWidth:'La anchura de tabla debe ser un número.',invalidHeight:'La altura de tabla debe ser un número.',invalidCellSpacing:'El espaciado entre celdas debe ser un número.',invalidCellPadding:'El espaciado interior debe ser un número.',cell:{menu:'Celda',insertBefore:'Insertar celda a la izquierda',insertAfter:'Insertar celda a la derecha',deleteCell:'Eliminar Celdas',merge:'Combinar Celdas',mergeRight:'Combinar a la derecha',mergeDown:'Combinar hacia abajo',splitHorizontal:'Dividir la celda horizontalmente',splitVertical:'Dividir la celda verticalmente',title:'Propiedades de celda',cellType:'Tipo de Celda',rowSpan:'Expandir filas',colSpan:'Expandir columnas',wordWrap:'Ajustar al contenido',hAlign:'Alineación Horizontal',vAlign:'Alineación Vertical',alignTop:'Arriba',alignMiddle:'Medio',alignBottom:'Abajo',alignBaseline:'Linea de base',bgColor:'Color de fondo',borderColor:'Color de borde',data:'Datos',header:'Encabezado',yes:'Sí',no:'No',invalidWidth:'La anchura de celda debe ser un número.',invalidHeight:'La altura de celda debe ser un número.',invalidRowSpan:'La expansión de filas debe ser un número entero.',invalidColSpan:'La expansión de columnas debe ser un número entero.',chooseColor:'Elegir'},row:{menu:'Fila',insertBefore:'Insertar fila en la parte superior',insertAfter:'Insertar fila en la parte inferior',deleteRow:'Eliminar Filas'},column:{menu:'Columna',insertBefore:'Insertar columna a la izquierda',insertAfter:'Insertar columna a la derecha',deleteColumn:'Eliminar Columnas'}},button:{title:'Propiedades de Botón',text:'Texto (Valor)',type:'Tipo',typeBtn:'Boton',typeSbm:'Enviar',typeRst:'Reestablecer'},checkboxAndRadio:{checkboxTitle:'Propiedades de Casilla',radioTitle:'Propiedades de Botón de Radio',value:'Valor',selected:'Seleccionado'},form:{title:'Propiedades de Formulario',menu:'Propiedades de Formulario',action:'Acción',method:'Método',encoding:'Codificación'},select:{title:'Propiedades de Campo de Selección',selectInfo:'Información',opAvail:'Opciones disponibles',value:'Valor',size:'Tamaño',lines:'Lineas',chkMulti:'Permitir múltiple selección',opText:'Texto',opValue:'Valor',btnAdd:'Agregar',btnModify:'Modificar',btnUp:'Subir',btnDown:'Bajar',btnSetValue:'Establecer como predeterminado',btnDelete:'Eliminar'},textarea:{title:'Propiedades de Area de Texto',cols:'Columnas',rows:'Filas'},textfield:{title:'Propiedades de Campo de Texto',name:'Nombre',value:'Valor',charWidth:'Caracteres de ancho',maxChars:'Máximo caracteres',type:'Tipo',typeText:'Texto',typePass:'Contraseña'},hidden:{title:'Propiedades de Campo Oculto',name:'Nombre',value:'Valor'},image:{title:'Propiedades de Imagen',titleButton:'Propiedades de Botón de Imagen',menu:'Propiedades de Imagen',infoTab:'Información de Imagen',btnUpload:'Enviar al Servidor',upload:'Cargar',alt:'Texto Alternativo',width:'Anchura',height:'Altura',lockRatio:'Proporcional',unlockRatio:'Desbloquear el proporcional',resetSize:'Tamaño Original',border:'Borde',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',align:'Alineación',alignLeft:'Izquierda',alignRight:'Derecha',alertUrl:'Por favor escriba la URL de la imagen',linkTab:'Vínculo',button2Img:'¿Desea convertir el botón de imagen en una simple imagen?',img2Button:'¿Desea convertir la imagen en un botón de imagen?',urlMissing:'Debe indicar la URL de la imagen.',validateWidth:'La anchura debe ser un número.',validateHeight:'La altura debe ser un número.',validateBorder:'El borde debe ser un número.',validateHSpace:'El espaciado horizontal debe ser un número.',validateVSpace:'El espaciado vertical debe ser un número.'},flash:{properties:'Propiedades de Flash',propertiesTab:'Propiedades',title:'Propiedades de Flash',chkPlay:'Autoejecución',chkLoop:'Repetir',chkMenu:'Activar Menú Flash',chkFull:'Permitir pantalla completa',scale:'Escala',scaleAll:'Mostrar todo',scaleNoBorder:'Sin Borde',scaleFit:'Ajustado',access:'Acceso de scripts',accessAlways:'Siempre',accessSameDomain:'Mismo dominio',accessNever:'Nunca',align:'Alineación',alignLeft:'Izquierda',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Línea de base',alignBottom:'Pie',alignMiddle:'Centro',alignRight:'Derecha',alignTextTop:'Tope del texto',alignTop:'Tope',quality:'Calidad',qualityBest:'La mejor',qualityHigh:'Alta',qualityAutoHigh:'Auto Alta',qualityMedium:'Media',qualityAutoLow:'Auto Baja',qualityLow:'Baja',windowModeWindow:'Ventana',windowModeOpaque:'Opaco',windowModeTransparent:'Transparente',windowMode:'WindowMode',flashvars:'Opciones',bgcolor:'Color de Fondo',width:'Anchura',height:'Altura',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',validateSrc:'Por favor escriba el vínculo URL',validateWidth:'Anchura debe ser un número.',validateHeight:'Altura debe ser un número.',validateHSpace:'Esp.Horiz debe ser un número.',validateVSpace:'Esp.Vert debe ser un número.'},spellCheck:{toolbar:'Ortografía',title:'Comprobar ortografía',notAvailable:'Lo sentimos pero el servicio no está disponible.',errorLoading:'Error cargando la aplicación del servidor: %s.',notInDic:'No se encuentra en el Diccionario',changeTo:'Cambiar a',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Todo',btnReplace:'Reemplazar',btnReplaceAll:'Reemplazar Todo',btnUndo:'Deshacer',noSuggestions:'- No hay sugerencias -',progress:'Control de Ortografía en progreso...',noMispell:'Control finalizado: no se encontraron errores',noChanges:'Control finalizado: no se ha cambiado ninguna palabra',oneChange:'Control finalizado: se ha cambiado una palabra',manyChanges:'Control finalizado: se ha cambiado %1 palabras',ieSpellDownload:'Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?'},smiley:{toolbar:'Emoticonos',title:'Insertar un Emoticon',options:'Opciones de emoticonos'},elementsPath:{eleLabel:'Ruta de los elementos',eleTitle:'%1 elemento'},numberedlist:'Numeración',bulletedlist:'Viñetas',indent:'Aumentar Sangría',outdent:'Disminuir Sangría',justify:{left:'Alinear a Izquierda',center:'Centrar',right:'Alinear a Derecha',block:'Justificado'},blockquote:'Cita',clipboard:{title:'Pegar',cutError:'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).',copyError:'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).',pasteMsg:'Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl/Cmd+V</STRONG>);\r\nluego presione <STRONG>Aceptar</STRONG>.',securityMsg:'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.',pasteArea:'Zona de pegado'},pastefromword:{confirmCleanup:'El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?',toolbar:'Pegar desde Word',title:'Pegar desde Word',error:'No ha sido posible limpiar los datos debido a un error interno'},pasteText:{button:'Pegar como Texto Plano',title:'Pegar como Texto Plano'},templates:{button:'Plantillas',title:'Contenido de Plantillas',options:'Opciones de plantillas',insertOption:'Reemplazar el contenido actual',selectPromptMsg:'Por favor selecciona la plantilla a abrir en el editor<br>(el contenido actual se perderá):',emptyListMsg:'(No hay plantillas definidas)'},showBlocks:'Mostrar bloques',stylesCombo:{label:'Estilo',panelTitle:'Estilos para formatear',panelTitle1:'Estilos de párrafo',panelTitle2:'Estilos de carácter',panelTitle3:'Estilos de objeto'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normal',tag_pre:'Con formato',tag_address:'Dirección',tag_h1:'Encabezado 1',tag_h2:'Encabezado 2',tag_h3:'Encabezado 3',tag_h4:'Encabezado 4',tag_h5:'Encabezado 5',tag_h6:'Encabezado 6',tag_div:'Normal (DIV)'},div:{title:'Crear contenedor DIV',toolbar:'Crear contenedor DIV',cssClassInputLabel:'Clase de hoja de estilos',styleSelectLabel:'Estilo',IdInputLabel:'Id',languageCodeInputLabel:' Codigo de idioma',inlineStyleInputLabel:'Estilo',advisoryTitleInputLabel:'Título',langDirLabel:'Orientación',langDirLTRLabel:'Izquierda a Derecha (LTR)',langDirRTLLabel:'Derecha a Izquierda (RTL)',edit:'Editar Div',remove:'Quitar Div'},font:{label:'Fuente',voiceLabel:'Fuente',panelTitle:'Fuente'},fontSize:{label:'Tamaño',voiceLabel:'Tamaño de fuente',panelTitle:'Tamaño'},colorButton:{textColorTitle:'Color de Texto',bgColorTitle:'Color de Fondo',panelTitle:'Colores',auto:'Automático',more:'Más Colores...'},colors:{'000':'Negro',800000:'Marrón oscuro','8B4513':'Marrón tierra','2F4F4F':'Pizarra Oscuro','008080':'Azul verdoso','000080':'Azul marino','4B0082':'Añil',696969:'Gris oscuro',B22222:'Ladrillo',A52A2A:'Marrón',DAA520:'Oro oscuro','006400':'Verde oscuro','40E0D0':'Turquesa','0000CD':'Azul medio-oscuro',800080:'Púrpura',808080:'Gris',F00:'Rojo',FF8C00:'Naranja oscuro',FFD700:'Oro','008000':'Verde','0FF':'Cian','00F':'Azul',EE82EE:'Violeta',A9A9A9:'Gris medio',FFA07A:'Salmón claro',FFA500:'Naranja',FFFF00:'Amarillo','00FF00':'Lima',AFEEEE:'Turquesa claro',ADD8E6:'Azul claro',DDA0DD:'Violeta claro',D3D3D3:'Gris claro',FFF0F5:'Lavanda rojizo',FAEBD7:'Blanco antiguo',FFFFE0:'Amarillo claro',F0FFF0:'Miel',F0FFFF:'Azul celeste',F0F8FF:'Azul pálido',E6E6FA:'Lavanda',FFF:'Blanco'},scayt:{title:'Comprobar Ortografía Mientras Escribe',opera_title:'No soportado en Opera',enable:'Activar Corrector',disable:'Desactivar Corrector',about:'Acerca de Corrector',toggle:'Cambiar Corrector',options:'Opciones',langs:'Idiomas',moreSuggestions:'Más sugerencias',ignore:'Ignorar',ignoreAll:'Ignorar Todas',addWord:'Añadir palabra',emptyDic:'El nombre del diccionario no puede estar en blanco.',optionsTab:'Opciones',allCaps:'Omitir palabras en MAYÚSCULAS',ignoreDomainNames:'Omitir nombres de dominio',mixedCase:'Ignorar palabras con combinación de mayúsculas y minúsculas',mixedWithDigits:'Omitir palabras con números',languagesTab:'Idiomas',dictionariesTab:'Diccionarios',dic_field_name:'Nombre del diccionario',dic_create:'Crear',dic_restore:'Recuperar',dic_delete:'Borrar',dic_rename:'Renombrar',dic_info:'Inicialmente el Diccionario de usuario se guarda en una Cookie. Sin embargo, las cookies están limitadas en tamaño. Cuando el diccionario crece a un punto en el que no se puede guardar en una Cookie, el diccionario puede ser almacenado en nuestro servidor. Para almacenar su diccionario personalizado en nuestro servidor debe especificar un nombre para su diccionario. Si ya ha guardado un diccionaro, por favor, escriba su nombre y pulse el botón Recuperar',aboutTab:'Acerca de'},about:{title:'Acerca de CKEditor',dlgTitle:'Acerca de CKEditor',moreInfo:'Para información de licencia, por favor visite nuestro sitio web:',copy:'Copyright &copy; $1. Todos los derechos reservados.'},maximize:'Maximizar',minimize:'Minimizar',fakeobjects:{anchor:'Ancla',flash:'Animación flash',div:'Salto de página',unknown:'Objeto desconocido'},resize:'Arrastre para redimensionar',colordialog:{title:'Elegir color',options:'Opciones de colores',highlight:'Muestra',selected:'Elegido',clear:'Borrar'},toolbarCollapse:'Contraer barra de herramientas',toolbarExpand:'Expandir barra de herramientas',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/et.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/et.js
new file mode 100644
index 000000000..ff183bf3f
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/et.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.et={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Lähtekood',newPage:'Uus leht',save:'Salvesta',preview:'Eelvaade',cut:'Lõika',copy:'Kopeeri',paste:'Kleebi',print:'Prindi',underline:'Allajoonitud',bold:'Paks',italic:'Kursiiv',selectAll:'Vali kõik',removeFormat:'Eemalda vorming',strike:'Läbijoonitud',subscript:'Allindeks',superscript:'Ülaindeks',horizontalrule:'Sisesta horisontaaljoon',pagebreak:'Sisesta lehevahetuskoht',unlink:'Eemalda link',undo:'Võta tagasi',redo:'Korda toimingut',common:{browseServer:'Sirvi serverit',url:'URL',protocol:'Protokoll',upload:'Lae üles',uploadSubmit:'Saada serverissee',image:'Pilt',flash:'Flash',form:'Vorm',checkbox:'Märkeruut',radio:'Raadionupp',textField:'Tekstilahter',textarea:'Tekstiala',hiddenField:'Varjatud lahter',button:'Nupp',select:'Valiklahter',imageButton:'Piltnupp',notSet:'<määramata>',id:'Id',name:'Nimi',langDir:'Keele suund',langDirLtr:'Vasakult paremale (LTR)',langDirRtl:'Paremalt vasakule (RTL)',langCode:'Keele kood',longDescr:'Pikk kirjeldus URL',cssClass:'Stiilistiku klassid',advisoryTitle:'Juhendav tiitel',cssStyle:'Laad',ok:'OK',cancel:'Loobu',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Täpsemalt',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Sisesta erimärk',title:'Vali erimärk',options:'Special Character Options'},link:{toolbar:'Sisesta link / Muuda linki',other:'<muu>',menu:'Muuda linki',title:'Link',info:'Lingi info',target:'Sihtkoht',upload:'Lae üles',advanced:'Täpsemalt',type:'Lingi tüüp',toUrl:'URL',toAnchor:'Ankur sellel lehel',toEmail:'E-post',targetFrame:'<raam>',targetPopup:'<hüpikaken>',targetFrameName:'Sihtmärk raami nimi',targetPopupName:'Hüpikakna nimi',popupFeatures:'Hüpikakna omadused',popupResizable:'Resizable',popupStatusBar:'Olekuriba',popupLocationBar:'Aadressiriba',popupToolbar:'Tööriistariba',popupMenuBar:'Menüüriba',popupFullScreen:'Täisekraan (IE)',popupScrollBars:'Kerimisribad',popupDependent:'Sõltuv (Netscape)',popupWidth:'Laius',popupLeft:'Vasak asukoht',popupHeight:'Kõrgus',popupTop:'Ülemine asukoht',id:'Id',langDir:'Keele suund',langDirLTR:'Vasakult paremale (LTR)',langDirRTL:'Paremalt vasakule (RTL)',acccessKey:'Juurdepääsu võti',name:'Nimi',langCode:'Keele suund',tabIndex:'Tab indeks',advisoryTitle:'Juhendav tiitel',advisoryContentType:'Juhendava sisu tüüp',cssClasses:'Stiilistiku klassid',charset:'Lingitud ressurssi märgistik',styles:'Laad',selectAnchor:'Vali ankur',anchorName:'Ankru nime järgi',anchorId:'Elemendi id järgi',emailAddress:'E-posti aadress',emailSubject:'Sõnumi teema',emailBody:'Sõnumi tekst',noAnchors:'(Selles dokumendis ei ole ankruid)',noUrl:'Palun kirjuta lingi URL',noEmail:'Palun kirjuta E-Posti aadress'},anchor:{toolbar:'Sisesta ankur / Muuda ankrut',menu:'Ankru omadused',title:'Ankru omadused',name:'Ankru nimi',errorName:'Palun sisest ankru nimi'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Otsi ja asenda',find:'Otsi',replace:'Asenda',findWhat:'Leia mida:',replaceWith:'Asenda millega:',notFoundMsg:'Valitud teksti ei leitud.',matchCase:'Erista suur- ja väiketähti',matchWord:'Otsi terviklike sõnu',matchCyclic:'Match cyclic',replaceAll:'Asenda kõik',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabel',title:'Tabeli atribuudid',menu:'Tabeli atribuudid',deleteTable:'Kustuta tabel',rows:'Read',columns:'Veerud',border:'Joone suurus',align:'Joondus',alignLeft:'Vasak',alignCenter:'Kesk',alignRight:'Parem',width:'Laius',widthPx:'pikslit',widthPc:'protsenti',widthUnit:'width unit',height:'Kõrgus',cellSpace:'Lahtri vahe',cellPad:'Lahtri täidis',caption:'Tabeli tiitel',summary:'Kokkuvõte',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Lahter',insertBefore:'Sisesta lahter enne',insertAfter:'Sisesta lahter peale',deleteCell:'Eemalda lahtrid',merge:'Ühenda lahtrid',mergeRight:'Ühenda paremale',mergeDown:'Ühenda alla',splitHorizontal:'Poolita lahter horisontaalselt',splitVertical:'Poolita lahter vertikaalselt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rida',insertBefore:'Sisesta rida enne',insertAfter:'Sisesta rida peale',deleteRow:'Eemalda read'},column:{menu:'Veerg',insertBefore:'Sisesta veerg enne',insertAfter:'Sisesta veerg peale',deleteColumn:'Eemalda veerud'}},button:{title:'Nupu omadused',text:'Tekst (väärtus)',type:'Tüüp',typeBtn:'Nupp',typeSbm:'Saada',typeRst:'Lähtesta'},checkboxAndRadio:{checkboxTitle:'Märkeruudu omadused',radioTitle:'Raadionupu omadused',value:'Väärtus',selected:'Valitud'},form:{title:'Vormi omadused',menu:'Vormi omadused',action:'Toiming',method:'Meetod',encoding:'Encoding'},select:{title:'Valiklahtri omadused',selectInfo:'Info',opAvail:'Võimalikud valikud',value:'Väärtus',size:'Suurus',lines:'ridu',chkMulti:'Võimalda mitu valikut',opText:'Tekst',opValue:'Väärtus',btnAdd:'Lisa',btnModify:'Muuda',btnUp:'Üles',btnDown:'Alla',btnSetValue:'Sea valitud olekuna',btnDelete:'Kustuta'},textarea:{title:'Tekstiala omadused',cols:'Veerge',rows:'Ridu'},textfield:{title:'Tekstilahtri omadused',name:'Nimi',value:'Väärtus',charWidth:'Laius (tähemärkides)',maxChars:'Maksimaalselt tähemärke',type:'Tüüp',typeText:'Tekst',typePass:'Parool'},hidden:{title:'Varjatud lahtri omadused',name:'Nimi',value:'Väärtus'},image:{title:'Pildi atribuudid',titleButton:'Piltnupu omadused',menu:'Pildi atribuudid',infoTab:'Pildi info',btnUpload:'Saada serverissee',upload:'Lae üles',alt:'Alternatiivne tekst',width:'Laius',height:'Kõrgus',lockRatio:'Lukusta kuvasuhe',unlockRatio:'Unlock Ratio',resetSize:'Lähtesta suurus',border:'Joon',hSpace:'H. vaheruum',vSpace:'V. vaheruum',align:'Joondus',alignLeft:'Vasak',alignRight:'Paremale',alertUrl:'Palun kirjuta pildi URL',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash omadused',propertiesTab:'Properties',title:'Flash omadused',chkPlay:'Automaatne start ',chkLoop:'Korduv',chkMenu:'Võimalda flash menüü',chkFull:'Allow Fullscreen',scale:'Mastaap',scaleAll:'Näita kõike',scaleNoBorder:'Äärist ei ole',scaleFit:'Täpne sobivus',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Joondus',alignLeft:'Vasak',alignAbsBottom:'Abs alla',alignAbsMiddle:'Abs keskele',alignBaseline:'Baasjoonele',alignBottom:'Alla',alignMiddle:'Keskele',alignRight:'Paremale',alignTextTop:'Tekstit üles',alignTop:'Üles',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Tausta värv',width:'Laius',height:'Kõrgus',hSpace:'H. vaheruum',vSpace:'V. vaheruum',validateSrc:'Palun kirjuta lingi URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Kontrolli õigekirja',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Puudub sõnastikust',changeTo:'Muuda',btnIgnore:'Ignoreeri',btnIgnoreAll:'Ignoreeri kõiki',btnReplace:'Asenda',btnReplaceAll:'Asenda kõik',btnUndo:'Võta tagasi',noSuggestions:'- Soovitused puuduvad -',progress:'Toimub õigekirja kontroll...',noMispell:'Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud',noChanges:'Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud',oneChange:'Õigekirja kontroll sooritatud: üks sõna muudeti',manyChanges:'Õigekirja kontroll sooritatud: %1 sõna muudetud',ieSpellDownload:'Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?'},smiley:{toolbar:'Emotikon',title:'Sisesta emotikon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Nummerdatud loetelu',bulletedlist:'Punktiseeritud loetelu',indent:'Suurenda taanet',outdent:'Vähenda taanet',justify:{left:'Vasakjoondus',center:'Keskjoondus',right:'Paremjoondus',block:'Rööpjoondus'},blockquote:'Blokktsitaat',clipboard:{title:'Kleebi',cutError:'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).',copyError:'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).',pasteMsg:'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl/Cmd+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.',securityMsg:'Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Kleebi Wordist',title:'Kleebi Wordist',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Kleebi tavalise tekstina',title:'Kleebi tavalise tekstina'},templates:{button:'Šabloon',title:'Sisu šabloonid',options:'Template Options',insertOption:'Asenda tegelik sisu',selectPromptMsg:'Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):',emptyListMsg:'(Ühtegi šablooni ei ole defineeritud)'},showBlocks:'Näita blokke',stylesCombo:{label:'Laad',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Vorming',panelTitle:'Vorming',tag_p:'Tavaline',tag_pre:'Vormindatud',tag_address:'Aadress',tag_h1:'Pealkiri 1',tag_h2:'Pealkiri 2',tag_h3:'Pealkiri 3',tag_h4:'Pealkiri 4',tag_h5:'Pealkiri 5',tag_h6:'Pealkiri 6',tag_div:'Tavaline (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Kiri',voiceLabel:'Font',panelTitle:'Kiri'},fontSize:{label:'Suurus',voiceLabel:'Font Size',panelTitle:'Suurus'},colorButton:{textColorTitle:'Teksti värv',bgColorTitle:'Tausta värv',panelTitle:'Colors',auto:'Automaatne',more:'Rohkem värve...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/eu.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/eu.js
new file mode 100644
index 000000000..96feced95
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/eu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.eu={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'HTML Iturburua',newPage:'Orrialde Berria',save:'Gorde',preview:'Aurrebista',cut:'Ebaki',copy:'Kopiatu',paste:'Itsatsi',print:'Inprimatu',underline:'Azpimarratu',bold:'Lodia',italic:'Etzana',selectAll:'Hautatu dena',removeFormat:'Kendu Formatua',strike:'Marratua',subscript:'Azpi-indize',superscript:'Goi-indize',horizontalrule:'Txertatu Marra Horizontala',pagebreak:'Txertatu Orrialde-jauzia',unlink:'Kendu Esteka',undo:'Desegin',redo:'Berregin',common:{browseServer:'Zerbitzaria arakatu',url:'URL',protocol:'Protokoloa',upload:'Gora kargatu',uploadSubmit:'Zerbitzarira bidalia',image:'Irudia',flash:'Flasha',form:'Formularioa',checkbox:'Kontrol-laukia',radio:'Aukera-botoia',textField:'Testu Eremua',textarea:'Testu-area',hiddenField:'Ezkutuko Eremua',button:'Botoia',select:'Hautespen Eremua',imageButton:'Irudi Botoia',notSet:'<Ezarri gabe>',id:'Id',name:'Izena',langDir:'Hizkuntzaren Norabidea',langDirLtr:'Ezkerretik Eskumara(LTR)',langDirRtl:'Eskumatik Ezkerrera (RTL)',langCode:'Hizkuntza Kodea',longDescr:'URL Deskribapen Luzea',cssClass:'Estilo-orriko Klaseak',advisoryTitle:'Izenburua',cssStyle:'Estiloa',ok:'Ados',cancel:'Utzi',close:'Close',preview:'Preview',generalTab:'Orokorra',advancedTab:'Aurreratua',validateNumberFailed:'Balio hau ez da zenbaki bat.',confirmNewPage:'Eduki honetan gorde gabe dauden aldaketak galduko dira. Ziur zaude orri berri bat kargatu nahi duzula?',confirmCancel:'Aukera batzuk aldatu egin dira. Ziur zaude elkarrizketa-koadroa itxi nahi duzula?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, erabilezina</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Txertatu Karaktere Berezia',title:'Karaktere Berezia Aukeratu',options:'Special Character Options'},link:{toolbar:'Txertatu/Editatu Esteka',other:'<other>',menu:'Aldatu Esteka',title:'Esteka',info:'Estekaren Informazioa',target:'Target (Helburua)',upload:'Gora kargatu',advanced:'Aurreratua',type:'Esteka Mota',toUrl:'URL',toAnchor:'Aingura orrialde honetan',toEmail:'ePosta',targetFrame:'<marko>',targetPopup:'<popup leihoa>',targetFrameName:'Marko Helburuaren Izena',targetPopupName:'Popup Leihoaren Izena',popupFeatures:'Popup Leihoaren Ezaugarriak',popupResizable:'Tamaina Aldakorra',popupStatusBar:'Egoera Barra',popupLocationBar:'Kokaleku Barra',popupToolbar:'Tresna Barra',popupMenuBar:'Menu Barra',popupFullScreen:'Pantaila Osoa (IE)',popupScrollBars:'Korritze Barrak',popupDependent:'Menpekoa (Netscape)',popupWidth:'Zabalera',popupLeft:'Ezkerreko Posizioa',popupHeight:'Altuera',popupTop:'Goiko Posizioa',id:'Id',langDir:'Hizkuntzaren Norabidea',langDirLTR:'Ezkerretik Eskumara(LTR)',langDirRTL:'Eskumatik Ezkerrera (RTL)',acccessKey:'Sarbide-gakoa',name:'Izena',langCode:'Hizkuntzaren Norabidea',tabIndex:'Tabulazio Indizea',advisoryTitle:'Izenburua',advisoryContentType:'Eduki Mota (Content Type)',cssClasses:'Estilo-orriko Klaseak',charset:'Estekatutako Karaktere Multzoa',styles:'Estiloa',selectAnchor:'Aingura bat hautatu',anchorName:'Aingura izenagatik',anchorId:'Elementuaren ID-gatik',emailAddress:'ePosta Helbidea',emailSubject:'Mezuaren Gaia',emailBody:'Mezuaren Gorputza',noAnchors:'(Ez daude aingurak eskuragarri dokumentuan)',noUrl:'Mesedez URL esteka idatzi',noEmail:'Mesedez ePosta helbidea idatzi'},anchor:{toolbar:'Aingura',menu:'Ainguraren Ezaugarriak',title:'Ainguraren Ezaugarriak',name:'Ainguraren Izena',errorName:'Idatzi ainguraren izena'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Bilatu eta Ordeztu',find:'Bilatu',replace:'Ordezkatu',findWhat:'Zer bilatu:',replaceWith:'Zerekin ordeztu:',notFoundMsg:'Idatzitako testua ez da topatu.',matchCase:'Maiuskula/minuskula',matchWord:'Esaldi osoa bilatu',matchCyclic:'Bilaketa ziklikoa',replaceAll:'Ordeztu Guztiak',replaceSuccessMsg:'Zenbat aldiz ordeztua: %1'},table:{toolbar:'Taula',title:'Taularen Ezaugarriak',menu:'Taularen Ezaugarriak',deleteTable:'Ezabatu Taula',rows:'Lerroak',columns:'Zutabeak',border:'Ertzaren Zabalera',align:'Lerrokatu',alignLeft:'Ezkerrean',alignCenter:'Erdian',alignRight:'Eskuman',width:'Zabalera',widthPx:'pixel',widthPc:'ehuneko',widthUnit:'width unit',height:'Altuera',cellSpace:'Gelaxka arteko tartea',cellPad:'Gelaxken betegarria',caption:'Epigrafea',summary:'Laburpena',headers:'Goiburuak',headersNone:'Bat ere ez',headersColumn:'Lehen zutabea',headersRow:'Lehen lerroa',headersBoth:'Biak',invalidRows:'Lerro kopurua 0 baino handiagoa den zenbakia izan behar da.',invalidCols:'Zutabe kopurua 0 baino handiagoa den zenbakia izan behar da.',invalidBorder:'Ertzaren tamaina zenbaki bat izan behar da.',invalidWidth:'Taularen zabalera zenbaki bat izan behar da.',invalidHeight:'Taularen altuera zenbaki bat izan behar da.',invalidCellSpacing:'Gelaxka arteko tartea zenbaki bat izan behar da.',invalidCellPadding:'Gelaxken betegarria zenbaki bat izan behar da.',cell:{menu:'Gelaxka',insertBefore:'Txertatu Gelaxka Aurretik',insertAfter:'Txertatu Gelaxka Ostean',deleteCell:'Kendu Gelaxkak',merge:'Batu Gelaxkak',mergeRight:'Elkartu Eskumara',mergeDown:'Elkartu Behera',splitHorizontal:'Banatu Gelaxkak Horizontalki',splitVertical:'Banatu Gelaxkak Bertikalki',title:'Gelaxken Ezaugarriak',cellType:'Gelaxka Mota',rowSpan:'Hedatutako Lerroak',colSpan:'Hedatutako Zutabeak',wordWrap:'Itzulbira',hAlign:'Lerrokatze Horizontala',vAlign:'Lerrokatze Bertikala',alignTop:'Goian',alignMiddle:'Erdian',alignBottom:'Behean',alignBaseline:'Oinarri-lerroan',bgColor:'Fondoaren Kolorea',borderColor:'Ertzaren Kolorea',data:'Data',header:'Goiburua',yes:'Bai',no:'Ez',invalidWidth:'Gelaxkaren zabalera zenbaki bat izan behar da.',invalidHeight:'Gelaxkaren altuera zenbaki bat izan behar da.',invalidRowSpan:'Lerroen hedapena zenbaki osoa izan behar da.',invalidColSpan:'Zutabeen hedapena zenbaki osoa izan behar da.',chooseColor:'Choose'},row:{menu:'Lerroa',insertBefore:'Txertatu Lerroa Aurretik',insertAfter:'Txertatu Lerroa Ostean',deleteRow:'Ezabatu Lerroak'},column:{menu:'Zutabea',insertBefore:'Txertatu Zutabea Aurretik',insertAfter:'Txertatu Zutabea Ostean',deleteColumn:'Ezabatu Zutabeak'}},button:{title:'Botoiaren Ezaugarriak',text:'Testua (Balorea)',type:'Mota',typeBtn:'Botoia',typeSbm:'Bidali',typeRst:'Garbitu'},checkboxAndRadio:{checkboxTitle:'Kontrol-laukiko Ezaugarriak',radioTitle:'Aukera-botoiaren Ezaugarriak',value:'Balorea',selected:'Hautatuta'},form:{title:'Formularioaren Ezaugarriak',menu:'Formularioaren Ezaugarriak',action:'Ekintza',method:'Metodoa',encoding:'Kodeketa'},select:{title:'Hautespen Eremuaren Ezaugarriak',selectInfo:'Informazioa',opAvail:'Aukera Eskuragarriak',value:'Balorea',size:'Tamaina',lines:'lerro kopurura',chkMulti:'Hautaketa anitzak baimendu',opText:'Testua',opValue:'Balorea',btnAdd:'Gehitu',btnModify:'Aldatu',btnUp:'Gora',btnDown:'Behera',btnSetValue:'Aukeratutako balorea ezarri',btnDelete:'Ezabatu'},textarea:{title:'Testu-arearen Ezaugarriak',cols:'Zutabeak',rows:'Lerroak'},textfield:{title:'Testu Eremuaren Ezaugarriak',name:'Izena',value:'Balorea',charWidth:'Zabalera',maxChars:'Zenbat karaktere gehienez',type:'Mota',typeText:'Testua',typePass:'Pasahitza'},hidden:{title:'Ezkutuko Eremuaren Ezaugarriak',name:'Izena',value:'Balorea'},image:{title:'Irudi Ezaugarriak',titleButton:'Irudi Botoiaren Ezaugarriak',menu:'Irudi Ezaugarriak',infoTab:'Irudi informazioa',btnUpload:'Zerbitzarira bidalia',upload:'Gora Kargatu',alt:'Ordezko Testua',width:'Zabalera',height:'Altuera',lockRatio:'Erlazioa Blokeatu',unlockRatio:'Unlock Ratio',resetSize:'Tamaina Berrezarri',border:'Ertza',hSpace:'HSpace',vSpace:'VSpace',align:'Lerrokatu',alignLeft:'Ezkerrera',alignRight:'Eskuman',alertUrl:'Mesedez Irudiaren URLa idatzi',linkTab:'Esteka',button2Img:'Aukeratutako irudi botoia, irudi normal batean eraldatu nahi duzu?',img2Button:'Aukeratutako irudia, irudi botoi batean eraldatu nahi duzu?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flasharen Ezaugarriak',propertiesTab:'Ezaugarriak',title:'Flasharen Ezaugarriak',chkPlay:'Automatikoki Erreproduzitu',chkLoop:'Begizta',chkMenu:'Flasharen Menua Gaitu',chkFull:'Onartu Pantaila osoa',scale:'Eskalatu',scaleAll:'Dena erakutsi',scaleNoBorder:'Ertzik gabe',scaleFit:'Doitu',access:'Scriptak baimendu',accessAlways:'Beti',accessSameDomain:'Domeinu berdinekoak',accessNever:'Inoiz ere ez',align:'Lerrokatu',alignLeft:'Ezkerrera',alignAbsBottom:'Abs Behean',alignAbsMiddle:'Abs Erdian',alignBaseline:'Oinan',alignBottom:'Behean',alignMiddle:'Erdian',alignRight:'Eskuman',alignTextTop:'Testua Goian',alignTop:'Goian',quality:'Kalitatea',qualityBest:'Hoberena',qualityHigh:'Altua',qualityAutoHigh:'Auto Altua',qualityMedium:'Ertaina',qualityAutoLow:'Auto Baxua',qualityLow:'Baxua',windowModeWindow:'Leihoa',windowModeOpaque:'Opakoa',windowModeTransparent:'Gardena',windowMode:'Leihoaren modua',flashvars:'Flash Aldagaiak',bgcolor:'Atzeko kolorea',width:'Zabalera',height:'Altuera',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Mesedez URL esteka idatzi',validateWidth:'Zabalera zenbaki bat izan behar da.',validateHeight:'Altuera zenbaki bat izan behar da.',validateHSpace:'HSpace zenbaki bat izan behar da.',validateVSpace:'VSpace zenbaki bat izan behar da.'},spellCheck:{toolbar:'Ortografia',title:'Ortografia zuzenketa',notAvailable:'Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.',errorLoading:'Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.',notInDic:'Ez dago hiztegian',changeTo:'Honekin ordezkatu',btnIgnore:'Ezikusi',btnIgnoreAll:'Denak Ezikusi',btnReplace:'Ordezkatu',btnReplaceAll:'Denak Ordezkatu',btnUndo:'Desegin',noSuggestions:'- Iradokizunik ez -',progress:'Zuzenketa ortografikoa martxan...',noMispell:'Zuzenketa ortografikoa bukatuta: Akatsik ez',noChanges:'Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu',oneChange:'Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da',manyChanges:'Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira',ieSpellDownload:'Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?'},smiley:{toolbar:'Aurpegierak',title:'Aurpegiera Sartu',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 elementua'},numberedlist:'Zenbakidun Zerrenda',bulletedlist:'Buletdun Zerrenda',indent:'Handitu Koska',outdent:'Txikitu Koska',justify:{left:'Lerrokatu Ezkerrean',center:'Lerrokatu Erdian',right:'Lerrokatu Eskuman',block:'Justifikatu'},blockquote:'Aipamen blokea',clipboard:{title:'Itsatsi',cutError:'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).',copyError:'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).',pasteMsg:'Mesedez teklatua erabilita (<STRONG>Ctrl/Cmd+V</STRONG>) ondorego eremuan testua itsatsi eta <STRONG>OK</STRONG> sakatu.',securityMsg:'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?',toolbar:'Itsatsi Word-etik',title:'Itsatsi Word-etik',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Testu Arrunta bezala Itsatsi',title:'Testu Arrunta bezala Itsatsi'},templates:{button:'Txantiloiak',title:'Eduki Txantiloiak',options:'Template Options',insertOption:'Ordeztu oraingo edukiak',selectPromptMsg:'Mesedez txantiloia aukeratu editorean kargatzeko<br>(orain dauden edukiak galduko dira):',emptyListMsg:'(Ez dago definitutako txantiloirik)'},showBlocks:'Blokeak erakutsi',stylesCombo:{label:'Estiloa',panelTitle:'Formatting Styles',panelTitle1:'Bloke Estiloak',panelTitle2:'Inline Estiloak',panelTitle3:'Objektu Estiloak'},format:{label:'Formatua',panelTitle:'Formatua',tag_p:'Arrunta',tag_pre:'Formateatua',tag_address:'Helbidea',tag_h1:'Izenburua 1',tag_h2:'Izenburua 2',tag_h3:'Izenburua 3',tag_h4:'Izenburua 4',tag_h5:'Izenburua 5',tag_h6:'Izenburua 6',tag_div:'Paragrafoa (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Letra-tipoa',voiceLabel:'Letra-tipoa',panelTitle:'Letra-tipoa'},fontSize:{label:'Tamaina',voiceLabel:'Tamaina',panelTitle:'Tamaina'},colorButton:{textColorTitle:'Testu Kolorea',bgColorTitle:'Atzeko kolorea',panelTitle:'Colors',auto:'Automatikoa',more:'Kolore gehiago...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Ortografia Zuzenketa Idatzi Ahala (SCAYT)',opera_title:'Not supported by Opera',enable:'Gaitu SCAYT',disable:'Desgaitu SCAYT',about:'SCAYTi buruz',toggle:'SCAYT aldatu',options:'Aukerak',langs:'Hizkuntzak',moreSuggestions:'Iradokizun gehiago',ignore:'Baztertu',ignoreAll:'Denak baztertu',addWord:'Hitza Gehitu',emptyDic:'Hiztegiaren izena ezin da hutsik egon.',optionsTab:'Aukerak',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Hizkuntzak',dictionariesTab:'Hiztegiak',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Honi buruz'},about:{title:'CKEditor(r)i buruz',dlgTitle:'CKEditor(r)i buruz',moreInfo:'Lizentziari buruzko informazioa gure webgunean:',copy:'Copyright &copy; $1. Eskubide guztiak erreserbaturik.'},maximize:'Maximizatu',minimize:'Minimize',fakeobjects:{anchor:'Aingura',flash:'Flash Animazioa',div:'Orrialde Saltoa',unknown:'Objektu ezezaguna'},resize:'Arrastatu tamaina aldatzeko',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/fa.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/fa.js
new file mode 100644
index 000000000..a8580702d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/fa.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fa={dir:'rtl',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'منبع',newPage:'برگهٴ تازه',save:'ذخیره',preview:'پیشنمایش',cut:'برش',copy:'Ú©Ù¾ÛŒ',paste:'چسباندن',print:'چاپ',underline:'خطزیردار',bold:'درشت',italic:'خمیده',selectAll:'گزینش همه',removeFormat:'برداشتن ÙØ±Ù…ت',strike:'میانخط',subscript:'زیرنویس',superscript:'بالانویس',horizontalrule:'گنجاندن خط ÙØ§ÙÙ‚ÛŒ',pagebreak:'گنجاندن شکستگی Ùپایان ÙØ¨Ø±Ú¯Ù‡',unlink:'برداشتن پیوند',undo:'واچیدن',redo:'بازچیدن',common:{browseServer:'Ùهرستنمایی سرور',url:'URL',protocol:'پروتکل',upload:'انتقال به سرور',uploadSubmit:'به سرور Ø¨ÙØ±Ø³Øª',image:'تصویر',flash:'Flash',form:'ÙØ±Ù…',checkbox:'خانهٴ گزینهای',radio:'دکمهٴ رادیویی',textField:'Ùیلد متنی',textarea:'ناحیهٴ متنی',hiddenField:'Ùیلد پنهان',button:'دکمه',select:'Ùیلد چندگزینهای',imageButton:'دکمهٴ تصویری',notSet:'<تعیننشده>',id:'شناسه',name:'نام',langDir:'جهتنمای زبان',langDirLtr:'Ú†Ù¾ به راست (LTR)',langDirRtl:'راست به Ú†Ù¾ (RTL)',langCode:'کد زبان',longDescr:'URL توصی٠طولانی',cssClass:'کلاسهای شیوهنامه(Stylesheet)',advisoryTitle:'عنوان Ú©Ù…Ú©ÛŒ',cssStyle:'شیوه(style)',ok:'پذیرش',cancel:'انصراÙ',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Ù¾ÛŒØ´Ø±ÙØªÙ‡',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'گنجاندن نویسهٴ ویژه',title:'گزینش نویسهٴویژه',options:'Special Character Options'},link:{toolbar:'گنجاندن/ویرایش Ùپیوند',other:'<سایر>',menu:'ویرایش پیوند',title:'پیوند',info:'اطلاعات پیوند',target:'مقصد',upload:'انتقال به سرور',advanced:'Ù¾ÛŒØ´Ø±ÙØªÙ‡',type:'نوع پیوند',toUrl:'URL',toAnchor:'لنگر در همین ØµÙØ­Ù‡',toEmail:'پست الکترونیکی',targetFrame:'<ÙØ±ÛŒÙ…>',targetPopup:'<پنجرهٴ پاپاپ>',targetFrameName:'نام ÙØ±ÛŒÙ… مقصد',targetPopupName:'نام پنجرهٴ پاپاپ',popupFeatures:'ویژگیهای پنجرهٴ پاپاپ',popupResizable:'Resizable',popupStatusBar:'نوار وضعیت',popupLocationBar:'نوار موقعیت',popupToolbar:'نوارابزار',popupMenuBar:'نوار منو',popupFullScreen:'ØªÙ…Ø§Ù…ØµÙØ­Ù‡ (IE)',popupScrollBars:'میلههای پیمایش',popupDependent:'وابسته (Netscape)',popupWidth:'پهنا',popupLeft:'موقعیت ÙÚ†Ù¾',popupHeight:'درازا',popupTop:'موقعیت ÙØ¨Ø§Ù„ا',id:'Id',langDir:'جهتنمای زبان',langDirLTR:'Ú†Ù¾ به راست (LTR)',langDirRTL:'راست به Ú†Ù¾ (RTL)',acccessKey:'کلید دستیابی',name:'نام',langCode:'جهتنمای زبان',tabIndex:'نمایهٴ دسترسی با Tab',advisoryTitle:'عنوان Ú©Ù…Ú©ÛŒ',advisoryContentType:'نوع محتوای Ú©Ù…Ú©ÛŒ',cssClasses:'کلاسهای شیوهنامه(Stylesheet)',charset:'نویسهگان منبع Ùپیوندشده',styles:'شیوه(style)',selectAnchor:'یک لنگر برگزینید',anchorName:'با نام لنگر',anchorId:'با شناسهٴ المان',emailAddress:'نشانی پست الکترونیکی',emailSubject:'موضوع پیام',emailBody:'متن پیام',noAnchors:'(در این سند لنگری دردسترس نیست)',noUrl:'Ù„Ø·ÙØ§ URL پیوند را بنویسید',noEmail:'Ù„Ø·ÙØ§ نشانی پست الکترونیکی را بنویسید'},anchor:{toolbar:'گنجاندن/ویرایش Ùلنگر',menu:'ویژگیهای لنگر',title:'ویژگیهای لنگر',name:'نام لنگر',errorName:'Ù„Ø·ÙØ§ نام لنگر را بنویسید'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'جستجو Ùˆ جایگزینی',find:'جستجو',replace:'جایگزینی',findWhat:'چهچیز را مییابید:',replaceWith:'جایگزینی با:',notFoundMsg:'متن موردنظر ÛŒØ§ÙØª نشد.',matchCase:'همسانی در بزرگی Ùˆ Ú©ÙˆÚ†Ú©ÛŒ نویسهها',matchWord:'همسانی با واژهٴ کامل',matchCyclic:'Match cyclic',replaceAll:'جایگزینی همهٴ ÛŒØ§ÙØªÙ‡Ù‡Ø§',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'جدول',title:'ویژگیهای جدول',menu:'ویژگیهای جدول',deleteTable:'پاککردن جدول',rows:'سطرها',columns:'ستونها',border:'اندازهٴ لبه',align:'چینش',alignLeft:'Ú†Ù¾',alignCenter:'وسط',alignRight:'راست',width:'پهنا',widthPx:'پیکسل',widthPc:'درصد',widthUnit:'width unit',height:'درازا',cellSpace:'ÙØ§ØµÙ„هٴ میان سلولها',cellPad:'ÙØ§ØµÙ„هٴ پرشده در سلول',caption:'عنوان',summary:'خلاصه',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'سلول',insertBefore:'Ø§ÙØ²ÙˆØ¯Ù† سلول قبل از',insertAfter:'Ø§ÙØ²ÙˆØ¯Ù† سلول بعد از',deleteCell:'حذ٠سلولها',merge:'ادغام سلولها',mergeRight:'ادغام به راست',mergeDown:'ادغام به پایین',splitHorizontal:'جدا کردن اÙÙ‚ÛŒ سلول',splitVertical:'جدا کردن عمودی سلول',title:'ویژگیهای سلول',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'سطر',insertBefore:'Ø§ÙØ²ÙˆØ¯Ù† سطر قبل از',insertAfter:'Ø§ÙØ²ÙˆØ¯Ù† سطر بعد از',deleteRow:'حذ٠سطرها'},column:{menu:'ستون',insertBefore:'Ø§ÙØ²ÙˆØ¯Ù† ستون قبل از',insertAfter:'Ø§ÙØ²ÙˆØ¯Ù† ستون بعد از',deleteColumn:'حذ٠ستونها'}},button:{title:'ویژگیهای دکمه',text:'متن (مقدار)',type:'نوع',typeBtn:'دکمه',typeSbm:'Submit',typeRst:'بازنشانی (Reset)'},checkboxAndRadio:{checkboxTitle:'ویژگیهای خانهٴ گزینهای',radioTitle:'ویژگیهای دکمهٴ رادیویی',value:'مقدار',selected:'برگزیده'},form:{title:'ویژگیهای ÙØ±Ù…',menu:'ویژگیهای ÙØ±Ù…',action:'رویداد',method:'متد',encoding:'Encoding'},select:{title:'ویژگیهای Ùیلد چندگزینهای',selectInfo:'اطلاعات',opAvail:'گزینههای دردسترس',value:'مقدار',size:'اندازه',lines:'خطوط',chkMulti:'گزینش چندگانه ÙØ±Ø§Ù‡Ù… باشد',opText:'متن',opValue:'مقدار',btnAdd:'Ø§ÙØ²ÙˆØ¯Ù†',btnModify:'ویرایش',btnUp:'بالا',btnDown:'پائین',btnSetValue:'تنظیم به عنوان مقدار ÙØ¨Ø±Ú¯Ø²ÛŒØ¯Ù‡',btnDelete:'پاککردن'},textarea:{title:'ویژگیهای ناحیهٴ متنی',cols:'ستونها',rows:'سطرها'},textfield:{title:'ویژگیهای Ùیلد متنی',name:'نام',value:'مقدار',charWidth:'پهنای نویسه',maxChars:'بیشینهٴ نویسهها',type:'نوع',typeText:'متن',typePass:'گذرواژه'},hidden:{title:'ویژگیهای Ùیلد پنهان',name:'نام',value:'مقدار'},image:{title:'ویژگیهای تصویر',titleButton:'ویژگیهای دکمهٴ تصویری',menu:'ویژگیهای تصویر',infoTab:'اطلاعات تصویر',btnUpload:'به سرور Ø¨ÙØ±Ø³Øª',upload:'انتقال به سرور',alt:'متن جایگزین',width:'پهنا',height:'درازا',lockRatio:'Ù‚Ùلکردن Ùنسبت',unlockRatio:'Unlock Ratio',resetSize:'بازنشانی اندازه',border:'لبه',hSpace:'ÙØ§ØµÙ„هٴ اÙÙ‚ÛŒ',vSpace:'ÙØ§ØµÙ„هٴ عمودی',align:'چینش',alignLeft:'Ú†Ù¾',alignRight:'راست',alertUrl:'Ù„Ø·ÙØ§ URL تصویر را بنویسید',linkTab:'پیوند',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ویژگیهای Flash',propertiesTab:'Properties',title:'ویژگیهای Flash',chkPlay:'آغاز ÙØ®ÙˆØ¯Ú©Ø§Ø±',chkLoop:'اجرای پیاپی',chkMenu:'دردسترسبودن منوی Flash',chkFull:'Allow Fullscreen',scale:'مقیاس',scaleAll:'نمایش همه',scaleNoBorder:'بدون کران',scaleFit:'جایگیری کامل',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'چینش',alignLeft:'Ú†Ù¾',alignAbsBottom:'پائین مطلق',alignAbsMiddle:'وسط مطلق',alignBaseline:'خطپایه',alignBottom:'پائین',alignMiddle:'وسط',alignRight:'راست',alignTextTop:'متن بالا',alignTop:'بالا',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'رنگ پسزمینه',width:'پهنا',height:'درازا',hSpace:'ÙØ§ØµÙ„هٴ اÙÙ‚ÛŒ',vSpace:'ÙØ§ØµÙ„هٴ عمودی',validateSrc:'Ù„Ø·ÙØ§ URL پیوند را بنویسید',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'بررسی املا',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'در واژهنامه ÛŒØ§ÙØª نشد',changeTo:'تغییر به',btnIgnore:'چشمپوشی',btnIgnoreAll:'چشمپوشی همه',btnReplace:'جایگزینی',btnReplaceAll:'جایگزینی همه',btnUndo:'واچینش',noSuggestions:'- پیشنهادی نیست -',progress:'بررسی املا در حال انجام...',noMispell:'بررسی املا انجام شد. هیچ غلطاملائی ÛŒØ§ÙØª نشد',noChanges:'بررسی املا انجام شد. هیچ واژهای تغییر Ù†ÛŒØ§ÙØª',oneChange:'بررسی املا انجام شد. یک واژه تغییر ÛŒØ§ÙØª',manyChanges:'بررسی املا انجام شد. %1 واژه تغییر ÛŒØ§ÙØª',ieSpellDownload:'بررسیکنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون Ø¯Ø±ÛŒØ§ÙØª کنید؟'},smiley:{toolbar:'خندانک',title:'گنجاندن خندانک',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Ùهرست شمارهدار',bulletedlist:'Ùهرست نقطهای',indent:'Ø§ÙØ²Ø§ÛŒØ´ ØªÙˆØ±ÙØªÚ¯ÛŒ',outdent:'کاهش ØªÙˆØ±ÙØªÚ¯ÛŒ',justify:{left:'چپچین',center:'میانچین',right:'راستچین',block:'بلوکچین'},blockquote:'بلوک نقل قول',clipboard:{title:'چسباندن',cutError:'تنظیمات امنیتی مرورگر شما اجازه نمیدهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. Ù„Ø·ÙØ§ با دکمههای ØµÙØ­Ù‡Ú©Ù„ید این کار را انجام دهید (Ctrl/Cmd+X).',copyError:'تنظیمات امنیتی مرورگر شما اجازه نمیدهد Ú©Ù‡ ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. Ù„Ø·ÙØ§ با دکمههای ØµÙØ­Ù‡Ú©Ù„ید این کار را انجام دهید (Ctrl/Cmd+C).',pasteMsg:'Ù„Ø·ÙØ§ متن را با کلیدهای (<STRONG>Ctrl/Cmd+V</STRONG>) در این جعبهٴ متنی بچسبانید Ùˆ <STRONG>پذیرش</STRONG> را بزنید.',securityMsg:'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'چسباندن از Word',title:'چسباندن از Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'چسباندن به عنوان متن ÙØ³Ø§Ø¯Ù‡',title:'چسباندن به عنوان متن ÙØ³Ø§Ø¯Ù‡'},templates:{button:'الگوها',title:'الگوهای محتویات',options:'Template Options',insertOption:'محتویات کنونی جایگزین شوند',selectPromptMsg:'Ù„Ø·ÙØ§ الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید<br>(محتویات کنونی از دست خواهند Ø±ÙØª):',emptyListMsg:'(الگوئی تعری٠نشده است)'},showBlocks:'نمایش بلوکها',stylesCombo:{label:'سبک',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ÙØ±Ù…ت',panelTitle:'ÙØ±Ù…ت',tag_p:'نرمال',tag_pre:'ÙØ±Ù…تشده',tag_address:'آدرس',tag_h1:'سرنویس 1',tag_h2:'سرنویس 2',tag_h3:'سرنویس 3',tag_h4:'سرنویس 4',tag_h5:'سرنویس 5',tag_h6:'سرنویس 6',tag_div:'بند'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'قلم',voiceLabel:'Font',panelTitle:'قلم'},fontSize:{label:'اندازه',voiceLabel:'Font Size',panelTitle:'اندازه'},colorButton:{textColorTitle:'رنگ متن',bgColorTitle:'رنگ پسزمینه',panelTitle:'Colors',auto:'خودکار',more:'رنگهای بیشتر...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/fi.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/fi.js
new file mode 100644
index 000000000..8055be55f
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/fi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fi={dir:'ltr',editorTitle:'Rikastekstieditori, %1, paina ALT 0 nähdäksesi ohjeen.',toolbar:'Työkalupalkki',editor:'Rikastekstieditori',source:'Koodi',newPage:'Tyhjennä',save:'Tallenna',preview:'Esikatsele',cut:'Leikkaa',copy:'Kopioi',paste:'Liitä',print:'Tulosta',underline:'Alleviivattu',bold:'Lihavoitu',italic:'Kursivoitu',selectAll:'Valitse kaikki',removeFormat:'Poista muotoilu',strike:'Yliviivattu',subscript:'Alaindeksi',superscript:'Yläindeksi',horizontalrule:'Lisää murtoviiva',pagebreak:'Lisää sivun vaihto',unlink:'Poista linkki',undo:'Kumoa',redo:'Toista',common:{browseServer:'Selaa palvelinta',url:'Osoite',protocol:'Protokolla',upload:'Lisää tiedosto',uploadSubmit:'Lähetä palvelimelle',image:'Kuva',flash:'Flash',form:'Lomake',checkbox:'Valintaruutu',radio:'Radiopainike',textField:'Tekstikenttä',textarea:'Tekstilaatikko',hiddenField:'Piilokenttä',button:'Painike',select:'Valintakenttä',imageButton:'Kuvapainike',notSet:'<ei asetettu>',id:'Tunniste',name:'Nimi',langDir:'Kielen suunta',langDirLtr:'Vasemmalta oikealle (LTR)',langDirRtl:'Oikealta vasemmalle (RTL)',langCode:'Kielikoodi',longDescr:'Pitkän kuvauksen URL',cssClass:'Tyyliluokat',advisoryTitle:'Avustava otsikko',cssStyle:'Tyyli',ok:'OK',cancel:'Peruuta',close:'Sulje',preview:'Esikatselu',generalTab:'Yleinen',advancedTab:'Lisäominaisuudet',validateNumberFailed:'Arvon pitää olla numero.',confirmNewPage:'Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?',confirmCancel:'Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?',options:'Asetukset',target:'Kohde',targetNew:'Uusi ikkuna (_blank)',targetTop:'Päällimmäinen ikkuna (_top)',targetSelf:'Sama ikkuna (_self)',targetParent:'Ylemmän tason ikkuna (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, ei saatavissa</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Lisää erikoismerkki',title:'Valitse erikoismerkki',options:'Special Character Options'},link:{toolbar:'Lisää linkki/muokkaa linkkiä',other:'<muu>',menu:'Muokkaa linkkiä',title:'Linkki',info:'Linkin tiedot',target:'Kohde',upload:'Lisää tiedosto',advanced:'Lisäominaisuudet',type:'Linkkityyppi',toUrl:'Osoite',toAnchor:'Ankkuri tässä sivussa',toEmail:'Sähköposti',targetFrame:'<kehys>',targetPopup:'<popup ikkuna>',targetFrameName:'Kohdekehyksen nimi',targetPopupName:'Popup ikkunan nimi',popupFeatures:'Popup ikkunan ominaisuudet',popupResizable:'Venytettävä',popupStatusBar:'Tilarivi',popupLocationBar:'Osoiterivi',popupToolbar:'Vakiopainikkeet',popupMenuBar:'Valikkorivi',popupFullScreen:'Täysi ikkuna (IE)',popupScrollBars:'Vierityspalkit',popupDependent:'Riippuva (Netscape)',popupWidth:'Leveys',popupLeft:'Vasemmalta (px)',popupHeight:'Korkeus',popupTop:'Ylhäältä (px)',id:'Tunniste',langDir:'Kielen suunta',langDirLTR:'Vasemmalta oikealle (LTR)',langDirRTL:'Oikealta vasemmalle (RTL)',acccessKey:'Pikanäppäin',name:'Nimi',langCode:'Kielen suunta',tabIndex:'Tabulaattori indeksi',advisoryTitle:'Avustava otsikko',advisoryContentType:'Avustava sisällön tyyppi',cssClasses:'Tyyliluokat',charset:'Linkitetty kirjaimisto',styles:'Tyyli',selectAnchor:'Valitse ankkuri',anchorName:'Ankkurin nimen mukaan',anchorId:'Ankkurin ID:n mukaan',emailAddress:'Sähköpostiosoite',emailSubject:'Aihe',emailBody:'Viesti',noAnchors:'(Ei ankkureita tässä dokumentissa)',noUrl:'Linkille on kirjoitettava URL',noEmail:'Kirjoita sähköpostiosoite'},anchor:{toolbar:'Lisää ankkuri/muokkaa ankkuria',menu:'Ankkurin ominaisuudet',title:'Ankkurin ominaisuudet',name:'Nimi',errorName:'Ankkurille on kirjoitettava nimi'},list:{numberedTitle:'Numeroidun listan ominaisuudet',bulletedTitle:'Numeroimattoman listan ominaisuudet',type:'Tyyppi',start:'Alku',validateStartNumber:'List start number must be a whole number.',circle:'Ympyrä',disc:'Levy',square:'Neliö',none:'Ei mikään',notset:'<ei asetettu>',armenian:'Armeenialainen numerointi',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Pienet roomalaiset (i, ii, iii, iv, v, jne.)',upperRoman:'Isot roomalaiset (I, II, III, IV, V, jne.)',lowerAlpha:'Pienet aakkoset (a, b, c, d, e, jne.)',upperAlpha:'Isot aakkoset (A, B, C, D, E, jne.)',lowerGreek:'Pienet kreikkalaiset (alpha, beta, gamma, jne.)',decimal:'Desimaalit (1, 2, 3, jne.)',decimalLeadingZero:'Desimaalit, alussa nolla (01, 02, 03, jne.)'},findAndReplace:{title:'Etsi ja korvaa',find:'Etsi',replace:'Korvaa',findWhat:'Etsi mitä:',replaceWith:'Korvaa tällä:',notFoundMsg:'Etsittyä tekstiä ei löytynyt.',matchCase:'Sama kirjainkoko',matchWord:'Koko sana',matchCyclic:'Kierrä ympäri',replaceAll:'Korvaa kaikki',replaceSuccessMsg:'%1 esiintymä(ä) korvattu.'},table:{toolbar:'Taulu',title:'Taulun ominaisuudet',menu:'Taulun ominaisuudet',deleteTable:'Poista taulu',rows:'Rivit',columns:'Sarakkeet',border:'Rajan paksuus',align:'Kohdistus',alignLeft:'Vasemmalle',alignCenter:'Keskelle',alignRight:'Oikealle',width:'Leveys',widthPx:'pikseliä',widthPc:'prosenttia',widthUnit:'leveysyksikkö',height:'Korkeus',cellSpace:'Solujen väli',cellPad:'Solujen sisennys',caption:'Otsikko',summary:'Yhteenveto',headers:'Ylätunnisteet',headersNone:'Ei',headersColumn:'Ensimmäinen sarake',headersRow:'Ensimmäinen rivi',headersBoth:'Molemmat',invalidRows:'Rivien määrän täytyy olla suurempi kuin 0.',invalidCols:'Sarakkeiden määrän täytyy olla suurempi kuin 0.',invalidBorder:'Reunan koon täytyy olla numero.',invalidWidth:'Taulun leveyden täytyy olla numero.',invalidHeight:'Taulun korkeuden täytyy olla numero.',invalidCellSpacing:'Solujen välin täytyy olla numero.',invalidCellPadding:'Solujen sisennyksen täytyy olla numero.',cell:{menu:'Solu',insertBefore:'Lisää solu eteen',insertAfter:'Lisää solu perään',deleteCell:'Poista solut',merge:'Yhdistä solut',mergeRight:'Yhdistä oikealla olevan kanssa',mergeDown:'Yhdistä alla olevan kanssa',splitHorizontal:'Jaa solu vaakasuunnassa',splitVertical:'Jaa solu pystysuunnassa',title:'Solun ominaisuudet',cellType:'Solun tyyppi',rowSpan:'Rivin jatkuvuus',colSpan:'Solun jatkuvuus',wordWrap:'Rivitys',hAlign:'Horisontaali kohdistus',vAlign:'Vertikaali kohdistus',alignTop:'Ylös',alignMiddle:'Keskelle',alignBottom:'Alas',alignBaseline:'Alas (teksti)',bgColor:'Taustan väri',borderColor:'Reunan väri',data:'Data',header:'Ylätunniste',yes:'Kyllä',no:'Ei',invalidWidth:'Solun leveyden täytyy olla numero.',invalidHeight:'Solun korkeuden täytyy olla numero.',invalidRowSpan:'Rivin jatkuvuuden täytyy olla kokonaisluku.',invalidColSpan:'Solun jatkuvuuden täytyy olla kokonaisluku.',chooseColor:'Valitse'},row:{menu:'Rivi',insertBefore:'Lisää rivi yläpuolelle',insertAfter:'Lisää rivi alapuolelle',deleteRow:'Poista rivit'},column:{menu:'Sarake',insertBefore:'Lisää sarake vasemmalle',insertAfter:'Lisää sarake oikealle',deleteColumn:'Poista sarakkeet'}},button:{title:'Painikkeen ominaisuudet',text:'Teksti (arvo)',type:'Tyyppi',typeBtn:'Painike',typeSbm:'Lähetä',typeRst:'Tyhjennä'},checkboxAndRadio:{checkboxTitle:'Valintaruudun ominaisuudet',radioTitle:'Radiopainikkeen ominaisuudet',value:'Arvo',selected:'Valittu'},form:{title:'Lomakkeen ominaisuudet',menu:'Lomakkeen ominaisuudet',action:'Toiminto',method:'Tapa',encoding:'Enkoodaus'},select:{title:'Valintakentän ominaisuudet',selectInfo:'Info',opAvail:'Ominaisuudet',value:'Arvo',size:'Koko',lines:'Rivit',chkMulti:'Salli usea valinta',opText:'Teksti',opValue:'Arvo',btnAdd:'Lisää',btnModify:'Muuta',btnUp:'Ylös',btnDown:'Alas',btnSetValue:'Aseta valituksi',btnDelete:'Poista'},textarea:{title:'Tekstilaatikon ominaisuudet',cols:'Sarakkeita',rows:'Rivejä'},textfield:{title:'Tekstikentän ominaisuudet',name:'Nimi',value:'Arvo',charWidth:'Leveys',maxChars:'Maksimi merkkimäärä',type:'Tyyppi',typeText:'Teksti',typePass:'Salasana'},hidden:{title:'Piilokentän ominaisuudet',name:'Nimi',value:'Arvo'},image:{title:'Kuvan ominaisuudet',titleButton:'Kuvapainikkeen ominaisuudet',menu:'Kuvan ominaisuudet',infoTab:'Kuvan tiedot',btnUpload:'Lähetä palvelimelle',upload:'Lisää kuva',alt:'Vaihtoehtoinen teksti',width:'Leveys',height:'Korkeus',lockRatio:'Lukitse suhteet',unlockRatio:'Vapauta suhteet',resetSize:'Alkuperäinen koko',border:'Kehys',hSpace:'Vaakatila',vSpace:'Pystytila',align:'Kohdistus',alignLeft:'Vasemmalle',alignRight:'Oikealle',alertUrl:'Kirjoita kuvan osoite (URL)',linkTab:'Linkki',button2Img:'Haluatko muuntaa valitun kuvanäppäimen kuvaksi?',img2Button:'Haluatko muuntaa valitun kuvan kuvanäppäimeksi?',urlMissing:'Kuvan lähdeosoite puuttuu.',validateWidth:'Leveyden täytyy olla kokonaisluku.',validateHeight:'Korkeuden täytyy olla kokonaisluku.',validateBorder:'Kehyksen täytyy olla kokonaisluku.',validateHSpace:'HSpace-määrityksen täytyy olla kokonaisluku.',validateVSpace:'VSpace-määrityksen täytyy olla kokonaisluku.'},flash:{properties:'Flash-ominaisuudet',propertiesTab:'Ominaisuudet',title:'Flash ominaisuudet',chkPlay:'Automaattinen käynnistys',chkLoop:'Toisto',chkMenu:'Näytä Flash-valikko',chkFull:'Salli kokoruututila',scale:'Levitä',scaleAll:'Näytä kaikki',scaleNoBorder:'Ei rajaa',scaleFit:'Tarkka koko',access:'Skriptien pääsy',accessAlways:'Aina',accessSameDomain:'Sama verkkotunnus',accessNever:'Ei koskaan',align:'Kohdistus',alignLeft:'Vasemmalle',alignAbsBottom:'Aivan alas',alignAbsMiddle:'Aivan keskelle',alignBaseline:'Alas (teksti)',alignBottom:'Alas',alignMiddle:'Keskelle',alignRight:'Oikealle',alignTextTop:'Ylös (teksti)',alignTop:'Ylös',quality:'Laatu',qualityBest:'Paras',qualityHigh:'Korkea',qualityAutoHigh:'Automaattinen korkea',qualityMedium:'Keskitaso',qualityAutoLow:'Automaattinen matala',qualityLow:'Matala',windowModeWindow:'Ikkuna',windowModeOpaque:'Läpinäkyvyys',windowModeTransparent:'Läpinäkyvä',windowMode:'Ikkuna tila',flashvars:'Muuttujat Flash:lle',bgcolor:'Taustaväri',width:'Leveys',height:'Korkeus',hSpace:'Vaakatila',vSpace:'Pystytila',validateSrc:'Linkille on kirjoitettava URL',validateWidth:'Leveyden täytyy olla numero.',validateHeight:'Korkeuden täytyy olla numero.',validateHSpace:'Vaakatilan täytyy olla numero.',validateVSpace:'Pystytilan täytyy olla numero.'},spellCheck:{toolbar:'Tarkista oikeinkirjoitus',title:'Oikoluku',notAvailable:'Valitettavasti oikoluku ei ole käytössä tällä hetkellä.',errorLoading:'Virhe ladattaessa oikolukupalvelua isännältä: %s.',notInDic:'Ei sanakirjassa',changeTo:'Vaihda',btnIgnore:'Jätä huomioimatta',btnIgnoreAll:'Jätä kaikki huomioimatta',btnReplace:'Korvaa',btnReplaceAll:'Korvaa kaikki',btnUndo:'Kumoa',noSuggestions:'Ei ehdotuksia',progress:'Tarkistus käynnissä...',noMispell:'Tarkistus valmis: Ei virheitä',noChanges:'Tarkistus valmis: Yhtään sanaa ei muutettu',oneChange:'Tarkistus valmis: Yksi sana muutettiin',manyChanges:'Tarkistus valmis: %1 sanaa muutettiin',ieSpellDownload:'Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?'},smiley:{toolbar:'Hymiö',title:'Lisää hymiö',options:'Smiley Options'},elementsPath:{eleLabel:'Elementin polku',eleTitle:'%1 elementti'},numberedlist:'Numerointi',bulletedlist:'Luottelomerkit',indent:'Suurenna sisennystä',outdent:'Pienennä sisennystä',justify:{left:'Tasaa vasemmat reunat',center:'Keskitä',right:'Tasaa oikeat reunat',block:'Tasaa molemmat reunat'},blockquote:'Lainaus',clipboard:{title:'Liitä',cutError:'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).',copyError:'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).',pasteMsg:'Liitä painamalla (<STRONG>Ctrl+V</STRONG>) ja painamalla <STRONG>OK</STRONG>.',securityMsg:'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.',pasteArea:'Leikealue'},pastefromword:{confirmCleanup:'Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)',toolbar:'Liitä Word-dokumentista',title:'Liitä Word-dokumentista',error:'Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia'},pasteText:{button:'Liitä tekstinä',title:'Liitä tekstinä'},templates:{button:'Pohjat',title:'Sisältöpohjat',options:'Template Options',insertOption:'Korvaa editorin koko sisältö',selectPromptMsg:'Valitse pohja editoriin<br>(aiempi sisältö menetetään):',emptyListMsg:'(Ei määriteltyjä pohjia)'},showBlocks:'Näytä elementit',stylesCombo:{label:'Tyyli',panelTitle:'Muotoilujen tyylit',panelTitle1:'Lohkojen tyylit',panelTitle2:'Rivinsisäiset tyylit',panelTitle3:'Objektien tyylit'},format:{label:'Muotoilu',panelTitle:'Muotoilu',tag_p:'Normaali',tag_pre:'Muotoiltu',tag_address:'Osoite',tag_h1:'Otsikko 1',tag_h2:'Otsikko 2',tag_h3:'Otsikko 3',tag_h4:'Otsikko 4',tag_h5:'Otsikko 5',tag_h6:'Otsikko 6',tag_div:'Normaali (DIV)'},div:{title:'Luo div-kehikko',toolbar:'Luo div-kehikko',cssClassInputLabel:'Tyylitiedoston luokat',styleSelectLabel:'Tyyli',IdInputLabel:'Id',languageCodeInputLabel:' Kielen koodi',inlineStyleInputLabel:'Sisätyyli',advisoryTitleInputLabel:'Ohjeistava otsikko',langDirLabel:'Kielen suunta',langDirLTRLabel:'Vasemmalta oikealle (LTR)',langDirRTLLabel:'Oikealta vasemmalle (RTL)',edit:'Muokkaa Diviä',remove:'Poista Div'},font:{label:'Kirjaisinlaji',voiceLabel:'Kirjaisinlaji',panelTitle:'Kirjaisinlaji'},fontSize:{label:'Koko',voiceLabel:'Kirjaisimen koko',panelTitle:'Koko'},colorButton:{textColorTitle:'Tekstiväri',bgColorTitle:'Taustaväri',panelTitle:'Värit',auto:'Automaattinen',more:'Lisää värejä...'},colors:{'000':'Musta',800000:'Kastanjanruskea','8B4513':'Satulanruskea','2F4F4F':'Tumma liuskekivenharmaa','008080':'Sinivihreä','000080':'Laivastonsininen','4B0082':'Indigonsininen',696969:'Tummanharmaa',B22222:'Tiili',A52A2A:'Ruskea',DAA520:'Kultapiisku','006400':'Tummanvihreä','40E0D0':'Turkoosi','0000CD':'Keskisininen',800080:'Purppura',808080:'Harmaa',F00:'Punainen',FF8C00:'Tumma oranssi',FFD700:'Kulta','008000':'Vihreä','0FF':'Syaani','00F':'Sininen',EE82EE:'Violetti',A9A9A9:'Tummanharmaa',FFA07A:'Vaaleanlohenpunainen',FFA500:'Oranssi',FFFF00:'Keltainen','00FF00':'Limetin vihreä',AFEEEE:'Haalea turkoosi',ADD8E6:'Vaaleansininen',DDA0DD:'Luumu',D3D3D3:'Vaaleanharmaa',FFF0F5:'Laventelinpunainen',FAEBD7:'Antiikinvalkoinen',FFFFE0:'Vaaleankeltainen',F0FFF0:'Hunajameloni',F0FFFF:'Asurinsininen',F0F8FF:'Alice Blue -sininen',E6E6FA:'Lavanteli',FFF:'Valkoinen'},scayt:{title:'Oikolue kirjoitettaessa',opera_title:'Opera ei tue tätä ominaisuutta',enable:'Ota käyttöön oikoluku kirjoitettaessa',disable:'Poista käytöstä oikoluku kirjoitetaessa',about:'Tietoja oikoluvusta kirjoitetaessa',toggle:'Vaihda oikoluku kirjoittaessa tilaa',options:'Asetukset',langs:'Kielet',moreSuggestions:'Lisää ehdotuksia',ignore:'Ohita',ignoreAll:'Ohita kaikki',addWord:'Lisää sana',emptyDic:'Sanakirjan nimi on annettava.',optionsTab:'Asetukset',allCaps:'Ohita sanat, jotka on kirjoitettu kokonaan isoilla kirjaimilla',ignoreDomainNames:'Ohita verkkotunnukset',mixedCase:'Ohita sanat, joissa on sekoitettu isoja ja pieniä kirjaimia',mixedWithDigits:'Ohita sanat, joissa on numeroita',languagesTab:'Kielet',dictionariesTab:'Sanakirjat',dic_field_name:'Sanakirjan nimi',dic_create:'Luo',dic_restore:'Palauta',dic_delete:'Poista',dic_rename:'Nimeä uudelleen',dic_info:'Oletuksena sanakirjat tallennetaan evästeeseen, mutta evästeiden koko on kuitenkin rajallinen. Sanakirjan kasvaessa niin suureksi, ettei se enää mahdu evästeeseen, sanakirja täytyy tallentaa palvelimellemme. Tallentaaksesi sanakirjasi palvelimellemme tulee sinun antaa sille nimi. Jos olet jo tallentanut sanakirjan, anna sen nimi ja klikkaa Palauta-painiketta',aboutTab:'Tietoa'},about:{title:'Tietoa CKEditorista',dlgTitle:'Tietoa CKEditorista',moreInfo:'Lisenssitiedot löytyvät kotisivuiltamme:',copy:'Copyright &copy; $1. Kaikki oikeuden pidätetään.'},maximize:'Suurenna',minimize:'Pienennä',fakeobjects:{anchor:'Ankkuri',flash:'Flash animaatio',div:'Sivun vaihto',unknown:'Tuntematon objekti'},resize:'Raahaa muuttaaksesi kokoa',colordialog:{title:'Valitse väri',options:'Color Options',highlight:'Korostus',selected:'Valittu',clear:'Poista'},toolbarCollapse:'Kutista työkalupalkki',toolbarExpand:'Laajenna työkalupalkki',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/fo.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/fo.js
new file mode 100644
index 000000000..b12094496
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/fo.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fo={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Kelda',newPage:'Nýggj síða',save:'Goym',preview:'Frumsýning',cut:'Kvett',copy:'Avrita',paste:'Innrita',print:'Prenta',underline:'Undirstrikað',bold:'Feit skrift',italic:'Skráskrift',selectAll:'Markera alt',removeFormat:'Strika sniðgeving',strike:'Yvirstrikað',subscript:'Lækkað skrift',superscript:'Hækkað skrift',horizontalrule:'Ger vatnrætta linju',pagebreak:'Ger síðuskift',unlink:'Strika tilknýti',undo:'Angra',redo:'Vend aftur',common:{browseServer:'Ambætarakagi',url:'URL',protocol:'Protokoll',upload:'Send til ambætaran',uploadSubmit:'Send til ambætaran',image:'Myndir',flash:'Flash',form:'Formur',checkbox:'Flugubein',radio:'Radioknøttur',textField:'Tekstteigur',textarea:'Tekstumráði',hiddenField:'Fjaldur teigur',button:'Knøttur',select:'Valskrá',imageButton:'Myndaknøttur',notSet:'<ikki sett>',id:'Id',name:'Navn',langDir:'Tekstkós',langDirLtr:'Frá vinstru til høgru (LTR)',langDirRtl:'Frá høgru til vinstru (RTL)',langCode:'Málkoda',longDescr:'Víðkað URL frágreiðing',cssClass:'Typografi klassar',advisoryTitle:'Vegleiðandi heiti',cssStyle:'Typografi',ok:'Góðkent',cancel:'Avlýst',close:'Lat aftur',preview:'Frumsýn',generalTab:'Generelt',advancedTab:'Fjølbroytt',validateNumberFailed:'Hetta er ikki eitt tal.',confirmNewPage:'Allar ikki goymdar broytingar í hesum innihaldi hvørva. Skal nýggj síða lesast kortini?',confirmCancel:'Nakrir valmøguleikar eru broyttir. Ert tú vísur í, at dialogurin skal latast aftur?',options:'Options',target:'Target',targetNew:'Nýtt vindeyga (_blank)',targetTop:'Vindeyga ovast (_top)',targetSelf:'Sama vindeyga (_self)',targetParent:'Upphavligt vindeyga (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, ikki tøkt</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Set inn sertekn',title:'Vel sertekn',options:'Special Character Options'},link:{toolbar:'Ger/broyt tilknýti',other:'<other>',menu:'Broyt tilknýti',title:'Tilknýti',info:'Tilknýtis upplýsingar',target:'Target',upload:'Send til ambætaran',advanced:'Fjølbroytt',type:'Tilknýtisslag',toUrl:'URL',toAnchor:'Tilknýti til marknastein í tekstinum',toEmail:'Teldupostur',targetFrame:'<ramma>',targetPopup:'<popup vindeyga>',targetFrameName:'Vís navn vindeygans',targetPopupName:'Popup vindeygans navn',popupFeatures:'Popup vindeygans víðkaðu eginleikar',popupResizable:'Resizable',popupStatusBar:'Støðufrágreiðingarbjálki',popupLocationBar:'Adressulinja',popupToolbar:'Amboðsbjálki',popupMenuBar:'Skrábjálki',popupFullScreen:'Fullur skermur (IE)',popupScrollBars:'Rullibjálki',popupDependent:'Bundið (Netscape)',popupWidth:'Breidd',popupLeft:'Frástøða frá vinstru',popupHeight:'Hædd',popupTop:'Frástøða frá íerva',id:'Id',langDir:'Tekstkós',langDirLTR:'Frá vinstru til høgru (LTR)',langDirRTL:'Frá høgru til vinstru (RTL)',acccessKey:'Snarvegisknappur',name:'Navn',langCode:'Tekstkós',tabIndex:'Inntriv indeks',advisoryTitle:'Vegleiðandi heiti',advisoryContentType:'Vegleiðandi innihaldsslag',cssClasses:'Typografi klassar',charset:'Atknýtt teknsett',styles:'Typografi',selectAnchor:'Vel ein marknastein',anchorName:'Eftir navni á marknasteini',anchorId:'Eftir element Id',emailAddress:'Teldupost-adressa',emailSubject:'Evni',emailBody:'Breyðtekstur',noAnchors:'(Eingir marknasteinar eru í hesum dokumentið)',noUrl:'Vinarliga skriva tilknýti (URL)',noEmail:'Vinarliga skriva teldupost-adressu'},anchor:{toolbar:'Ger/broyt marknastein',menu:'Eginleikar fyri marknastein',title:'Eginleikar fyri marknastein',name:'Heiti marknasteinsins',errorName:'Vinarliga rita marknasteinsins heiti'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Finn og broyt',find:'Leita',replace:'Yvirskriva',findWhat:'Finn:',replaceWith:'Yvirskriva við:',notFoundMsg:'Leititeksturin varð ikki funnin',matchCase:'Munur á stórum og smáum bókstavum',matchWord:'Bert heil orð',matchCyclic:'Match cyclic',replaceAll:'Yvirskriva alt',replaceSuccessMsg:'%1 úrslit broytt.'},table:{toolbar:'Tabell',title:'Eginleikar fyri tabell',menu:'Eginleikar fyri tabell',deleteTable:'Strika tabell',rows:'Røðir',columns:'Kolonnur',border:'Bordabreidd',align:'Justering',alignLeft:'Vinstrasett',alignCenter:'Miðsett',alignRight:'Høgrasett',width:'Breidd',widthPx:'pixels',widthPc:'prosent',widthUnit:'breiddar unit',height:'Hædd',cellSpace:'Fjarstøða millum meskar',cellPad:'Meskubreddi',caption:'Tabellfrágreiðing',summary:'Samandráttur',headers:'Headers',headersNone:'Eingin',headersColumn:'Fyrsta kolonna',headersRow:'Fyrsta rað',headersBoth:'Báðir',invalidRows:'Talið av røðum má vera eitt tal størri enn 0.',invalidCols:'Talið av kolonnum má vera eitt tal størri enn 0.',invalidBorder:'Borda-stødd má vera eitt tal.',invalidWidth:'Tabell-breidd má vera eitt tal.',invalidHeight:'Tabell-hædd má vera eitt tal.',invalidCellSpacing:'Cell spacing má vera eitt tal.',invalidCellPadding:'Cell padding má vera eitt tal.',cell:{menu:'Meski',insertBefore:'Set meska inn áðrenn',insertAfter:'Set meska inn aftaná',deleteCell:'Strika meskar',merge:'Flætta meskar',mergeRight:'Flætta meskar til høgru',mergeDown:'Flætta saman',splitHorizontal:'Kloyv meska vatnrætt',splitVertical:'Kloyv meska loddrætt',title:'Mesku eginleikar',cellType:'Mesku slag',rowSpan:'Ræð spenni',colSpan:'Kolonnu spenni',wordWrap:'Word Wrap',hAlign:'Horisontal plasering',vAlign:'Loddrøtt plasering',alignTop:'Top',alignMiddle:'Miðja',alignBottom:'Botnur',alignBaseline:'Basislinja',bgColor:'Bakgrundslitur',borderColor:'Bordalitur',data:'Data',header:'Header',yes:'Ja',no:'Nei',invalidWidth:'Meskubreidd má vera eitt tal.',invalidHeight:'Meskuhædd má vera eitt tal.',invalidRowSpan:'Raðspennið má vera eitt heiltal.',invalidColSpan:'Kolonnuspennið má vera eitt heiltal.',chooseColor:'Vel'},row:{menu:'Rað',insertBefore:'Set rað inn áðrenn',insertAfter:'Set rað inn aftaná',deleteRow:'Strika røðir'},column:{menu:'Kolonna',insertBefore:'Set kolonnu inn áðrenn',insertAfter:'Set kolonnu inn aftaná',deleteColumn:'Strika kolonnur'}},button:{title:'Eginleikar fyri knøtt',text:'Tekstur',type:'Slag',typeBtn:'Knøttur',typeSbm:'Send',typeRst:'Nullstilla'},checkboxAndRadio:{checkboxTitle:'Eginleikar fyri flugubein',radioTitle:'Eginleikar fyri radioknøtt',value:'Virði',selected:'Valt'},form:{title:'Eginleikar fyri Form',menu:'Eginleikar fyri Form',action:'Hending',method:'Háttur',encoding:'Encoding'},select:{title:'Eginleikar fyri valskrá',selectInfo:'Upplýsingar',opAvail:'Tøkir møguleikar',value:'Virði',size:'Stødd',lines:'Linjur',chkMulti:'Loyv fleiri valmøguleikum samstundis',opText:'Tekstur',opValue:'Virði',btnAdd:'Legg afturat',btnModify:'Broyt',btnUp:'Upp',btnDown:'Niður',btnSetValue:'Set sum valt virði',btnDelete:'Strika'},textarea:{title:'Eginleikar fyri tekstumráði',cols:'kolonnur',rows:'røðir'},textfield:{title:'Eginleikar fyri tekstteig',name:'Navn',value:'Virði',charWidth:'Breidd (sjónlig tekn)',maxChars:'Mest loyvdu tekn',type:'Slag',typeText:'Tekstur',typePass:'Loyniorð'},hidden:{title:'Eginleikar fyri fjaldan teig',name:'Navn',value:'Virði'},image:{title:'Myndaeginleikar',titleButton:'Eginleikar fyri myndaknøtt',menu:'Myndaeginleikar',infoTab:'Myndaupplýsingar',btnUpload:'Send til ambætaran',upload:'Send',alt:'Alternativur tekstur',width:'Breidd',height:'Hædd',lockRatio:'Læs lutfallið',unlockRatio:'Lutfallið ikki læst',resetSize:'Upprunastødd',border:'Bordi',hSpace:'Høgri breddi',vSpace:'Vinstri breddi',align:'Justering',alignLeft:'Vinstra',alignRight:'Høgra',alertUrl:'Rita slóðina til myndina',linkTab:'Tilknýti',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'URL til mynd manglar.',validateWidth:'Breidd má vera eitt heiltal.',validateHeight:'Hædd má vera eitt heiltal.',validateBorder:'Bordi má vera eitt heiltal.',validateHSpace:'HSpace má vera eitt heiltal.',validateVSpace:'VSpace má vera eitt heiltal.'},flash:{properties:'Flash eginleikar',propertiesTab:'Eginleikar',title:'Flash eginleikar',chkPlay:'Avspælingin byrjar sjálv',chkLoop:'Endurspæl',chkMenu:'Ger Flash skrá virkna',chkFull:'Loyv fullan skerm',scale:'Skalering',scaleAll:'Vís alt',scaleNoBorder:'Eingin bordi',scaleFit:'Neyv skalering',access:'Script atgongd',accessAlways:'Altíð',accessSameDomain:'Sama navnaøki',accessNever:'Ongantíð',align:'Justering',alignLeft:'Vinstra',alignAbsBottom:'Abs botnur',alignAbsMiddle:'Abs miðja',alignBaseline:'Basislinja',alignBottom:'Botnur',alignMiddle:'Miðja',alignRight:'Høgra',alignTextTop:'Tekst toppur',alignTop:'Ovast',quality:'Góðska',qualityBest:'Besta',qualityHigh:'Høg',qualityAutoHigh:'Auto høg',qualityMedium:'Meðal',qualityAutoLow:'Auto Lág',qualityLow:'Lág',windowModeWindow:'Window',windowModeOpaque:'Ikki transparent',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variablar fyri Flash',bgcolor:'Bakgrundslitur',width:'Breidd',height:'Hædd',hSpace:'Høgri breddi',vSpace:'Vinstri breddi',validateSrc:'Vinarliga skriva tilknýti (URL)',validateWidth:'Breidd má vera eitt tal.',validateHeight:'Hædd má vera eitt tal.',validateHSpace:'HSpace má vera eitt tal.',validateVSpace:'VSpace má vera eitt tal.'},spellCheck:{toolbar:'Kanna stavseting',title:'Kanna stavseting',notAvailable:'Tíverri, ikki tøkt í løtuni.',errorLoading:'Feilur við innlesing av application service host: %s.',notInDic:'Finst ikki í orðabókini',changeTo:'Broyt til',btnIgnore:'Forfjóna',btnIgnoreAll:'Forfjóna alt',btnReplace:'Yvirskriva',btnReplaceAll:'Yvirskriva alt',btnUndo:'Angra',noSuggestions:'- Einki uppskot -',progress:'Rættstavarin arbeiðir...',noMispell:'Rættstavarain liðugur: Eingin feilur funnin',noChanges:'Rættstavarain liðugur: Einki orð varð broytt',oneChange:'Rættstavarain liðugur: Eitt orð er broytt',manyChanges:'Rættstavarain liðugur: %1 orð broytt',ieSpellDownload:'Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?'},smiley:{toolbar:'Smiley',title:'Vel Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Slóð til elementir',eleTitle:'%1 element'},numberedlist:'Talmerktur listi',bulletedlist:'Punktmerktur listi',indent:'Økja reglubrotarinntriv',outdent:'Minka reglubrotarinntriv',justify:{left:'Vinstrasett',center:'Miðsett',right:'Høgrasett',block:'Javnir tekstkantar'},blockquote:'Blockquote',clipboard:{title:'Innrita',cutError:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).',copyError:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).',pasteMsg:'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (<strong>Ctrl/Cmd+V</strong>) og klikk á <strong>Góðtak</strong>.',securityMsg:'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?',toolbar:'Innrita frá Word',title:'Innrita frá Word',error:'Tað eyðnaðist ikki at reinsa tekstin vegna ein internan feil'},pasteText:{button:'Innrita som reinan tekst',title:'Innrita som reinan tekst'},templates:{button:'Skabelónir',title:'Innihaldsskabelónir',options:'Template Options',insertOption:'Yvirskriva núverandi innihald',selectPromptMsg:'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum<br>(Hetta yvirskrivar núverandi innihald):',emptyListMsg:'(Ongar skabelónir tøkar)'},showBlocks:'Vís blokkar',stylesCombo:{label:'Typografi',panelTitle:'Formatterings stílir',panelTitle1:'Blokk stílir',panelTitle2:'Inline stílir',panelTitle3:'Object stílir'},format:{label:'Skriftsnið',panelTitle:'Skriftsnið',tag_p:'Vanligt',tag_pre:'Sniðgivið',tag_address:'Adressa',tag_h1:'Yvirskrift 1',tag_h2:'Yvirskrift 2',tag_h3:'Yvirskrift 3',tag_h4:'Yvirskrift 4',tag_h5:'Yvirskrift 5',tag_h6:'Yvirskrift 6',tag_div:'Normal (DIV)'},div:{title:'Ger Div Container',toolbar:'Ger Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Vinstru til høgru (LTR)',langDirRTLLabel:'Høgru til vinstru (RTL)',edit:'Redigera Div',remove:'Strika Div'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift'},fontSize:{label:'Skriftstødd',voiceLabel:'Font Size',panelTitle:'Skriftstødd'},colorButton:{textColorTitle:'Tekstlitur',bgColorTitle:'Bakgrundslitur',panelTitle:'Colors',auto:'Automatiskt',more:'Fleiri litir...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Kanna stavseting, meðan tú skrivar',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'Um SCAYT',toggle:'Toggle SCAYT',options:'Uppseting',langs:'Tungumál',moreSuggestions:'Fleiri tilráðingar',ignore:'Ignorera',ignoreAll:'Ignorera alt',addWord:'Legg orð afturat',emptyDic:'Heiti á orðabók eigur ikki at vera tómt.',optionsTab:'Uppseting',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Tungumál',dictionariesTab:'Orðabøkur',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Um'},about:{title:'Um CKEditor',dlgTitle:'Um CKEditor',moreInfo:'Licens upplýsingar finnast á heimasíðu okkara:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maksimera',minimize:'Minimera',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Síðuskift',unknown:'Ókent Object'},resize:'Drag fyri at broyta stødd',colordialog:{title:'Vel lit',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js
new file mode 100644
index 000000000..27130fc27
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['fr-ca']={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'Nouvelle page',save:'Sauvegarder',preview:'Previsualiser',cut:'Couper',copy:'Copier',paste:'Coller',print:'Imprimer',underline:'Souligné',bold:'Gras',italic:'Italique',selectAll:'Tout sélectionner',removeFormat:'Supprimer le formatage',strike:'Barrer',subscript:'Indice',superscript:'Exposant',horizontalrule:'Insérer un séparateur',pagebreak:'Insérer un saut de page',unlink:'Supprimer le lien',undo:'Annuler',redo:'Refaire',common:{browseServer:'Parcourir le serveur',url:'URL',protocol:'Protocole',upload:'Télécharger',uploadSubmit:'Envoyer sur le serveur',image:'Image',flash:'Animation Flash',form:'Formulaire',checkbox:'Case à cocher',radio:'Bouton radio',textField:'Champ texte',textarea:'Zone de texte',hiddenField:'Champ caché',button:'Bouton',select:'Champ de sélection',imageButton:'Bouton image',notSet:'<Par défaut>',id:'Id',name:'Nom',langDir:"Sens d'écriture",langDirLtr:'De gauche à droite (LTR)',langDirRtl:'De droite à gauche (RTL)',langCode:'Code langue',longDescr:'URL de description longue',cssClass:'Classes de feuilles de style',advisoryTitle:'Titre',cssStyle:'Style',ok:'OK',cancel:'Annuler',close:'Close',preview:'Preview',generalTab:'Général',advancedTab:'Avancée',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insérer un caractère spécial',title:'Insérer un caractère spécial',options:'Special Character Options'},link:{toolbar:'Insérer/modifier le lien',other:'<other>',menu:'Modifier le lien',title:'Propriétés du lien',info:'Informations sur le lien',target:'Destination',upload:'Télécharger',advanced:'Avancée',type:'Type de lien',toUrl:'URL',toAnchor:'Ancre dans cette page',toEmail:'E-Mail',targetFrame:'<Cadre>',targetPopup:'<fenêtre popup>',targetFrameName:'Nom du cadre de destination',targetPopupName:'Nom de la fenêtre popup',popupFeatures:'Caractéristiques de la fenêtre popup',popupResizable:'Resizable',popupStatusBar:"Barre d'état",popupLocationBar:"Barre d'adresses",popupToolbar:"Barre d'outils",popupMenuBar:'Barre de menu',popupFullScreen:'Plein écran (IE)',popupScrollBars:'Barres de défilement',popupDependent:'Dépendante (Netscape)',popupWidth:'Largeur',popupLeft:'Position à partir de la gauche',popupHeight:'Hauteur',popupTop:'Position à partir du haut',id:'Id',langDir:"Sens d'écriture",langDirLTR:'De gauche à droite (LTR)',langDirRTL:'De droite à gauche (RTL)',acccessKey:'Équivalent clavier',name:'Nom',langCode:"Sens d'écriture",tabIndex:'Ordre de tabulation',advisoryTitle:'Titre',advisoryContentType:'Type de contenu',cssClasses:'Classes de feuilles de style',charset:'Encodage de caractère',styles:'Style',selectAnchor:'Sélectionner une ancre',anchorName:'Par nom',anchorId:'Par id',emailAddress:'Adresse E-Mail',emailSubject:'Sujet du message',emailBody:'Corps du message',noAnchors:"(Pas d'ancre disponible dans le document)",noUrl:"Veuillez saisir l'URL",noEmail:"Veuillez saisir l'adresse e-mail"},anchor:{toolbar:"Insérer/modifier l'ancre",menu:"Propriétés de l'ancre",title:"Propriétés de l'ancre",name:"Nom de l'ancre",errorName:"Veuillez saisir le nom de l'ancre"},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Chercher et Remplacer',find:'Chercher',replace:'Remplacer',findWhat:'Rechercher:',replaceWith:'Remplacer par:',notFoundMsg:'Le texte indiqué est introuvable.',matchCase:'Respecter la casse',matchWord:'Mot entier',matchCyclic:'Match cyclic',replaceAll:'Tout remplacer',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tableau',title:'Propriétés du tableau',menu:'Propriétés du tableau',deleteTable:'Supprimer le tableau',rows:'Lignes',columns:'Colonnes',border:'Taille de la bordure',align:'Alignement',alignLeft:'Gauche',alignCenter:'Centré',alignRight:'Droite',width:'Largeur',widthPx:'pixels',widthPc:'pourcentage',widthUnit:'width unit',height:'Hauteur',cellSpace:'Espacement',cellPad:'Contour',caption:'Titre',summary:'Résumé',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cellule',insertBefore:'Insérer une cellule avant',insertAfter:'Insérer une cellule après',deleteCell:'Supprimer des cellules',merge:'Fusionner les cellules',mergeRight:'Fusionner à droite',mergeDown:'Fusionner en bas',splitHorizontal:'Scinder la cellule horizontalement',splitVertical:'Scinder la cellule verticalement',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Ligne',insertBefore:'Insérer une ligne avant',insertAfter:'Insérer une ligne après',deleteRow:'Supprimer des lignes'},column:{menu:'Colonne',insertBefore:'Insérer une colonne avant',insertAfter:'Insérer une colonne après',deleteColumn:'Supprimer des colonnes'}},button:{title:'Propriétés du bouton',text:'Texte (Valeur)',type:'Type',typeBtn:'Bouton',typeSbm:'Soumettre',typeRst:'Réinitialiser'},checkboxAndRadio:{checkboxTitle:'Propriétés de la case à cocher',radioTitle:'Propriétés du bouton radio',value:'Valeur',selected:'Sélectionné'},form:{title:'Propriétés du formulaire',menu:'Propriétés du formulaire',action:'Action',method:'Méthode',encoding:'Encoding'},select:{title:'Propriétés de la liste/du menu',selectInfo:'Info',opAvail:'Options disponibles',value:'Valeur',size:'Taille',lines:'lignes',chkMulti:'Sélection multiple',opText:'Texte',opValue:'Valeur',btnAdd:'Ajouter',btnModify:'Modifier',btnUp:'Monter',btnDown:'Descendre',btnSetValue:'Valeur sélectionnée',btnDelete:'Supprimer'},textarea:{title:'Propriétés de la zone de texte',cols:'Colonnes',rows:'Lignes'},textfield:{title:'Propriétés du champ texte',name:'Nom',value:'Valeur',charWidth:'Largeur en caractères',maxChars:'Nombre maximum de caractères',type:'Type',typeText:'Texte',typePass:'Mot de passe'},hidden:{title:'Propriétés du champ caché',name:'Nom',value:'Valeur'},image:{title:"Propriétés de l'image",titleButton:'Propriétés du bouton image',menu:"Propriétés de l'image",infoTab:"Informations sur l'image",btnUpload:'Envoyer sur le serveur',upload:'Télécharger',alt:'Texte de remplacement',width:'Largeur',height:'Hauteur',lockRatio:'Garder les proportions',unlockRatio:'Unlock Ratio',resetSize:'Taille originale',border:'Bordure',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',align:'Alignement',alignLeft:'Gauche',alignRight:'Droite',alertUrl:"Veuillez saisir l'URL de l'image",linkTab:'Lien',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:"Propriétés de l'animation Flash",propertiesTab:'Properties',title:"Propriétés de l'animation Flash",chkPlay:'Lecture automatique',chkLoop:'Boucle',chkMenu:'Activer le menu Flash',chkFull:'Allow Fullscreen',scale:'Affichage',scaleAll:'Par défaut (tout montrer)',scaleNoBorder:'Sans bordure',scaleFit:'Ajuster aux dimensions',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Alignement',alignLeft:'Gauche',alignAbsBottom:'Abs Bas',alignAbsMiddle:'Abs Milieu',alignBaseline:'Bas du texte',alignBottom:'Bas',alignMiddle:'Milieu',alignRight:'Droite',alignTextTop:'Haut du texte',alignTop:'Haut',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Couleur de fond',width:'Largeur',height:'Hauteur',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',validateSrc:"Veuillez saisir l'URL",validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Orthographe',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Pas dans le dictionnaire',changeTo:'Changer en',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer tout',btnReplace:'Remplacer',btnReplaceAll:'Remplacer tout',btnUndo:'Annuler',noSuggestions:'- Pas de suggestion -',progress:"Vérification d'orthographe en cours...",noMispell:"Vérification d'orthographe terminée: pas d'erreur trouvée",noChanges:"Vérification d'orthographe terminée: Pas de modifications",oneChange:"Vérification d'orthographe terminée: Un mot modifié",manyChanges:"Vérification d'orthographe terminée: %1 mots modifiés",ieSpellDownload:"Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?"},smiley:{toolbar:'Emoticon',title:'Insérer un Emoticon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Liste numérotée',bulletedlist:'Liste à puces',indent:'Augmenter le retrait',outdent:'Diminuer le retrait',justify:{left:'Aligner à gauche',center:'Centrer',right:'Aligner à Droite',block:'Texte justifié'},blockquote:'Citation',clipboard:{title:'Coller',cutError:"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).",copyError:"Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).",pasteMsg:'Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl/Cmd+V</STRONG>) et appuyer sur <STRONG>OK</STRONG>.',securityMsg:"A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.",pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Coller en tant que Word (formaté)',title:'Coller en tant que Word (formaté)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Coller comme texte',title:'Coller comme texte'},templates:{button:'Modèles',title:'Modèles de contenu',options:'Template Options',insertOption:'Remplacer tout le contenu actuel',selectPromptMsg:"Sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",emptyListMsg:'(Aucun modèle disponible)'},showBlocks:'Afficher les blocs',stylesCombo:{label:'Style',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formaté',tag_address:'Adresse',tag_h1:'En-tête 1',tag_h2:'En-tête 2',tag_h3:'En-tête 3',tag_h4:'En-tête 4',tag_h5:'En-tête 5',tag_h6:'En-tête 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Police',voiceLabel:'Font',panelTitle:'Police'},fontSize:{label:'Taille',voiceLabel:'Font Size',panelTitle:'Taille'},colorButton:{textColorTitle:'Couleur de caractère',bgColorTitle:'Couleur de fond',panelTitle:'Colors',auto:'Automatique',more:'Plus de couleurs...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/fr.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/fr.js
new file mode 100644
index 000000000..652a4b77b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/fr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.fr={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Source',newPage:'Nouvelle page',save:'Enregistrer',preview:'Aperçu',cut:'Couper',copy:'Copier',paste:'Coller',print:'Imprimer',underline:'Souligné',bold:'Gras',italic:'Italique',selectAll:'Tout sélectionner',removeFormat:'Supprimer la mise en forme',strike:'Barré',subscript:'Indice',superscript:'Exposant',horizontalrule:'Ligne horizontale',pagebreak:'Saut de page',unlink:'Supprimer le lien',undo:'Annuler',redo:'Rétablir',common:{browseServer:'Explorer le serveur',url:'URL',protocol:'Protocole',upload:'Envoyer',uploadSubmit:'Envoyer sur le serveur',image:'Image',flash:'Flash',form:'Formulaire',checkbox:'Case à cocher',radio:'Bouton Radio',textField:'Champ texte',textarea:'Zone de texte',hiddenField:'Champ caché',button:'Bouton',select:'Liste déroulante',imageButton:'Bouton image',notSet:'<non défini>',id:'Id',name:'Nom',langDir:"Sens d'écriture",langDirLtr:'Gauche à droite (LTR)',langDirRtl:'Droite à gauche (RTL)',langCode:'Code de langue',longDescr:'URL de description longue (longdesc => malvoyant)',cssClass:'Classe CSS',advisoryTitle:'Description (title)',cssStyle:'Style',ok:'OK',cancel:'Annuler',close:'Close',preview:'Preview',generalTab:'Général',advancedTab:'Avancé',validateNumberFailed:"Cette valeur n'est pas un nombre.",confirmNewPage:'Les changements non sauvegardés seront perdus. Etes-vous sûr de vouloir charger une nouvelle page?',confirmCancel:'Certaines options ont été modifiées. Etes-vous sûr de vouloir fermer?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, Indisponible</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Insérer un caractère spécial',title:'Sélectionnez un caractère',options:'Special Character Options'},link:{toolbar:'Lien',other:'<autre>',menu:'Editer le lien',title:'Lien',info:'Infos sur le lien',target:'Cible',upload:'Envoyer',advanced:'Avancé',type:'Type de lien',toUrl:'URL',toAnchor:'Transformer le lien en ancre dans le texte',toEmail:'E-mail',targetFrame:'<cadre>',targetPopup:'<fenêtre popup>',targetFrameName:'Nom du Cadre destination',targetPopupName:'Nom de la fenêtre popup',popupFeatures:'Options de la fenêtre popup',popupResizable:'Redimensionnable',popupStatusBar:'Barre de status',popupLocationBar:"Barre d'adresse",popupToolbar:"Barre d'outils",popupMenuBar:'Barre de menu',popupFullScreen:'Plein écran (IE)',popupScrollBars:'Barres de défilement',popupDependent:'Dépendante (Netscape)',popupWidth:'Largeur',popupLeft:'Position gauche',popupHeight:'Hauteur',popupTop:'Position haute',id:'Id',langDir:"Sens d'écriture",langDirLTR:'Gauche à droite',langDirRTL:'Droite à gauche',acccessKey:"Touche d'accessibilité",name:'Nom',langCode:'Code de langue',tabIndex:'Index de tabulation',advisoryTitle:'Description (title)',advisoryContentType:'Type de contenu (ex: text/html)',cssClasses:'Classe du CSS',charset:'Charset de la cible',styles:'Style',selectAnchor:"Sélectionner l'ancre",anchorName:"Par nom d'ancre",anchorId:"Par ID d'élément",emailAddress:'Adresse E-Mail',emailSubject:'Sujet du message',emailBody:'Corps du message',noAnchors:'(Aucune ancre disponible dans ce document)',noUrl:"Veuillez entrer l'adresse du lien",noEmail:"Veuillez entrer l'adresse e-mail"},anchor:{toolbar:'Ancre',menu:"Editer l'ancre",title:"Propriétés de l'ancre",name:"Nom de l'ancre",errorName:"Veuillez entrer le nom de l'ancre"},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Trouver et remplacer',find:'Trouver',replace:'Remplacer',findWhat:'Expression à trouver: ',replaceWith:'Remplacer par: ',notFoundMsg:'Le texte spécifié ne peut être trouvé.',matchCase:'Respecter la casse',matchWord:'Mot entier uniquement',matchCyclic:'Boucler',replaceAll:'Remplacer tout',replaceSuccessMsg:'%1 occurrence(s) replacée(s).'},table:{toolbar:'Tableau',title:'Propriétés du tableau',menu:'Propriétés du tableau',deleteTable:'Supprimer le tableau',rows:'Lignes',columns:'Colonnes',border:'Taille de la bordure',align:'Alignement du contenu',alignLeft:'Gauche',alignCenter:'Centré',alignRight:'Droite',width:'Largeur',widthPx:'pixels',widthPc:'% pourcents',widthUnit:'width unit',height:'Hauteur',cellSpace:'Espacement des cellules',cellPad:'Marge interne des cellules',caption:'Titre du tableau',summary:'Résumé (description)',headers:'En-Têtes',headersNone:'Aucunes',headersColumn:'Première colonne',headersRow:'Première ligne',headersBoth:'Les deux',invalidRows:'Le nombre de lignes doit être supérieur à 0.',invalidCols:'Le nombre de colonnes doit être supérieur à 0.',invalidBorder:'La taille de la bordure doit être un nombre.',invalidWidth:'La largeur du tableau doit être un nombre.',invalidHeight:'La hauteur du tableau doit être un nombre.',invalidCellSpacing:"L'espacement des cellules doit être un nombre.",invalidCellPadding:'La marge intérieure des cellules doit être un nombre.',cell:{menu:'Cellule',insertBefore:'Insérer une cellule avant',insertAfter:'Insérer une cellule après',deleteCell:'Supprimer les cellules',merge:'Fusionner les cellules',mergeRight:'Fusionner à droite',mergeDown:'Fusionner en bas',splitHorizontal:'Fractionner horizontalement',splitVertical:'Fractionner verticalement',title:'Propriétés de Cellule',cellType:'Type de Cellule',rowSpan:'Fusion de Lignes',colSpan:'Fusion de Colonnes',wordWrap:'Word Wrap',hAlign:'Alignement Horizontal',vAlign:'Alignement Vertical',alignTop:'Haut',alignMiddle:'Milieu',alignBottom:'Bas',alignBaseline:'Bas du texte',bgColor:"Couleur d'arrière-plan",borderColor:'Couleur de Bordure',data:'Données',header:'Entête',yes:'Oui',no:'Non',invalidWidth:'La Largeur de Cellule doit être un nombre.',invalidHeight:'La Hauteur de Cellule doit être un nombre.',invalidRowSpan:'La fusion de lignes doit être un nombre entier.',invalidColSpan:'La fusion de colonnes doit être un nombre entier.',chooseColor:'Choose'},row:{menu:'Ligne',insertBefore:'Insérer une ligne avant',insertAfter:'Insérer une ligne après',deleteRow:'Supprimer les lignes'},column:{menu:'Colonnes',insertBefore:'Insérer une colonne avant',insertAfter:'Insérer une colonne après',deleteColumn:'Supprimer les colonnes'}},button:{title:'Propriétés du bouton',text:'Texte (Value)',type:'Type',typeBtn:'Bouton',typeSbm:'Validation (submit)',typeRst:'Remise à zéro'},checkboxAndRadio:{checkboxTitle:'Propriétés de la case à cocher',radioTitle:'Propriétés du bouton Radio',value:'Valeur',selected:'Sélectionné'},form:{title:'Propriétés du formulaire',menu:'Propriétés du formulaire',action:'Action',method:'Méthode',encoding:'Encodage'},select:{title:'Propriétés du menu déroulant',selectInfo:'Informations sur le menu déroulant',opAvail:'Options disponibles',value:'Valeur',size:'Taille',lines:'Lignes',chkMulti:'Permettre les sélections multiples',opText:'Texte',opValue:'Valeur',btnAdd:'Ajouter',btnModify:'Modifier',btnUp:'Haut',btnDown:'Bas',btnSetValue:'Définir comme valeur sélectionnée',btnDelete:'Supprimer'},textarea:{title:'Propriétés de la zone de texte',cols:'Colonnes',rows:'Lignes'},textfield:{title:'Propriétés du champ texte',name:'Nom',value:'Valeur',charWidth:'Taille des caractères',maxChars:'Nombre maximum de caractères',type:'Type',typeText:'Texte',typePass:'Mot de passe'},hidden:{title:'Propriétés du champ caché',name:'Nom',value:'Valeur'},image:{title:"Propriétés de l'image",titleButton:'Propriétés du bouton image',menu:"Propriétés de l'image",infoTab:"Informations sur l'image",btnUpload:'Envoyer sur le serveur',upload:'Envoyer',alt:'Texte de remplacement',width:'Largeur',height:'Hauteur',lockRatio:'Garder les proportions',unlockRatio:'Unlock Ratio',resetSize:"Taille d'origine",border:'Bordure',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',align:'Alignement',alignLeft:'Gauche',alignRight:'Droite',alertUrl:"Veuillez entrer l'adresse de l'image",linkTab:'Lien',button2Img:'Voulez-vous transformer le bouton image sélectionné en simple image?',img2Button:"Voulez-vous transformer l'image en bouton image?",urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Propriétés du Flash',propertiesTab:'Propriétés',title:'Propriétés du Flash',chkPlay:'Jouer automatiquement',chkLoop:'Boucle',chkMenu:'Activer le menu Flash',chkFull:'Permettre le plein écran',scale:'Echelle',scaleAll:'Afficher tout',scaleNoBorder:'Pas de bordure',scaleFit:"Taille d'origine",access:'Accès aux scripts',accessAlways:'Toujours',accessSameDomain:'Même domaine',accessNever:'Jamais',align:'Alignement',alignLeft:'Gauche',alignAbsBottom:'Bas absolu',alignAbsMiddle:'Milieu absolu',alignBaseline:'Bas du texte',alignBottom:'Bas',alignMiddle:'Milieu',alignRight:'Droite',alignTextTop:'Haut du texte',alignTop:'Haut',quality:'Qualité',qualityBest:'Meilleure',qualityHigh:'Haute',qualityAutoHigh:'Haute Auto',qualityMedium:'Moyenne',qualityAutoLow:'Basse Auto',qualityLow:'Basse',windowModeWindow:'Fenêtre',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Mode fenêtre',flashvars:'Variables du Flash',bgcolor:"Couleur d'arrière-plan",width:'Largeur',height:'Hauteur',hSpace:'Espacement horizontal',vSpace:'Espacement vertical',validateSrc:"L'adresse ne doit pas être vide.",validateWidth:'La largeur doit être un nombre.',validateHeight:'La hauteur doit être un nombre.',validateHSpace:"L'espacement horizontal doit être un nombre.",validateVSpace:"L'espacement vertical doit être un nombre."},spellCheck:{toolbar:"Vérifier l'orthographe",title:"Vérifier l'orthographe",notAvailable:'Désolé, le service est indisponible actuellement.',errorLoading:"Erreur du chargement du service depuis l'hôte : %s.",notInDic:"N'existe pas dans le dictionnaire",changeTo:'Modifier pour',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer tout',btnReplace:'Remplacer',btnReplaceAll:'Remplacer tout',btnUndo:'Annuler',noSuggestions:'- Aucune suggestion -',progress:"Vérification de l'orthographe en cours...",noMispell:"Vérification de l'orthographe terminée : aucune erreur trouvée",noChanges:"Vérification de l'orthographe terminée : Aucun mot corrigé",oneChange:"Vérification de l'orthographe terminée : Un seul mot corrigé",manyChanges:"Vérification de l'orthographe terminée : %1 mots corrigés",ieSpellDownload:"La vérification d'orthographe n'est pas installée. Voulez-vous la télécharger maintenant?"},smiley:{toolbar:'Emoticon',title:'Insérer un émoticon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 éléments'},numberedlist:'Insérer/Supprimer la liste numérotée',bulletedlist:'Insérer/Supprimer la liste à puces',indent:'Augmenter le retrait (tabulation)',outdent:'Diminuer le retrait (tabulation)',justify:{left:'Aligner à gauche',center:'Centrer',right:'Aligner à droite',block:'Justifier'},blockquote:'Citation',clipboard:{title:'Coller',cutError:"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement l'opération \"couper\". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).",copyError:"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).",pasteMsg:'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl/Cmd+V</strong>) et cliquez sur OK',securityMsg:"A cause des paramètres de sécurité de votre navigateur, l'éditeur n'est pas en mesure d'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.",pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?',toolbar:'Coller depuis Word',title:'Coller depuis Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Coller comme texte sans mise en forme',title:'Coller comme texte sans mise en forme'},templates:{button:'Modèles',title:'Contenu des modèles',options:'Template Options',insertOption:'Remplacer le contenu actuel',selectPromptMsg:"Veuillez sélectionner le modèle pour l'ouvrir dans l'éditeur",emptyListMsg:'(Aucun modèle disponible)'},showBlocks:'Afficher les blocs',stylesCombo:{label:'Styles',panelTitle:'Formatting Styles',panelTitle1:'Styles de blocs',panelTitle2:'Styles en ligne',panelTitle3:"Styles d'objet"},format:{label:'Format',panelTitle:'Format de paragraphe',tag_p:'Normal',tag_pre:'Formaté',tag_address:'Adresse',tag_h1:'Titre 1',tag_h2:'Titre 2',tag_h3:'Titre 3',tag_h4:'Titre 4',tag_h5:'Titre 5',tag_h6:'Titre 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Police',voiceLabel:'Police',panelTitle:'Style de police'},fontSize:{label:'Taille',voiceLabel:'Taille de police',panelTitle:'Taille de police'},colorButton:{textColorTitle:'Couleur de texte',bgColorTitle:"Couleur d'arrière plan",panelTitle:'Colors',auto:'Automatique',more:'Plus de couleurs...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:"Vérification d'Orthographe en Cours de Frappe (SCAYT: Spell Check As You Type)",opera_title:'Not supported by Opera',enable:'Activer SCAYT',disable:'Désactiver SCAYT',about:'A propos de SCAYT',toggle:'Activer/Désactiver SCAYT',options:'Options',langs:'Langues',moreSuggestions:'Plus de suggestions',ignore:'Ignorer',ignoreAll:'Ignorer Tout',addWord:'Ajouter le mot',emptyDic:'Le nom du dictionnaire ne devrait pas être vide.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Langues',dictionariesTab:'Dictionnaires',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'A propos de'},about:{title:'A propos de CKEditor',dlgTitle:'A propos de CKEditor',moreInfo:'Pour les informations de licence, veuillez visiter notre site web:',copy:'Copyright &copy; $1. Tous droits réservés.'},maximize:'Agrandir',minimize:'Minimize',fakeobjects:{anchor:'Ancre',flash:'Animation Flash',div:'Saut de Page',unknown:'Objet Inconnu'},resize:'Glisser pour modifier la taille',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/gl.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/gl.js
new file mode 100644
index 000000000..739c1d342
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/gl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.gl={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Código Fonte',newPage:'Nova Páxina',save:'Gardar',preview:'Vista Previa',cut:'Cortar',copy:'Copiar',paste:'Pegar',print:'Imprimir',underline:'Sub-raiado',bold:'Negrita',italic:'Cursiva',selectAll:'Seleccionar todo',removeFormat:'Eliminar Formato',strike:'Tachado',subscript:'Subíndice',superscript:'Superíndice',horizontalrule:'Inserir Liña Horizontal',pagebreak:'Inserir Salto de Páxina',unlink:'Eliminar Ligazón',undo:'Desfacer',redo:'Refacer',common:{browseServer:'Navegar no Servidor',url:'URL',protocol:'Protocolo',upload:'Carregar',uploadSubmit:'Enviar ó Servidor',image:'Imaxe',flash:'Flash',form:'Formulario',checkbox:'Cadro de Verificación',radio:'Botón de Radio',textField:'Campo de Texto',textarea:'Ãrea de Texto',hiddenField:'Campo Oculto',button:'Botón',select:'Campo de Selección',imageButton:'Botón de Imaxe',notSet:'<non definido>',id:'Id',name:'Nome',langDir:'Orientación do Idioma',langDirLtr:'Esquerda a Dereita (LTR)',langDirRtl:'Dereita a Esquerda (RTL)',langCode:'Código do Idioma',longDescr:'Descrición Completa da URL',cssClass:'Clases da Folla de Estilos',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanzado',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Inserir Carácter Especial',title:'Seleccione Caracter Especial',options:'Special Character Options'},link:{toolbar:'Inserir/Editar Ligazón',other:'<outro>',menu:'Editar Ligazón',title:'Ligazón',info:'Información da Ligazón',target:'Destino',upload:'Carregar',advanced:'Advanzado',type:'Tipo de Ligazón',toUrl:'URL',toAnchor:'Referencia nesta páxina',toEmail:'E-Mail',targetFrame:'<frame>',targetPopup:'<Xanela Emerxente>',targetFrameName:'Nome do Marco Destino',targetPopupName:'Nome da Xanela Emerxente',popupFeatures:'Características da Xanela Emerxente',popupResizable:'Resizable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de Localización',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menú',popupFullScreen:'A Toda Pantalla (IE)',popupScrollBars:'Barras de Desplazamento',popupDependent:'Dependente (Netscape)',popupWidth:'Largura',popupLeft:'Posición Esquerda',popupHeight:'Altura',popupTop:'Posición dende Arriba',id:'Id',langDir:'Orientación do Idioma',langDirLTR:'Esquerda a Dereita (LTR)',langDirRTL:'Dereita a Esquerda (RTL)',acccessKey:'Chave de Acceso',name:'Nome',langCode:'Orientación do Idioma',tabIndex:'Ãndice de Tabulación',advisoryTitle:'Título',advisoryContentType:'Tipo de Contido',cssClasses:'Clases da Folla de Estilos',charset:'Fonte de Caracteres Vinculado',styles:'Estilo',selectAnchor:'Seleccionar unha Referencia',anchorName:'Por Nome de Referencia',anchorId:'Por Element Id',emailAddress:'Enderezo de E-Mail',emailSubject:'Asunto do Mensaxe',emailBody:'Corpo do Mensaxe',noAnchors:'(Non hai referencias disponibles no documento)',noUrl:'Por favor, escriba a ligazón URL',noEmail:'Por favor, escriba o enderezo de e-mail'},anchor:{toolbar:'Inserir/Editar Referencia',menu:'Propriedades da Referencia',title:'Propriedades da Referencia',name:'Nome da Referencia',errorName:'Por favor, escriba o nome da referencia'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Procurar',replace:'Substituir',findWhat:'Texto a procurar:',replaceWith:'Substituir con:',notFoundMsg:'Non te atopou o texto indicado.',matchCase:'Coincidir Mai./min.',matchWord:'Coincidir con toda a palabra',matchCyclic:'Match cyclic',replaceAll:'Substitiur Todo',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabla',title:'Propiedades da Táboa',menu:'Propiedades da Táboa',deleteTable:'Borrar Táboa',rows:'Filas',columns:'Columnas',border:'Tamaño do Borde',align:'Aliñamento',alignLeft:'Esquerda',alignCenter:'Centro',alignRight:'Ereita',width:'Largura',widthPx:'pixels',widthPc:'percent',widthUnit:'width unit',height:'Altura',cellSpace:'Marxe entre Celas',cellPad:'Marxe interior',caption:'Título',summary:'Sumario',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cela',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Borrar Cela',merge:'Unir Celas',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Fila',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Borrar Filas'},column:{menu:'Columna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Borrar Columnas'}},button:{title:'Propriedades do Botón',text:'Texto (Valor)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Propriedades do Cadro de Verificación',radioTitle:'Propriedades do Botón de Radio',value:'Valor',selected:'Seleccionado'},form:{title:'Propriedades do Formulario',menu:'Propriedades do Formulario',action:'Acción',method:'Método',encoding:'Encoding'},select:{title:'Propriedades do Campo de Selección',selectInfo:'Info',opAvail:'Opcións Disponibles',value:'Valor',size:'Tamaño',lines:'liñas',chkMulti:'Permitir múltiples seleccións',opText:'Texto',opValue:'Valor',btnAdd:'Engadir',btnModify:'Modificar',btnUp:'Subir',btnDown:'Baixar',btnSetValue:'Definir como valor por defecto',btnDelete:'Borrar'},textarea:{title:'Propriedades da Ãrea de Texto',cols:'Columnas',rows:'Filas'},textfield:{title:'Propriedades do Campo de Texto',name:'Nome',value:'Valor',charWidth:'Tamaño do Caracter',maxChars:'Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Chave'},hidden:{title:'Propriedades do Campo Oculto',name:'Nome',value:'Valor'},image:{title:'Propriedades da Imaxe',titleButton:'Propriedades do Botón de Imaxe',menu:'Propriedades da Imaxe',infoTab:'Información da Imaxe',btnUpload:'Enviar ó Servidor',upload:'Carregar',alt:'Texto Alternativo',width:'Largura',height:'Altura',lockRatio:'Proporcional',unlockRatio:'Unlock Ratio',resetSize:'Tamaño Orixinal',border:'Límite',hSpace:'Esp. Horiz.',vSpace:'Esp. Vert.',align:'Aliñamento',alignLeft:'Esquerda',alignRight:'Dereita',alertUrl:'Por favor, escriba a URL da imaxe',linkTab:'Ligazón',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Propriedades Flash',propertiesTab:'Properties',title:'Propriedades Flash',chkPlay:'Auto Execución',chkLoop:'Bucle',chkMenu:'Activar Menú Flash',chkFull:'Allow Fullscreen',scale:'Escalar',scaleAll:'Amosar Todo',scaleNoBorder:'Sen Borde',scaleFit:'Encaixar axustando',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Aliñamento',alignLeft:'Esquerda',alignAbsBottom:'Abs Inferior',alignAbsMiddle:'Abs Centro',alignBaseline:'Liña Base',alignBottom:'Pé',alignMiddle:'Centro',alignRight:'Dereita',alignTextTop:'Tope do Texto',alignTop:'Tope',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Cor do Fondo',width:'Largura',height:'Altura',hSpace:'Esp. Horiz.',vSpace:'Esp. Vert.',validateSrc:'Por favor, escriba a ligazón URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Corrección Ortográfica',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Non está no diccionario',changeTo:'Cambiar a',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Todas',btnReplace:'Substituir',btnReplaceAll:'Substituir Todas',btnUndo:'Desfacer',noSuggestions:'- Sen candidatos -',progress:'Corrección ortográfica en progreso...',noMispell:'Corrección ortográfica rematada: Non se atoparon erros',noChanges:'Corrección ortográfica rematada: Non se substituiu nengunha verba',oneChange:'Corrección ortográfica rematada: Unha verba substituida',manyChanges:'Corrección ortográfica rematada: %1 verbas substituidas',ieSpellDownload:'O corrector ortográfico non está instalado. ¿Quere descargalo agora?'},smiley:{toolbar:'Smiley',title:'Inserte un Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Lista Numerada',bulletedlist:'Marcas',indent:'Aumentar Sangría',outdent:'Disminuir Sangría',justify:{left:'Aliñar á Esquerda',center:'Centrado',right:'Aliñar á Dereita',block:'Xustificado'},blockquote:'Block Quote',clipboard:{title:'Pegar',cutError:'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl/Cmd+X).',copyError:'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl/Cmd+C).',pasteMsg:'Por favor, pegue dentro do seguinte cadro usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e pulse <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Pegar dende Word',title:'Pegar dende Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Pegar como texto plano',title:'Pegar como texto plano'},templates:{button:'Plantillas',title:'Plantillas de Contido',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Por favor, seleccione a plantilla a abrir no editor<br>(o contido actual perderase):',emptyListMsg:'(Non hai plantillas definidas)'},showBlocks:'Show Blocks',stylesCombo:{label:'Estilo',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normal',tag_pre:'Formateado',tag_address:'Enderezo',tag_h1:'Enacabezado 1',tag_h2:'Encabezado 2',tag_h3:'Encabezado 3',tag_h4:'Encabezado 4',tag_h5:'Encabezado 5',tag_h6:'Encabezado 6',tag_div:'Paragraph (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Tipo',voiceLabel:'Font',panelTitle:'Tipo'},fontSize:{label:'Tamaño',voiceLabel:'Font Size',panelTitle:'Tamaño'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor do Fondo',panelTitle:'Colors',auto:'Automático',more:'Máis Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/gu.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/gu.js
new file mode 100644
index 000000000..0785f4628
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/gu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.gu={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'મૂળ કે પà«àª°àª¾àª¥àª®àª¿àª• દસà«àª¤àª¾àªµà«‡àªœ',newPage:'નવૠપાનà«àª‚',save:'સેવ',preview:'પૂરà«àªµàª¦àª°à«àª¶àª¨',cut:'કાપવà«àª‚',copy:'નકલ',paste:'પેસà«àªŸ',print:'પà«àª°àª¿àª¨à«àªŸ',underline:'અનà«àª¡àª°à«àª²àª¾àª‡àª¨, નીચે લીટી',bold:'બોલà«àª¡/સà«àªªàª·à«àªŸ',italic:'ઇટેલિક, તà«àª°àª¾àª‚સા',selectAll:'બઘà«àª‚ પસંદ કરવà«àª‚',removeFormat:'ફૉરà«àª®àªŸ કાઢવà«àª‚',strike:'છેકી નાખવà«àª‚',subscript:'àªàª• ચિહà«àª¨àª¨à«€ નીચે કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨',superscript:'àªàª• ચિહà«àª¨ ઉપર કરેલà«àª‚ બીજà«àª‚ ચિહà«àª¨.',horizontalrule:'સમસà«àª¤àª°à«€àª¯ રેખા ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી',pagebreak:'ઇનà«àª¸àª°à«àªŸ પેજબà«àª°à«‡àª•/પાનાને અલગ કરવà«àª‚/દાખલ કરવà«àª‚',unlink:'લિંક કાઢવી',undo:'રદ કરવà«àª‚; પહેલાં હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી',redo:'રિડૂ; પછી હતી àªàªµà«€ સà«àª¥àª¿àª¤àª¿ પાછી લાવવી',common:{browseServer:'સરà«àªµàª° બà«àª°àª¾àª‰àª કરો',url:'URL',protocol:'પà«àª°à«‹àªŸà«‹àª•ૉલ',upload:'અપલોડ',uploadSubmit:'આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚',image:'ચિતà«àª°',flash:'ફà«àª²à«…શ',form:'ફૉરà«àª®/પતà«àª°àª•',checkbox:'ચેક બોકà«àª¸',radio:'રેડિઓ બટન',textField:'ટેકà«àª¸à«àªŸ ફીલà«àª¡, શબà«àª¦ કà«àª·à«‡àª¤à«àª°',textarea:'ટેકà«àª¸à«àªŸ àªàª°àª¿àª†, શબà«àª¦ વિસà«àª¤àª¾àª°',hiddenField:'ગà«àªªà«àª¤ કà«àª·à«‡àª¤à«àª°',button:'બટન',select:'પસંદગી કà«àª·à«‡àª¤à«àª°',imageButton:'ચિતà«àª° બટન',notSet:'<સેટ નથી>',id:'Id',name:'નામ',langDir:'ભાષા લેખવાની પદà«àª§àª¤àª¿',langDirLtr:'ડાબે થી જમણે (LTR)',langDirRtl:'જમણે થી ડાબે (RTL)',langCode:'ભાષા કોડ',longDescr:'વધારે માહિતી માટે URL',cssClass:'સà«àªŸàª¾àª‡àª²-શીટ કà«àª²àª¾àª¸',advisoryTitle:'મà«àª–à«àª¯ મથાળà«àª‚',cssStyle:'સà«àªŸàª¾àª‡àª²',ok:'ઠીક છે',cancel:'રદ કરવà«àª‚',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'અડà«àªµàª¾àª¨à«àª¸àª¡',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'વિશિષà«àªŸ અકà«àª·àª° ઇનà«àª¸àª°à«àªŸ/દાખલ કરવà«àª‚',title:'સà«àªªà«‡àª¶àª¿àª…લ વિશિષà«àªŸ અકà«àª·àª° પસંદ કરો',options:'Special Character Options'},link:{toolbar:'લિંક ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી',other:'<other>',menu:' લિંક àªàª¡àª¿àªŸ/માં ફેરફાર કરવો',title:'લિંક',info:'લિંક ઇનà«àª«à«‰ ટૅબ',target:'ટારà«àª—ેટ/લકà«àª·à«àª¯',upload:'અપલોડ',advanced:'અડà«àªµàª¾àª¨à«àª¸àª¡',type:'લિંક પà«àª°àª•ાર',toUrl:'URL',toAnchor:'આ પેજનો àªàª‚કર',toEmail:'ઈ-મેલ',targetFrame:'<ફà«àª°à«‡àª®>',targetPopup:'<પૉપ-અપ વિનà«àª¡à«‹>',targetFrameName:'ટારà«àª—ેટ ફà«àª°à«‡àª® નà«àª‚ નામ',targetPopupName:'પૉપ-અપ વિનà«àª¡à«‹ નà«àª‚ નામ',popupFeatures:'પૉપ-અપ વિનà«àª¡à«‹ ફીચરસૅ',popupResizable:'Resizable',popupStatusBar:'સà«àªŸà«…ટસ બાર',popupLocationBar:'લોકેશન બાર',popupToolbar:'ટૂલ બાર',popupMenuBar:'મેનà«àª¯à«‚ બાર',popupFullScreen:'ફà«àª² સà«àª•à«àª°à«€àª¨ (IE)',popupScrollBars:'સà«àª•à«àª°à«‹àª² બાર',popupDependent:'ડિપેનà«àª¡àª¨à«àªŸ (Netscape)',popupWidth:'પહોળાઈ',popupLeft:'ડાબી બાજà«',popupHeight:'ઊંચાઈ',popupTop:'જમણી બાજà«',id:'Id',langDir:'ભાષા લેખવાની પદà«àª§àª¤àª¿',langDirLTR:'ડાબે થી જમણે (LTR)',langDirRTL:'જમણે થી ડાબે (RTL)',acccessKey:'àªàª•à«àª¸à«‡àª¸ કી',name:'નામ',langCode:'ભાષા લેખવાની પદà«àª§àª¤àª¿',tabIndex:'ટૅબ ઇનà«àª¡à«‡àª•à«àª¸',advisoryTitle:'મà«àª–à«àª¯ મથાળà«àª‚',advisoryContentType:'મà«àª–à«àª¯ કનà«àªŸà«‡àª¨à«àªŸ પà«àª°àª•ાર',cssClasses:'સà«àªŸàª¾àª‡àª²-શીટ કà«àª²àª¾àª¸',charset:'લિંક રિસૉરà«àª¸ કૅરિકà«àªŸàª° સેટ',styles:'સà«àªŸàª¾àª‡àª²',selectAnchor:'àªàª‚કર પસંદ કરો',anchorName:'àªàª‚કર નામથી પસંદ કરો',anchorId:'àªàª‚કર àªàª²àª¿àª®àª¨à«àªŸ Id થી પસંદ કરો',emailAddress:'ઈ-મેલ સરનામà«àª‚',emailSubject:'ઈ-મેલ વિષય',emailBody:'સંદેશ',noAnchors:'(ડૉકà«àª¯à«àª®àª¨à«àªŸàª®àª¾àª‚ àªàª‚કરની સંખà«àª¯àª¾)',noUrl:'લિંક URL ટાઇપ કરો',noEmail:'ઈ-મેલ સરનામà«àª‚ ટાઇપ કરો'},anchor:{toolbar:'àªàª‚કર ઇનà«àª¸àª°à«àªŸ/દાખલ કરવી',menu:'àªàª‚કરના ગà«àª£',title:'àªàª‚કરના ગà«àª£',name:'àªàª‚કરનà«àª‚ નામ',errorName:'àªàª‚કરનà«àª‚ નામ ટાઈપ કરો'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'શોધવà«àª‚ અને બદલવà«àª‚',find:'શોધવà«àª‚',replace:'રિપà«àª²à«‡àª¸/બદલવà«àª‚',findWhat:'આ શોધો',replaceWith:'આનાથી બદલો',notFoundMsg:'તમે શોધેલી ટેકà«àª¸à«àªŸ નથી મળી',matchCase:'કેસ સરખા રાખો',matchWord:'બઘા શબà«àª¦ સરખા રાખો',matchCyclic:'Match cyclic',replaceAll:'બઘા બદલી ',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'ટેબલ, કોઠો',title:'ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚',menu:'ટેબલ, કોઠાનà«àª‚ મથાળà«àª‚',deleteTable:'કોઠો ડિલીટ/કાઢી નાખવà«àª‚',rows:'પંકà«àª¤àª¿àª¨àª¾ ખાના',columns:'કૉલમ/ઊભી કટાર',border:'કોઠાની બાજà«(બોરà«àª¡àª°) સાઇàª',align:'અલાઇનમનà«àªŸ/ગોઠવાયેલà«àª‚ ',alignLeft:'ડાબી બાજà«',alignCenter:'મધà«àª¯ સેનà«àªŸàª°',alignRight:'જમણી બાજà«',width:'પહોળાઈ',widthPx:'પિકસલ',widthPc:'પà«àª°àª¤àª¿àª¶àª¤',widthUnit:'width unit',height:'ઊંચાઈ',cellSpace:'સેલ અંતર',cellPad:'સેલ પૅડિંગ',caption:'મથાળà«àª‚/કૅપà«àª¶àª¨ ',summary:'ટૂંકો àªàª¹à«‡àªµàª¾àª²',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'કોષના ખાના',insertBefore:'પહેલાં કોષ ઉમેરવો',insertAfter:'પછી કોષ ઉમેરવો',deleteCell:'કોષ ડિલીટ/કાઢી નાખવો',merge:'કોષ ભેગા કરવા',mergeRight:'જમણી બાજૠભેગા કરવા',mergeDown:'નીચે ભેગા કરવા',splitHorizontal:'કોષને સમસà«àª¤àª°à«€àª¯ વિભાજન કરવà«àª‚',splitVertical:'કોષને સીધà«àª‚ ને ઊભà«àª‚ વિભાજન કરવà«àª‚',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'પંકà«àª¤àª¿àª¨àª¾ ખાના',insertBefore:'પહેલાં પંકà«àª¤àª¿ ઉમેરવી',insertAfter:'પછી પંકà«àª¤àª¿ ઉમેરવી',deleteRow:'પંકà«àª¤àª¿àª“ ડિલીટ/કાઢી નાખવી'},column:{menu:'કૉલમ/ઊભી કટાર',insertBefore:'પહેલાં કૉલમ/ઊભી કટાર ઉમેરવી',insertAfter:'પછી કૉલમ/ઊભી કટાર ઉમેરવી',deleteColumn:'કૉલમ/ઊભી કટાર ડિલીટ/કાઢી નાખવી'}},button:{title:'બટનના ગà«àª£',text:'ટેકà«àª¸à«àªŸ (વૅલà«àª¯à«‚)',type:'પà«àª°àª•ાર',typeBtn:'બટન',typeSbm:'સબà«àª®àª¿àªŸ',typeRst:'રિસેટ'},checkboxAndRadio:{checkboxTitle:'ચેક બોકà«àª¸ ગà«àª£',radioTitle:'રેડિઓ બટનના ગà«àª£',value:'વૅલà«àª¯à«‚',selected:'સિલેકà«àªŸà«‡àª¡'},form:{title:'ફૉરà«àª®/પતà«àª°àª•ના ગà«àª£',menu:'ફૉરà«àª®/પતà«àª°àª•ના ગà«àª£',action:'કà«àª°àª¿àª¯àª¾',method:'પદà«àª§àª¤àª¿',encoding:'Encoding'},select:{title:'પસંદગી કà«àª·à«‡àª¤à«àª°àª¨àª¾ ગà«àª£',selectInfo:'સૂચના',opAvail:'ઉપલબà«àª§ વિકલà«àªª',value:'વૅલà«àª¯à«‚',size:'સાઇàª',lines:'લીટીઓ',chkMulti:'àªàª•થી વધારે પસંદ કરી શકો',opText:'ટેકà«àª¸à«àªŸ',opValue:'વૅલà«àª¯à«‚',btnAdd:'ઉમેરવà«àª‚',btnModify:'બદલવà«àª‚',btnUp:'ઉપર',btnDown:'નીચે',btnSetValue:'પસંદ કરલી વૅલà«àª¯à«‚ સેટ કરો',btnDelete:'રદ કરવà«àª‚'},textarea:{title:'ટેકà«àª¸à«àªŸ àªàª…રિઆ, શબà«àª¦ વિસà«àª¤àª¾àª°àª¨àª¾ ગà«àª£',cols:'કૉલમ/ઊભી કટાર',rows:'પંકà«àª¤àª¿àª“'},textfield:{title:'ટેકà«àª¸à«àªŸ ફીલà«àª¡, શબà«àª¦ કà«àª·à«‡àª¤à«àª°àª¨àª¾ ગà«àª£',name:'નામ',value:'વૅલà«àª¯à«‚',charWidth:'કેરેકà«àªŸàª°àª¨à«€ પહોળાઈ',maxChars:'અધિકતમ કેરેકà«àªŸàª°',type:'ટાઇપ',typeText:'ટેકà«àª¸à«àªŸ',typePass:'પાસવરà«àª¡'},hidden:{title:'ગà«àªªà«àª¤ કà«àª·à«‡àª¤à«àª°àª¨àª¾ ગà«àª£',name:'નામ',value:'વૅલà«àª¯à«‚'},image:{title:'ચિતà«àª°àª¨àª¾ ગà«àª£',titleButton:'ચિતà«àª° બટનના ગà«àª£',menu:'ચિતà«àª°àª¨àª¾ ગà«àª£',infoTab:'ચિતà«àª° ની જાણકારી',btnUpload:'આ સરà«àªµàª°àª¨à«‡ મોકલવà«àª‚',upload:'અપલોડ',alt:'ઑલà«àªŸàª°à«àª¨àªŸ ટેકà«àª¸à«àªŸ',width:'પહોળાઈ',height:'ઊંચાઈ',lockRatio:'લૉક ગà«àª£à«‹àª¤à«àª¤àª°',unlockRatio:'Unlock Ratio',resetSize:'રીસેટ સાઇàª',border:'બોરà«àª¡àª°',hSpace:'સમસà«àª¤àª°à«€àª¯ જગà«àª¯àª¾',vSpace:'લંબરૂપ જગà«àª¯àª¾',align:'લાઇનદોરીમાં ગોઠવવà«àª‚',alignLeft:'ડાબી બાજૠગોઠવવà«àª‚',alignRight:'જમણી',alertUrl:'ચિતà«àª°àª¨à«€ URL ટાઇપ કરો',linkTab:'લિંક',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ફà«àª²à«…શના ગà«àª£',propertiesTab:'Properties',title:'ફà«àª²à«…શ ગà«àª£',chkPlay:'ઑટો/સà«àªµàª¯àª‚ પà«àª²à«‡',chkLoop:'લૂપ',chkMenu:'ફà«àª²à«…શ મેનà«àª¯à«‚ નો પà«àª°àª¯à«‹àª— કરો',chkFull:'Allow Fullscreen',scale:'સà«àª•ેલ',scaleAll:'સà«àª•ેલ ઓલ/બધૠબતાવો',scaleNoBorder:'સà«àª•ેલ બોરà«àª¡àª° વગર',scaleFit:'સà«àª•ેલ àªàª•દમ ફીટ',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'લાઇનદોરીમાં ગોઠવવà«àª‚',alignLeft:'ડાબી બાજૠગોઠવવà«àª‚',alignAbsBottom:'Abs નીચે',alignAbsMiddle:'Abs ઉપર',alignBaseline:'આધાર લીટી',alignBottom:'નીચે',alignMiddle:'વચà«àªšà«‡',alignRight:'જમણી',alignTextTop:'ટેકà«àª¸à«àªŸ ઉપર',alignTop:'ઉપર',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'બૅકગà«àª°àª¾àª‰àª¨à«àª¡ રંગ,',width:'પહોળાઈ',height:'ઊંચાઈ',hSpace:'સમસà«àª¤àª°à«€àª¯ જગà«àª¯àª¾',vSpace:'લંબરૂપ જગà«àª¯àª¾',validateSrc:'લિંક URL ટાઇપ કરો',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'જોડણી (સà«àªªà«‡àª²àª¿àª‚ગ) તપાસવી',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'શબà«àª¦àª•ોશમાં નથી',changeTo:'આનાથી બદલવà«àª‚',btnIgnore:'ઇગà«àª¨à«‹àª°/અવગણના કરવી',btnIgnoreAll:'બધાની ઇગà«àª¨à«‹àª°/અવગણના કરવી',btnReplace:'બદલવà«àª‚',btnReplaceAll:'બધા બદલી કરો',btnUndo:'અનà«àª¡à«‚',noSuggestions:'- કઇ સજેશન નથી -',progress:'શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક ચાલૠછે...',noMispell:'શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: ખોટી જોડણી મળી નથી',noChanges:'શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: àªàª•પણ શબà«àª¦ બદલયો નથી',oneChange:'શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: àªàª• શબà«àª¦ બદલયો છે',manyChanges:'શબà«àª¦àª¨à«€ જોડણી/સà«àªªà«‡àª² ચેક પૂરà«àª£: %1 શબà«àª¦ બદલયા છે',ieSpellDownload:'સà«àªªà«‡àª²-ચેકર ઇનà«àª¸à«àªŸà«‹àª² નથી. શà«àª‚ તમે ડાઉનલોડ કરવા માંગો છો?'},smiley:{toolbar:'સà«àª®àª¾àª‡àª²à«€',title:'સà«àª®àª¾àª‡àª²à«€ પસંદ કરો',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'સંખà«àª¯àª¾àª‚કન સૂચિ',bulletedlist:'બà«àª²à«‡àªŸ સૂચિ',indent:'ઇનà«àª¡à«‡àª¨à«àªŸ, લીટીના આરંભમાં જગà«àª¯àª¾ વધારવી',outdent:'ઇનà«àª¡à«‡àª¨à«àªŸ લીટીના આરંભમાં જગà«àª¯àª¾ ઘટાડવી',justify:{left:'ડાબી બાજà«àª/બાજૠતરફ',center:'સંકેંદà«àª°àª£/સેંટરિંગ',right:'જમણી બાજà«àª/બાજૠતરફ',block:'બà«àª²à«‰àª•, અંતરાય જસà«àªŸàª¿àª«àª¾àª‡'},blockquote:'બà«àª²à«‰àª•-કોટ, અવતરણચિહà«àª¨à«‹',clipboard:{title:'પેસà«àªŸ',cutError:'તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.',copyError:'તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का पà¥à¤°à¤¯à¥‹à¤— करें।',pasteMsg:'Ctrl/Cmd+V નો પà«àª°àª¯à«‹àª— કરી પેસà«àªŸ કરો',securityMsg:'તમારા બà«àª°àª¾àª‰àªàª° ની સà«àª°àª•à«àª·àª¿àª¤ સેટિંગસના કારણે,àªàª¡àª¿àªŸàª° તમારા કિલà«àªªàª¬à«‹àª°à«àª¡ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિનà«àª¡à«‹àª®àª¾àª‚ ફરીથી પેસà«àªŸ કરવà«àª‚ પડશે.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)',title:'પેસà«àªŸ (વડૅ ટેકà«àª¸à«àªŸ)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'પેસà«àªŸ (ટેકà«àª¸à«àªŸ)',title:'પેસà«àªŸ (ટેકà«àª¸à«àªŸ)'},templates:{button:'ટેમà«àªªà«àª²à«‡àªŸ',title:'કનà«àªŸà«‡àª¨à«àªŸ ટેમà«àªªà«àª²à«‡àªŸ',options:'Template Options',insertOption:'મૂળ શબà«àª¦àª¨à«‡ બદલો',selectPromptMsg:'àªàª¡àª¿àªŸàª°àª®àª¾àª‚ ઓપન કરવા ટેમà«àªªà«àª²à«‡àªŸ પસંદ કરો (વરà«àª¤àª®àª¾àª¨ કનà«àªŸà«‡àª¨à«àªŸ સેવ નહીં થાય):',emptyListMsg:'(કોઈ ટેમà«àªªà«àª²à«‡àªŸ ડિફાઇન નથી)'},showBlocks:'બà«àª²à«‰àª• બતાવવà«àª‚',stylesCombo:{label:'શૈલી/રીત',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી',panelTitle:'ફૉનà«àªŸ ફૉરà«àª®àªŸ, રચનાની શૈલી',tag_p:'સામાનà«àª¯',tag_pre:'ફૉરà«àª®àªŸà«‡àª¡',tag_address:'સરનામà«àª‚',tag_h1:'શીરà«àª·àª• 1',tag_h2:'શીરà«àª·àª• 2',tag_h3:'શીરà«àª·àª• 3',tag_h4:'શીરà«àª·àª• 4',tag_h5:'શીરà«àª·àª• 5',tag_h6:'શીરà«àª·àª• 6',tag_div:'શીરà«àª·àª• (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'ફૉનà«àªŸ',voiceLabel:'Font',panelTitle:'ફૉનà«àªŸ'},fontSize:{label:'ફૉનà«àªŸ સાઇàª/કદ',voiceLabel:'Font Size',panelTitle:'ફૉનà«àªŸ સાઇàª/કદ'},colorButton:{textColorTitle:'શબà«àª¦àª¨à«‹ રંગ',bgColorTitle:'બૅકગà«àª°àª¾àª‰àª¨à«àª¡ રંગ,',panelTitle:'Colors',auto:'સà«àªµàªšàª¾àª²àª¿àª¤',more:'ઔર રંગ...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/he.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/he.js
new file mode 100644
index 000000000..709b15459
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.he={dir:'rtl',editorTitle:'עורך טקסט עשיר, %1, לחץ ×לט (ALT) + 0 לעזרה.',toolbar:'סרגל הכלי×',editor:'עורך טקסט עשיר',source:'מקור',newPage:'דף חדש',save:'שמירה',preview:'תצוגה מקדימה',cut:'גזירה',copy:'העתקה',paste:'הדבקה',print:'הדפסה',underline:'קו תחתון',bold:'מודגש',italic:'נטוי',selectAll:'בחירת הכל',removeFormat:'הסרת העיצוב',strike:'כתיב מחוק',subscript:'כתיב תחתון',superscript:'כתיב עליון',horizontalrule:'הוספת קו ×ופקי',pagebreak:'הוספת שבירת דף',unlink:'הסרת הקישור',undo:'ביטול צעד ×חרון',redo:'חזרה על צעד ×חרון',common:{browseServer:'סייר השרת',url:'כתובת (URL)',protocol:'פרוטוקול',upload:'העל××”',uploadSubmit:'שליחה לשרת',image:'תמונה',flash:'פל×ש',form:'טופס',checkbox:'תיבת סימון',radio:'לחצן ×פשרויות',textField:'שדה טקסט',textarea:'×יזור טקסט',hiddenField:'שדה חבוי',button:'כפתור',select:'שדה בחירה',imageButton:'כפתור תמונה',notSet:'<×œ× × ×§×‘×¢>',id:'זיהוי (ID)',name:'ש×',langDir:'כיוון שפה',langDirLtr:'שמ×ל לימין (LTR)',langDirRtl:'ימין לשמ×ל (RTL)',langCode:'קוד שפה',longDescr:'קישור לתי×ור מפורט',cssClass:'מחלקת עיצוב (CSS Class)',advisoryTitle:'כותרת מוצעת',cssStyle:'סגנון',ok:'×ישור',cancel:'ביטול',close:'סגירה',preview:'תצוגה מקדימה',generalTab:'כללי',advancedTab:'×פשרויות מתקדמות',validateNumberFailed:'הערך חייב להיות מספרי.',confirmNewPage:'כל ×”×©×™× ×•×™×™× ×©×œ× × ×©×ž×¨×• ×™×בדו. ×”×× ×œ×”×¢×œ×•×ª דף חדש?',confirmCancel:'חלק מה×פשרויות שונו, ×”×× ×œ×¡×’×•×¨ ×ת הדי×לוג?',options:'×פשרויות',target:'מטרה',targetNew:'חלון חדש (_blank)',targetTop:'החלון העליון ביותר (_top)',targetSelf:'×ותו חלון (_self)',targetParent:'חלון ×”×ב (_parent)',langDirLTR:'שמ×ל לימין (LTR)',langDirRTL:'ימין לשמ×ל (RTL)',styles:'סגנון',cssClasses:'מחלקות גליונות סגנון',unavailable:'%1<span class="cke_accessibility">, ×œ× ×–×ž×™×Ÿ</span>'},contextmenu:{options:'×פשרויות תפריט ההקשר'},specialChar:{toolbar:'הוספת תו מיוחד',title:'בחירת תו מיוחד',options:'×פשרויות ×ª×•×•×™× ×ž×™×•×—×“×™×'},link:{toolbar:'הוספת/עריכת קישור',other:'<×חר>',menu:'מ×פייני קישור',title:'קישור',info:'מידע על הקישור',target:'מטרה',upload:'העל××”',advanced:'×פשרויות מתקדמות',type:'סוג קישור',toUrl:'כתובת (URL)',toAnchor:'עוגן בעמוד ×–×”',toEmail:'דו×"ל',targetFrame:'<מסגרת>',targetPopup:'<חלון קופץ>',targetFrameName:'×©× ×ž×¡×’×¨×ª היעד',targetPopupName:'×©× ×”×—×œ×•×Ÿ הקופץ',popupFeatures:'תכונות החלון הקופץ',popupResizable:'שינוי גודל',popupStatusBar:'סרגל חיווי',popupLocationBar:'סרגל כתובת',popupToolbar:'סרגל הכלי×',popupMenuBar:'סרגל תפריט',popupFullScreen:'מסך ×ž×œ× (IE)',popupScrollBars:'ניתן לגלילה',popupDependent:'תלוי (Netscape)',popupWidth:'רוחב',popupLeft:'×ž×™×§×•× ×¦×“ שמ×ל',popupHeight:'גובה',popupTop:'×ž×™×§×•× ×¦×“ עליון',id:'זיהוי (ID)',langDir:'כיוון שפה',langDirLTR:'שמ×ל לימין (LTR)',langDirRTL:'ימין לשמ×ל (RTL)',acccessKey:'מקש גישה',name:'ש×',langCode:'קוד שפה',tabIndex:'מספר ט×ב',advisoryTitle:'כותרת מוצעת',advisoryContentType:'Content Type מוצע',cssClasses:'גיליונות עיצוב קבוצות',charset:'קידוד המש×ב המקושר',styles:'סגנון',selectAnchor:'בחירת עוגן',anchorName:'עפ"×™ ×©× ×”×¢×•×’×Ÿ',anchorId:'עפ"×™ זיהוי (ID) ×”×למנט',emailAddress:'כתובת הדו×"ל',emailSubject:'× ×•×©× ×”×”×•×“×¢×”',emailBody:'גוף ההודעה',noAnchors:'(×ין ×¢×•×’× ×™× ×–×ž×™× ×™× ×‘×“×£)',noUrl:'יש להקליד ×ת כתובת הקישור (URL)',noEmail:'יש להקליד ×ת כתובת הדו×"ל'},anchor:{toolbar:'הוספת/עריכת נקודת עיגון',menu:'מ×פייני נקודת עיגון',title:'מ×פייני נקודת עיגון',name:'×©× ×œ× ×§×•×“×ª עיגון',errorName:'יש להקליד ×©× ×œ× ×§×•×“×ª עיגון'},list:{numberedTitle:'תכונות רשימה ממוספרת',bulletedTitle:'תכונות רשימת תבליטי×',type:'סוג',start:'תחילת מספור',validateStartNumber:'שדה תחילת המספור חייב להכיל מספר של×.',circle:'עיגול ריק',disc:'עיגול מל×',square:'ריבוע',none:'לל×',notset:'<×œ× × ×§×‘×¢>',armenian:'ספרות ×רמניות',georgian:"ספרות ×’×™×ורגיות (an, ban, gan וכו')",lowerRoman:"ספירה רומית ב×ותיות קטנות (i, ii, iii, iv, v וכו')",upperRoman:"ספירה רומיות ב×ותיות גדולות (I, II, III, IV, V וכו')",lowerAlpha:"×ותיות ×נגליות קטנות (a, b, c, d, e וכו')",upperAlpha:"×ותיות ×נגליות גדולות (A, B, C, D, E וכו')",lowerGreek:"×ותיות יווניות קטנות (alpha, beta, gamma וכו')",decimal:"ספרות (1, 2, 3 וכו')",decimalLeadingZero:"ספרות ×¢× 0 בהתחלה (01, 02, 03 וכו')"},findAndReplace:{title:'חיפוש והחלפה',find:'חיפוש',replace:'החלפה',findWhat:'חיפוש מחרוזת:',replaceWith:'החלפה במחרוזת:',notFoundMsg:'הטקסט המבוקש ×œ× × ×ž×¦×.',matchCase:'הבחנה בין ×ותיות רשיות לקטנות (Case)',matchWord:'הת×מה למילה המל××”',matchCyclic:'הת×מה מחזורית',replaceAll:'החלפה בכל העמוד',replaceSuccessMsg:'%1 ×˜×§×¡×˜×™× ×”×•×—×œ×¤×•.'},table:{toolbar:'טבלה',title:'מ×פייני טבלה',menu:'מ×פייני טבלה',deleteTable:'מחק טבלה',rows:'שורות',columns:'עמודות',border:'גודל מסגרת',align:'יישור',alignLeft:'שמ×ל',alignCenter:'מרכז',alignRight:'ימין',width:'רוחב',widthPx:'פיקסלי×',widthPc:'×חוז',widthUnit:'יחידת רוחב',height:'גובה',cellSpace:'מרווח ת×',cellPad:'ריפוד ת×',caption:'כיתוב',summary:'תקציר',headers:'כותרות',headersNone:'×ין',headersColumn:'עמודה ר×שונה',headersRow:'שורה ר×שונה',headersBoth:'שניה×',invalidRows:'שדה מספר השורות חייב להיות מספר גדול מ 0.',invalidCols:'שדה מספר העמודות חייב להיות מספר גדול מ 0.',invalidBorder:'שדה גודל המסגרת חייב להיות מספר.',invalidWidth:'שדה רוחב הטבלה חייב להיות מספר.',invalidHeight:'שדה גובה הטבלה חייב להיות מספר.',invalidCellSpacing:'שדה ריווח הת××™× ×—×™×™×‘ להיות מספר.',invalidCellPadding:'שדה ריפוד הת××™× ×—×™×™×‘ להיות מספר.',cell:{menu:'מ×פייני ת×',insertBefore:'הוספת ×ª× ×œ×¤× ×™',insertAfter:'הוספת ×ª× ×חרי',deleteCell:'מחיקת ת××™×',merge:'מיזוג ת××™×',mergeRight:'מזג ימינה',mergeDown:'מזג למטה',splitHorizontal:'פיצול ×ª× ×ופקית',splitVertical:'פיצול ×ª× ×נכית',title:'תכונות הת×',cellType:'סוג הת×',rowSpan:'מתיחת השורות',colSpan:'מתיחת הת××™×',wordWrap:'מניעת גלישת שורות',hAlign:'יישור ×ופקי',vAlign:'יישור ×× ×›×™',alignTop:'למעלה',alignMiddle:'מרכז',alignBottom:'למטה',alignBaseline:'שורת בסיס',bgColor:'צבע רקע',borderColor:'צבע מסגרת',data:'מידע',header:'כותרת',yes:'כן',no:'ל×',invalidWidth:'שדה רוחב ×”×ª× ×—×™×™×‘ להיות מספר.',invalidHeight:'שדה גובה ×”×ª× ×—×™×™×‘ להיות מספר.',invalidRowSpan:'שדה מתיחת השורות חייב להיות מספר של×.',invalidColSpan:'שדה מתיחת העמודות חייב להיות מספר של×.',chooseColor:'בחר'},row:{menu:'שורה',insertBefore:'הוספת שורה לפני',insertAfter:'הוספת שורה ×חרי',deleteRow:'מחיקת שורות'},column:{menu:'עמודה',insertBefore:'הוספת עמודה לפני',insertAfter:'הוספת עמודה ×חרי',deleteColumn:'מחיקת עמודות'}},button:{title:'מ×פייני כפתור',text:'טקסט (ערך)',type:'סוג',typeBtn:'כפתור',typeSbm:'שליחה',typeRst:'×יפוס'},checkboxAndRadio:{checkboxTitle:'מ×פייני תיבת סימון',radioTitle:'מ×פייני לחצן ×פשרויות',value:'ערך',selected:'מסומן'},form:{title:'מ×פיני טופס',menu:'מ×פיני טופס',action:'שלח ×ל',method:'סוג שליחה',encoding:'קידוד'},select:{title:'מ×פייני שדה בחירה',selectInfo:'מידע',opAvail:'×פשרויות זמינות',value:'ערך',size:'גודל',lines:'שורות',chkMulti:'×יפשור בחירות מרובות',opText:'טקסט',opValue:'ערך',btnAdd:'הוספה',btnModify:'שינוי',btnUp:'למעלה',btnDown:'למטה',btnSetValue:'קביעה כברירת מחדל',btnDelete:'מחיקה'},textarea:{title:'מ×פייני ×יזור טקסט',cols:'עמודות',rows:'שורות'},textfield:{title:'מ×פייני שדה טקסט',name:'ש×',value:'ערך',charWidth:'רוחב לפי תווי×',maxChars:'×ž×§×¡×™×ž×•× ×ª×•×•×™×',type:'סוג',typeText:'טקסט',typePass:'סיסמה'},hidden:{title:'מ×פיני שדה חבוי',name:'ש×',value:'ערך'},image:{title:'מ×פייני התמונה',titleButton:'מ×פיני כפתור תמונה',menu:'תכונות התמונה',infoTab:'מידע על התמונה',btnUpload:'שליחה לשרת',upload:'העל××”',alt:'טקסט חלופי',width:'רוחב',height:'גובה',lockRatio:'נעילת היחס',unlockRatio:'ביטול נעילת היחס',resetSize:'×יפוס הגודל',border:'מסגרת',hSpace:'מרווח ×ופקי',vSpace:'מרווח ×× ×›×™',align:'יישור',alignLeft:'לשמ×ל',alignRight:'לימין',alertUrl:'יש להקליד ×ת כתובת התמונה',linkTab:'קישור',button2Img:'×”×× ×œ×”×¤×•×š ×ת תמונת הכפתור לתמונה פשוטה?',img2Button:'×”×× ×œ×”×¤×•×š ×ת התמונה לכפתור תמונה?',urlMissing:'כתובת התמונה חסרה.',validateWidth:'שדה הרוחב חייב להיות מספר של×.',validateHeight:'שדה הגובה חייב להיות מספר של×.',validateBorder:'שדה המסגרת חייב להיות מספר של×.',validateHSpace:'שדה המרווח ×”×ופקי חייב להיות מספר של×.',validateVSpace:'שדה המרווח ×”×× ×›×™ חייב להיות מספר של×.'},flash:{properties:'מ×פייני פל×ש',propertiesTab:'מ×פייני×',title:'מ×פיני פל×ש',chkPlay:'ניגון ×וטומטי',chkLoop:'לול××”',chkMenu:'×פשר תפריט פל×ש',chkFull:'×פשר חלון מל×',scale:'גודל',scaleAll:'הצג הכל',scaleNoBorder:'×œ×œ× ×’×‘×•×œ×•×ª',scaleFit:'הת×מה מושלמת',access:'גישת סקריפט',accessAlways:'תמיד',accessSameDomain:'דומיין ×–×”×”',accessNever:'××£ פע×',align:'יישור',alignLeft:'לשמ×ל',alignAbsBottom:'לתחתית ×”×בסולוטית',alignAbsMiddle:'מרכוז ×בסולוטי',alignBaseline:'לקו התחתית',alignBottom:'לתחתית',alignMiddle:'ל×מצע',alignRight:'לימין',alignTextTop:'לר×ש הטקסט',alignTop:'למעלה',quality:'×יכות',qualityBest:'מעולה',qualityHigh:'גבוהה',qualityAutoHigh:'גבוהה ×וטומטית',qualityMedium:'ממוצעת',qualityAutoLow:'נמוכה ×וטומטית',qualityLow:'נמוכה',windowModeWindow:'חלון',windowModeOpaque:'×טו×',windowModeTransparent:'שקוף',windowMode:'מצב חלון',flashvars:'×ž×©×ª× ×™× ×œ×¤×œ×ש',bgcolor:'צבע רקע',width:'רוחב',height:'גובה',hSpace:'מרווח ×ופקי',vSpace:'מרווח ×× ×›×™',validateSrc:'יש להקליד ×ת כתובת סרטון הפל×ש (URL)',validateWidth:'הרוחב חייב להיות מספר.',validateHeight:'הגובה חייב להיות מספר.',validateHSpace:'המרווח ×”×ופקי חייב להיות מספר.',validateVSpace:'המרווח ×”×× ×›×™ חייב להיות מספר.'},spellCheck:{toolbar:'בדיקת ×יות',title:'בדיקת ×יות',notAvailable:'×œ× × ×ž×¦× ×©×™×¨×•×ª זמין.',errorLoading:'שגי××” בהעל×ת השירות: %s.',notInDic:'×œ× × ×ž×¦× ×‘×ž×™×œ×•×Ÿ',changeTo:'שינוי ל',btnIgnore:'התעלמות',btnIgnoreAll:'התעלמות מהכל',btnReplace:'החלפה',btnReplaceAll:'החלפת הכל',btnUndo:'החזרה',noSuggestions:'- ×ין הצעות -',progress:'בודק ×”×יות בתהליך בדיקה....',noMispell:'בדיקות ×יות הסתיימה: ×œ× × ×ž×¦×ו שגי×ות כתיב',noChanges:'בדיקות ×יות הסתיימה: ×œ× ×©×•× ×ª×” ××£ מילה',oneChange:'בדיקות ×יות הסתיימה: שונתה מילה ×חת',manyChanges:'בדיקות ×יות הסתיימה: %1 ×ž×™×œ×™× ×©×•× ×•',ieSpellDownload:'בודק ×”×יות ×œ× ×ž×•×ª×§×Ÿ, ×”×× ×œ×”×•×¨×™×“×•?'},smiley:{toolbar:'סמיילי',title:'הוספת סמיילי',options:'×פשרויות סמיילי×'},elementsPath:{eleLabel:'×¢×¥ ×”×למנטי×',eleTitle:'%1 ×למנט'},numberedlist:'רשימה ממוספרת',bulletedlist:'רשימת נקודות',indent:'הגדלת ×”×–×—×”',outdent:'הקטנת ×”×–×—×”',justify:{left:'יישור לשמ×ל',center:'מרכוז',right:'יישור לימין',block:'יישור לשוליי×'},blockquote:'בלוק ציטוט',clipboard:{title:'הדבקה',cutError:'הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות גזירה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl/Cmd+X).',copyError:'הגדרות ×”×בטחה בדפדפן שלך ×œ× ×ž×פשרות לעורך לבצע פעולות העתקה ×וטומטיות. יש להשתמש במקלדת ×œ×©× ×›×š (Ctrl/Cmd+C).',pasteMsg:'× × ×œ×”×“×‘×™×§ בתוך הקופסה ב×מצעות (<b>Ctrl/Cmd+V</b>) וללחוץ על <b>×ישור</b>.',securityMsg:'עקב הגדרות ×בטחה בדפדפן, ×œ× × ×™×ª×Ÿ לגשת ×ל לוח ×”×’×–×™×¨×™× (Clipboard) בצורה ישירה. × × ×œ×”×“×‘×™×§ שוב בחלון ×–×”.',pasteArea:'×יזור הדבקה'},pastefromword:{confirmCleanup:'נר××” הטקסט שבכוונתך להדביק מקורו בקובץ וורד. ×”×× ×‘×¨×¦×•× ×š לנקות ×ותו ×˜×¨× ×”×”×“×‘×§×”?',toolbar:'הדבקה מ-Word',title:'הדבקה מ-Word',error:'×œ× × ×™×ª×Ÿ ×”×™×” לנקות ×ת המידע בשל תקלה פנימית.'},pasteText:{button:'הדבקה כטקסט פשוט',title:'הדבקה כטקסט פשוט'},templates:{button:'תבניות',title:'תביות תוכן',options:'×פשרויות התבניות',insertOption:'החלפת תוכן ממשי',selectPromptMsg:'יש לבחור תבנית לפתיחה בעורך.<br />התוכן המקורי ימחק:',emptyListMsg:'(×œ× ×”×•×’×“×¨×• תבניות)'},showBlocks:'הצגת בלוקי×',stylesCombo:{label:'סגנון',panelTitle:'סגנונות פורמט',panelTitle1:'סגנונות בלוק',panelTitle2:'סגנונות רצף',panelTitle3:'סגנונות ×ובייקט'},format:{label:'עיצוב',panelTitle:'עיצוב',tag_p:'נורמלי',tag_pre:'קוד',tag_address:'כתובת',tag_h1:'כותרת',tag_h2:'כותרת 2',tag_h3:'כותרת 3',tag_h4:'כותרת 4',tag_h5:'כותרת 5',tag_h6:'כותרת 6',tag_div:'נורמלי (DIV)'},div:{title:'יצירת מיכל (Div)',toolbar:'יצירת מיכל (Div)',cssClassInputLabel:'מחלקת עיצוב',styleSelectLabel:'סגנון',IdInputLabel:'מזהה (ID)',languageCodeInputLabel:'קוד שפה',inlineStyleInputLabel:'סגנון פנימי',advisoryTitleInputLabel:'כותרת מוצעת',langDirLabel:'כיוון שפה',langDirLTRLabel:'שמ×ל לימין (LTR)',langDirRTLLabel:'ימין לשמ×ל (RTL)',edit:'עריכת מיכל (Div)',remove:'הסרת מיכל (Div)'},font:{label:'גופן',voiceLabel:'גופן',panelTitle:'גופן'},fontSize:{label:'גודל',voiceLabel:'גודל',panelTitle:'גודל'},colorButton:{textColorTitle:'צבע טקסט',bgColorTitle:'צבע רקע',panelTitle:'צבעי×',auto:'×וטומטי',more:'×¦×‘×¢×™× × ×•×¡×¤×™×...'},colors:{'000':'שחור',800000:'סגול ×›×”×”','8B4513':'×—×•× ×‘×”×™×¨','2F4F4F':'×פור צפחה','008080':'כחול-ירוק','000080':'כחול-סגול','4B0082':'×ינדיגו',696969:'×פור מעומע×',B22222:'×דו×-חו×',A52A2A:'חו×',DAA520:'×›×ª×•× ×–×”×‘','006400':'ירוק ×›×”×”','40E0D0':'טורקיז','0000CD':'כחול בינוני',800080:'סגול',808080:'×פור',F00:'×דו×',FF8C00:'×›×ª×•× ×›×”×”',FFD700:'זהב','008000':'ירוק','0FF':'צי×ן','00F':'כחול',EE82EE:'סגלגל',A9A9A9:'×פור ×›×”×”',FFA07A:'כתו×-וורוד',FFA500:'כתו×',FFFF00:'צהוב','00FF00':'ליי×',AFEEEE:'טורקיז בהיר',ADD8E6:'כחול בהיר',DDA0DD:'שזיף',D3D3D3:'×פור בהיר',FFF0F5:'לבנדר מסמיק',FAEBD7:'לבן עתיק',FFFFE0:'צהוב בהיר',F0FFF0:'טל דבש',F0FFFF:'תכלת',F0F8FF:'כחול טיפת מי×',E6E6FA:'לבנדר',FFF:'לבן'},scayt:{title:'בדיקת ×יות בזמן כתיבה (SCAYT)',opera_title:'×œ× ×–×ž×™×Ÿ בדפדפן ×ופרה',enable:'×פשר SCAYT',disable:'בטל SCAYT',about:'×ודות SCAYT',toggle:'שינוי SCAYT',options:'×פשרויות',langs:'שפות',moreSuggestions:'הצעות נוספות',ignore:'התעלמות',ignoreAll:'התעלמות מהכל',addWord:'הוספת מילה',emptyDic:'יש לבחור מילון.',optionsTab:'×פשרויות',allCaps:'×”×ª×¢×œ× ×ž×ž×™×œ×™× ×©×›×œ ×ותיותיהן גדולות',ignoreDomainNames:'×”×ª×¢×œ× ×ž×©×ž×•×ª מתח×',mixedCase:'×”×ª×¢×œ× ×ž×ž×™×œ×™× ×¢× ×ותיות גדולות וקטנות ביחד',mixedWithDigits:'×”×ª×¢×œ× ×ž×ž×™×œ×™× ×¢× ×ž×¡×¤×¨×™×',languagesTab:'שפות',dictionariesTab:'מילון',dic_field_name:'×©× ×”×ž×™×œ×•×Ÿ',dic_create:'יצירה',dic_restore:'שחזור',dic_delete:'מחיקה',dic_rename:'שינוי ש×',dic_info:'בהתחלה מילון המשתמש מ×וחסן בעוגיה, ×ך עוגיות מוגבלות במקו×. ×›×שר המילון מגיע לגודל בו ×”×•× ×ינו יכול להת×כסן בעוגיה, המילון צריך להת×כסן בשרתנו. ×œ×©× ×›×š עליך לתת ×©× ×œ×ž×™×œ×•×Ÿ. ×× ×›×‘×¨ יש לך מילון מ×וחסן, יש להכניס ×ת שמו וללחוץ על כפתור השחזור.',aboutTab:'×ודות'},about:{title:'×ודות CKEditor',dlgTitle:'×ודות CKEditor',moreInfo:'למידע נוסף בקרו ב×תרנו:',copy:'Copyright &copy; $1. כל הזכויות שמורות.'},maximize:'הגדלה למקסימו×',minimize:'הקטנה למינימו×',fakeobjects:{anchor:'עוגן',flash:'סרטון פל×ש',div:'שבירת דף',unknown:'×ובייקט ×œ× ×™×“×•×¢'},resize:'יש לגרור בכדי לשנות ×ת הגודל',colordialog:{title:'בחירת צבע',options:'×פשרויות צבע',highlight:'סימון',selected:'בחירה',clear:'ניקוי'},toolbarCollapse:'מזעור סרגל כלי×',toolbarExpand:'הרחבת סרגל כלי×',bidi:{ltr:'כיוון טקסט משמ×ל לימין (LTR)',rtl:'כיוון טקסט מימין לשמ×ל (RTL)'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/hi.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/hi.js
new file mode 100644
index 000000000..6b0aa99d4
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/hi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hi={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'सोरà¥à¤¸',newPage:'नया पेज',save:'सेव',preview:'पà¥à¤°à¥€à¤µà¥à¤¯à¥‚',cut:'कट',copy:'कॉपी',paste:'पेसà¥à¤Ÿ',print:'पà¥à¤°à¤¿à¤¨à¥à¤Ÿ',underline:'रेखांकण',bold:'बोलà¥à¤¡',italic:'इटैलिक',selectAll:'सब सॅलॅकà¥à¤Ÿ करें',removeFormat:'फ़ॉरà¥à¤®à¥ˆà¤Ÿ हटायें',strike:'सà¥à¤Ÿà¥à¤°à¤¾à¤‡à¤• थà¥à¤°à¥‚',subscript:'अधोलेख',superscript:'अभिलेख',horizontalrule:'हॉरिज़ॉनà¥à¤Ÿà¤² रेखा इनà¥à¤¸à¤°à¥à¤Ÿ करें',pagebreak:'पेज बà¥à¤°à¥‡à¤• इनà¥à¤¸à¤°à¥à¤Ÿà¥ करें',unlink:'लिंक हटायें',undo:'अनà¥à¤¡à¥‚',redo:'रीडू',common:{browseServer:'सरà¥à¤µà¤° बà¥à¤°à¤¾à¤‰à¥› करें',url:'URL',protocol:'पà¥à¤°à¥‹à¤Ÿà¥‹à¤•ॉल',upload:'अपलोड',uploadSubmit:'इसे सरà¥à¤µà¤° को भेजें',image:'तसà¥à¤µà¥€à¤°',flash:'फ़à¥à¤²à¥ˆà¤¶',form:'फ़ॉरà¥à¤®',checkbox:'चॅक बॉकà¥à¤¸',radio:'रेडिओ बटन',textField:'टेकà¥à¤¸à¥à¤Ÿ फ़ीलà¥à¤¡',textarea:'टेकà¥à¤¸à¥à¤Ÿ à¤à¤°à¤¿à¤¯à¤¾',hiddenField:'गà¥à¤ªà¥à¤¤ फ़ीलà¥à¤¡',button:'बटन',select:'चà¥à¤¨à¤¾à¤µ फ़ीलà¥à¤¡',imageButton:'तसà¥à¤µà¥€à¤° बटन',notSet:'<सॅट नहीं>',id:'Id',name:'नाम',langDir:'भाषा लिखने की दिशा',langDirLtr:'बायें से दायें (LTR)',langDirRtl:'दायें से बायें (RTL)',langCode:'भाषा कोड',longDescr:'अधिक विवरण के लिठURL',cssClass:'सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸',advisoryTitle:'परामरà¥à¤¶ शीरà¥à¤¶à¤•',cssStyle:'सà¥à¤Ÿà¤¾à¤‡à¤²',ok:'ठीक है',cancel:'रदà¥à¤¦ करें',close:'Close',preview:'Preview',generalTab:'सामानà¥à¤¯',advancedTab:'à¤à¤¡à¥à¤µà¤¾à¤¨à¥à¤¸à¥à¤¡',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'विशेष करॅकà¥à¤Ÿà¤° इनà¥à¤¸à¤°à¥à¤Ÿ करें',title:'विशेष करॅकà¥à¤Ÿà¤° चà¥à¤¨à¥‡à¤‚',options:'Special Character Options'},link:{toolbar:'लिंक इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन',other:'<अनà¥à¤¯>',menu:'लिंक संपादन',title:'लिंक',info:'लिंक ',target:'टारà¥à¤—ेट',upload:'अपलोड',advanced:'à¤à¤¡à¥à¤µà¤¾à¤¨à¥à¤¸à¥à¤¡',type:'लिंक पà¥à¤°à¤•ार',toUrl:'URL',toAnchor:'इस पेज का à¤à¤‚कर',toEmail:'ई-मेल',targetFrame:'<फ़à¥à¤°à¥‡à¤®>',targetPopup:'<पॉप-अप विनà¥à¤¡à¥‹>',targetFrameName:'टारà¥à¤—ेट फ़à¥à¤°à¥‡à¤® का नाम',targetPopupName:'पॉप-अप विनà¥à¤¡à¥‹ का नाम',popupFeatures:'पॉप-अप विनà¥à¤¡à¥‹ फ़ीचरà¥à¤¸',popupResizable:'Resizable',popupStatusBar:'सà¥à¤Ÿà¥‡à¤Ÿà¤¸ बार',popupLocationBar:'लोकेशन बार',popupToolbar:'टूल बार',popupMenuBar:'मॅनà¥à¤¯à¥‚ बार',popupFullScreen:'फ़à¥à¤² सà¥à¤•à¥à¤°à¥€à¤¨ (IE)',popupScrollBars:'सà¥à¤•à¥à¤°à¥‰à¤² बार',popupDependent:'डिपेनà¥à¤¡à¥…नà¥à¤Ÿ (Netscape)',popupWidth:'चौड़ाई',popupLeft:'बायीं तरफ',popupHeight:'ऊà¤à¤šà¤¾à¤ˆ',popupTop:'दायीं तरफ',id:'Id',langDir:'भाषा लिखने की दिशा',langDirLTR:'बायें से दायें (LTR)',langDirRTL:'दायें से बायें (RTL)',acccessKey:'à¤à¤•à¥à¤¸à¥…स की',name:'नाम',langCode:'भाषा लिखने की दिशा',tabIndex:'टैब इनà¥à¤¡à¥…कà¥à¤¸',advisoryTitle:'परामरà¥à¤¶ शीरà¥à¤¶à¤•',advisoryContentType:'परामरà¥à¤¶ कनà¥à¤Ÿà¥…नà¥à¤Ÿ पà¥à¤°à¤•ार',cssClasses:'सà¥à¤Ÿà¤¾à¤‡à¤²-शीट कà¥à¤²à¤¾à¤¸',charset:'लिंक रिसोरà¥à¤¸ करॅकà¥à¤Ÿà¤° सॅट',styles:'सà¥à¤Ÿà¤¾à¤‡à¤²',selectAnchor:'à¤à¤‚कर चà¥à¤¨à¥‡à¤‚',anchorName:'à¤à¤‚कर नाम से',anchorId:'à¤à¤²à¥€à¤®à¥…नà¥à¤Ÿ Id से',emailAddress:'ई-मेल पता',emailSubject:'संदेश विषय',emailBody:'संदेश',noAnchors:'(डॉकà¥à¤¯à¥‚मॅनà¥à¤Ÿ में à¤à¤‚करà¥à¤¸ की संखà¥à¤¯à¤¾)',noUrl:'लिंक URL टाइप करें',noEmail:'ई-मेल पता टाइप करें'},anchor:{toolbar:'à¤à¤‚कर इनà¥à¤¸à¤°à¥à¤Ÿ/संपादन',menu:'à¤à¤‚कर पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',title:'à¤à¤‚कर पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',name:'à¤à¤‚कर का नाम',errorName:'à¤à¤‚कर का नाम टाइप करें'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'खोजें और बदलें',find:'खोजें',replace:'रीपà¥à¤²à¥‡à¤¸',findWhat:'यह खोजें:',replaceWith:'इससे रिपà¥à¤²à¥‡à¤¸ करें:',notFoundMsg:'आपके दà¥à¤µà¤¾à¤°à¤¾ दिया गया टेकà¥à¤¸à¥à¤Ÿ नहीं मिला',matchCase:'केस मिलायें',matchWord:'पूरा शबà¥à¤¦ मिलायें',matchCyclic:'Match cyclic',replaceAll:'सभी रिपà¥à¤²à¥‡à¤¸ करें',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'टेबल',title:'टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',menu:'टेबल पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',deleteTable:'टेबल डिलीट करें',rows:'पंकà¥à¤¤à¤¿à¤¯à¤¾à¤',columns:'कालम',border:'बॉरà¥à¤¡à¤° साइज़',align:'à¤à¤²à¤¾à¤‡à¤¨à¥à¤®à¥…नà¥à¤Ÿ',alignLeft:'दायें',alignCenter:'बीच में',alignRight:'बायें',width:'चौड़ाई',widthPx:'पिकà¥à¤¸à¥ˆà¤²',widthPc:'पà¥à¤°à¤¤à¤¿à¤¶à¤¤',widthUnit:'width unit',height:'ऊà¤à¤šà¤¾à¤ˆ',cellSpace:'सैल अंतर',cellPad:'सैल पैडिंग',caption:'शीरà¥à¤·à¤•',summary:'सारांश',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'खाना',insertBefore:'पहले सैल डालें',insertAfter:'बाद में सैल डालें',deleteCell:'सैल डिलीट करें',merge:'सैल मिलायें',mergeRight:'बाà¤à¤¯à¤¾ विलय',mergeDown:'नीचे विलय करें',splitHorizontal:'सैल को कà¥à¤·à¥ˆà¤¤à¤¿à¤œ सà¥à¤¥à¤¿à¤¤à¤¿ में विभाजित करें',splitVertical:'सैल को लमà¥à¤¬à¤¾à¤•ार में विभाजित करें',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'पंकà¥à¤¤à¤¿',insertBefore:'पहले पंकà¥à¤¤à¤¿ डालें',insertAfter:'बाद में पंकà¥à¤¤à¤¿ डालें',deleteRow:'पंकà¥à¤¤à¤¿à¤¯à¤¾à¤ डिलीट करें'},column:{menu:'कालम',insertBefore:'पहले कालम डालें',insertAfter:'बाद में कालम डालें',deleteColumn:'कालम डिलीट करें'}},button:{title:'बटन पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',text:'टेकà¥à¤¸à¥à¤Ÿ (वैलà¥à¤¯à¥‚)',type:'पà¥à¤°à¤•ार',typeBtn:'बटन',typeSbm:'सबà¥à¤®à¤¿à¤Ÿ',typeRst:'रिसेट'},checkboxAndRadio:{checkboxTitle:'चॅक बॉकà¥à¤¸ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',radioTitle:'रेडिओ बटन पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',value:'वैलà¥à¤¯à¥‚',selected:'सॅलॅकà¥à¤Ÿà¥…ड'},form:{title:'फ़ॉरà¥à¤® पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',menu:'फ़ॉरà¥à¤® पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',action:'कà¥à¤°à¤¿à¤¯à¤¾',method:'तरीका',encoding:'Encoding'},select:{title:'चà¥à¤¨à¤¾à¤µ फ़ीलà¥à¤¡ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',selectInfo:'सूचना',opAvail:'उपलबà¥à¤§ विकलà¥à¤ª',value:'वैलà¥à¤¯à¥‚',size:'साइज़',lines:'पंकà¥à¤¤à¤¿à¤¯à¤¾à¤',chkMulti:'à¤à¤• से जà¥à¤¯à¤¾à¤¦à¤¾ विकलà¥à¤ª चà¥à¤¨à¤¨à¥‡ दें',opText:'टेकà¥à¤¸à¥à¤Ÿ',opValue:'वैलà¥à¤¯à¥‚',btnAdd:'जोड़ें',btnModify:'बदलें',btnUp:'ऊपर',btnDown:'नीचे',btnSetValue:'चà¥à¤¨à¥€ गई वैलà¥à¤¯à¥‚ सॅट करें',btnDelete:'डिलीट'},textarea:{title:'टेकà¥à¤¸à¥à¤¤ à¤à¤°à¤¿à¤¯à¤¾ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',cols:'कालम',rows:'पंकà¥à¤¤à¤¿à¤¯à¤¾à¤‚'},textfield:{title:'टेकà¥à¤¸à¥à¤Ÿ फ़ीलà¥à¤¡ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',name:'नाम',value:'वैलà¥à¤¯à¥‚',charWidth:'करॅकà¥à¤Ÿà¤° की चौà¥à¤¾à¤ˆ',maxChars:'अधिकतम करॅकà¥à¤Ÿà¤°',type:'टाइप',typeText:'टेकà¥à¤¸à¥à¤Ÿ',typePass:'पासà¥à¤µà¤°à¥à¤¡'},hidden:{title:'गà¥à¤ªà¥à¤¤ फ़ीलà¥à¤¡ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',name:'नाम',value:'वैलà¥à¤¯à¥‚'},image:{title:'तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',titleButton:'तसà¥à¤µà¥€à¤° बटन पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',menu:'तसà¥à¤µà¥€à¤° पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',infoTab:'तसà¥à¤µà¥€à¤° की जानकारी',btnUpload:'इसे सरà¥à¤µà¤° को भेजें',upload:'अपलोड',alt:'वैकलà¥à¤ªà¤¿à¤• टेकà¥à¤¸à¥à¤Ÿ',width:'चौड़ाई',height:'ऊà¤à¤šà¤¾à¤ˆ',lockRatio:'लॉक अनà¥à¤ªà¤¾à¤¤',unlockRatio:'Unlock Ratio',resetSize:'रीसॅट साइज़',border:'बॉरà¥à¤¡à¤°',hSpace:'हॉरिज़ॉनà¥à¤Ÿà¤² सà¥à¤ªà¥‡à¤¸',vSpace:'वरà¥à¤Ÿà¤¿à¤•ल सà¥à¤ªà¥‡à¤¸',align:'à¤à¤²à¤¾à¤‡à¤¨',alignLeft:'दायें',alignRight:'दायें',alertUrl:'तसà¥à¤µà¥€à¤° का URL टाइप करें ',linkTab:'लिंक',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'फ़à¥à¤²à¥ˆà¤¶ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',propertiesTab:'Properties',title:'फ़à¥à¤²à¥ˆà¤¶ पà¥à¤°à¥‰à¤ªà¤°à¥à¤Ÿà¥€à¥›',chkPlay:'ऑटो पà¥à¤²à¥‡',chkLoop:'लूप',chkMenu:'फ़à¥à¤²à¥ˆà¤¶ मॅनà¥à¤¯à¥‚ का पà¥à¤°à¤¯à¥‹à¤— करें',chkFull:'Allow Fullscreen',scale:'सà¥à¤•ेल',scaleAll:'सभी दिखायें',scaleNoBorder:'कोई बॉरà¥à¤¡à¤° नहीं',scaleFit:'बिलà¥à¤•à¥à¤² फ़िट',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'à¤à¤²à¤¾à¤‡à¤¨',alignLeft:'दायें',alignAbsBottom:'Abs नीचे',alignAbsMiddle:'Abs ऊपर',alignBaseline:'मूल रेखा',alignBottom:'नीचे',alignMiddle:'मधà¥à¤¯',alignRight:'दायें',alignTextTop:'टेकà¥à¤¸à¥à¤Ÿ ऊपर',alignTop:'ऊपर',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡ रंग',width:'चौड़ाई',height:'ऊà¤à¤šà¤¾à¤ˆ',hSpace:'हॉरिज़ॉनà¥à¤Ÿà¤² सà¥à¤ªà¥‡à¤¸',vSpace:'वरà¥à¤Ÿà¤¿à¤•ल सà¥à¤ªà¥‡à¤¸',validateSrc:'लिंक URL टाइप करें',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'वरà¥à¤¤à¤¨à¥€ (सà¥à¤ªà¥‡à¤²à¤¿à¤‚ग) जाà¤à¤š',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'शबà¥à¤¦à¤•ोश में नहीं',changeTo:'इसमें बदलें',btnIgnore:'इगà¥à¤¨à¥‹à¤°',btnIgnoreAll:'सभी इगà¥à¤¨à¥‹à¤° करें',btnReplace:'रिपà¥à¤²à¥‡à¤¸',btnReplaceAll:'सभी रिपà¥à¤²à¥‡à¤¸ करें',btnUndo:'अनà¥à¤¡à¥‚',noSuggestions:'- कोई सà¥à¤à¤¾à¤µ नहीं -',progress:'वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š (सà¥à¤ªà¥…ल-चॅक) जारी है...',noMispell:'वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š : कोई गलत वरà¥à¤¤à¤¨à¥€ (सà¥à¤ªà¥…लिंग) नहीं पाई गई',noChanges:'वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š :कोई शबà¥à¤¦ नहीं बदला गया',oneChange:'वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š : à¤à¤• शबà¥à¤¦ बदला गया',manyChanges:'वरà¥à¤¤à¤¨à¥€ की जाà¤à¤š : %1 शबà¥à¤¦ बदले गये',ieSpellDownload:'सà¥à¤ªà¥…ल-चॅकर इनà¥à¤¸à¥à¤Ÿà¤¾à¤² नहीं किया गया है। कà¥à¤¯à¤¾ आप इसे डाउनलोड करना चाहेंगे?'},smiley:{toolbar:'सà¥à¤®à¤¾à¤‡à¤²à¥€',title:'सà¥à¤®à¤¾à¤‡à¤²à¥€ इनà¥à¤¸à¤°à¥à¤Ÿ करें',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'अंकीय सूची',bulletedlist:'बà¥à¤²à¥…ट सूची',indent:'इनà¥à¤¡à¥…नà¥à¤Ÿ बà¥à¤¾à¤¯à¥‡à¤‚',outdent:'इनà¥à¤¡à¥…नà¥à¤Ÿ कम करें',justify:{left:'बायीं तरफ',center:'बीच में',right:'दायीं तरफ',block:'बà¥à¤²à¥‰à¤• जसà¥à¤Ÿà¥€à¥žà¤¾à¤ˆ'},blockquote:'बà¥à¤²à¥‰à¤•-कोट',clipboard:{title:'पेसà¥à¤Ÿ',cutError:'आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कट करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl/Cmd+X) का पà¥à¤°à¤¯à¥‹à¤— करें।',copyError:'आपके बà¥à¤°à¤¾à¤†à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ सॅटिनà¥à¤—à¥à¤¸ ने कॉपी करने की अनà¥à¤®à¤¤à¤¿ नहीं पà¥à¤°à¤¦à¤¾à¤¨ की है। (Ctrl/Cmd+C) का पà¥à¤°à¤¯à¥‹à¤— करें।',pasteMsg:'Ctrl/Cmd+V का पà¥à¤°à¤¯à¥‹à¤— करके पेसà¥à¤Ÿ करें और ठीक है करें.',securityMsg:'आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°à¤•à¥à¤·à¤¾ आपके बà¥à¤°à¤¾à¤‰à¥›à¤° की सà¥à¤°Kश सैटिंग के कारण, à¤à¤¡à¤¿à¤Ÿà¤° आपके कà¥à¤²à¤¿à¤ªà¤¬à¥‹à¤°à¥à¤¡ डेटा को नहीं पा सकता है. आपको उसे इस विनà¥à¤¡à¥‹ में दोबारा पेसà¥à¤Ÿ करना होगा.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'पेसà¥à¤Ÿ (वरà¥à¤¡ से)',title:'पेसà¥à¤Ÿ (वरà¥à¤¡ से)',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)',title:'पेसà¥à¤Ÿ (सादा टॅकà¥à¤¸à¥à¤Ÿ)'},templates:{button:'टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ',title:'कनà¥à¤Ÿà¥‡à¤¨à¥à¤Ÿ टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ',options:'Template Options',insertOption:'मूल शबà¥à¤¦à¥‹à¤‚ को बदलें',selectPromptMsg:'à¤à¤¡à¤¿à¤Ÿà¤° में ओपन करने हेतॠटॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ चà¥à¤¨à¥‡à¤‚(वरà¥à¤¤à¤®à¤¾à¤¨ कनà¥à¤Ÿà¥…नà¥à¤Ÿ सेव नहीं होंगे):',emptyListMsg:'(कोई टॅमà¥à¤ªà¥à¤²à¥‡à¤Ÿ डिफ़ाइन नहीं किया गया है)'},showBlocks:'बà¥à¤²à¥‰à¤• दिखायें',stylesCombo:{label:'सà¥à¤Ÿà¤¾à¤‡à¤²',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'फ़ॉरà¥à¤®à¥ˆà¤Ÿ',panelTitle:'फ़ॉरà¥à¤®à¥ˆà¤Ÿ',tag_p:'साधारण',tag_pre:'फ़ॉरà¥à¤®à¥ˆà¤Ÿà¥…ड',tag_address:'पता',tag_h1:'शीरà¥à¤·à¤• 1',tag_h2:'शीरà¥à¤·à¤• 2',tag_h3:'शीरà¥à¤·à¤• 3',tag_h4:'शीरà¥à¤·à¤• 4',tag_h5:'शीरà¥à¤·à¤• 5',tag_h6:'शीरà¥à¤·à¤• 6',tag_div:'शीरà¥à¤·à¤• (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'फ़ॉनà¥à¤Ÿ',voiceLabel:'Font',panelTitle:'फ़ॉनà¥à¤Ÿ'},fontSize:{label:'साइज़',voiceLabel:'Font Size',panelTitle:'साइज़'},colorButton:{textColorTitle:'टेकà¥à¤¸à¥à¤Ÿ रंग',bgColorTitle:'बैकà¥à¤—à¥à¤°à¤¾à¤‰à¤¨à¥à¤¡ रंग',panelTitle:'Colors',auto:'सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤',more:'और रंग...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/hr.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/hr.js
new file mode 100644
index 000000000..098b3b7a1
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/hr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hr={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Kôd',newPage:'Nova stranica',save:'Snimi',preview:'Pregledaj',cut:'Izreži',copy:'Kopiraj',paste:'Zalijepi',print:'IspiÅ¡i',underline:'Potcrtano',bold:'Podebljaj',italic:'Ukosi',selectAll:'Odaberi sve',removeFormat:'Ukloni formatiranje',strike:'Precrtano',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Ubaci vodoravnu liniju',pagebreak:'Ubaci prijelom stranice',unlink:'Ukloni link',undo:'PoniÅ¡ti',redo:'Ponovi',common:{browseServer:'Pretraži server',url:'URL',protocol:'Protokol',upload:'PoÅ¡alji',uploadSubmit:'PoÅ¡alji na server',image:'Slika',flash:'Flash',form:'Form',checkbox:'Checkbox',radio:'Radio Button',textField:'Text Field',textarea:'Textarea',hiddenField:'Hidden Field',button:'Button',select:'Selection Field',imageButton:'Image Button',notSet:'<nije postavljeno>',id:'Id',name:'Naziv',langDir:'Smjer jezika',langDirLtr:'S lijeva na desno (LTR)',langDirRtl:'S desna na lijevo (RTL)',langCode:'Kôd jezika',longDescr:'DugaÄki opis URL',cssClass:'Stylesheet klase',advisoryTitle:'Advisory naslov',cssStyle:'Stil',ok:'OK',cancel:'PoniÅ¡ti',close:'Close',preview:'Preview',generalTab:'Općenito',advancedTab:'Napredno',validateNumberFailed:'Ova vrijednost nije broj.',confirmNewPage:'Sve napravljene promjene će biti izgubljene ukoliko ih niste snimili. Sigurno želite uÄitati novu stranicu?',confirmCancel:'Neke od opcija su promjenjene. Sigurno želite zatvoriti ovaj prozor?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, nedostupno</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ubaci posebne znakove',title:'Odaberite posebni karakter',options:'Special Character Options'},link:{toolbar:'Ubaci/promijeni link',other:'<drugi>',menu:'Promijeni link',title:'Link',info:'Link Info',target:'Meta',upload:'PoÅ¡alji',advanced:'Napredno',type:'Link vrsta',toUrl:'URL',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',targetFrame:'<okvir>',targetPopup:'<popup prozor>',targetFrameName:'Ime ciljnog okvira',targetPopupName:'Naziv popup prozora',popupFeatures:'Mogućnosti popup prozora',popupResizable:'Promjenjiva veliÄina',popupStatusBar:'Statusna traka',popupLocationBar:'Traka za lokaciju',popupToolbar:'Traka s alatima',popupMenuBar:'Izborna traka',popupFullScreen:'Cijeli ekran (IE)',popupScrollBars:'Scroll traka',popupDependent:'Ovisno (Netscape)',popupWidth:'Å irina',popupLeft:'Lijeva pozicija',popupHeight:'Visina',popupTop:'Gornja pozicija',id:'Id',langDir:'Smjer jezika',langDirLTR:'S lijeva na desno (LTR)',langDirRTL:'S desna na lijevo (RTL)',acccessKey:'Pristupna tipka',name:'Naziv',langCode:'Smjer jezika',tabIndex:'Tab Indeks',advisoryTitle:'Advisory naslov',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Stylesheet klase',charset:'Kodna stranica povezanih resursa',styles:'Stil',selectAnchor:'Odaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id elementa',emailAddress:'E-Mail adresa',emailSubject:'Naslov',emailBody:'Sadržaj poruke',noAnchors:'(Nema dostupnih sidra)',noUrl:'Molimo upiÅ¡ite URL link',noEmail:'Molimo upiÅ¡ite e-mail adresu'},anchor:{toolbar:'Ubaci/promijeni sidro',menu:'Svojstva sidra',title:'Svojstva sidra',name:'Ime sidra',errorName:'Molimo unesite ime sidra'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'PronaÄ‘i i zamijeni',find:'PronaÄ‘i',replace:'Zamijeni',findWhat:'PronaÄ‘i:',replaceWith:'Zamijeni s:',notFoundMsg:'Traženi tekst nije pronaÄ‘en.',matchCase:'Usporedi mala/velika slova',matchWord:'Usporedi cijele rijeÄi',matchCyclic:'Usporedi kružno',replaceAll:'Zamijeni sve',replaceSuccessMsg:'Zamijenjeno %1 pojmova.'},table:{toolbar:'Tablica',title:'Svojstva tablice',menu:'Svojstva tablice',deleteTable:'IzbriÅ¡i tablicu',rows:'Redova',columns:'Kolona',border:'VeliÄina okvira',align:'Poravnanje',alignLeft:'Lijevo',alignCenter:'SrediÅ¡nje',alignRight:'Desno',width:'Å irina',widthPx:'piksela',widthPc:'postotaka',widthUnit:'width unit',height:'Visina',cellSpace:'Prostornost ćelija',cellPad:'Razmak ćelija',caption:'Naslov',summary:'Sažetak',headers:'Zaglavlje',headersNone:'NiÅ¡ta',headersColumn:'Prva kolona',headersRow:'Prvi red',headersBoth:'Oba',invalidRows:'Broj redova mora biti broj veći od 0.',invalidCols:'Broj kolona mora biti broj veći od 0.',invalidBorder:'Debljina ruba mora biti broj.',invalidWidth:'Å irina tablice mora biti broj.',invalidHeight:'Visina tablice mora biti broj.',invalidCellSpacing:'Prostornost ćelija mora biti broj.',invalidCellPadding:'Razmak ćelija mora biti broj.',cell:{menu:'Ćelija',insertBefore:'Ubaci ćeliju prije',insertAfter:'Ubaci ćeliju poslije',deleteCell:'IzbriÅ¡i ćelije',merge:'Spoji ćelije',mergeRight:'Spoji desno',mergeDown:'Spoji dolje',splitHorizontal:'Podijeli ćeliju vodoravno',splitVertical:'Podijeli ćeliju okomito',title:'Svojstva ćelije',cellType:'Vrsta ćelije',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Prelazak u novi red',hAlign:'Vodoravno poravnanje',vAlign:'Okomito poravnanje',alignTop:'Vrh',alignMiddle:'Sredina',alignBottom:'Dolje',alignBaseline:'Osnovna linija',bgColor:'Boja pozadine',borderColor:'Boja ruba',data:'Podatak',header:'Zaglavlje',yes:'Da',no:'ne',invalidWidth:'Å irina ćelije mora biti broj.',invalidHeight:'Visina ćelije mora biti broj.',invalidRowSpan:'Rows span mora biti cijeli broj.',invalidColSpan:'Columns span mora biti cijeli broj.',chooseColor:'Choose'},row:{menu:'Red',insertBefore:'Ubaci red prije',insertAfter:'Ubaci red poslije',deleteRow:'IzbriÅ¡i redove'},column:{menu:'Kolona',insertBefore:'Ubaci kolonu prije',insertAfter:'Ubaci kolonu poslije',deleteColumn:'IzbriÅ¡i kolone'}},button:{title:'Image Button svojstva',text:'Tekst (vrijednost)',type:'Vrsta',typeBtn:'Gumb',typeSbm:'PoÅ¡alji',typeRst:'PoniÅ¡ti'},checkboxAndRadio:{checkboxTitle:'Checkbox svojstva',radioTitle:'Radio Button svojstva',value:'Vrijednost',selected:'Odabrano'},form:{title:'Form svojstva',menu:'Form svojstva',action:'Akcija',method:'Metoda',encoding:'Encoding'},select:{title:'Selection svojstva',selectInfo:'Info',opAvail:'Dostupne opcije',value:'Vrijednost',size:'VeliÄina',lines:'linija',chkMulti:'Dozvoli viÅ¡estruki odabir',opText:'Tekst',opValue:'Vrijednost',btnAdd:'Dodaj',btnModify:'Promijeni',btnUp:'Gore',btnDown:'Dolje',btnSetValue:'Postavi kao odabranu vrijednost',btnDelete:'ObriÅ¡i'},textarea:{title:'Textarea svojstva',cols:'Kolona',rows:'Redova'},textfield:{title:'Text Field svojstva',name:'Ime',value:'Vrijednost',charWidth:'Å irina',maxChars:'NajviÅ¡e karaktera',type:'Vrsta',typeText:'Tekst',typePass:'Å ifra'},hidden:{title:'Hidden Field svojstva',name:'Ime',value:'Vrijednost'},image:{title:'Svojstva slika',titleButton:'Image Button svojstva',menu:'Svojstva slika',infoTab:'Info slike',btnUpload:'PoÅ¡alji na server',upload:'PoÅ¡alji',alt:'Alternativni tekst',width:'Å irina',height:'Visina',lockRatio:'ZakljuÄaj odnos',unlockRatio:'Unlock Ratio',resetSize:'ObriÅ¡i veliÄinu',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',align:'Poravnaj',alignLeft:'Lijevo',alignRight:'Desno',alertUrl:'Unesite URL slike',linkTab:'Link',button2Img:'Želite li promijeniti odabrani gumb u jednostavnu sliku?',img2Button:'Želite li promijeniti odabranu sliku u gumb?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash svojstva',propertiesTab:'Svojstva',title:'Flash svojstva',chkPlay:'Auto Play',chkLoop:'Ponavljaj',chkMenu:'Omogući Flash izbornik',chkFull:'Omogući Fullscreen',scale:'Omjer',scaleAll:'Prikaži sve',scaleNoBorder:'Bez okvira',scaleFit:'ToÄna veliÄina',access:'Script Access',accessAlways:'Uvijek',accessSameDomain:'Ista domena',accessNever:'Nikad',align:'Poravnaj',alignLeft:'Lijevo',alignAbsBottom:'Abs dolje',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dolje',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',quality:'Kvaliteta',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Vrsta prozora',flashvars:'Varijable za Flash',bgcolor:'Boja pozadine',width:'Å irina',height:'Visina',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Molimo upiÅ¡ite URL link',validateWidth:'Å irina mora biti broj.',validateHeight:'Visina mora biti broj.',validateHSpace:'HSpace mora biti broj.',validateVSpace:'VSpace mora biti broj.'},spellCheck:{toolbar:'Provjeri pravopis',title:'Provjera pravopisa',notAvailable:'Žao nam je, ali usluga trenutno nije dostupna.',errorLoading:'GreÅ¡ka uÄitavanja aplikacije: %s.',notInDic:'Nije u rjeÄniku',changeTo:'Promijeni u',btnIgnore:'Zanemari',btnIgnoreAll:'Zanemari sve',btnReplace:'Zamijeni',btnReplaceAll:'Zamijeni sve',btnUndo:'Vrati',noSuggestions:'-Nema preporuke-',progress:'Provjera u tijeku...',noMispell:'Provjera zavrÅ¡ena: Nema greÅ¡aka',noChanges:'Provjera zavrÅ¡ena: Nije napravljena promjena',oneChange:'Provjera zavrÅ¡ena: Jedna rijeÄ promjenjena',manyChanges:'Provjera zavrÅ¡ena: Promijenjeno %1 rijeÄi',ieSpellDownload:'Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?'},smiley:{toolbar:'SmjeÅ¡ko',title:'Ubaci smjeÅ¡ka',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'BrojÄana lista',bulletedlist:'ObiÄna lista',indent:'Pomakni udesno',outdent:'Pomakni ulijevo',justify:{left:'Lijevo poravnanje',center:'SrediÅ¡nje poravnanje',right:'Desno poravnanje',block:'Blok poravnanje'},blockquote:'Blockquote',clipboard:{title:'Zalijepi',cutError:'Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).',copyError:'Sigurnosne postavke VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).',pasteMsg:'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (<STRONG>Ctrl/Cmd+V</STRONG>) i kliknite <STRONG>OK</STRONG>.',securityMsg:'Zbog sigurnosnih postavki VaÅ¡eg pretraživaÄa, editor nema direktan pristup VaÅ¡em meÄ‘uspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Tekst koji želite zalijepiti Äini se da je kopiran iz Worda. Želite li prije oÄistiti tekst?',toolbar:'Zalijepi iz Worda',title:'Zalijepi iz Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Zalijepi kao Äisti tekst',title:'Zalijepi kao Äisti tekst'},templates:{button:'PredloÅ¡ci',title:'PredloÅ¡ci sadržaja',options:'Template Options',insertOption:'Zamijeni trenutne sadržaje',selectPromptMsg:'Molimo odaberite predložak koji želite otvoriti<br>(stvarni sadržaj će biti izgubljen):',emptyListMsg:'(Nema definiranih predložaka)'},showBlocks:'Prikaži blokove',stylesCombo:{label:'Stil',panelTitle:'Formatting Styles',panelTitle1:'Block stilovi',panelTitle2:'Inline stilovi',panelTitle3:'Object stilovi'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'VeliÄina',voiceLabel:'VeliÄina slova',panelTitle:'VeliÄina'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',panelTitle:'Colors',auto:'Automatski',more:'ViÅ¡e boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Provjeri pravopis tijekom tipkanja (SCAYT)',opera_title:'Not supported by Opera',enable:'Omogući SCAYT',disable:'Onemogući SCAYT',about:'O SCAYT',toggle:'Omoguću/Onemogući SCAYT',options:'Opcije',langs:'Jezici',moreSuggestions:'ViÅ¡e prijedloga',ignore:'Zanemari',ignoreAll:'Zanemari sve',addWord:'Dodaj rijeÄ',emptyDic:'Naziv rjeÄnika ne smije biti prazno.',optionsTab:'Opcije',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Jezici',dictionariesTab:'RjeÄnici',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'O SCAYT'},about:{title:'O CKEditoru',dlgTitle:'O CKEditoru',moreInfo:'Za informacije o licencama posjetite naÅ¡u web stranicu:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Povećaj',minimize:'Minimize',fakeobjects:{anchor:'Sidro',flash:'Flash animacija',div:'Prijelom stranice',unknown:'Nepoznati objekt'},resize:'Povuci za promjenu veliÄine',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/hu.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/hu.js
new file mode 100644
index 000000000..61e7d3f4f
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/hu.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.hu={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Forráskód',newPage:'Új oldal',save:'Mentés',preview:'ElÅ‘nézet',cut:'Kivágás',copy:'Másolás',paste:'Beillesztés',print:'Nyomtatás',underline:'Aláhúzott',bold:'Félkövér',italic:'DÅ‘lt',selectAll:'Mindent kijelöl',removeFormat:'Formázás eltávolítása',strike:'Ãthúzott',subscript:'Alsó index',superscript:'FelsÅ‘ index',horizontalrule:'Elválasztóvonal beillesztése',pagebreak:'Oldaltörés beillesztése',unlink:'Hivatkozás törlése',undo:'Visszavonás',redo:'Ismétlés',common:{browseServer:'Böngészés a szerveren',url:'Hivatkozás',protocol:'Protokoll',upload:'Feltöltés',uploadSubmit:'Küldés a szerverre',image:'Kép',flash:'Flash',form:'Űrlap',checkbox:'JelölÅ‘négyzet',radio:'Választógomb',textField:'SzövegmezÅ‘',textarea:'Szövegterület',hiddenField:'RejtettmezÅ‘',button:'Gomb',select:'LegördülÅ‘ lista',imageButton:'Képgomb',notSet:'<nincs beállítva>',id:'Azonosító',name:'Név',langDir:'Ãrás iránya',langDirLtr:'Balról jobbra',langDirRtl:'Jobbról balra',langCode:'Nyelv kódja',longDescr:'Részletes leírás webcíme',cssClass:'Stíluskészlet',advisoryTitle:'Súgócimke',cssStyle:'Stílus',ok:'Rendben',cancel:'Mégsem',close:'Close',preview:'Preview',generalTab:'Ãltalános',advancedTab:'További opciók',validateNumberFailed:'A mezÅ‘be csak számokat írhat.',confirmNewPage:'Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?',confirmCancel:'Az űrlap tartalma megváltozott, ám a változásokat nem rögzítette. Biztosan be szeretné zárni az űrlapot?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Speciális karakter beillesztése',title:'Speciális karakter választása',options:'Special Character Options'},link:{toolbar:'Hivatkozás beillesztése/módosítása',other:'<más>',menu:'Hivatkozás módosítása',title:'Hivatkozás tulajdonságai',info:'Alaptulajdonságok',target:'Tartalom megjelenítése',upload:'Feltöltés',advanced:'További opciók',type:'Hivatkozás típusa',toUrl:'URL',toAnchor:'Horgony az oldalon',toEmail:'E-Mail',targetFrame:'<keretben>',targetPopup:'<felugró ablakban>',targetFrameName:'Keret neve',targetPopupName:'Felugró ablak neve',popupFeatures:'Felugró ablak jellemzÅ‘i',popupResizable:'Ãtméretezés',popupStatusBar:'Ãllapotsor',popupLocationBar:'Címsor',popupToolbar:'Eszköztár',popupMenuBar:'Menü sor',popupFullScreen:'Teljes képernyÅ‘ (csak IE)',popupScrollBars:'GördítÅ‘sáv',popupDependent:'SzülÅ‘höz kapcsolt (csak Netscape)',popupWidth:'Szélesség',popupLeft:'Bal pozíció',popupHeight:'Magasság',popupTop:'FelsÅ‘ pozíció',id:'Id',langDir:'Ãrás iránya',langDirLTR:'Balról jobbra',langDirRTL:'Jobbról balra',acccessKey:'Billentyűkombináció',name:'Név',langCode:'Ãrás iránya',tabIndex:'Tabulátor index',advisoryTitle:'Súgócimke',advisoryContentType:'Súgó tartalomtípusa',cssClasses:'Stíluskészlet',charset:'Hivatkozott tartalom kódlapja',styles:'Stílus',selectAnchor:'Horgony választása',anchorName:'Horgony név szerint',anchorId:'Azonosító szerint',emailAddress:'E-Mail cím',emailSubject:'Üzenet tárgya',emailBody:'Üzenet',noAnchors:'(Nincs horgony a dokumentumban)',noUrl:'Adja meg a hivatkozás webcímét',noEmail:'Adja meg az E-Mail címet'},anchor:{toolbar:'Horgony beillesztése/szerkesztése',menu:'Horgony tulajdonságai',title:'Horgony tulajdonságai',name:'Horgony neve',errorName:'Kérem adja meg a horgony nevét'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Keresés és csere',find:'Keresés',replace:'Csere',findWhat:'Keresett szöveg:',replaceWith:'Csere erre:',notFoundMsg:'A keresett szöveg nem található.',matchCase:'kis- és nagybetű megkülönböztetése',matchWord:'csak ha ez a teljes szó',matchCyclic:'Ciklikus keresés',replaceAll:'Az összes cseréje',replaceSuccessMsg:'%1 egyezÅ‘ség cserélve.'},table:{toolbar:'Táblázat',title:'Táblázat tulajdonságai',menu:'Táblázat tulajdonságai',deleteTable:'Táblázat törlése',rows:'Sorok',columns:'Oszlopok',border:'Szegélyméret',align:'Igazítás',alignLeft:'Balra',alignCenter:'Középre',alignRight:'Jobbra',width:'Szélesség',widthPx:'képpont',widthPc:'százalék',widthUnit:'width unit',height:'Magasság',cellSpace:'Cella térköz',cellPad:'Cella belsÅ‘ margó',caption:'Felirat',summary:'Leírás',headers:'Fejlécek',headersNone:'Nincsenek',headersColumn:'ElsÅ‘ oszlop',headersRow:'ElsÅ‘ sor',headersBoth:'MindkettÅ‘',invalidRows:'A sorok számának nagyobbnak kell lenni mint 0.',invalidCols:'Az oszlopok számának nagyobbnak kell lenni mint 0.',invalidBorder:'A szegélyméret mezÅ‘be csak számokat írhat.',invalidWidth:'A szélesség mezÅ‘be csak számokat írhat.',invalidHeight:'A magasság mezÅ‘be csak számokat írhat.',invalidCellSpacing:'A cella térköz mezÅ‘be csak számokat írhat.',invalidCellPadding:'A cella belsÅ‘ margó mezÅ‘be csak számokat írhat.',cell:{menu:'Cella',insertBefore:'Beszúrás balra',insertAfter:'Beszúrás jobbra',deleteCell:'Cellák törlése',merge:'Cellák egyesítése',mergeRight:'Cellák egyesítése jobbra',mergeDown:'Cellák egyesítése lefelé',splitHorizontal:'Cellák szétválasztása vízszintesen',splitVertical:'Cellák szétválasztása függÅ‘legesen',title:'Cella tulajdonságai',cellType:'Cella típusa',rowSpan:'FüggÅ‘leges egyesítés',colSpan:'Vízszintes egyesítés',wordWrap:'Hosszú sorok törése',hAlign:'Vízszintes igazítás',vAlign:'FüggÅ‘leges igazítás',alignTop:'Fel',alignMiddle:'Középre',alignBottom:'Le',alignBaseline:'Alapvonalra',bgColor:'Háttér színe',borderColor:'Keret színe',data:'Adat',header:'Fejléc',yes:'Igen',no:'Nem',invalidWidth:'A szélesség mezÅ‘be csak számokat írhat.',invalidHeight:'A magasság mezÅ‘be csak számokat írhat.',invalidRowSpan:'A függÅ‘leges egyesítés mezÅ‘be csak számokat írhat.',invalidColSpan:'A vízszintes egyesítés mezÅ‘be csak számokat írhat.',chooseColor:'Choose'},row:{menu:'Sor',insertBefore:'Beszúrás fölé',insertAfter:'Beszúrás alá',deleteRow:'Sorok törlése'},column:{menu:'Oszlop',insertBefore:'Beszúrás balra',insertAfter:'Beszúrás jobbra',deleteColumn:'Oszlopok törlése'}},button:{title:'Gomb tulajdonságai',text:'Szöveg (Érték)',type:'Típus',typeBtn:'Gomb',typeSbm:'Küldés',typeRst:'Alaphelyzet'},checkboxAndRadio:{checkboxTitle:'JelölÅ‘négyzet tulajdonságai',radioTitle:'Választógomb tulajdonságai',value:'Érték',selected:'Kiválasztott'},form:{title:'Űrlap tulajdonságai',menu:'Űrlap tulajdonságai',action:'Adatfeldolgozást végzÅ‘ hivatkozás',method:'Adatküldés módja',encoding:'Kódolás'},select:{title:'LegördülÅ‘ lista tulajdonságai',selectInfo:'Alaptulajdonságok',opAvail:'ElérhetÅ‘ opciók',value:'Érték',size:'Méret',lines:'sor',chkMulti:'több sor is kiválasztható',opText:'Szöveg',opValue:'Érték',btnAdd:'Hozzáad',btnModify:'Módosít',btnUp:'Fel',btnDown:'Le',btnSetValue:'Legyen az alapértelmezett érték',btnDelete:'Töröl'},textarea:{title:'Szövegterület tulajdonságai',cols:'Karakterek száma egy sorban',rows:'Sorok száma'},textfield:{title:'SzövegmezÅ‘ tulajdonságai',name:'Név',value:'Érték',charWidth:'Megjelenített karakterek száma',maxChars:'Maximális karakterszám',type:'Típus',typeText:'Szöveg',typePass:'Jelszó'},hidden:{title:'Rejtett mezÅ‘ tulajdonságai',name:'Név',value:'Érték'},image:{title:'Kép tulajdonságai',titleButton:'Képgomb tulajdonságai',menu:'Kép tulajdonságai',infoTab:'Alaptulajdonságok',btnUpload:'Küldés a szerverre',upload:'Feltöltés',alt:'Buborék szöveg',width:'Szélesség',height:'Magasság',lockRatio:'Arány megtartása',unlockRatio:'Unlock Ratio',resetSize:'Eredeti méret',border:'Keret',hSpace:'Vízsz. táv',vSpace:'Függ. táv',align:'Igazítás',alignLeft:'Bal',alignRight:'Jobbra',alertUrl:'Töltse ki a kép webcímét',linkTab:'Hivatkozás',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash tulajdonságai',propertiesTab:'Tulajdonságok',title:'Flash tulajdonságai',chkPlay:'Automata lejátszás',chkLoop:'Folyamatosan',chkMenu:'Flash menü engedélyezése',chkFull:'Teljes képernyÅ‘ engedélyezése',scale:'Méretezés',scaleAll:'Mindent mutat',scaleNoBorder:'Keret nélkül',scaleFit:'Teljes kitöltés',access:'Szkript hozzáférés',accessAlways:'Mindig',accessSameDomain:'Azonos domainrÅ‘l',accessNever:'Soha',align:'Igazítás',alignLeft:'Bal',alignAbsBottom:'Legaljára',alignAbsMiddle:'Közepére',alignBaseline:'Alapvonalhoz',alignBottom:'Aljára',alignMiddle:'Középre',alignRight:'Jobbra',alignTextTop:'Szöveg tetejére',alignTop:'Tetejére',quality:'MinÅ‘ség',qualityBest:'Legjobb',qualityHigh:'Jó',qualityAutoHigh:'Automata jó',qualityMedium:'Közepes',qualityAutoLow:'Automata gyenge',qualityLow:'Gyenge',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Ablak mód',flashvars:'Flash változók',bgcolor:'Háttérszín',width:'Szélesség',height:'Magasság',hSpace:'Vízsz. táv',vSpace:'Függ. táv',validateSrc:'Adja meg a hivatkozás webcímét',validateWidth:'A szélesség mezÅ‘be csak számokat írhat.',validateHeight:'A magasság mezÅ‘be csak számokat írhat.',validateHSpace:'A vízszintes távolsűág mezÅ‘be csak számokat írhat.',validateVSpace:'A függÅ‘leges távolsűág mezÅ‘be csak számokat írhat.'},spellCheck:{toolbar:'Helyesírás-ellenÅ‘rzés',title:'Helyesírás ellenörzÅ‘',notAvailable:'Sajnálom, de a szolgáltatás jelenleg nem elérhetÅ‘.',errorLoading:'Hiba a szolgáltatás host betöltése közben: %s.',notInDic:'Nincs a szótárban',changeTo:'Módosítás',btnIgnore:'Kihagyja',btnIgnoreAll:'Mindet kihagyja',btnReplace:'Csere',btnReplaceAll:'Összes cseréje',btnUndo:'Visszavonás',noSuggestions:'Nincs javaslat',progress:'Helyesírás-ellenÅ‘rzés folyamatban...',noMispell:'Helyesírás-ellenÅ‘rzés kész: Nem találtam hibát',noChanges:'Helyesírás-ellenÅ‘rzés kész: Nincs változtatott szó',oneChange:'Helyesírás-ellenÅ‘rzés kész: Egy szó cserélve',manyChanges:'Helyesírás-ellenÅ‘rzés kész: %1 szó cserélve',ieSpellDownload:'A helyesírás-ellenÅ‘rzÅ‘ nincs telepítve. Szeretné letölteni most?'},smiley:{toolbar:'Hangulatjelek',title:'Hangulatjel beszúrása',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 elem'},numberedlist:'Számozás',bulletedlist:'Felsorolás',indent:'Behúzás növelése',outdent:'Behúzás csökkentése',justify:{left:'Balra',center:'Középre',right:'Jobbra',block:'Sorkizárt'},blockquote:'Idézet blokk',clipboard:{title:'Beillesztés',cutError:'A böngészÅ‘ biztonsági beállításai nem engedélyezik a szerkesztÅ‘nek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',copyError:'A böngészÅ‘ biztonsági beállításai nem engedélyezik a szerkesztÅ‘nek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).',pasteMsg:'Másolja be az alábbi mezÅ‘be a <STRONG>Ctrl/Cmd+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.',securityMsg:'A böngészÅ‘ biztonsági beállításai miatt a szerkesztÅ‘ nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Beillesztés Word-bÅ‘l',title:'Beillesztés Word-bÅ‘l',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Beillesztés formázatlan szövegként',title:'Beillesztés formázatlan szövegként'},templates:{button:'Sablonok',title:'ElérhetÅ‘ sablonok',options:'Template Options',insertOption:'Kicseréli a jelenlegi tartalmat',selectPromptMsg:'Válassza ki melyik sablon nyíljon meg a szerkesztÅ‘ben<br>(a jelenlegi tartalom elveszik):',emptyListMsg:'(Nincs sablon megadva)'},showBlocks:'Blokkok megjelenítése',stylesCombo:{label:'Stílus',panelTitle:'Formatting Styles',panelTitle1:'Blokk stílusok',panelTitle2:'Inline stílusok',panelTitle3:'Objektum stílusok'},format:{label:'Formátum',panelTitle:'Formátum',tag_p:'Normál',tag_pre:'Formázott',tag_address:'Címsor',tag_h1:'Fejléc 1',tag_h2:'Fejléc 2',tag_h3:'Fejléc 3',tag_h4:'Fejléc 4',tag_h5:'Fejléc 5',tag_h6:'Fejléc 6',tag_div:'Bekezdés (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Betűtípus',voiceLabel:'Betűtípus',panelTitle:'Betűtípus'},fontSize:{label:'Méret',voiceLabel:'Betűméret',panelTitle:'Méret'},colorButton:{textColorTitle:'Betűszín',bgColorTitle:'Háttérszín',panelTitle:'Colors',auto:'Automatikus',more:'További színek...'},colors:{'000':'Fekete',800000:'Bordó','8B4513':'Barna','2F4F4F':'Sötét türkiz','008080':'Türkiz','000080':'Király kék','4B0082':'Indigó kék',696969:'Szürke',B22222:'Tégla vörös',A52A2A:'Vörös',DAA520:'Arany sárga','006400':'Sötét zöld','40E0D0':'Türkiz','0000CD':'Kék',800080:'Lila',808080:'Szürke',F00:'Piros',FF8C00:'Sötét narancs',FFD700:'Arany','008000':'Zöld','0FF':'Türkiz','00F':'Kék',EE82EE:'Rózsaszín',A9A9A9:'Sötét szürke',FFA07A:'Lazac',FFA500:'Narancs',FFFF00:'Citromsárga','00FF00':'Neon zöld',AFEEEE:'Világos türkiz',ADD8E6:'Világos kék',DDA0DD:'Világos lila',D3D3D3:'Világos szürke',FFF0F5:'Lavender Blush',FAEBD7:'Törtfehér',FFFFE0:'Világos sárga',F0FFF0:'Menta',F0FFFF:'Azúr kék',F0F8FF:'Halvány kék',E6E6FA:'Lavender',FFF:'Fehér'},scayt:{title:'Helyesírás ellenÅ‘rzés gépelés közben',opera_title:'Not supported by Opera',enable:'SCAYT engedélyezése',disable:'SCAYT letiltása',about:'SCAYT névjegy',toggle:'SCAYT kapcsolása',options:'Beállítások',langs:'Nyelvek',moreSuggestions:'További javaslatok',ignore:'Kihagy',ignoreAll:'Összes kihagyása',addWord:'Szó hozzáadása',emptyDic:'A szótár nevét meg kell adni.',optionsTab:'Beállítások',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Nyelvek',dictionariesTab:'Szótár',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Névjegy'},about:{title:'CKEditor névjegy',dlgTitle:'CKEditor névjegy',moreInfo:'Licenszelési információkért kérjük látogassa meg weboldalunkat:',copy:'Copyright &copy; $1. Minden jog fenntartva.'},maximize:'Teljes méret',minimize:'Kis méret',fakeobjects:{anchor:'Horgony',flash:'Flash animáció',div:'Oldaltörés',unknown:'Ismeretlen objektum'},resize:'Húzza az átméretezéshez',colordialog:{title:'Válasszon színt',options:'Color Options',highlight:'Nagyítás',selected:'Kiválasztott',clear:'Ürítés'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/is.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/is.js
new file mode 100644
index 000000000..ee929515b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/is.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.is={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Kóði',newPage:'Ný síða',save:'Vista',preview:'Forskoða',cut:'Klippa',copy:'Afrita',paste:'Líma',print:'Prenta',underline:'Undirstrikað',bold:'Feitletrað',italic:'Skáletrað',selectAll:'Velja allt',removeFormat:'Fjarlægja snið',strike:'Yfirstrikað',subscript:'Niðurskrifað',superscript:'Uppskrifað',horizontalrule:'Lóðrétt lína',pagebreak:'Setja inn síðuskil',unlink:'Fjarlægja stiklu',undo:'Afturkalla',redo:'Hætta við afturköllun',common:{browseServer:'Fletta í skjalasafni',url:'Vefslóð',protocol:'Samskiptastaðall',upload:'Senda upp',uploadSubmit:'Hlaða upp',image:'Setja inn mynd',flash:'Flash',form:'Setja inn innsláttarform',checkbox:'Setja inn hökunarreit',radio:'Setja inn valhnapp',textField:'Setja inn textareit',textarea:'Setja inn textasvæði',hiddenField:'Setja inn falið svæði',button:'Setja inn hnapp',select:'Setja inn lista',imageButton:'Setja inn myndahnapp',notSet:'<ekkert valið>',id:'Auðkenni',name:'Nafn',langDir:'Lesstefna',langDirLtr:'Frá vinstri til hægri (LTR)',langDirRtl:'Frá hægri til vinstri (RTL)',langCode:'Tungumálakóði',longDescr:'Nánari lýsing',cssClass:'Stílsniðsflokkur',advisoryTitle:'Titill',cssStyle:'Stíll',ok:'à lagi',cancel:'Hætta við',close:'Close',preview:'Preview',generalTab:'Almennt',advancedTab:'Tæknilegt',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Setja inn merki',title:'Velja tákn',options:'Special Character Options'},link:{toolbar:'Stofna/breyta stiklu',other:'<annar>',menu:'Breyta stiklu',title:'Stikla',info:'Almennt',target:'Mark',upload:'Senda upp',advanced:'Tæknilegt',type:'Stikluflokkur',toUrl:'URL',toAnchor:'Bókamerki á þessari síðu',toEmail:'Netfang',targetFrame:'<rammi>',targetPopup:'<sprettigluggi>',targetFrameName:'Nafn markglugga',targetPopupName:'Nafn sprettiglugga',popupFeatures:'Eigindi sprettiglugga',popupResizable:'Resizable',popupStatusBar:'Stöðustika',popupLocationBar:'Fanglína',popupToolbar:'Verkfærastika',popupMenuBar:'Vallína',popupFullScreen:'Heilskjár (IE)',popupScrollBars:'Skrunstikur',popupDependent:'Háð venslum (Netscape)',popupWidth:'Breidd',popupLeft:'Fjarlægð frá vinstri',popupHeight:'Hæð',popupTop:'Fjarlægð frá efri brún',id:'Id',langDir:'Lesstefna',langDirLTR:'Frá vinstri til hægri (LTR)',langDirRTL:'Frá hægri til vinstri (RTL)',acccessKey:'Skammvalshnappur',name:'Nafn',langCode:'Lesstefna',tabIndex:'Raðnúmer innsláttarreits',advisoryTitle:'Titill',advisoryContentType:'Tegund innihalds',cssClasses:'Stílsniðsflokkur',charset:'Táknróf',styles:'Stíll',selectAnchor:'Veldu akkeri',anchorName:'Eftir akkerisnafni',anchorId:'Eftir auðkenni einingar',emailAddress:'Netfang',emailSubject:'Efni',emailBody:'Meginmál',noAnchors:'<Engin bókamerki á skrá>',noUrl:'Sláðu inn veffang stiklunnar!',noEmail:'Sláðu inn netfang!'},anchor:{toolbar:'Stofna/breyta kaflamerki',menu:'Eigindi kaflamerkis',title:'Eigindi kaflamerkis',name:'Nafn bókamerkis',errorName:'Sláðu inn nafn bókamerkis!'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Finna og skipta',find:'Leita',replace:'Skipta út',findWhat:'Leita að:',replaceWith:'Skipta út fyrir:',notFoundMsg:'Leitartexti fannst ekki!',matchCase:'Gera greinarmun á¡ há¡- og lágstöfum',matchWord:'Aðeins heil orð',matchCyclic:'Match cyclic',replaceAll:'Skipta út allsstaðar',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tafla',title:'Eigindi töflu',menu:'Eigindi töflu',deleteTable:'Fella töflu',rows:'Raðir',columns:'Dálkar',border:'Breidd ramma',align:'Jöfnun',alignLeft:'Vinstrijafnað',alignCenter:'Miðjað',alignRight:'Hægrijafnað',width:'Breidd',widthPx:'myndeindir',widthPc:'prósent',widthUnit:'width unit',height:'Hæð',cellSpace:'Bil milli reita',cellPad:'Reitaspássía',caption:'Titill',summary:'Ãfram',headers:'Fyrirsagnir',headersNone:'Engar',headersColumn:'Fyrsti dálkur',headersRow:'Fyrsta röð',headersBoth:'Hvort tveggja',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Reitur',insertBefore:'Skjóta inn reiti fyrir aftan',insertAfter:'Skjóta inn reiti fyrir framan',deleteCell:'Fella reit',merge:'Sameina reiti',mergeRight:'Sameina til hægri',mergeDown:'Sameina niður á við',splitHorizontal:'Kljúfa reit lárétt',splitVertical:'Kljúfa reit lóðrétt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Röð',insertBefore:'Skjóta inn röð fyrir ofan',insertAfter:'Skjóta inn röð fyrir neðan',deleteRow:'Eyða röð'},column:{menu:'Dálkur',insertBefore:'Skjóta inn dálki vinstra megin',insertAfter:'Skjóta inn dálki hægra megin',deleteColumn:'Fella dálk'}},button:{title:'Eigindi hnapps',text:'Texti',type:'Gerð',typeBtn:'Hnappur',typeSbm:'Staðfesta',typeRst:'Hreinsa'},checkboxAndRadio:{checkboxTitle:'Eigindi markreits',radioTitle:'Eigindi valhnapps',value:'Gildi',selected:'Valið'},form:{title:'Eigindi innsláttarforms',menu:'Eigindi innsláttarforms',action:'Aðgerð',method:'Aðferð',encoding:'Encoding'},select:{title:'Eigindi lista',selectInfo:'Upplýsingar',opAvail:'Kostir',value:'Gildi',size:'Stærð',lines:'línur',chkMulti:'Leyfa fleiri kosti',opText:'Texti',opValue:'Gildi',btnAdd:'Bæta við',btnModify:'Breyta',btnUp:'Upp',btnDown:'Niður',btnSetValue:'Merkja sem valið',btnDelete:'Eyða'},textarea:{title:'Eigindi textasvæðis',cols:'Dálkar',rows:'Línur'},textfield:{title:'Eigindi textareits',name:'Nafn',value:'Gildi',charWidth:'Breidd (leturtákn)',maxChars:'Hámarksfjöldi leturtákna',type:'Gerð',typeText:'Texti',typePass:'Lykilorð'},hidden:{title:'Eigindi falins svæðis',name:'Nafn',value:'Gildi'},image:{title:'Eigindi myndar',titleButton:'Eigindi myndahnapps',menu:'Eigindi myndar',infoTab:'Almennt',btnUpload:'Hlaða upp',upload:'Hlaða upp',alt:'Baklægur texti',width:'Breidd',height:'Hæð',lockRatio:'Festa stærðarhlutfall',unlockRatio:'Unlock Ratio',resetSize:'Reikna stærð',border:'Rammi',hSpace:'Vinstri bil',vSpace:'Hægri bil',align:'Jöfnun',alignLeft:'Vinstri',alignRight:'Hægri',alertUrl:'Sláðu inn slóðina að myndinni',linkTab:'Stikla',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Eigindi Flash',propertiesTab:'Properties',title:'Eigindi Flash',chkPlay:'Sjálfvirk spilun',chkLoop:'Endurtekning',chkMenu:'Sýna Flash-valmynd',chkFull:'Allow Fullscreen',scale:'Skali',scaleAll:'Sýna allt',scaleNoBorder:'Ãn ramma',scaleFit:'Fella skala að stærð',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Jöfnun',alignLeft:'Vinstri',alignAbsBottom:'Abs neðst',alignAbsMiddle:'Abs miðjuð',alignBaseline:'Grunnlína',alignBottom:'Neðst',alignMiddle:'Miðjuð',alignRight:'Hægri',alignTextTop:'Efri brún texta',alignTop:'Efst',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrunnslitur',width:'Breidd',height:'Hæð',hSpace:'Vinstri bil',vSpace:'Hægri bil',validateSrc:'Sláðu inn veffang stiklunnar!',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Villuleit',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ekki í orðabókinni',changeTo:'Tillaga',btnIgnore:'Hunsa',btnIgnoreAll:'Hunsa allt',btnReplace:'Skipta',btnReplaceAll:'Skipta öllu',btnUndo:'Til baka',noSuggestions:'- engar tillögur -',progress:'Villuleit í gangi...',noMispell:'Villuleit lokið: Engin villa fannst',noChanges:'Villuleit lokið: Engu orði breytt',oneChange:'Villuleit lokið: Einu orði breytt',manyChanges:'Villuleit lokið: %1 orðum breytt',ieSpellDownload:'Villuleit ekki sett upp.<br>Viltu setja hana upp?'},smiley:{toolbar:'Svipur',title:'Velja svip',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Númeraður listi',bulletedlist:'Punktalisti',indent:'Minnka inndrátt',outdent:'Auka inndrátt',justify:{left:'Vinstrijöfnun',center:'Miðja texta',right:'Hægrijöfnun',block:'Jafna báðum megin'},blockquote:'Inndráttur',clipboard:{title:'Líma',cutError:'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).',copyError:'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).',pasteMsg:'Límdu í svæðið hér að neðan og (<STRONG>Ctrl/Cmd+V</STRONG>) og smelltu á <STRONG>OK</STRONG>.',securityMsg:'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Líma úr Word',title:'Líma úr Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Líma sem ósniðinn texta',title:'Líma sem ósniðinn texta'},templates:{button:'Sniðmát',title:'Innihaldssniðmát',options:'Template Options',insertOption:'Skipta út raunverulegu innihaldi',selectPromptMsg:'Veldu sniðmát til að opna í ritlinum.<br>(Núverandi innihald víkur fyrir því!):',emptyListMsg:'(Ekkert sniðmát er skilgreint!)'},showBlocks:'Sýna blokkir',stylesCombo:{label:'Stílflokkur',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Stílsnið',panelTitle:'Stílsnið',tag_p:'Venjulegt letur',tag_pre:'Forsniðið',tag_address:'Vistfang',tag_h1:'Fyrirsögn 1',tag_h2:'Fyrirsögn 2',tag_h3:'Fyrirsögn 3',tag_h4:'Fyrirsögn 4',tag_h5:'Fyrirsögn 5',tag_h6:'Fyrirsögn 6',tag_div:'Venjulegt (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Leturgerð ',voiceLabel:'Font',panelTitle:'Leturgerð '},fontSize:{label:'Leturstærð ',voiceLabel:'Font Size',panelTitle:'Leturstærð '},colorButton:{textColorTitle:'Litur texta',bgColorTitle:'Bakgrunnslitur',panelTitle:'Colors',auto:'Sjálfval',more:'Fleiri liti...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/it.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/it.js
new file mode 100644
index 000000000..9e859ea1c
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/it.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.it={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Codice Sorgente',newPage:'Nuova pagina vuota',save:'Salva',preview:'Anteprima',cut:'Taglia',copy:'Copia',paste:'Incolla',print:'Stampa',underline:'Sottolineato',bold:'Grassetto',italic:'Corsivo',selectAll:'Seleziona tutto',removeFormat:'Elimina formattazione',strike:'Barrato',subscript:'Pedice',superscript:'Apice',horizontalrule:'Inserisci riga orizzontale',pagebreak:'Inserisci interruzione di pagina',unlink:'Elimina collegamento',undo:'Annulla',redo:'Ripristina',common:{browseServer:'Cerca sul server',url:'URL',protocol:'Protocollo',upload:'Carica',uploadSubmit:'Invia al server',image:'Immagine',flash:'Oggetto Flash',form:'Modulo',checkbox:'Checkbox',radio:'Radio Button',textField:'Campo di testo',textarea:'Area di testo',hiddenField:'Campo nascosto',button:'Bottone',select:'Menu di selezione',imageButton:'Bottone immagine',notSet:'<non impostato>',id:'Id',name:'Nome',langDir:'Direzione scrittura',langDirLtr:'Da Sinistra a Destra (LTR)',langDirRtl:'Da Destra a Sinistra (RTL)',langCode:'Codice Lingua',longDescr:'URL descrizione estesa',cssClass:'Nome classe CSS',advisoryTitle:'Titolo',cssStyle:'Stile',ok:'OK',cancel:'Annulla',close:'Close',preview:'Preview',generalTab:'Generale',advancedTab:'Avanzate',validateNumberFailed:'Il valore inserito non è un numero.',confirmNewPage:'Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?',confirmCancel:'Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, non disponibile</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Inserisci carattere speciale',title:'Seleziona carattere speciale',options:'Special Character Options'},link:{toolbar:'Inserisci/Modifica collegamento',other:'<altro>',menu:'Modifica collegamento',title:'Collegamento',info:'Informazioni collegamento',target:'Destinazione',upload:'Carica',advanced:'Avanzate',type:'Tipo di Collegamento',toUrl:'URL',toAnchor:'Ancora nella pagina',toEmail:'E-Mail',targetFrame:'<riquadro>',targetPopup:'<finestra popup>',targetFrameName:'Nome del riquadro di destinazione',targetPopupName:'Nome finestra popup',popupFeatures:'Caratteristiche finestra popup',popupResizable:'Ridimensionabile',popupStatusBar:'Barra di stato',popupLocationBar:'Barra degli indirizzi',popupToolbar:'Barra degli strumenti',popupMenuBar:'Barra del menu',popupFullScreen:'A tutto schermo (IE)',popupScrollBars:'Barre di scorrimento',popupDependent:'Dipendente (Netscape)',popupWidth:'Larghezza',popupLeft:'Posizione da sinistra',popupHeight:'Altezza',popupTop:"Posizione dall'alto",id:'Id',langDir:'Direzione scrittura',langDirLTR:'Da Sinistra a Destra (LTR)',langDirRTL:'Da Destra a Sinistra (RTL)',acccessKey:'Scorciatoia<br />da tastiera',name:'Nome',langCode:'Direzione scrittura',tabIndex:'Ordine di tabulazione',advisoryTitle:'Titolo',advisoryContentType:'Tipo della risorsa collegata',cssClasses:'Nome classe CSS',charset:'Set di caretteri della risorsa collegata',styles:'Stile',selectAnchor:'Scegli Ancora',anchorName:'Per Nome',anchorId:'Per id elemento',emailAddress:'Indirizzo E-Mail',emailSubject:'Oggetto del messaggio',emailBody:'Corpo del messaggio',noAnchors:'(Nessuna ancora disponibile nel documento)',noUrl:"Devi inserire l'URL del collegamento",noEmail:"Devi inserire un'indirizzo e-mail"},anchor:{toolbar:'Inserisci/Modifica Ancora',menu:'Proprietà ancora',title:'Proprietà ancora',name:'Nome ancora',errorName:"Inserici il nome dell'ancora"},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Cerca e Sostituisci',find:'Trova',replace:'Sostituisci',findWhat:'Trova:',replaceWith:'Sostituisci con:',notFoundMsg:"L'elemento cercato non è stato trovato.",matchCase:'Maiuscole/minuscole',matchWord:'Solo parole intere',matchCyclic:'Ricerca ciclica',replaceAll:'Sostituisci tutto',replaceSuccessMsg:'%1 occorrenza(e) sostituite.'},table:{toolbar:'Tabella',title:'Proprietà tabella',menu:'Proprietà tabella',deleteTable:'Cancella Tabella',rows:'Righe',columns:'Colonne',border:'Dimensione bordo',align:'Allineamento',alignLeft:'Sinistra',alignCenter:'Centrato',alignRight:'Destra',width:'Larghezza',widthPx:'pixel',widthPc:'percento',widthUnit:'width unit',height:'Altezza',cellSpace:'Spaziatura celle',cellPad:'Padding celle',caption:'Intestazione',summary:'Indice',headers:'Intestazione',headersNone:'Nessuna',headersColumn:'Prima Colonna',headersRow:'Prima Riga',headersBoth:'Entrambe',invalidRows:"Il numero di righe dev'essere un numero maggiore di 0.",invalidCols:"Il numero di colonne dev'essere un numero maggiore di 0.",invalidBorder:"La dimensione del bordo dev'essere un numero.",invalidWidth:"La larghezza della tabella dev'essere un numero.",invalidHeight:"L'altezza della tabella dev'essere un numero.",invalidCellSpacing:"La spaziatura tra le celle dev'essere un numero.",invalidCellPadding:"Il pagging delle celle dev'essere un numero",cell:{menu:'Cella',insertBefore:'Inserisci Cella Prima',insertAfter:'Inserisci Cella Dopo',deleteCell:'Elimina celle',merge:'Unisce celle',mergeRight:'Unisci a Destra',mergeDown:'Unisci in Basso',splitHorizontal:'Dividi Cella Orizzontalmente',splitVertical:'Dividi Cella Verticalmente',title:'Proprietà della cella',cellType:'Tipo di cella',rowSpan:'Su più righe',colSpan:'Su più colonne',wordWrap:'Ritorno a capo',hAlign:'Allineamento orizzontale',vAlign:'Allineamento verticale',alignTop:'In Alto',alignMiddle:'Al Centro',alignBottom:'In Basso',alignBaseline:'Linea Base',bgColor:'Colore di Sfondo',borderColor:'Colore del Bordo',data:'Dati',header:'Intestazione',yes:'Si',no:'No',invalidWidth:"La larghezza della cella dev'essere un numero.",invalidHeight:"L'altezza della cella dev'essere un numero.",invalidRowSpan:"Il numero di righe dev'essere un numero intero.",invalidColSpan:"Il numero di colonne dev'essere un numero intero.",chooseColor:'Choose'},row:{menu:'Riga',insertBefore:'Inserisci Riga Prima',insertAfter:'Inserisci Riga Dopo',deleteRow:'Elimina righe'},column:{menu:'Colonna',insertBefore:'Inserisci Colonna Prima',insertAfter:'Inserisci Colonna Dopo',deleteColumn:'Elimina colonne'}},button:{title:'Proprietà bottone',text:'Testo (Value)',type:'Tipo',typeBtn:'Bottone',typeSbm:'Invio',typeRst:'Annulla'},checkboxAndRadio:{checkboxTitle:'Proprietà checkbox',radioTitle:'Proprietà radio button',value:'Valore',selected:'Selezionato'},form:{title:'Proprietà modulo',menu:'Proprietà modulo',action:'Azione',method:'Metodo',encoding:'Codifica'},select:{title:'Proprietà menu di selezione',selectInfo:'Info',opAvail:'Opzioni disponibili',value:'Valore',size:'Dimensione',lines:'righe',chkMulti:'Permetti selezione multipla',opText:'Testo',opValue:'Valore',btnAdd:'Aggiungi',btnModify:'Modifica',btnUp:'Su',btnDown:'Gi',btnSetValue:'Imposta come predefinito',btnDelete:'Rimuovi'},textarea:{title:'Proprietà area di testo',cols:'Colonne',rows:'Righe'},textfield:{title:'Proprietà campo di testo',name:'Nome',value:'Valore',charWidth:'Larghezza',maxChars:'Numero massimo di caratteri',type:'Tipo',typeText:'Testo',typePass:'Password'},hidden:{title:'Proprietà campo nascosto',name:'Nome',value:'Valore'},image:{title:'Proprietà immagine',titleButton:'Proprietà bottone immagine',menu:'Proprietà immagine',infoTab:'Informazioni immagine',btnUpload:'Invia al server',upload:'Carica',alt:'Testo alternativo',width:'Larghezza',height:'Altezza',lockRatio:'Blocca rapporto',unlockRatio:'Unlock Ratio',resetSize:'Reimposta dimensione',border:'Bordo',hSpace:'HSpace',vSpace:'VSpace',align:'Allineamento',alignLeft:'Sinistra',alignRight:'Destra',alertUrl:"Devi inserire l'URL per l'immagine",linkTab:'Collegamento',button2Img:"Vuoi trasformare il bottone immagine selezionato in un'immagine semplice?",img2Button:"Vuoi trasferomare l'immagine selezionata in un bottone immagine?",urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Proprietà Oggetto Flash',propertiesTab:'Proprietà',title:'Proprietà Oggetto Flash',chkPlay:'Avvio Automatico',chkLoop:'Riavvio automatico',chkMenu:'Abilita Menu di Flash',chkFull:'Permetti la modalità tutto schermo',scale:'Ridimensiona',scaleAll:'Mostra Tutto',scaleNoBorder:'Senza Bordo',scaleFit:'Dimensione Esatta',access:'Accesso Script',accessAlways:'Sempre',accessSameDomain:'Solo stesso dominio',accessNever:'Mai',align:'Allineamento',alignLeft:'Sinistra',alignAbsBottom:'In basso assoluto',alignAbsMiddle:'Centrato assoluto',alignBaseline:'Linea base',alignBottom:'In Basso',alignMiddle:'Centrato',alignRight:'Destra',alignTextTop:'In alto al testo',alignTop:'In Alto',quality:'Qualità',qualityBest:'Massima',qualityHigh:'Alta',qualityAutoHigh:'Alta Automatica',qualityMedium:'Intermedia',qualityAutoLow:'Bassa Automatica',qualityLow:'Bassa',windowModeWindow:'Finestra',windowModeOpaque:'Opaca',windowModeTransparent:'Trasparente',windowMode:'Modalità finestra',flashvars:'Variabili per Flash',bgcolor:'Colore sfondo',width:'Larghezza',height:'Altezza',hSpace:'HSpace',vSpace:'VSpace',validateSrc:"Devi inserire l'URL del collegamento",validateWidth:"La Larghezza dev'essere un numero",validateHeight:"L'altezza dev'essere un numero",validateHSpace:"L'HSpace dev'essere un numero.",validateVSpace:"Il VSpace dev'essere un numero."},spellCheck:{toolbar:'Correttore ortografico',title:'Controllo ortografico',notAvailable:'Il servizio non è momentaneamente disponibile.',errorLoading:"Errore nel caricamento dell'host col servizio applicativo: %s.",notInDic:'Non nel dizionario',changeTo:'Cambia in',btnIgnore:'Ignora',btnIgnoreAll:'Ignora tutto',btnReplace:'Cambia',btnReplaceAll:'Cambia tutto',btnUndo:'Annulla',noSuggestions:'- Nessun suggerimento -',progress:'Controllo ortografico in corso',noMispell:'Controllo ortografico completato: nessun errore trovato',noChanges:'Controllo ortografico completato: nessuna parola cambiata',oneChange:'Controllo ortografico completato: 1 parola cambiata',manyChanges:'Controllo ortografico completato: %1 parole cambiate',ieSpellDownload:'Contollo ortografico non installato. Lo vuoi scaricare ora?'},smiley:{toolbar:'Emoticon',title:'Inserisci emoticon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 elemento'},numberedlist:'Elenco numerato',bulletedlist:'Elenco puntato',indent:'Aumenta rientro',outdent:'Riduci rientro',justify:{left:'Allinea a sinistra',center:'Centra',right:'Allinea a destra',block:'Giustifica'},blockquote:'Citazione',clipboard:{title:'Incolla',cutError:'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).',copyError:'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).',pasteMsg:"Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl/Cmd+V</STRONG>) e premi <STRONG>OK</STRONG>.",securityMsg:"A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.",pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?',toolbar:'Incolla da Word',title:'Incolla da Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Incolla come testo semplice',title:'Incolla come testo semplice'},templates:{button:'Modelli',title:'Contenuto dei modelli',options:'Template Options',insertOption:'Cancella il contenuto corrente',selectPromptMsg:"Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",emptyListMsg:'(Nessun modello definito)'},showBlocks:'Visualizza Blocchi',stylesCombo:{label:'Stile',panelTitle:'Formatting Styles',panelTitle1:'Stili per blocchi',panelTitle2:'Stili in linea',panelTitle3:'Stili per oggetti'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normale',tag_pre:'Formattato',tag_address:'Indirizzo',tag_h1:'Titolo 1',tag_h2:'Titolo 2',tag_h3:'Titolo 3',tag_h4:'Titolo 4',tag_h5:'Titolo 5',tag_h6:'Titolo 6',tag_div:'Paragrafo (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Dimensione',voiceLabel:'Dimensione Font',panelTitle:'Dimensione'},colorButton:{textColorTitle:'Colore testo',bgColorTitle:'Colore sfondo',panelTitle:'Colors',auto:'Automatico',more:'Altri colori...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Controllo Ortografico Mentre Scrivi',opera_title:'Not supported by Opera',enable:'Abilita COMS',disable:'Disabilita COMS',about:'About COMS',toggle:'Inverti abilitazione SCOMS',options:'Opzioni',langs:'Lingue',moreSuggestions:'Altri suggerimenti',ignore:'Ignora',ignoreAll:'Ignora tutti',addWord:'Aggiungi Parola',emptyDic:'Il nome del dizionario non può essere vuoto.',optionsTab:'Opzioni',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Lingue',dictionariesTab:'Dizionari',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'Per le informazioni sulla licenza si prega di visitare il nostro sito:',copy:'Copyright &copy; $1. Tutti i diritti riservati.'},maximize:'Massimizza',minimize:'Minimize',fakeobjects:{anchor:'Ancora',flash:'Animazione Flash',div:'Interruzione di Pagina',unknown:'Oggetto sconosciuto'},resize:'Trascina per ridimensionare',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ja.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ja.js
new file mode 100644
index 000000000..6ca5538bb
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ja.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ja={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'ソース',newPage:'æ–°ã—ã„ページ',save:'ä¿å­˜',preview:'プレビュー',cut:'切りå–り',copy:'コピー',paste:'貼り付ã‘',print:'å°åˆ·',underline:'下線',bold:'太字',italic:'斜体',selectAll:'ã™ã¹ã¦é¸æŠž',removeFormat:'フォーマット削除',strike:'æ‰“ã¡æ¶ˆã—ç·š',subscript:'æ·»ãˆå­—',superscript:'ä¸Šä»˜ãæ–‡å­—',horizontalrule:'横罫線',pagebreak:'改ページ挿入',unlink:'リンク削除',undo:'å…ƒã«æˆ»ã™',redo:'やり直ã—',common:{browseServer:'サーãƒãƒ¼ãƒ–ラウザー',url:'URL',protocol:'プロトコル',upload:'アップロード',uploadSubmit:'サーãƒãƒ¼ã«é€ä¿¡',image:'イメージ',flash:'Flash',form:'フォーム',checkbox:'ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹',radio:'ラジオボタン',textField:'1行テキスト',textarea:'テキストエリア',hiddenField:'ä¸å¯è¦–フィールド',button:'ボタン',select:'é¸æŠžãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰',imageButton:'ç”»åƒãƒœã‚¿ãƒ³',notSet:'<ãªã—>',id:'Id',name:'Name属性',langDir:'æ–‡å­—è¡¨è¨˜ã®æ–¹å‘',langDirLtr:'å·¦ã‹ã‚‰å³ (LTR)',langDirRtl:'å³ã‹ã‚‰å·¦ (RTL)',langCode:'言語コード',longDescr:'longdesc属性(長文説明)',cssClass:'スタイルシートクラス',advisoryTitle:'Title属性',cssStyle:'スタイルシート',ok:'OK',cancel:'キャンセル',close:'Close',preview:'Preview',generalTab:'全般',advancedTab:'高度ãªè¨­å®š',validateNumberFailed:'å€¤ãŒæ•°ã§ã¯ã‚りã¾ã›ã‚“',confirmNewPage:'変更内容をä¿å­˜ã›ãšã€ æ–°ã—ã„ページを開ã„ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ',confirmCancel:'オプション設定を変更ã—ã¾ã—ãŸã€‚ダイアログを閉ã˜ã¦ã‚‚よã‚ã—ã„ã§ã—ょã†ã‹ï¼Ÿ',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, 利用ä¸å¯èƒ½</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'特殊文字挿入',title:'ç‰¹æ®Šæ–‡å­—é¸æŠž',options:'Special Character Options'},link:{toolbar:'リンク挿入/編集',other:'<ãã®ä»–ã®>',menu:'リンク編集',title:'ãƒã‚¤ãƒ‘ーリンク',info:'ãƒã‚¤ãƒ‘ーリンク 情報',target:'ターゲット',upload:'アップロード',advanced:'高度ãªè¨­å®š',type:'リンクタイプ',toUrl:'URL',toAnchor:'ã“ã®ãƒšãƒ¼ã‚¸ã®ã‚¢ãƒ³ã‚«ãƒ¼',toEmail:'E-Mail',targetFrame:'<フレーム>',targetPopup:'<ãƒãƒƒãƒ—アップウィンドウ>',targetFrameName:'目的ã®ãƒ•レームå',targetPopupName:'ãƒãƒƒãƒ—アップウィンドウå',popupFeatures:'ãƒãƒƒãƒ—アップウィンドウ特徴',popupResizable:'サイズå¯å¤‰',popupStatusBar:'ステータスãƒãƒ¼',popupLocationBar:'ロケーションãƒãƒ¼',popupToolbar:'ツールãƒãƒ¼',popupMenuBar:'メニューãƒãƒ¼',popupFullScreen:'全画é¢ãƒ¢ãƒ¼ãƒ‰(IE)',popupScrollBars:'スクロールãƒãƒ¼',popupDependent:'é–‹ã„ãŸã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã«é€£å‹•ã—ã¦é–‰ã˜ã‚‹ (Netscape)',popupWidth:'å¹…',popupLeft:'左端ã‹ã‚‰ã®åº§æ¨™ã§æŒ‡å®š',popupHeight:'高ã•',popupTop:'上端ã‹ã‚‰ã®åº§æ¨™ã§æŒ‡å®š',id:'Id',langDir:'æ–‡å­—è¡¨è¨˜ã®æ–¹å‘',langDirLTR:'å·¦ã‹ã‚‰å³ (LTR)',langDirRTL:'å³ã‹ã‚‰å·¦ (RTL)',acccessKey:'アクセスキー',name:'Name属性',langCode:'æ–‡å­—è¡¨è¨˜ã®æ–¹å‘',tabIndex:'タブインデックス',advisoryTitle:'Title属性',advisoryContentType:'Content Type属性',cssClasses:'スタイルシートクラス',charset:'リンクcharset属性',styles:'スタイルシート',selectAnchor:'ã‚¢ãƒ³ã‚«ãƒ¼ã‚’é¸æŠž',anchorName:'アンカーå',anchorId:'エレメントID',emailAddress:'E-Mail アドレス',emailSubject:'ä»¶å',emailBody:'本文',noAnchors:'(ドキュメントã«ãŠã„ã¦åˆ©ç”¨å¯èƒ½ãªã‚¢ãƒ³ã‚«ãƒ¼ã¯ã‚りã¾ã›ã‚“。)',noUrl:'リンクURLを入力ã—ã¦ãã ã•ã„。',noEmail:'メールアドレスを入力ã—ã¦ãã ã•ã„。'},anchor:{toolbar:'アンカー挿入/編集',menu:'アンカー プロパティ',title:'アンカー プロパティ',name:'アンカーå',errorName:'アンカーåã‚’å¿…ãšå…¥åŠ›ã—ã¦ãã ã•ã„。'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'検索ã—ã¦ç½®æ›',find:'検索',replace:'ç½®ãæ›ãˆ',findWhat:'検索ã™ã‚‹æ–‡å­—列:',replaceWith:'ç½®æ›ãˆã™ã‚‹æ–‡å­—列:',notFoundMsg:'指定ã•ã‚ŒãŸæ–‡å­—列ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚',matchCase:'大文字ã¨å°æ–‡å­—を区別ã™ã‚‹',matchWord:'å˜èªžå˜ä½ã§æŽ¢ã™',matchCyclic:'一周ã™ã‚‹',replaceAll:'ã™ã¹ã¦ç½®æ›ãˆ',replaceSuccessMsg:'%1 個置æ›ã—ã¾ã—ãŸã€‚'},table:{toolbar:'テーブル',title:'テーブル プロパティ',menu:'テーブル プロパティ',deleteTable:'テーブル削除',rows:'行',columns:'列',border:'ボーダーサイズ',align:'ãƒ†ãƒ¼ãƒ–ãƒ«ã®æ•´åˆ—',alignLeft:'å·¦',alignCenter:'中央',alignRight:'å³',width:'å¹…',widthPx:'ピクセル',widthPc:'パーセント',widthUnit:'width unit',height:'高ã•',cellSpace:'セル内余白',cellPad:'セル内間隔',caption:'キャプション',summary:'ãƒ†ãƒ¼ãƒ–ãƒ«ã®æ¦‚è¦',headers:'テーブルヘッダ(th)',headersNone:'ãªã—',headersColumn:'åˆã‚ã®åˆ—ã®ã¿',headersRow:'åˆã‚ã®è¡Œã®ã¿',headersBoth:'両方',invalidRows:'行ã¯0より大ããªæ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidCols:'列ã¯0より大ããªæ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidBorder:'ãƒœãƒ¼ãƒ€ãƒ¼ã‚µã‚¤ã‚ºã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidWidth:'å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidHeight:'高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidCellSpacing:'ã‚»ãƒ«å†…ä½™ç™½ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidCellPadding:'ã‚»ãƒ«å†…é–“éš”ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',cell:{menu:'セル',insertBefore:'セルã®å‰ã«æŒ¿å…¥',insertAfter:'セルã®å¾Œã«æŒ¿å…¥',deleteCell:'セル削除',merge:'セルçµåˆ',mergeRight:'å³ã«çµåˆ',mergeDown:'下ã«çµåˆ',splitHorizontal:'セルを水平方å‘分割',splitVertical:'セルを垂直方å‘ã«åˆ†å‰²',title:'セルプロパティ',cellType:'セルタイプ',rowSpan:'縦幅(行数)',colSpan:'横幅(列数)',wordWrap:'折り返ã—',hAlign:'ã‚»ãƒ«æ¨ªã®æ•´åˆ—',vAlign:'ã‚»ãƒ«ç¸¦ã®æ•´åˆ—',alignTop:'上',alignMiddle:'中央',alignBottom:'下',alignBaseline:'ベースライン',bgColor:'背景色',borderColor:'ボーダーカラー',data:'テーブルデータ(td)',header:'テーブルヘッダ(th)',yes:'Yes',no:'No',invalidWidth:'ã‚»ãƒ«å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidHeight:'セル高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidRowSpan:'縦幅(行数)ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',invalidColSpan:'横幅(列数)ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',chooseColor:'色ã®é¸æŠž'},row:{menu:'行',insertBefore:'行ã®å‰ã«æŒ¿å…¥',insertAfter:'行ã®å¾Œã«æŒ¿å…¥',deleteRow:'行削除'},column:{menu:'カラム',insertBefore:'カラムã®å‰ã«æŒ¿å…¥',insertAfter:'カラムã®å¾Œã«æŒ¿å…¥',deleteColumn:'列削除'}},button:{title:'ボタン プロパティ',text:'テキスト (値)',type:'タイプ',typeBtn:'ボタン',typeSbm:'é€ä¿¡',typeRst:'リセット'},checkboxAndRadio:{checkboxTitle:'ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ プロパティ',radioTitle:'ラジオボタン プロパティ',value:'値',selected:'é¸æŠžæ¸ˆã¿'},form:{title:'フォーム プロパティ',menu:'フォーム プロパティ',action:'アクション',method:'メソッド',encoding:'エンコーディング'},select:{title:'é¸æŠžãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ プロパティ',selectInfo:'情報',opAvail:'利用å¯èƒ½ãªã‚ªãƒ—ション',value:'é¸æŠžé …ç›®å€¤',size:'サイズ',lines:'行',chkMulti:'è¤‡æ•°é …ç›®é¸æŠžã‚’è¨±å¯',opText:'é¸æŠžé …ç›®å',opValue:'値',btnAdd:'追加',btnModify:'編集',btnUp:'上ã¸',btnDown:'下ã¸',btnSetValue:'é¸æŠžã—ãŸå€¤ã‚’設定',btnDelete:'削除'},textarea:{title:'テキストエリア プロパティ',cols:'列',rows:'行'},textfield:{title:'1行テキスト プロパティ',name:'åå‰',value:'値',charWidth:'サイズ',maxChars:'最大長',type:'タイプ',typeText:'テキスト',typePass:'パスワード入力'},hidden:{title:'ä¸å¯è¦–フィールド プロパティ',name:'åå‰',value:'値'},image:{title:'イメージ プロパティ',titleButton:'ç”»åƒãƒœã‚¿ãƒ³ プロパティ',menu:'イメージ プロパティ',infoTab:'イメージ 情報',btnUpload:'サーãƒãƒ¼ã«é€ä¿¡',upload:'アップロード',alt:'代替テキスト',width:'å¹…',height:'高ã•',lockRatio:'ロック比率',unlockRatio:'Unlock Ratio',resetSize:'サイズリセット',border:'ボーダー',hSpace:'横間隔',vSpace:'縦間隔',align:'行æƒãˆ',alignLeft:'å·¦',alignRight:'å³',alertUrl:'イメージã®URLを入力ã—ã¦ãã ã•ã„。',linkTab:'リンク',button2Img:'é¸æŠžã—ãŸãƒœã‚¿ãƒ³ã‚’ç”»åƒã«ç½®ãæ›ãˆã¾ã™ã‹ï¼Ÿ',img2Button:'é¸æŠžã—ãŸç”»åƒã‚’ボタンã«ç½®ãæ›ãˆã¾ã™ã‹ï¼Ÿ',urlMissing:'イメージã®URLを入力ã—ã¦ãã ã•ã„。',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash プロパティ',propertiesTab:'プロパティ',title:'Flash プロパティ',chkPlay:'å†ç”Ÿ',chkLoop:'ループå†ç”Ÿ',chkMenu:'Flashメニューå¯èƒ½',chkFull:'フルスクリーン許å¯',scale:'拡大縮å°è¨­å®š',scaleAll:'ã™ã¹ã¦è¡¨ç¤º',scaleNoBorder:'外ãŒè¦‹ãˆãªã„æ§˜ã«æ‹¡å¤§',scaleFit:'上下左å³ã«ãƒ•ィット',access:'スプリクトアクセス(AllowScriptAccess)',accessAlways:'ã™ã¹ã¦ã®å ´åˆã«é€šä¿¡å¯èƒ½(Always)',accessSameDomain:'åŒä¸€ãƒ‰ãƒ¡ã‚¤ãƒ³ã®ã¿ã«é€šä¿¡å¯èƒ½(Same domain)',accessNever:'ã™ã¹ã¦ã®å ´åˆã«é€šä¿¡ä¸å¯èƒ½(Never)',align:'行æƒãˆ',alignLeft:'å·¦',alignAbsBottom:'下部(絶対的)',alignAbsMiddle:'中央(絶対的)',alignBaseline:'ベースライン',alignBottom:'下',alignMiddle:'中央',alignRight:'å³',alignTextTop:'テキスト上部',alignTop:'上',quality:'画質',qualityBest:'å“質優先',qualityHigh:'高',qualityAutoHigh:'自動/高',qualityMedium:'中',qualityAutoLow:'自動/低',qualityLow:'低',windowModeWindow:'標準',windowModeOpaque:'背景をä¸é€æ˜Žè¨­å®š',windowModeTransparent:'背景をé€éŽè¨­å®š',windowMode:'ウィンドウモード',flashvars:'ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã«æ¸¡ã™å¤‰æ•°(FlashVars)',bgcolor:'背景色',width:'å¹…',height:'高ã•',hSpace:'横間隔',vSpace:'縦間隔',validateSrc:'リンクURLを入力ã—ã¦ãã ã•ã„。',validateWidth:'å¹…ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',validateHeight:'高ã•ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',validateHSpace:'æ¨ªé–“éš”ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。',validateVSpace:'ç¸¦é–“éš”ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„。'},spellCheck:{toolbar:'スペルãƒã‚§ãƒƒã‚¯',title:'スペルãƒã‚§ãƒƒã‚¯',notAvailable:'申ã—訳ã‚りã¾ã›ã‚“ã€ç¾åœ¨ã‚µãƒ¼ãƒ“スを利用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“',errorLoading:'アプリケーションサービスホスト読込ã¿ã‚¨ãƒ©ãƒ¼: %s.',notInDic:'辞書ã«ã‚りã¾ã›ã‚“',changeTo:'変更',btnIgnore:'無視',btnIgnoreAll:'ã™ã¹ã¦ç„¡è¦–',btnReplace:'ç½®æ›',btnReplaceAll:'ã™ã¹ã¦ç½®æ›',btnUndo:'やり直ã—',noSuggestions:'- 該当ãªã— -',progress:'スペルãƒã‚§ãƒƒã‚¯å‡¦ç†ä¸­...',noMispell:'スペルãƒã‚§ãƒƒã‚¯å®Œäº†: スペルã®èª¤ã‚Šã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ',noChanges:'スペルãƒã‚§ãƒƒã‚¯å®Œäº†: 語å¥ã¯å¤‰æ›´ã•れã¾ã›ã‚“ã§ã—ãŸ',oneChange:'スペルãƒã‚§ãƒƒã‚¯å®Œäº†: 1語å¥å¤‰æ›´ã•れã¾ã—ãŸ',manyChanges:'スペルãƒã‚§ãƒƒã‚¯å®Œäº†: %1 語å¥å¤‰æ›´ã•れã¾ã—ãŸ',ieSpellDownload:'スペルãƒã‚§ãƒƒã‚«ãƒ¼ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“。今ã™ãダウンロードã—ã¾ã™ã‹?'},smiley:{toolbar:'絵文字',title:'顔文字挿入',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 エレメント'},numberedlist:'段è½ç•ªå·',bulletedlist:'ç®‡æ¡æ›¸ã',indent:'インデント',outdent:'インデント解除',justify:{left:'å·¦æƒãˆ',center:'中央æƒãˆ',right:'峿ƒãˆ',block:'両端æƒãˆ'},blockquote:'ブロック引用',clipboard:{title:'貼り付ã‘',cutError:'ブラウザーã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®åˆ‡ã‚Šå–りæ“作ãŒè‡ªå‹•ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã®(Ctrl/Cmd+X)を使用ã—ã¦ãã ã•ã„。',copyError:'ブラウザーã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã‚¨ãƒ‡ã‚£ã‚¿ã®ã‚³ãƒ”ーæ“作ãŒè‡ªå‹•ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。実行ã™ã‚‹ã«ã¯æ‰‹å‹•ã§ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã®(Ctrl/Cmd+C)を使用ã—ã¦ãã ã•ã„。',pasteMsg:'キーボード(<STRONG>Ctrl/Cmd+V</STRONG>)を使用ã—ã¦ã€æ¬¡ã®å…¥åŠ›ã‚¨ãƒªã‚¢å†…ã§è²¼ã£ã¦ã€<STRONG>OK</STRONG>を押ã—ã¦ãã ã•ã„。',securityMsg:'ブラウザã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨­å®šã«ã‚ˆã‚Šã€ã‚¨ãƒ‡ã‚£ã‚¿ã¯ã‚¯ãƒªãƒƒãƒ—ボード・データã«ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¯è²¼ã‚Šä»˜ã‘æ“作を行ã†åº¦ã«è¡¨ç¤ºã•れã¾ã™ã€‚',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'貼り付ã‘を行ã†ãƒ†ã‚­ã‚¹ãƒˆã¯ã€ãƒ¯ãƒ¼ãƒ‰æ–‡ç« ã‹ã‚‰ã‚³ãƒ”ーã•れよã†ã¨ã—ã¦ã„ã¾ã™ã€‚貼り付ã‘ã‚‹å‰ã«ã‚¯ãƒªãƒ¼ãƒ‹ãƒ³ã‚°ã‚’行ã„ã¾ã™ã‹ï¼Ÿ',toolbar:'ワード文章ã‹ã‚‰è²¼ã‚Šä»˜ã‘',title:'ワード文章ã‹ã‚‰è²¼ã‚Šä»˜ã‘',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'プレーンテキスト貼り付ã‘',title:'プレーンテキスト貼り付ã‘'},templates:{button:'テンプレート(雛形)',title:'テンプレート内容',options:'Template Options',insertOption:'ç¾åœ¨ã®ã‚¨ãƒ‡ã‚£ã‚¿ã®å†…容ã¨ç½®æ›ãˆã‚’ã—ã¾ã™',selectPromptMsg:'エディターã§ä½¿ç”¨ã™ã‚‹ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。<br>(ç¾åœ¨ã®ã‚¨ãƒ‡ã‚£ã‚¿ã®å†…容ã¯å¤±ã‚れã¾ã™):',emptyListMsg:'(テンプレートãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“)'},showBlocks:'ブロック表示',stylesCombo:{label:'スタイル',panelTitle:'Formatting Styles',panelTitle1:'ブロックスタイル',panelTitle2:'インラインスタイル',panelTitle3:'オブジェクトスタイル'},format:{label:'フォーマット',panelTitle:'フォーマット',tag_p:'標準',tag_pre:'書å¼ä»˜ã',tag_address:'アドレス',tag_h1:'見出㗠1',tag_h2:'見出㗠2',tag_h3:'見出㗠3',tag_h4:'見出㗠4',tag_h5:'見出㗠5',tag_h6:'見出㗠6',tag_div:'標準 (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'フォント',voiceLabel:'フォント',panelTitle:'フォント'},fontSize:{label:'サイズ',voiceLabel:'フォントサイズ',panelTitle:'サイズ'},colorButton:{textColorTitle:'テキスト色',bgColorTitle:'背景色',panelTitle:'Colors',auto:'自動',more:'ãã®ä»–ã®è‰²...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'スペルãƒã‚§ãƒƒã‚¯è¨­å®š(SCAYT)',opera_title:'Not supported by Opera',enable:'SCAYT有効',disable:'SCAYT無効',about:'SCAYTバージョï¾',toggle:'SCAYT切替',options:'オプション',langs:'言語',moreSuggestions:'ä»–ã®å€™è£œ',ignore:'無視',ignoreAll:'ã™ã¹ã¦ç„¡è¦–',addWord:'語å¥è¿½åŠ ',emptyDic:'辞書åã¯å¿…ãšå…¥åŠ›ã—ã¦ãã ã•ã„',optionsTab:'オプション',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'言語',dictionariesTab:'辞書',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±'},about:{title:'CKEditorãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±',dlgTitle:'CKEditorãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±',moreInfo:'ライセンス情報ã®è©³ç´°ã¯ã‚¦ã‚§ãƒ–サイトã«ã¦ç¢ºèªã—ã¦ãã ã•ã„:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'最大化',minimize:'最å°åŒ–',fakeobjects:{anchor:'アンカー',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'ドラッグã—ã¦ãƒªã‚µã‚¤ã‚º',colordialog:{title:'è‰²é¸æŠž',options:'Color Options',highlight:'ãƒã‚¤ãƒ©ã‚¤ãƒˆ',selected:'é¸æŠžã•れãŸè‰²',clear:'クリア'},toolbarCollapse:'ツールãƒãƒ¼ã‚’é–‰ã˜ã‚‹',toolbarExpand:'ツールãƒãƒ¼ã‚’é–‹ã',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/km.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/km.js
new file mode 100644
index 000000000..20e9eab2b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/km.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.km={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'កូáž',newPage:'ទំពáŸážšážáŸ’មី',save:'រក្សាទុក',preview:'មើលសាកល្បង',cut:'កាážáŸ‹áž™áž€',copy:'ចំលងយក',paste:'ចំលងដាក់',print:'បោះពុម្ភ',underline:'ដិážáž”ន្ទាážáŸ‹áž–ីក្រោមអក្សរ',bold:'អក្សរដិážáž’ំ',italic:'អក្សរផ្ážáŸáž€',selectAll:'ជ្រើសរើសទាំងអស់',removeFormat:'លប់ចោល ការរចនា',strike:'ដិážáž”ន្ទាážáŸ‹áž–ាក់កណ្ážáž¶áž›áž¢áž€áŸ’សរ',subscript:'អក្សរážáž¼áž…ក្រោម',superscript:'អក្សរážáž¼áž…លើ',horizontalrule:'បន្ážáŸ‚មបន្ទាážáŸ‹áž•្ážáŸáž€',pagebreak:'បន្ážáŸ‚ម ការផ្ážáž¶áž…់ទំពáŸážš',unlink:'លប់ឈ្នាប់',undo:'សារឡើងវិញ',redo:'ធ្វើឡើងវិញ',common:{browseServer:'មើល',url:'URL',protocol:'ប្រូážáž¼áž€áž¼áž›',upload:'ទាញយក',uploadSubmit:'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្ážáž›áŸ‹ážŸáŸážœáž¶',image:'រូបភាព',flash:'Flash',form:'បែបបទ',checkbox:'ប្រអប់ជ្រើសរើស',radio:'ប៉ូážáž»áž“រង្វង់មូល',textField:'ជួរសរសáŸážšáž¢ážáŸ’ážáž”áž‘',textarea:'ážáŸ†áž”ន់សរសáŸážšáž¢ážáŸ’ážáž”áž‘',hiddenField:'ជួរលាក់',button:'ប៉ូážáž»áž“',select:'ជួរជ្រើសរើស',imageButton:'ប៉ូážáž»áž“រូបភាព',notSet:'<មិនមែន>',id:'Id',name:'ឈ្មោះ',langDir:'ទិសដៅភាសា',langDirLtr:'ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ†(LTR)',langDirRtl:'ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„(RTL)',langCode:'áž›áŸážáž€áž¼ážáž—ាសា',longDescr:'អធិប្បាយ URL វែង',cssClass:'Stylesheet Classes',advisoryTitle:'ចំណងជើង ប្រឹក្សា',cssStyle:'ម៉ូáž',ok:'យល់ព្រម',cancel:'មិនយល់ព្រម',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'កំរិážážáŸ’ពស់',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'បន្ážáŸ‚មអក្សរពិសáŸážŸ',title:'ážáž¼áž¢áž€áŸ’សរពិសáŸážŸ',options:'Special Character Options'},link:{toolbar:'បន្ážáŸ‚ម/កែប្រែ ឈ្នាប់',other:'<other>',menu:'កែប្រែឈ្នាប់',title:'ឈ្នាប់',info:'áž–ážáŸŒáž˜áž¶áž“អំពីឈ្នាប់',target:'គោលដៅ',upload:'ទាញយក',advanced:'កំរិážážáŸ’ពស់',type:'ប្រភáŸáž‘ឈ្នាប់',toUrl:'URL',toAnchor:'យុážáŸ’កានៅក្នុងទំពáŸážšáž“áŸáŸ‡',toEmail:'អ៊ីមែល',targetFrame:'<ហ្វ្រáŸáž˜>',targetPopup:'<វីនដូវ លោáž>',targetFrameName:'ឈ្មោះហ្រ្វáŸáž˜ážŠáŸ‚លជាគោលដៅ',targetPopupName:'ឈ្មោះវីនដូវលោáž',popupFeatures:'លក្ážážŽáŸ‡ážšáž”ស់វីនដូលលោáž',popupResizable:'Resizable',popupStatusBar:'របា áž–ážáŸŒáž˜áž¶áž“',popupLocationBar:'របា ទីážáž¶áŸ†áž„',popupToolbar:'របា ឩបករណáŸ',popupMenuBar:'របា មឺនុយ',popupFullScreen:'អáŸáž€áŸ’រុងពáŸáž‰(IE)',popupScrollBars:'របា ទាញ',popupDependent:'អាស្រáŸáž™áž›áž¾ (Netscape)',popupWidth:'ទទឹង',popupLeft:'ទីážáž¶áŸ†áž„ážáž¶áž„ឆ្វáŸáž„',popupHeight:'កំពស់',popupTop:'ទីážáž¶áŸ†áž„ážáž¶áž„លើ',id:'Id',langDir:'ទិសដៅភាសា',langDirLTR:'ពីឆ្វáŸáž„ទៅស្ážáž¶áŸ†(LTR)',langDirRTL:'ពីស្ážáž¶áŸ†áž‘ៅឆ្វáŸáž„(RTL)',acccessKey:'ឃី សំរាប់ចូល',name:'ឈ្មោះ',langCode:'ទិសដៅភាសា',tabIndex:'áž›áŸáž Tab',advisoryTitle:'ចំណងជើង ប្រឹក្សា',advisoryContentType:'ប្រភáŸáž‘អážáŸ’ážáž”áž‘ ប្រឹក្សា',cssClasses:'Stylesheet Classes',charset:'áž›áŸážáž€áž¼ážáž¢áž€áŸ’សររបស់ឈ្នាប់',styles:'ម៉ូáž',selectAnchor:'ជ្រើសរើសយុážáŸ’កា',anchorName:'ážáž¶áž˜ážˆáŸ’មោះរបស់យុážáŸ’កា',anchorId:'ážáž¶áž˜ Id',emailAddress:'អ៊ីមែល',emailSubject:'ចំណងជើងអážáŸ’ážáž”áž‘',emailBody:'អážáŸ’ážáž”áž‘',noAnchors:'(No anchors available in the document)',noUrl:'សូមសរសáŸážš អាសáŸáž™ážŠáŸ’ឋាន URL',noEmail:'សូមសរសáŸážš អាសáŸáž™ážŠáŸ’ឋាន អ៊ីមែល'},anchor:{toolbar:'បន្ážáŸ‚ម/កែប្រែ យុážáŸ’កា',menu:'ការកំណážáŸ‹áž™áž»ážáŸ’កា',title:'ការកំណážáŸ‹áž™áž»ážáŸ’កា',name:'ឈ្មោះយុទ្ធážáŸ’កា',errorName:'សូមសរសáŸážš ឈ្មោះយុទ្ធážáŸ’កា'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'ស្វែងរក',replace:'ជំនួស',findWhat:'ស្វែងរកអ្វី:',replaceWith:'ជំនួសជាមួយ:',notFoundMsg:'ពាក្យនáŸáŸ‡ រកមិនឃើញទ០។',matchCase:'ករណ៉ážáŸ’រូវរក',matchWord:'ážáŸ’រូវពាក្យទាំងអស់',matchCyclic:'Match cyclic',replaceAll:'ជំនួសទាំងអស់',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'ážáž¶ážšáž¶áž„',title:'ការកំណážáŸ‹ ážáž¶ážšáž¶áž„',menu:'ការកំណážáŸ‹ ážáž¶ážšáž¶áž„',deleteTable:'លប់ážáž¶ážšáž¶áž„',rows:'ជួរផ្ážáŸáž€',columns:'ជួរឈរ',border:'ទំហំស៊ុម',align:'ការកំណážáŸ‹áž‘ីážáž¶áŸ†áž„',alignLeft:'ážáž¶áž„ឆ្វáŸáž„',alignCenter:'កណ្ážáž¶áž›',alignRight:'ážáž¶áž„ស្ážáž¶áŸ†',width:'ទទឹង',widthPx:'ភីកសែល',widthPc:'ភាគរយ',widthUnit:'width unit',height:'កំពស់',cellSpace:'គំលាážážŸáŸ‚áž›',cellPad:'គែមសែល',caption:'ចំណងជើង',summary:'សáŸáž…ក្ážáž¸ážŸáž„្ážáŸáž”',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'លប់សែល',merge:'បញ្ជូលសែល',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'លប់ជួរផ្ážáŸáž€'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'លប់ជួរឈរ'}},button:{title:'ការកំណážáŸ‹ ប៉ូážáž»áž“',text:'អážáŸ’ážáž”áž‘(ážáŸ†áž›áŸƒ)',type:'ប្រភáŸáž‘',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'ការកំណážáŸ‹áž”្រអប់ជ្រើសរើស',radioTitle:'ការកំណážáŸ‹áž”៉ូážáž»áž“រង្វង់',value:'ážáŸ†áž›áŸƒ',selected:'បានជ្រើសរើស'},form:{title:'ការកំណážáŸ‹áž”ែបបទ',menu:'ការកំណážáŸ‹áž”ែបបទ',action:'សកម្មភាព',method:'វិធី',encoding:'Encoding'},select:{title:'ការកំណážáŸ‹áž‡áž½ážšáž‡áŸ’រើសរើស',selectInfo:'áž–ážáŸŒáž˜áž¶áž“',opAvail:'ការកំណážáŸ‹áž‡áŸ’រើសរើស ដែលអាចកំណážáŸ‹áž”áž¶áž“',value:'ážáŸ†áž›áŸƒ',size:'ទំហំ',lines:'បន្ទាážáŸ‹',chkMulti:'អនុញ្ញាážáž¢áŸ„យជ្រើសរើសច្រើន',opText:'ពាក្យ',opValue:'ážáŸ†áž›áŸƒ',btnAdd:'បន្ážáŸ‚ម',btnModify:'ផ្លាស់ប្ážáž¼ážš',btnUp:'លើ',btnDown:'ក្រោម',btnSetValue:'Set as selected value',btnDelete:'លប់'},textarea:{title:'ការកំណážáŸ‹áž€áž“្លែងសរសáŸážšáž¢ážáŸ’ážáž”áž‘',cols:'ជូរឈរ',rows:'ជូរផ្ážáŸáž€'},textfield:{title:'ការកំណážáŸ‹áž‡áž½ážšáž¢ážáŸ’ážáž”áž‘',name:'ឈ្មោះ',value:'ážáŸ†áž›áŸƒ',charWidth:'ទទឹង អក្សរ',maxChars:'អក្សរអážáž·áž”រិមា',type:'ប្រភáŸáž‘',typeText:'ពាក្យ',typePass:'ពាក្យសំងាážáŸ‹'},hidden:{title:'ការកំណážáŸ‹áž‡áž½ážšáž›áž¶áž€áŸ‹',name:'ឈ្មោះ',value:'ážáŸ†áž›áŸƒ'},image:{title:'ការកំណážáŸ‹ážšáž¼áž”áž—áž¶áž–',titleButton:'ការកំណážáŸ‹áž”៉ូážáž»áž“រូបភាព',menu:'ការកំណážáŸ‹ážšáž¼áž”áž—áž¶áž–',infoTab:'áž–ážáŸŒáž˜áž¶áž“អំពីរូបភាព',btnUpload:'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្ážáž›áŸ‹ážŸáŸážœáž¶',upload:'ទាញយក',alt:'អážáŸ’ážáž”ទជំនួស',width:'ទទឹង',height:'កំពស់',lockRatio:'អážáŸ’រាឡុក',unlockRatio:'Unlock Ratio',resetSize:'កំណážáŸ‹áž‘ំហំឡើងវិញ',border:'ស៊ុម',hSpace:'គំលាážáž‘ទឹង',vSpace:'គំលាážáž”ណ្ážáŸ„áž™',align:'កំណážáŸ‹áž‘ីážáž¶áŸ†áž„',alignLeft:'ážáž¶áž„ឆ្វង',alignRight:'ážáž¶áž„ស្ážáž¶áŸ†',alertUrl:'សូមសរសáŸážšáž„ាសáŸáž™ážŠáŸ’ឋានរបស់រូបភាព',linkTab:'ឈ្នាប់',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ការកំណážáŸ‹ Flash',propertiesTab:'Properties',title:'ការកំណážáŸ‹ Flash',chkPlay:'áž›áŸáž„ដោយស្វáŸáž™áž”្រវážáŸ’áž',chkLoop:'ចំនួនដង',chkMenu:'បង្ហាញ មឺនុយរបស់ Flash',chkFull:'Allow Fullscreen',scale:'ទំហំ',scaleAll:'បង្ហាញទាំងអស់',scaleNoBorder:'មិនបង្ហាញស៊ុម',scaleFit:'ážáŸ’រូវល្មម',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'កំណážáŸ‹áž‘ីážáž¶áŸ†áž„',alignLeft:'ážáž¶áž„ឆ្វង',alignAbsBottom:'Abs Bottom',alignAbsMiddle:'Abs Middle',alignBaseline:'បន្ទាážáŸ‹áž‡áž¶áž˜áž¼áž›ážŠáŸ’ឋាន',alignBottom:'ážáž¶áž„ក្រោម',alignMiddle:'កណ្ážáž¶áž›',alignRight:'ážáž¶áž„ស្ážáž¶áŸ†',alignTextTop:'លើអážáŸ’ážáž”áž‘',alignTop:'ážáž¶áž„លើ',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'ពណ៌ផ្ទៃážáž¶áž„ក្រោយ',width:'ទទឹង',height:'កំពស់',hSpace:'គំលាážáž‘ទឹង',vSpace:'គំលាážáž”ណ្ážáŸ„áž™',validateSrc:'សូមសរសáŸážš អាសáŸáž™ážŠáŸ’ឋាន URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'គ្មានក្នុងវចនានុក្រម',changeTo:'ផ្លាស់ប្ážáž¼ážšáž‘ៅ',btnIgnore:'មិនផ្លាស់ប្ážáž¼ážš',btnIgnoreAll:'មិនផ្លាស់ប្ážáž¼ážš ទាំងអស់',btnReplace:'ជំនួស',btnReplaceAll:'ជំនួសទាំងអស់',btnUndo:'សារឡើងវិញ',noSuggestions:'- គ្មានសំណើរ -',progress:'កំពុងពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ...',noMispell:'ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: គ្មានកំហុស',noChanges:'ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: ពុំមានផ្លាស់ប្ážáž¼ážš',oneChange:'ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: ពាក្យមួយážáŸ’រូចបានផ្លាស់ប្ážáž¼ážš',manyChanges:'ការពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្ážáž¼ážš',ieSpellDownload:'ពុំមានកម្មវិធីពិនិážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ ។ ážáž¾áž…ង់ទាញយកពីណា?'},smiley:{toolbar:'រូបភាព',title:'បញ្ជូលរូបភាព',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'បញ្ជីជាអក្សរ',bulletedlist:'បញ្ជីជារង្វង់មូល',indent:'បន្ážáŸ‚មការចូលបន្ទាážáŸ‹',outdent:'បន្ážáž™áž€áž¶ážšáž…ូលបន្ទាážáŸ‹',justify:{left:'ážáŸ†ážšáž¹áž˜áž†áŸ’ážœáŸáž„',center:'ážáŸ†ážšáž¹áž˜áž€ážŽáŸ’ážáž¶áž›',right:'ážáŸ†ážšáž¹áž˜ážŸáŸ’ážáž¶áŸ†',block:'ážáŸ†ážšáž¹áž˜ážŸáž„ážáž¶áž„'},blockquote:'Block Quote',clipboard:{title:'ចំលងដាក់',cutError:'ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ កាážáŸ‹áž¢ážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl/Cmd+X) ។',copyError:'ការកំណážáŸ‹ážŸáž»ážœážáŸ’ážáž—ាពរបស់កម្មវិធីរុករករបស់លោកអ្នក áž“áŸáŸ‡â€‹áž˜áž·áž“អាចធ្វើកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘ ចំលងអážáŸ’ážáž”ទយកដោយស្វáŸáž™áž”្រវážáŸ’ážáž”ានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនáŸáŸ‡ (Ctrl/Cmd+C)។',pasteMsg:'សូមចំលងអážáŸ’ážáž”ទទៅដាក់ក្នុងប្រអប់ដូចážáž¶áž„ក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl/Cmd+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'ចំលងដាក់ពី Word',title:'ចំលងដាក់ពី Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'ចំលងដាក់អážáŸ’ážáž”ទធម្មážáž¶',title:'ចំលងដាក់អážáŸ’ážáž”ទធម្មážáž¶'},templates:{button:'ឯកសារគំរូ',title:'ឯកសារគំរូ របស់អážáŸ’ážáž“áŸáž™',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីážáž¶áž€áŸ‹ážáŸ‚ងអážáŸ’ážáž”áž‘<br>(អážáŸ’ážáž”ទនឹងបាážáŸ‹áž”ង់):',emptyListMsg:'(ពុំមានឯកសារគំរូážáŸ’រូវបានកំណážáŸ‹)'},showBlocks:'Show Blocks',stylesCombo:{label:'ម៉ូáž',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'រចនា',panelTitle:'រចនា',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'ហ្វុង',voiceLabel:'Font',panelTitle:'ហ្វុង'},fontSize:{label:'ទំហំ',voiceLabel:'Font Size',panelTitle:'ទំហំ'},colorButton:{textColorTitle:'ពណ៌អក្សរ',bgColorTitle:'ពណ៌ផ្ទៃážáž¶áž„ក្រោយ',panelTitle:'Colors',auto:'ស្វáŸáž™áž”្រវážáŸ’áž',more:'ពណ៌ផ្សáŸáž„ទៀáž..'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ko.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ko.js
new file mode 100644
index 000000000..4f8b61694
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ko.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ko={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'소스',newPage:'새 문서',save:'저장하기',preview:'미리보기',cut:'잘ë¼ë‚´ê¸°',copy:'복사하기',paste:'붙여넣기',print:'ì¸ì‡„하기',underline:'밑줄',bold:'진하게',italic:'ì´í…”릭',selectAll:'ì „ì²´ì„ íƒ',removeFormat:'í¬ë§· 지우기',strike:'취소선',subscript:'아래 첨ìž',superscript:'위 첨ìž',horizontalrule:'수í‰ì„  삽입',pagebreak:'Insert Page Break for Printing',unlink:'ë§í¬ ì‚­ì œ',undo:'취소',redo:'재실행',common:{browseServer:'서버 보기',url:'URL',protocol:'프로토콜',upload:'업로드',uploadSubmit:'서버로 전송',image:'ì´ë¯¸ì§€',flash:'플래쉬',form:'í¼',checkbox:'ì²´í¬ë°•스',radio:'ë¼ë””오버튼',textField:'입력필드',textarea:'ìž…ë ¥ì˜ì—­',hiddenField:'숨김필드',button:'버튼',select:'펼침목ë¡',imageButton:'ì´ë¯¸ì§€ë²„튼',notSet:'<설정ë˜ì§€ 않ìŒ>',id:'ID',name:'Name',langDir:'쓰기 ë°©í–¥',langDirLtr:'왼쪽ì—서 오른쪽 (LTR)',langDirRtl:'오른쪽ì—서 왼쪽 (RTL)',langCode:'언어 코드',longDescr:'URL 설명',cssClass:'Stylesheet Classes',advisoryTitle:'Advisory Title',cssStyle:'Style',ok:'예',cancel:'아니오',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'ìžì„¸ížˆ',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'íŠ¹ìˆ˜ë¬¸ìž ì‚½ìž…',title:'íŠ¹ìˆ˜ë¬¸ìž ì„ íƒ',options:'Special Character Options'},link:{toolbar:'ë§í¬ 삽입/변경',other:'<기타>',menu:'ë§í¬ 수정',title:'ë§í¬',info:'ë§í¬ ì •ë³´',target:'타겟',upload:'업로드',advanced:'ìžì„¸ížˆ',type:'ë§í¬ 종류',toUrl:'URL',toAnchor:'책갈피',toEmail:'ì´ë©”ì¼',targetFrame:'<프레임>',targetPopup:'<íŒì—…ì°½>',targetFrameName:'타겟 프레임 ì´ë¦„',targetPopupName:'íŒì—…ì°½ ì´ë¦„',popupFeatures:'íŒì—…ì°½ 설정',popupResizable:'Resizable',popupStatusBar:'ìƒíƒœë°”',popupLocationBar:'주소표시줄',popupToolbar:'툴바',popupMenuBar:'메뉴바',popupFullScreen:'전체화면 (IE)',popupScrollBars:'스í¬ë¡¤ë°”',popupDependent:'Dependent (Netscape)',popupWidth:'너비',popupLeft:'왼쪽 위치',popupHeight:'높ì´',popupTop:'윗쪽 위치',id:'Id',langDir:'쓰기 ë°©í–¥',langDirLTR:'왼쪽ì—서 오른쪽 (LTR)',langDirRTL:'오른쪽ì—서 왼쪽 (RTL)',acccessKey:'엑세스 키',name:'Name',langCode:'쓰기 ë°©í–¥',tabIndex:'탭 순서',advisoryTitle:'Advisory Title',advisoryContentType:'Advisory Content Type',cssClasses:'Stylesheet Classes',charset:'Linked Resource Charset',styles:'Style',selectAnchor:'책갈피 ì„ íƒ',anchorName:'책갈피 ì´ë¦„',anchorId:'책갈피 ID',emailAddress:'ì´ë©”ì¼ ì£¼ì†Œ',emailSubject:'제목',emailBody:'ë‚´ìš©',noAnchors:'(ë¬¸ì„œì— ì±…ê°ˆí”¼ê°€ 없습니다.)',noUrl:'ë§í¬ URLì„ ìž…ë ¥í•˜ì‹­ì‹œìš”.',noEmail:'ì´ë©”ì¼ì£¼ì†Œë¥¼ 입력하십시요.'},anchor:{toolbar:'책갈피 삽입/변경',menu:'책갈피 ì†ì„±',title:'책갈피 ì†ì„±',name:'책갈피 ì´ë¦„',errorName:'책갈피 ì´ë¦„ì„ ìž…ë ¥í•˜ì‹­ì‹œìš”.'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'찾기 & 바꾸기',find:'찾기',replace:'바꾸기',findWhat:'ì°¾ì„ ë¬¸ìžì—´:',replaceWith:'바꿀 문ìžì—´:',notFoundMsg:'문ìžì—´ì„ ì°¾ì„ ìˆ˜ 없습니다.',matchCase:'ëŒ€ì†Œë¬¸ìž êµ¬ë¶„',matchWord:'온전한 단어',matchCyclic:'Match cyclic',replaceAll:'ëª¨ë‘ ë°”ê¾¸ê¸°',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'표',title:'표 설정',menu:'표 설정',deleteTable:'표 ì‚­ì œ',rows:'가로줄',columns:'세로줄',border:'í…Œë‘리 í¬ê¸°',align:'ì •ë ¬',alignLeft:'왼쪽',alignCenter:'가운ë°',alignRight:'오른쪽',width:'너비',widthPx:'픽셀',widthPc:'í¼ì„¼íЏ',widthUnit:'width unit',height:'높ì´',cellSpace:'ì…€ 간격',cellPad:'ì…€ 여백',caption:'캡션',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'ì…€/칸(Cell)',insertBefore:'ì•žì— ì…€/칸 삽입',insertAfter:'ë’¤ì— ì…€/칸 삽입',deleteCell:'ì…€ ì‚­ì œ',merge:'ì…€ 합치기',mergeRight:'오른쪽 뭉치기',mergeDown:'왼쪽 뭉치기',splitHorizontal:'ìˆ˜í‰ ë‚˜ëˆ„ê¸°',splitVertical:'ìˆ˜ì§ ë‚˜ëˆ„ê¸°',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'í–‰(Row)',insertBefore:'ì•žì— í–‰ 삽입',insertAfter:'ë’¤ì— í–‰ 삽입',deleteRow:'가로줄 ì‚­ì œ'},column:{menu:'ì—´(Column)',insertBefore:'ì•žì— ì—´ 삽입',insertAfter:'ë’¤ì— ì—´ 삽입',deleteColumn:'세로줄 ì‚­ì œ'}},button:{title:'버튼 ì†ì„±',text:'버튼글ìž(ê°’)',type:'버튼종류',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'ì²´í¬ë°•스 ì†ì„±',radioTitle:'ë¼ë””오버튼 ì†ì„±',value:'ê°’',selected:'ì„ íƒë¨'},form:{title:'í¼ ì†ì„±',menu:'í¼ ì†ì„±',action:'실행경로(Action)',method:'방법(Method)',encoding:'Encoding'},select:{title:'íŽ¼ì¹¨ëª©ë¡ ì†ì„±',selectInfo:'ì •ë³´',opAvail:'ì„ íƒì˜µì…˜',value:'ê°’',size:'세로í¬ê¸°',lines:'줄',chkMulti:'여러항목 ì„ íƒ í—ˆìš©',opText:'ì´ë¦„',opValue:'ê°’',btnAdd:'추가',btnModify:'변경',btnUp:'위로',btnDown:'아래로',btnSetValue:'ì„ íƒëœê²ƒìœ¼ë¡œ 설정',btnDelete:'ì‚­ì œ'},textarea:{title:'ìž…ë ¥ì˜ì—­ ì†ì„±',cols:'칸수',rows:'줄수'},textfield:{title:'입력필드 ì†ì„±',name:'ì´ë¦„',value:'ê°’',charWidth:'ê¸€ìž ë„ˆë¹„',maxChars:'최대 글ìžìˆ˜',type:'종류',typeText:'문ìžì—´',typePass:'비밀번호'},hidden:{title:'숨김필드 ì†ì„±',name:'ì´ë¦„',value:'ê°’'},image:{title:'ì´ë¯¸ì§€ 설정',titleButton:'ì´ë¯¸ì§€ë²„튼 ì†ì„±',menu:'ì´ë¯¸ì§€ 설정',infoTab:'ì´ë¯¸ì§€ ì •ë³´',btnUpload:'서버로 전송',upload:'업로드',alt:'ì´ë¯¸ì§€ 설명',width:'너비',height:'높ì´',lockRatio:'비율 유지',unlockRatio:'Unlock Ratio',resetSize:'ì›ëž˜ í¬ê¸°ë¡œ',border:'í…Œë‘리',hSpace:'수í‰ì—¬ë°±',vSpace:'수ì§ì—¬ë°±',align:'ì •ë ¬',alignLeft:'왼쪽',alignRight:'오른쪽',alertUrl:'ì´ë¯¸ì§€ URLì„ ìž…ë ¥í•˜ì‹­ì‹œìš”',linkTab:'ë§í¬',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'플래쉬 ì†ì„±',propertiesTab:'Properties',title:'플래쉬 등ë¡ì •ë³´',chkPlay:'ìžë™ìž¬ìƒ',chkLoop:'반복',chkMenu:'플래쉬메뉴 가능',chkFull:'Allow Fullscreen',scale:'ì˜ì—­',scaleAll:'모ë‘보기',scaleNoBorder:'경계선없ìŒ',scaleFit:'ì˜ì—­ìžë™ì¡°ì ˆ',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'ì •ë ¬',alignLeft:'왼쪽',alignAbsBottom:'줄아래(Abs Bottom)',alignAbsMiddle:'줄중간(Abs Middle)',alignBaseline:'기준선',alignBottom:'아래',alignMiddle:'중간',alignRight:'오른쪽',alignTextTop:'글ìžìƒë‹¨',alignTop:'위',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'ë°°ê²½ 색ìƒ',width:'너비',height:'높ì´',hSpace:'수í‰ì—¬ë°±',vSpace:'수ì§ì—¬ë°±',validateSrc:'ë§í¬ URLì„ ìž…ë ¥í•˜ì‹­ì‹œìš”.',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ì² ìžê²€ì‚¬',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'ì‚¬ì „ì— ì—†ëŠ” 단어',changeTo:'변경할 단어',btnIgnore:'건너뜀',btnIgnoreAll:'ëª¨ë‘ ê±´ë„ˆëœ€',btnReplace:'변경',btnReplaceAll:'ëª¨ë‘ ë³€ê²½',btnUndo:'취소',noSuggestions:'- 추천단어 ì—†ìŒ -',progress:'ì² ìžê²€ì‚¬ë¥¼ 진행중입니다...',noMispell:'ì² ìžê²€ì‚¬ 완료: ìž˜ëª»ëœ ì² ìžê°€ 없습니다.',noChanges:'ì² ìžê²€ì‚¬ 완료: ë³€ê²½ëœ ë‹¨ì–´ê°€ 없습니다.',oneChange:'ì² ìžê²€ì‚¬ 완료: 단어가 변경ë˜ì—ˆìŠµë‹ˆë‹¤.',manyChanges:'ì² ìžê²€ì‚¬ 완료: %1 단어가 변경ë˜ì—ˆìŠµë‹ˆë‹¤.',ieSpellDownload:'ì² ìž ê²€ì‚¬ê¸°ê°€ 철치ë˜ì§€ 않았습니다. 지금 다운로드하시겠습니까?'},smiley:{toolbar:'ì•„ì´ì½˜',title:'ì•„ì´ì½˜ 삽입',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'순서있는 목ë¡',bulletedlist:'순서없는 목ë¡',indent:'들여쓰기',outdent:'내어쓰기',justify:{left:'왼쪽 ì •ë ¬',center:'ê°€ìš´ë° ì •ë ¬',right:'오른쪽 ì •ë ¬',block:'양쪽 맞춤'},blockquote:'Block Quote',clipboard:{title:'붙여넣기',cutError:'브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì •ë•Œë¬¸ì— ìž˜ë¼ë‚´ê¸° ê¸°ëŠ¥ì„ ì‹¤í–‰í•  수 없습니다. 키보드 ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œìš”. (Ctrl/Cmd+X).',copyError:'브ë¼ìš°ì €ì˜ ë³´ì•ˆì„¤ì •ë•Œë¬¸ì— ë³µì‚¬í•˜ê¸° ê¸°ëŠ¥ì„ ì‹¤í–‰í•  수 없습니다. 키보드 ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œìš”. (Ctrl/Cmd+C).',pasteMsg:'í‚¤ë³´ë“œì˜ (<STRONG>Ctrl/Cmd+V</STRONG>) 를 ì´ìš©í•´ì„œ ìƒìžì•ˆì— 붙여넣고 <STRONG>OK</STRONG> 를 누르세요.',securityMsg:'브러우저 보안 설정으로 ì¸í•´, í´ë¦½ë³´ë“œì˜ ìžë£Œë¥¼ ì§ì ‘ 접근할 수 없습니다. ì´ ì°½ì— ë‹¤ì‹œ 붙여넣기 하십시오.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'MS Word 형ì‹ì—서 붙여넣기',title:'MS Word 형ì‹ì—서 붙여넣기',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'í…스트로 붙여넣기',title:'í…스트로 붙여넣기'},templates:{button:'템플릿',title:'ë‚´ìš© 템플릿',options:'Template Options',insertOption:'현재 ë‚´ìš© 바꾸기',selectPromptMsg:'ì—디터ì—서 사용할 í…œí”Œë¦¿ì„ ì„ íƒí•˜ì‹­ì‹œìš”.<br>(지금까지 ìž‘ì„±ëœ ë‚´ìš©ì€ ì‚¬ë¼ì§‘니다.):',emptyListMsg:'(í…œí”Œë¦¿ì´ ì—†ìŠµë‹ˆë‹¤.)'},showBlocks:'Show Blocks',stylesCombo:{label:'스타ì¼',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'í¬ë§·',panelTitle:'í¬ë§·',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'í°íЏ',voiceLabel:'Font',panelTitle:'í°íЏ'},fontSize:{label:'ê¸€ìž í¬ê¸°',voiceLabel:'Font Size',panelTitle:'ê¸€ìž í¬ê¸°'},colorButton:{textColorTitle:'ê¸€ìž ìƒ‰ìƒ',bgColorTitle:'ë°°ê²½ 색ìƒ',panelTitle:'Colors',auto:'기본색ìƒ',more:'색ìƒì„ íƒ...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/lt.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/lt.js
new file mode 100644
index 000000000..9ff92eba8
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/lt.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.lt={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Å altinis',newPage:'Naujas puslapis',save:'IÅ¡saugoti',preview:'PeržiÅ«ra',cut:'IÅ¡kirpti',copy:'Kopijuoti',paste:'Ä®dÄ—ti',print:'Spausdinti',underline:'Pabrauktas',bold:'Pusjuodis',italic:'Kursyvas',selectAll:'PažymÄ—ti viskÄ…',removeFormat:'Panaikinti formatÄ…',strike:'Perbrauktas',subscript:'Apatinis indeksas',superscript:'VirÅ¡utinis indeksas',horizontalrule:'Ä®terpti horizontaliÄ… linijÄ…',pagebreak:'Ä®terpti puslapių skirtukÄ…',unlink:'Panaikinti nuorodÄ…',undo:'AtÅ¡aukti',redo:'Atstatyti',common:{browseServer:'NarÅ¡yti po serverį',url:'URL',protocol:'Protokolas',upload:'Siųsti',uploadSubmit:'Siųsti į serverį',image:'Vaizdas',flash:'Flash',form:'Forma',checkbox:'Žymimasis langelis',radio:'Žymimoji akutÄ—',textField:'Teksto laukas',textarea:'Teksto sritis',hiddenField:'Nerodomas laukas',button:'Mygtukas',select:'Atrankos laukas',imageButton:'Vaizdinis mygtukas',notSet:'<nÄ—ra nustatyta>',id:'Id',name:'Vardas',langDir:'Teksto kryptis',langDirLtr:'IÅ¡ kairÄ—s į deÅ¡inÄ™ (LTR)',langDirRtl:'IÅ¡ deÅ¡inÄ—s į kairÄ™ (RTL)',langCode:'Kalbos kodas',longDescr:'Ilgas apraÅ¡ymas URL',cssClass:'Stilių lentelÄ—s klasÄ—s',advisoryTitle:'KonsultacinÄ— antraÅ¡tÄ—',cssStyle:'Stilius',ok:'OK',cancel:'Nutraukti',close:'Close',preview:'Preview',generalTab:'Bendros savybÄ—s',advancedTab:'Papildomas',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ä®terpti specialų simbolį',title:'Pasirinkite specialų simbolį',options:'Special Character Options'},link:{toolbar:'Ä®terpti/taisyti nuorodÄ…',other:'<kitas>',menu:'Taisyti nuorodÄ…',title:'Nuoroda',info:'Nuorodos informacija',target:'Paskirties vieta',upload:'Siųsti',advanced:'Papildomas',type:'Nuorodos tipas',toUrl:'URL',toAnchor:'ŽymÄ— Å¡iame puslapyje',toEmail:'El.paÅ¡tas',targetFrame:'<kadras>',targetPopup:'<iÅ¡skleidžiamas langas>',targetFrameName:'Paskirties kadro vardas',targetPopupName:'Paskirties lango vardas',popupFeatures:'IÅ¡skleidžiamo lango savybÄ—s',popupResizable:'Resizable',popupStatusBar:'BÅ«senos juosta',popupLocationBar:'Adreso juosta',popupToolbar:'Mygtukų juosta',popupMenuBar:'Meniu juosta',popupFullScreen:'Visas ekranas (IE)',popupScrollBars:'Slinkties juostos',popupDependent:'Priklausomas (Netscape)',popupWidth:'Plotis',popupLeft:'KairÄ— pozicija',popupHeight:'AukÅ¡tis',popupTop:'VirÅ¡utinÄ— pozicija',id:'Id',langDir:'Teksto kryptis',langDirLTR:'IÅ¡ kairÄ—s į deÅ¡inÄ™ (LTR)',langDirRTL:'IÅ¡ deÅ¡inÄ—s į kairÄ™ (RTL)',acccessKey:'Prieigos raktas',name:'Vardas',langCode:'Teksto kryptis',tabIndex:'Tabuliavimo indeksas',advisoryTitle:'KonsultacinÄ— antraÅ¡tÄ—',advisoryContentType:'Konsultacinio turinio tipas',cssClasses:'Stilių lentelÄ—s klasÄ—s',charset:'Susietų iÅ¡teklių simbolių lentelÄ—',styles:'Stilius',selectAnchor:'Pasirinkite žymÄ™',anchorName:'Pagal žymÄ—s vardÄ…',anchorId:'Pagal žymÄ—s Id',emailAddress:'El.paÅ¡to adresas',emailSubject:'ŽinutÄ—s tema',emailBody:'ŽinutÄ—s turinys',noAnchors:'(Å iame dokumente žymių nÄ—ra)',noUrl:'PraÅ¡ome įvesti nuorodos URL',noEmail:'PraÅ¡ome įvesti el.paÅ¡to adresÄ…'},anchor:{toolbar:'Ä®terpti/modifikuoti žymÄ™',menu:'ŽymÄ—s savybÄ—s',title:'ŽymÄ—s savybÄ—s',name:'ŽymÄ—s vardas',errorName:'PraÅ¡ome įvesti žymÄ—s vardÄ…'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Surasti ir pakeisti',find:'Rasti',replace:'Pakeisti',findWhat:'Surasti tekstÄ…:',replaceWith:'Pakeisti tekstu:',notFoundMsg:'Nurodytas tekstas nerastas.',matchCase:'Skirti didžiÄ…sias ir mažąsias raides',matchWord:'Atitikti pilnÄ… žodį',matchCyclic:'Match cyclic',replaceAll:'Pakeisti viskÄ…',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'LentelÄ—',title:'LentelÄ—s savybÄ—s',menu:'LentelÄ—s savybÄ—s',deleteTable:'Å alinti lentelÄ™',rows:'EilutÄ—s',columns:'Stulpeliai',border:'RÄ—melio dydis',align:'Lygiuoti',alignLeft:'KairÄ™',alignCenter:'CentrÄ…',alignRight:'DeÅ¡inÄ™',width:'Plotis',widthPx:'taÅ¡kais',widthPc:'procentais',widthUnit:'width unit',height:'AukÅ¡tis',cellSpace:'Tarpas tarp langelių',cellPad:'Trapas nuo langelio rÄ—mo iki teksto',caption:'AntraÅ¡tÄ—',summary:'Santrauka',headers:'AntraÅ¡tÄ—s',headersNone:'NÄ—ra',headersColumn:'Pirmas stulpelis',headersRow:'Pirma eilutÄ—',headersBoth:'Abu',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Langelis',insertBefore:'Ä®terpti langelį prieÅ¡',insertAfter:'Ä®terpti langelį po',deleteCell:'Å alinti langelius',merge:'Sujungti langelius',mergeRight:'Sujungti su deÅ¡ine',mergeDown:'Sujungti su apaÄia',splitHorizontal:'Skaidyti langelį horizontaliai',splitVertical:'Skaidyti langelį vertikaliai',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'EilutÄ—',insertBefore:'Ä®terpti eilutÄ™ prieÅ¡',insertAfter:'Ä®terpti eilutÄ™ po',deleteRow:'Å alinti eilutes'},column:{menu:'Stulpelis',insertBefore:'Ä®terpti stulpelį prieÅ¡',insertAfter:'Ä®terpti stulpelį po',deleteColumn:'Å alinti stulpelius'}},button:{title:'Mygtuko savybÄ—s',text:'Tekstas (ReikÅ¡mÄ—)',type:'Tipas',typeBtn:'Mygtukas',typeSbm:'Siųsti',typeRst:'IÅ¡valyti'},checkboxAndRadio:{checkboxTitle:'Žymimojo langelio savybÄ—s',radioTitle:'Žymimosios akutÄ—s savybÄ—s',value:'ReikÅ¡mÄ—',selected:'PažymÄ—tas'},form:{title:'Formos savybÄ—s',menu:'Formos savybÄ—s',action:'Veiksmas',method:'Metodas',encoding:'Encoding'},select:{title:'Atrankos lauko savybÄ—s',selectInfo:'Informacija',opAvail:'Galimos parinktys',value:'ReikÅ¡mÄ—',size:'Dydis',lines:'eiluÄių',chkMulti:'Leisti daugeriopÄ… atrankÄ…',opText:'Tekstas',opValue:'ReikÅ¡mÄ—',btnAdd:'Ä®traukti',btnModify:'Modifikuoti',btnUp:'AukÅ¡tyn',btnDown:'Žemyn',btnSetValue:'Laikyti pažymÄ—ta reikÅ¡me',btnDelete:'Trinti'},textarea:{title:'Teksto srities savybÄ—s',cols:'Ilgis',rows:'Plotis'},textfield:{title:'Teksto lauko savybÄ—s',name:'Vardas',value:'ReikÅ¡mÄ—',charWidth:'Ilgis simboliais',maxChars:'Maksimalus simbolių skaiÄius',type:'Tipas',typeText:'Tekstas',typePass:'Slaptažodis'},hidden:{title:'Nerodomo lauko savybÄ—s',name:'Vardas',value:'ReikÅ¡mÄ—'},image:{title:'Vaizdo savybÄ—s',titleButton:'Vaizdinio mygtuko savybÄ—s',menu:'Vaizdo savybÄ—s',infoTab:'Vaizdo informacija',btnUpload:'Siųsti į serverį',upload:'Nusiųsti',alt:'Alternatyvus Tekstas',width:'Plotis',height:'AukÅ¡tis',lockRatio:'IÅ¡laikyti proporcijÄ…',unlockRatio:'Unlock Ratio',resetSize:'Atstatyti dydį',border:'RÄ—melis',hSpace:'Hor.ErdvÄ—',vSpace:'Vert.ErdvÄ—',align:'Lygiuoti',alignLeft:'KairÄ™',alignRight:'DeÅ¡inÄ™',alertUrl:'PraÅ¡ome įvesti vaizdo URL',linkTab:'Nuoroda',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash savybÄ—s',propertiesTab:'Properties',title:'Flash savybÄ—s',chkPlay:'Automatinis paleidimas',chkLoop:'Ciklas',chkMenu:'Leisti Flash meniu',chkFull:'Allow Fullscreen',scale:'Mastelis',scaleAll:'Rodyti visÄ…',scaleNoBorder:'Be rÄ—melio',scaleFit:'Tikslus atitikimas',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Lygiuoti',alignLeft:'KairÄ™',alignAbsBottom:'AbsoliuÄiÄ… apaÄiÄ…',alignAbsMiddle:'Absoliutų vidurį',alignBaseline:'ApatinÄ™ linijÄ…',alignBottom:'ApaÄiÄ…',alignMiddle:'Vidurį',alignRight:'DeÅ¡inÄ™',alignTextTop:'Teksto viršūnÄ™',alignTop:'ViršūnÄ™',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fono spalva',width:'Plotis',height:'AukÅ¡tis',hSpace:'Hor.ErdvÄ—',vSpace:'Vert.ErdvÄ—',validateSrc:'PraÅ¡ome įvesti nuorodos URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'RaÅ¡ybos tikrinimas',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Žodyne nerastas',changeTo:'Pakeisti į',btnIgnore:'Ignoruoti',btnIgnoreAll:'Ignoruoti visus',btnReplace:'Pakeisti',btnReplaceAll:'Pakeisti visus',btnUndo:'AtÅ¡aukti',noSuggestions:'- NÄ—ra pasiÅ«lymų -',progress:'Vyksta raÅ¡ybos tikrinimas...',noMispell:'RaÅ¡ybos tikrinimas baigtas: Nerasta raÅ¡ybos klaidų',noChanges:'RaÅ¡ybos tikrinimas baigtas: NÄ—ra pakeistų žodžių',oneChange:'RaÅ¡ybos tikrinimas baigtas: Vienas žodis pakeistas',manyChanges:'RaÅ¡ybos tikrinimas baigtas: Pakeista %1 žodžių',ieSpellDownload:'RaÅ¡ybos tikrinimas neinstaliuotas. Ar JÅ«s norite jį dabar atsisiųsti?'},smiley:{toolbar:'Veideliai',title:'Ä®terpti veidelį',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numeruotas sÄ…raÅ¡as',bulletedlist:'Suženklintas sÄ…raÅ¡as',indent:'Padidinti įtraukÄ…',outdent:'Sumažinti įtraukÄ…',justify:{left:'Lygiuoti kairÄ™',center:'Centruoti',right:'Lygiuoti deÅ¡inÄ™',block:'Lygiuoti abi puses'},blockquote:'Citata',clipboard:{title:'Ä®dÄ—ti',cutError:'JÅ«sų narÅ¡yklÄ—s saugumo nustatymai neleidžia redaktoriui automatiÅ¡kai įvykdyti iÅ¡kirpimo operacijų. Tam praÅ¡ome naudoti klaviatÅ«rÄ… (Ctrl/Cmd+X).',copyError:'JÅ«sų narÅ¡yklÄ—s saugumo nustatymai neleidžia redaktoriui automatiÅ¡kai įvykdyti kopijavimo operacijų. Tam praÅ¡ome naudoti klaviatÅ«rÄ… (Ctrl/Cmd+C).',pasteMsg:'Žemiau esanÄiame įvedimo lauke įdÄ—kite tekstÄ…, naudodami klaviatÅ«rÄ… (<STRONG>Ctrl/Cmd+V</STRONG>) ir paspauskite mygtukÄ… <STRONG>OK</STRONG>.',securityMsg:'DÄ—l jÅ«sų narÅ¡yklÄ—s saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartÄ… į šį langÄ….',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Ä®dÄ—ti iÅ¡ Word',title:'Ä®dÄ—ti iÅ¡ Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Ä®dÄ—ti kaip grynÄ… tekstÄ…',title:'Ä®dÄ—ti kaip grynÄ… tekstÄ…'},templates:{button:'Å ablonai',title:'Turinio Å¡ablonai',options:'Template Options',insertOption:'Pakeisti dabartinį turinį pasirinktu Å¡ablonu',selectPromptMsg:'Pasirinkite norimÄ… Å¡ablonÄ…<br>(<b>DÄ—mesio!</b> esamas turinys bus prarastas):',emptyListMsg:'(Å ablonų sÄ…raÅ¡as tuÅ¡Äias)'},showBlocks:'Rodyti blokus',stylesCombo:{label:'Stilius',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Å rifto formatas',panelTitle:'Å rifto formatas',tag_p:'Normalus',tag_pre:'Formuotas',tag_address:'Kreipinio',tag_h1:'AntraÅ¡tinis 1',tag_h2:'AntraÅ¡tinis 2',tag_h3:'AntraÅ¡tinis 3',tag_h4:'AntraÅ¡tinis 4',tag_h5:'AntraÅ¡tinis 5',tag_h6:'AntraÅ¡tinis 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Å riftas',voiceLabel:'Font',panelTitle:'Å riftas'},fontSize:{label:'Å rifto dydis',voiceLabel:'Font Size',panelTitle:'Å rifto dydis'},colorButton:{textColorTitle:'Teksto spalva',bgColorTitle:'Fono spalva',panelTitle:'Colors',auto:'Automatinis',more:'Daugiau spalvų...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/lv.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/lv.js
new file mode 100644
index 000000000..e58fdf635
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/lv.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.lv={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'HTML kods',newPage:'Jauna lapa',save:'SaglabÄt',preview:'PÄrskatÄ«t',cut:'Izgriezt',copy:'KopÄ“t',paste:'Ievietot',print:'DrukÄt',underline:'ApakÅ¡svÄ«tra',bold:'Treknu Å¡riftu',italic:'SlÄ«prakstÄ',selectAll:'IezÄ«mÄ“t visu',removeFormat:'Noņemt stilus',strike:'PÄrsvÄ«trots',subscript:'ZemrakstÄ',superscript:'AugÅ¡rakstÄ',horizontalrule:'Ievietot horizontÄlu AtdalÄ«tÄjsvÄ«tru',pagebreak:'Ievietot lapas pÄrtraukumu',unlink:'Noņemt hipersaiti',undo:'Atcelt',redo:'AtkÄrtot',common:{browseServer:'SkatÄ«t servera saturu',url:'URL',protocol:'Protokols',upload:'AugÅ¡upielÄdÄ“t',uploadSubmit:'NosÅ«tÄ«t serverim',image:'AttÄ“ls',flash:'Flash',form:'Forma',checkbox:'AtzÄ«mēšanas kastÄ«te',radio:'IzvÄ“les poga',textField:'Teksta rinda',textarea:'Teksta laukums',hiddenField:'PaslÄ“pta teksta rinda',button:'Poga',select:'IezÄ«mēšanas lauks',imageButton:'AttÄ“lpoga',notSet:'<nav iestatÄ«ts>',id:'Id',name:'Nosaukums',langDir:'Valodas lasīšanas virziens',langDirLtr:'No kreisÄs uz labo (LTR)',langDirRtl:'No labÄs uz kreiso (RTL)',langCode:'Valodas kods',longDescr:'Gara apraksta Hipersaite',cssClass:'Stilu saraksta klases',advisoryTitle:'KonsultatÄ«vs virsraksts',cssStyle:'Stils',ok:'DarÄ«ts!',cancel:'Atcelt',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'IzvÄ“rstais',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ievietot speciÄlo simbolu',title:'Ievietot Ä«paÅ¡u simbolu',options:'Special Character Options'},link:{toolbar:'Ievietot/Labot hipersaiti',other:'<cits>',menu:'Labot hipersaiti',title:'Hipersaite',info:'Hipersaites informÄcija',target:'MÄ“rÄ·is',upload:'AugÅ¡upielÄdÄ“t',advanced:'IzvÄ“rstais',type:'Hipersaites tips',toUrl:'URL',toAnchor:'IezÄ«me Å¡ajÄ lapÄ',toEmail:'E-pasts',targetFrame:'<ietvars>',targetPopup:'<uznirstoÅ¡Ä logÄ>',targetFrameName:'MÄ“rÄ·a ietvara nosaukums',targetPopupName:'UznirstoÅ¡Ä loga nosaukums',popupFeatures:'UznirstoÅ¡Ä loga nosaukums Ä«pašības',popupResizable:'Resizable',popupStatusBar:'Statusa josla',popupLocationBar:'AtraÅ¡anÄs vietas josla',popupToolbar:'RÄ«ku josla',popupMenuBar:'IzvÄ“lnes josla',popupFullScreen:'PilnÄ ekrÄnÄ (IE)',popupScrollBars:'Ritjoslas',popupDependent:'AtkarÄ«gs (Netscape)',popupWidth:'Platums',popupLeft:'KreisÄ koordinÄte',popupHeight:'Augstums',popupTop:'AugšējÄ koordinÄte',id:'Id',langDir:'Valodas lasīšanas virziens',langDirLTR:'No kreisÄs uz labo (LTR)',langDirRTL:'No labÄs uz kreiso (RTL)',acccessKey:'Pieejas kods',name:'Nosaukums',langCode:'Valodas lasīšanas virziens',tabIndex:'Ciļņu indekss',advisoryTitle:'KonsultatÄ«vs virsraksts',advisoryContentType:'KonsultatÄ«vs satura tips',cssClasses:'Stilu saraksta klases',charset:'PievienotÄ resursa kodu tabula',styles:'Stils',selectAnchor:'IzvÄ“lÄ“ties iezÄ«mi',anchorName:'PÄ“c iezÄ«mes nosaukuma',anchorId:'PÄ“c elementa ID',emailAddress:'E-pasta adrese',emailSubject:'Ziņas tÄ“ma',emailBody:'Ziņas saturs',noAnchors:'(Å ajÄ dokumentÄ nav iezÄ«mju)',noUrl:'LÅ«dzu norÄdi hipersaiti',noEmail:'LÅ«dzu norÄdi e-pasta adresi'},anchor:{toolbar:'Ievietot/Labot iezÄ«mi',menu:'IezÄ«mes Ä«pašības',title:'IezÄ«mes Ä«pašības',name:'IezÄ«mes nosaukums',errorName:'LÅ«dzu norÄdiet iezÄ«mes nosaukumu'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'MeklÄ“t',replace:'NomainÄ«t',findWhat:'MeklÄ“t:',replaceWith:'NomainÄ«t uz:',notFoundMsg:'NorÄdÄ«tÄ frÄze netika atrasta.',matchCase:'ReÄ£istrjÅ«tÄ«gs',matchWord:'JÄsakrÄ«t pilnÄ«bÄ',matchCyclic:'Match cyclic',replaceAll:'Aizvietot visu',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabula',title:'Tabulas Ä«pašības',menu:'Tabulas Ä«pašības',deleteTable:'DzÄ“st tabulu',rows:'Rindas',columns:'Kolonnas',border:'RÄmja izmÄ“rs',align:'Novietojums',alignLeft:'Pa kreisi',alignCenter:'CentrÄ“ti',alignRight:'Pa labi',width:'Platums',widthPx:'pikseļos',widthPc:'procentuÄli',widthUnit:'width unit',height:'Augstums',cellSpace:'RÅ«tiņu atstatums',cellPad:'RÅ«tiņu nobÄ«de',caption:'LeÄ£enda',summary:'AnotÄcija',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Å Å«na',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'DzÄ“st rÅ«tiņas',merge:'Apvienot rÅ«tiņas',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rinda',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'DzÄ“st rindas'},column:{menu:'Kolonna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'DzÄ“st kolonnas'}},button:{title:'Pogas Ä«pašības',text:'Teksts (vÄ“rtÄ«ba)',type:'Tips',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'AtzÄ«mēšanas kastÄ«tes Ä«pašības',radioTitle:'IzvÄ“les poga Ä«pašības',value:'VÄ“rtÄ«ba',selected:'IezÄ«mÄ“ts'},form:{title:'Formas Ä«pašības',menu:'Formas Ä«pašības',action:'DarbÄ«ba',method:'Metode',encoding:'Encoding'},select:{title:'IezÄ«mēšanas lauka Ä«pašības',selectInfo:'InformÄcija',opAvail:'PieejamÄs iespÄ“jas',value:'VÄ“rtÄ«ba',size:'IzmÄ“rs',lines:'rindas',chkMulti:'Atļaut vairÄkus iezÄ«mÄ“jumus',opText:'Teksts',opValue:'VÄ“rtÄ«ba',btnAdd:'Pievienot',btnModify:'Veikt izmaiņas',btnUp:'AugÅ¡up',btnDown:'Lejup',btnSetValue:'Noteikt kÄ iezÄ«mÄ“to vÄ“rtÄ«bu',btnDelete:'DzÄ“st'},textarea:{title:'Teksta laukuma Ä«pašības',cols:'Kolonnas',rows:'Rindas'},textfield:{title:'Teksta rindas Ä«pašības',name:'Nosaukums',value:'VÄ“rtÄ«ba',charWidth:'Simbolu platums',maxChars:'Simbolu maksimÄlais daudzums',type:'Tips',typeText:'Teksts',typePass:'Parole'},hidden:{title:'PaslÄ“ptÄs teksta rindas Ä«pašības',name:'Nosaukums',value:'VÄ“rtÄ«ba'},image:{title:'AttÄ“la Ä«pašības',titleButton:'AttÄ“lpogas Ä«pašības',menu:'AttÄ“la Ä«pašības',infoTab:'InformÄcija par attÄ“lu',btnUpload:'NosÅ«tÄ«t serverim',upload:'AugÅ¡upielÄdÄ“t',alt:'AlternatÄ«vais teksts',width:'Platums',height:'Augstums',lockRatio:'NemainÄ«ga Augstuma/Platuma attiecÄ«ba',unlockRatio:'Unlock Ratio',resetSize:'Atjaunot sÄkotnÄ“jo izmÄ“ru',border:'RÄmis',hSpace:'HorizontÄlÄ telpa',vSpace:'VertikÄlÄ telpa',align:'NolÄ«dzinÄt',alignLeft:'Pa kreisi',alignRight:'Pa labi',alertUrl:'LÅ«dzu norÄdÄ«t attÄ“la hipersaiti',linkTab:'Hipersaite',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Ä«pašības',propertiesTab:'Properties',title:'Flash Ä«pašības',chkPlay:'AutomÄtiska atskaņoÅ¡ana',chkLoop:'NepÄrtraukti',chkMenu:'Atļaut Flash izvÄ“lni',chkFull:'Allow Fullscreen',scale:'MainÄ«t izmÄ“ru',scaleAll:'RÄdÄ«t visu',scaleNoBorder:'Bez rÄmja',scaleFit:'PrecÄ«zs izmÄ“rs',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'NolÄ«dzinÄt',alignLeft:'Pa kreisi',alignAbsBottom:'AbsolÅ«ti apakÅ¡Ä',alignAbsMiddle:'AbsolÅ«ti vertikÄli centrÄ“ts',alignBaseline:'PamatrindÄ',alignBottom:'ApakÅ¡Ä',alignMiddle:'VertikÄli centrÄ“ts',alignRight:'Pa labi',alignTextTop:'Teksta augÅ¡Ä',alignTop:'AugÅ¡Ä',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Fona krÄsa',width:'Platums',height:'Augstums',hSpace:'HorizontÄlÄ telpa',vSpace:'VertikÄlÄ telpa',validateSrc:'LÅ«dzu norÄdi hipersaiti',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'PareizrakstÄ«bas pÄrbaude',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Netika atrasts vÄrdnÄ«cÄ',changeTo:'NomainÄ«t uz',btnIgnore:'IgnorÄ“t',btnIgnoreAll:'IgnorÄ“t visu',btnReplace:'Aizvietot',btnReplaceAll:'Aizvietot visu',btnUndo:'Atcelt',noSuggestions:'- Nav ieteikumu -',progress:'Notiek pareizrakstÄ«bas pÄrbaude...',noMispell:'PareizrakstÄ«bas pÄrbaude pabeigta: kļūdas netika atrastas',noChanges:'PareizrakstÄ«bas pÄrbaude pabeigta: nekas netika labots',oneChange:'PareizrakstÄ«bas pÄrbaude pabeigta: 1 vÄrds izmainÄ«ts',manyChanges:'PareizrakstÄ«bas pÄrbaude pabeigta: %1 vÄrdi tika mainÄ«ti',ieSpellDownload:'PareizrakstÄ«bas pÄrbaudÄ«tÄjs nav pievienots. Vai vÄ“laties to lejupielÄdÄ“t tagad?'},smiley:{toolbar:'Smaidiņi',title:'Ievietot smaidiņu',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'NumurÄ“ts saraksts',bulletedlist:'Izcelts saraksts',indent:'PalielinÄt atkÄpi',outdent:'SamazinÄt atkÄpi',justify:{left:'IzlÄ«dzinÄt pa kreisi',center:'IzlÄ«dzinÄt pret centru',right:'IzlÄ«dzinÄt pa labi',block:'IzlÄ«dzinÄt malas'},blockquote:'Block Quote',clipboard:{title:'Ievietot',cutError:'JÅ«su pÄrlÅ«kprogrammas drošības iestatÄ«jumi nepieļauj editoram automÄtiski veikt izgrieÅ¡anas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl/Cmd+X, lai veiktu Å¡o darbÄ«bu.',copyError:'JÅ«su pÄrlÅ«kprogrammas drošības iestatÄ«jumi nepieļauj editoram automÄtiski veikt kopēšanas darbÄ«bu. LÅ«dzu, izmantojiet (Ctrl/Cmd+C), lai veiktu Å¡o darbÄ«bu.',pasteMsg:'LÅ«dzu, ievietojiet tekstu Å¡ajÄ laukumÄ, izmantojot klaviatÅ«ru (<STRONG>Ctrl/Cmd+V</STRONG>) un apstipriniet ar <STRONG>DarÄ«ts!</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Ievietot no Worda',title:'Ievietot no Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Ievietot kÄ vienkÄrÅ¡u tekstu',title:'Ievietot kÄ vienkÄrÅ¡u tekstu'},templates:{button:'Sagataves',title:'Satura sagataves',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'LÅ«dzu, norÄdiet sagatavi, ko atvÄ“rt editorÄ<br>(patreizÄ“jie dati tiks zaudÄ“ti):',emptyListMsg:'(Nav norÄdÄ«tas sagataves)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stils',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'FormÄts',panelTitle:'FormÄts',tag_p:'NormÄls teksts',tag_pre:'FormatÄ“ts teksts',tag_address:'Adrese',tag_h1:'Virsraksts 1',tag_h2:'Virsraksts 2',tag_h3:'Virsraksts 3',tag_h4:'Virsraksts 4',tag_h5:'Virsraksts 5',tag_h6:'Virsraksts 6',tag_div:'Rindkopa (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Å rifts',voiceLabel:'Font',panelTitle:'Å rifts'},fontSize:{label:'IzmÄ“rs',voiceLabel:'Font Size',panelTitle:'IzmÄ“rs'},colorButton:{textColorTitle:'Teksta krÄsa',bgColorTitle:'Fona krÄsa',panelTitle:'Colors',auto:'AutomÄtiska',more:'PlaÅ¡Äka palete...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/mn.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/mn.js
new file mode 100644
index 000000000..00e647e7a
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/mn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.mn={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Код',newPage:'Ð¨Ð¸Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñ',save:'Хадгалах',preview:'Уридчлан харах',cut:'Хайчлах',copy:'Хуулах',paste:'Буулгах',print:'Ð¥ÑвлÑÑ…',underline:'Доогуур нь зурааÑтай болгох',bold:'Тод бүдүүн',italic:'Ðалуу',selectAll:'Бүгдийг нь Ñонгох',removeFormat:'Формат авч хаÑÑ…',strike:'Дундуур нь зурааÑтай болгох',subscript:'Суурь болгох',superscript:'ЗÑÑ€Ñг болгох',horizontalrule:'Хөндлөн Ð·ÑƒÑ€Ð°Ð°Ñ Ð¾Ñ€ÑƒÑƒÐ»Ð°Ñ…',pagebreak:'Ð¥ÑƒÑƒÐ´Ð°Ñ Ñ‚ÑƒÑгаарлагч оруулах',unlink:'Линк авч хаÑÑ…',undo:'Хүчингүй болгох',redo:'Өмнөх үйлдлÑÑ ÑÑргÑÑÑ…',common:{browseServer:'Сервер харуулах',url:'URL',protocol:'Протокол',upload:'Хуулах',uploadSubmit:'Үүнийг ÑервÑррүү илгÑÑ',image:'Зураг',flash:'Флаш',form:'Форм',checkbox:'ЧекбокÑ',radio:'Радио товч',textField:'Техт талбар',textarea:'Техт орчин',hiddenField:'Ðууц талбар',button:'Товч',select:'Сонгогч талбар',imageButton:'Зурагтай товч',notSet:'<Оноохгүй>',id:'Id',name:'ÐÑÑ€',langDir:'Ð¥Ñлний чиглÑл',langDirLtr:'ЗүүнÑÑÑ Ð±Ð°Ñ€ÑƒÑƒÐ½ (LTR)',langDirRtl:'Ð‘Ð°Ñ€ÑƒÑƒÐ½Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ (RTL)',langCode:'Ð¥Ñлний код',longDescr:'URL-ын тайлбар',cssClass:'Stylesheet клаÑÑууд',advisoryTitle:'Зөвлөлдөх гарчиг',cssStyle:'Загвар',ok:'OK',cancel:'Болих',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'ÐÑмÑлт',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Онцгой Ñ‚ÑмдÑгт оруулах',title:'Онцгой Ñ‚ÑмдÑгт Ñонгох',options:'Special Character Options'},link:{toolbar:'Линк Оруулах/ЗаÑварлах',other:'<other>',menu:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð·Ð°Ñварлах',title:'Линк',info:'Линкийн мÑдÑÑлÑл',target:'Байрлал',upload:'Хуулах',advanced:'ÐÑмÑлт',type:'Линкийн төрөл',toUrl:'URL',toAnchor:'Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñандах холбооÑ',toEmail:'E-Mail',targetFrame:'<Ðгуулах хүрÑÑ>',targetPopup:'<popup цонх>',targetFrameName:'Очих фремын нÑÑ€',targetPopupName:'Popup цонхны нÑÑ€',popupFeatures:'Popup цонхны онцлог',popupResizable:'Resizable',popupStatusBar:'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñ…ÑÑÑг',popupLocationBar:'Location Ñ…ÑÑÑг',popupToolbar:'Багажны Ñ…ÑÑÑг',popupMenuBar:'Meню Ñ…ÑÑÑг',popupFullScreen:'Цонх дүүргÑÑ… (IE)',popupScrollBars:'Скрол Ñ…ÑÑÑгүүд',popupDependent:'Хамаатай (Netscape)',popupWidth:'Өргөн',popupLeft:'Зүүн байрлал',popupHeight:'Өндөр',popupTop:'ДÑÑд байрлал',id:'Id',langDir:'Ð¥Ñлний чиглÑл',langDirLTR:'ЗүүнÑÑÑ Ð±Ð°Ñ€ÑƒÑƒÐ½ (LTR)',langDirRTL:'Ð‘Ð°Ñ€ÑƒÑƒÐ½Ð°Ð°Ñ Ð·Ò¯Ò¯Ð½ (RTL)',acccessKey:'Холбох түлхүүр',name:'ÐÑÑ€',langCode:'Ð¥Ñлний чиглÑл',tabIndex:'Tab индекÑ',advisoryTitle:'Зөвлөлдөх гарчиг',advisoryContentType:'Зөвлөлдөх төрлийн агуулга',cssClasses:'Stylesheet клаÑÑууд',charset:'ТÑмдÑгт оноох нөөцөд холбогдÑон',styles:'Загвар',selectAnchor:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ñонгох',anchorName:'ХолбооÑын нÑÑ€ÑÑÑ€',anchorId:'ЭлемÑнт Id-гаар',emailAddress:'E-Mail ХаÑг',emailSubject:'Message гарчиг',emailBody:'Message-ийн агуулга',noAnchors:'(Баримт бичиг холбооÑгүй байна)',noUrl:'Линк URL-ÑÑ Ñ‚Ó©Ñ€Ó©Ð»Ð¶Ò¯Ò¯Ð»Ð½Ñ Ò¯Ò¯',noEmail:'Е-mail хаÑгаа Ñ‚Ó©Ñ€Ó©Ð»Ð¶Ò¯Ò¯Ð»Ð½Ñ Ò¯Ò¯'},anchor:{toolbar:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ ÐžÑ€ÑƒÑƒÐ»Ð°Ñ…/ЗаÑварлах',menu:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ ÑˆÐ¸Ð½Ð¶ чанар',title:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ ÑˆÐ¸Ð½Ð¶ чанар',name:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð½ÑÑ€',errorName:'Ð¥Ð¾Ð»Ð±Ð¾Ð¾Ñ Ñ‚Ó©Ñ€Ó©Ð» оруулна уу'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Хай мөн Дарж бич',find:'Хайх',replace:'Солих',findWhat:'Хайх үг/Ò¯ÑÑг:',replaceWith:'Солих үг:',notFoundMsg:'ХайÑан текÑÑ‚ олÑонгүй.',matchCase:'ТÑнцÑÑ… төлөв',matchWord:'ТÑнцÑÑ… бүтÑн үг',matchCyclic:'Match cyclic',replaceAll:'Бүгдийг нь Солих',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Ð¥Ò¯ÑнÑгт',title:'Ð¥Ò¯ÑнÑгт',menu:'Ð¥Ò¯ÑнÑгт',deleteTable:'Ð¥Ò¯ÑнÑгт уÑтгах',rows:'Мөр',columns:'Багана',border:'ХүрÑÑний Ñ…ÑмжÑÑ',align:'ЭгнÑÑ',alignLeft:'Зүүн талд',alignCenter:'Төвд',alignRight:'Баруун талд',width:'Өргөн',widthPx:'цÑг',widthPc:'хувь',widthUnit:'width unit',height:'Өндөр',cellSpace:'Ðүх хоорондын зай (spacing)',cellPad:'Ðүх доторлох(padding)',caption:'Тайлбар',summary:'Тайлбар',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Ðүх/зай',insertBefore:'Ðүх/зай өмнө нь оруулах',insertAfter:'Ðүх/зай дараа нь оруулах',deleteCell:'Ðүх уÑтгах',merge:'Ðүх нÑгтÑÑ…',mergeRight:'Баруун тийш нÑгтгÑÑ…',mergeDown:'Доош нÑгтгÑÑ…',splitHorizontal:'Ðүх/зайг боÑоогоор нь туÑгаарлах',splitVertical:'Ðүх/зайг хөндлөнгөөр нь туÑгаарлах',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Мөр',insertBefore:'Мөр өмнө нь оруулах',insertAfter:'Мөр дараа нь оруулах',deleteRow:'Мөр уÑтгах'},column:{menu:'Багана',insertBefore:'Багана өмнө нь оруулах',insertAfter:'Багана дараа нь оруулах',deleteColumn:'Багана уÑтгах'}},button:{title:'Товчны шинж чанар',text:'ТÑкÑÑ‚ (Утга)',type:'Төрөл',typeBtn:'Товч',typeSbm:'Submit',typeRst:'Болих'},checkboxAndRadio:{checkboxTitle:'ЧекбокÑны шинж чанар',radioTitle:'Радио товчны шинж чанар',value:'Утга',selected:'СонгогдÑон'},form:{title:'Форм шинж чанар',menu:'Форм шинж чанар',action:'ҮйлдÑл',method:'Ðрга',encoding:'Encoding'},select:{title:'Согогч талбарын шинж чанар',selectInfo:'МÑдÑÑлÑл',opAvail:'ИдвÑÑ…Ñ‚Ñй Ñонголт',value:'Утга',size:'Ð¥ÑмжÑÑ',lines:'Мөр',chkMulti:'Олон Ñонголт зөвшөөрөх',opText:'ТÑкÑÑ‚',opValue:'Утга',btnAdd:'ÐÑмÑÑ…',btnModify:'Өөрчлөх',btnUp:'ДÑÑш',btnDown:'Доош',btnSetValue:'СонгогдÑан утга оноох',btnDelete:'УÑтгах'},textarea:{title:'ТекÑÑ‚ орчны шинж чанар',cols:'Багана',rows:'Мөр'},textfield:{title:'ТекÑÑ‚ талбарын шинж чанар',name:'ÐÑÑ€',value:'Утга',charWidth:'ТÑмдÑгтын өргөн',maxChars:'Хамгийн их Ñ‚ÑмдÑгт',type:'Төрөл',typeText:'ТекÑÑ‚',typePass:'Ðууц үг'},hidden:{title:'Ðууц талбарын шинж чанар',name:'ÐÑÑ€',value:'Утга'},image:{title:'Зураг',titleButton:'Зурган товчны шинж чанар',menu:'Зураг',infoTab:'Зурагны мÑдÑÑлÑл',btnUpload:'Үүнийг ÑервÑррүү илгÑÑ',upload:'Хуулах',alt:'Тайлбар текÑÑ‚',width:'Өргөн',height:'Өндөр',lockRatio:'Радио түгжих',unlockRatio:'Unlock Ratio',resetSize:'Ñ…ÑмжÑÑ Ð´Ð°Ñ…Ð¸Ð½ оноох',border:'ХүрÑÑ',hSpace:'Хөндлөн зай',vSpace:'БоÑоо зай',align:'ЭгнÑÑ',alignLeft:'Зүүн',alignRight:'Баруун',alertUrl:'Зурагны URL-ын төрлийн Ñонгоно уу',linkTab:'Линк',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Флаш шинж чанар',propertiesTab:'Properties',title:'Флаш шинж чанар',chkPlay:'Ðвтоматаар тоглох',chkLoop:'Давтах',chkMenu:'Флаш цÑÑ Ð¸Ð´Ð²ÑхжүүлÑÑ…',chkFull:'Allow Fullscreen',scale:'Өргөгтгөх',scaleAll:'Бүгдийг харуулах',scaleNoBorder:'ХүрÑÑгүй',scaleFit:'Яг тааруулах',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'ЭгнÑÑ',alignLeft:'Зүүн',alignAbsBottom:'Abs доод талд',alignAbsMiddle:'Abs Дунд талд',alignBaseline:'Baseline',alignBottom:'Доод талд',alignMiddle:'Дунд талд',alignRight:'Баруун',alignTextTop:'ТекÑÑ‚ дÑÑÑ€',alignTop:'ДÑÑд талд',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Фонны өнгө',width:'Өргөн',height:'Өндөр',hSpace:'Хөндлөн зай',vSpace:'БоÑоо зай',validateSrc:'Линк URL-ÑÑ Ñ‚Ó©Ñ€Ó©Ð»Ð¶Ò¯Ò¯Ð»Ð½Ñ Ò¯Ò¯',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Үгийн дүрÑÑ… шалгах',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Толь бичиггүй',changeTo:'Өөрчлөх',btnIgnore:'Зөвшөөрөх',btnIgnoreAll:'Бүгдийг зөвшөөрөх',btnReplace:'Дарж бичих',btnReplaceAll:'Бүгдийг Дарж бичих',btnUndo:'Буцаах',noSuggestions:'- Тайлбаргүй -',progress:'ДүрÑм шалгаж байгаа үйл Ñвц...',noMispell:'ДүрÑм шалгаад дууÑÑан: Ðлдаа олдÑонгүй',noChanges:'ДүрÑм шалгаад дууÑÑан: үг өөрчлөгдөөгүй',oneChange:'ДүрÑм шалгаад дууÑÑан: 1 үг өөрчлөгдÑөн',manyChanges:'ДүрÑм шалгаад дууÑÑан: %1 үг өөрчлөгдÑөн',ieSpellDownload:'ДүрÑм шалгагч Ñуугаагүй байна. Татаж авахыг Ñ…Ò¯Ñч байна уу?'},smiley:{toolbar:'Тодорхойлолт',title:'Тодорхойлолт оруулах',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'ДугаарлагдÑан жагÑаалт',bulletedlist:'ЦÑгтÑй жагÑаалт',indent:'Догол мөр хаÑах',outdent:'Догол мөр нÑмÑÑ…',justify:{left:'Зүүн талд байрлуулах',center:'Төвд байрлуулах',right:'Баруун талд байрлуулах',block:'Блок Ñ…ÑлбÑÑ€ÑÑÑ€ байрлуулах'},blockquote:'Хайрцаглах',clipboard:{title:'Буулгах',cutError:'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хоÑлолыг ашиглана уу.',copyError:'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдÑлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хоÑлолыг ашиглана уу.',pasteMsg:'(<strong>Ctrl/Cmd+V</strong>) товчийг ашиглан paste Ñ…Ð¸Ð¹Ð½Ñ Ò¯Ò¯. Мөн <strong>OK</strong> дар.',securityMsg:'Таны үзүүлÑгч/browser/-н хамгаалалтын Ñ‚Ð¾Ñ…Ð¸Ñ€Ð³Ð¾Ð¾Ð½Ð¾Ð¾Ñ Ð±Ð¾Ð»Ð¾Ð¾Ð´ editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Ð­Ð½Ñ Ñ†Ð¾Ð½Ñ…Ð¾Ð´ дахин paste хийхийг оролд.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…',title:'Word-Ð¾Ð¾Ñ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Plain Text-ÑÑÑ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…',title:'Plain Text-ÑÑÑ Ð±ÑƒÑƒÐ»Ð³Ð°Ñ…'},templates:{button:'Загварууд',title:'Загварын агуулга',options:'Template Options',insertOption:'Одоогийн агууллагыг дарж бичих',selectPromptMsg:'Загварыг нÑÑж editor-Ñ€Ò¯Ò¯ Ñонгож оруулна уу<br />(Одоогийн агууллагыг уÑтаж магадгүй):',emptyListMsg:'(Загвар тодорхойлогдоогүй байна)'},showBlocks:'Block-уудыг үзүүлÑÑ…',stylesCombo:{label:'Загвар',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',panelTitle:'Формат',tag_p:'Ð¥Ñвийн',tag_pre:'Formatted',tag_address:'ХаÑг',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Paragraph (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Фонт',voiceLabel:'Font',panelTitle:'Фонт'},fontSize:{label:'Ð¥ÑмжÑÑ',voiceLabel:'Font Size',panelTitle:'Ð¥ÑмжÑÑ'},colorButton:{textColorTitle:'Фонтны өнгө',bgColorTitle:'Фонны өнгө',panelTitle:'Colors',auto:'Ðвтоматаар',more:'ÐÑмÑлт өнгөнүүд...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ms.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ms.js
new file mode 100644
index 000000000..14ba2db33
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ms.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ms={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Sumber',newPage:'Helaian Baru',save:'Simpan',preview:'Prebiu',cut:'Potong',copy:'Salin',paste:'Tampal',print:'Cetak',underline:'Underline',bold:'Bold',italic:'Italic',selectAll:'Pilih Semua',removeFormat:'Buang Format',strike:'Strike Through',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Masukkan Garisan Membujur',pagebreak:'Insert Page Break for Printing',unlink:'Buang Sambungan',undo:'Batalkan',redo:'Ulangkan',common:{browseServer:'Browse Server',url:'URL',protocol:'Protokol',upload:'Muat Naik',uploadSubmit:'Hantar ke Server',image:'Gambar',flash:'Flash',form:'Borang',checkbox:'Checkbox',radio:'Butang Radio',textField:'Text Field',textarea:'Textarea',hiddenField:'Field Tersembunyi',button:'Butang',select:'Field Pilihan',imageButton:'Butang Bergambar',notSet:'<tidak di set>',id:'Id',name:'Nama',langDir:'Arah Tulisan',langDirLtr:'Kiri ke Kanan (LTR)',langDirRtl:'Kanan ke Kiri (RTL)',langCode:'Kod Bahasa',longDescr:'Butiran Panjang URL',cssClass:'Kelas-kelas Stylesheet',advisoryTitle:'Tajuk Makluman',cssStyle:'Stail',ok:'OK',cancel:'Batal',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Advanced',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Masukkan Huruf Istimewa',title:'Sila pilih huruf istimewa',options:'Special Character Options'},link:{toolbar:'Masukkan/Sunting Sambungan',other:'<lain>',menu:'Sunting Sambungan',title:'Sambungan',info:'Butiran Sambungan',target:'Sasaran',upload:'Muat Naik',advanced:'Advanced',type:'Jenis Sambungan',toUrl:'URL',toAnchor:'Pautan dalam muka surat ini',toEmail:'E-Mail',targetFrame:'<bingkai>',targetPopup:'<tetingkap popup>',targetFrameName:'Nama Bingkai Sasaran',targetPopupName:'Nama Tetingkap Popup',popupFeatures:'Ciri Tetingkap Popup',popupResizable:'Resizable',popupStatusBar:'Bar Status',popupLocationBar:'Bar Lokasi',popupToolbar:'Toolbar',popupMenuBar:'Bar Menu',popupFullScreen:'Skrin Penuh (IE)',popupScrollBars:'Bar-bar skrol',popupDependent:'Bergantungan (Netscape)',popupWidth:'Lebar',popupLeft:'Posisi Kiri',popupHeight:'Tinggi',popupTop:'Posisi Atas',id:'Id',langDir:'Arah Tulisan',langDirLTR:'Kiri ke Kanan (LTR)',langDirRTL:'Kanan ke Kiri (RTL)',acccessKey:'Kunci Akses',name:'Nama',langCode:'Arah Tulisan',tabIndex:'Indeks Tab ',advisoryTitle:'Tajuk Makluman',advisoryContentType:'Jenis Kandungan Makluman',cssClasses:'Kelas-kelas Stylesheet',charset:'Linked Resource Charset',styles:'Stail',selectAnchor:'Sila pilih pautan',anchorName:'dengan menggunakan nama pautan',anchorId:'dengan menggunakan ID elemen',emailAddress:'Alamat E-Mail',emailSubject:'Subjek Mesej',emailBody:'Isi Kandungan Mesej',noAnchors:'(Tiada pautan terdapat dalam dokumen ini)',noUrl:'Sila taip sambungan URL',noEmail:'Sila taip alamat e-mail'},anchor:{toolbar:'Masukkan/Sunting Pautan',menu:'Ciri-ciri Pautan',title:'Ciri-ciri Pautan',name:'Nama Pautan',errorName:'Sila taip nama pautan'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Cari',replace:'Ganti',findWhat:'Perkataan yang dicari:',replaceWith:'Diganti dengan:',notFoundMsg:'Text yang dicari tidak dijumpai.',matchCase:'Padanan case huruf',matchWord:'Padana Keseluruhan perkataan',matchCyclic:'Match cyclic',replaceAll:'Ganti semua',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Jadual',title:'Ciri-ciri Jadual',menu:'Ciri-ciri Jadual',deleteTable:'Delete Table',rows:'Barisan',columns:'Jaluran',border:'Saiz Border',align:'Penjajaran',alignLeft:'Kiri',alignCenter:'Tengah',alignRight:'Kanan',width:'Lebar',widthPx:'piksel-piksel',widthPc:'peratus',widthUnit:'width unit',height:'Tinggi',cellSpace:'Ruangan Antara Sel',cellPad:'Tambahan Ruang Sel',caption:'Keterangan',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Buangkan Sel-sel',merge:'Cantumkan Sel-sel',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Buangkan Baris'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Buangkan Lajur'}},button:{title:'Ciri-ciri Butang',text:'Teks (Nilai)',type:'Jenis',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Ciri-ciri Checkbox',radioTitle:'Ciri-ciri Butang Radio',value:'Nilai',selected:'Dipilih'},form:{title:'Ciri-ciri Borang',menu:'Ciri-ciri Borang',action:'Tindakan borang',method:'Cara borang dihantar',encoding:'Encoding'},select:{title:'Ciri-ciri Selection Field',selectInfo:'Select Info',opAvail:'Pilihan sediada',value:'Nilai',size:'Saiz',lines:'garisan',chkMulti:'Benarkan pilihan pelbagai',opText:'Teks',opValue:'Nilai',btnAdd:'Tambah Pilihan',btnModify:'Ubah Pilihan',btnUp:'Naik ke atas',btnDown:'Turun ke bawah',btnSetValue:'Set sebagai nilai terpilih',btnDelete:'Padam'},textarea:{title:'Ciri-ciri Textarea',cols:'Lajur',rows:'Baris'},textfield:{title:'Ciri-ciri Text Field',name:'Nama',value:'Nilai',charWidth:'Lebar isian',maxChars:'Isian Maksimum',type:'Jenis',typeText:'Teks',typePass:'Kata Laluan'},hidden:{title:'Ciri-ciri Field Tersembunyi',name:'Nama',value:'Nilai'},image:{title:'Ciri-ciri Imej',titleButton:'Ciri-ciri Butang Bergambar',menu:'Ciri-ciri Imej',infoTab:'Info Imej',btnUpload:'Hantar ke Server',upload:'Muat Naik',alt:'Text Alternatif',width:'Lebar',height:'Tinggi',lockRatio:'Tetapkan Nisbah',unlockRatio:'Unlock Ratio',resetSize:'Saiz Set Semula',border:'Border',hSpace:'Ruang Melintang',vSpace:'Ruang Menegak',align:'Jajaran',alignLeft:'Kiri',alignRight:'Kanan',alertUrl:'Sila taip URL untuk fail gambar',linkTab:'Sambungan',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash Properties',propertiesTab:'Properties',title:'Flash Properties',chkPlay:'Auto Play',chkLoop:'Loop',chkMenu:'Enable Flash Menu',chkFull:'Allow Fullscreen',scale:'Scale',scaleAll:'Show all',scaleNoBorder:'No Border',scaleFit:'Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Jajaran',alignLeft:'Kiri',alignAbsBottom:'Bawah Mutlak',alignAbsMiddle:'Pertengahan Mutlak',alignBaseline:'Garis Dasar',alignBottom:'Bawah',alignMiddle:'Pertengahan',alignRight:'Kanan',alignTextTop:'Atas Text',alignTop:'Atas',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Warna Latarbelakang',width:'Lebar',height:'Tinggi',hSpace:'Ruang Melintang',vSpace:'Ruang Menegak',validateSrc:'Sila taip sambungan URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Semak Ejaan',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Tidak terdapat didalam kamus',changeTo:'Tukarkan kepada',btnIgnore:'Biar',btnIgnoreAll:'Biarkan semua',btnReplace:'Ganti',btnReplaceAll:'Gantikan Semua',btnUndo:'Batalkan',noSuggestions:'- Tiada cadangan -',progress:'Pemeriksaan ejaan sedang diproses...',noMispell:'Pemeriksaan ejaan siap: Tiada salah ejaan',noChanges:'Pemeriksaan ejaan siap: Tiada perkataan diubah',oneChange:'Pemeriksaan ejaan siap: Satu perkataan telah diubah',manyChanges:'Pemeriksaan ejaan siap: %1 perkataan diubah',ieSpellDownload:'Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?'},smiley:{toolbar:'Smiley',title:'Masukkan Smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Senarai bernombor',bulletedlist:'Senarai tidak bernombor',indent:'Tambahkan Inden',outdent:'Kurangkan Inden',justify:{left:'Jajaran Kiri',center:'Jajaran Tengah',right:'Jajaran Kanan',block:'Jajaran Blok'},blockquote:'Block Quote',clipboard:{title:'Tampal',cutError:'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).',copyError:'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).',pasteMsg:'Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Tampal dari Word',title:'Tampal dari Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Tampal sebagai text biasa',title:'Tampal sebagai text biasa'},templates:{button:'Templat',title:'Templat Kandungan',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Sila pilih templat untuk dibuka oleh editor<br>(kandungan sebenar akan hilang):',emptyListMsg:'(Tiada Templat Disimpan)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stail',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Telah Diformat',tag_address:'Alamat',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Perenggan (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Saiz',voiceLabel:'Font Size',panelTitle:'Saiz'},colorButton:{textColorTitle:'Warna Text',bgColorTitle:'Warna Latarbelakang',panelTitle:'Colors',auto:'Otomatik',more:'Warna lain-lain...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/nb.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/nb.js
new file mode 100644
index 000000000..022b7d0d0
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/nb.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.nb={dir:'ltr',editorTitle:'Rikteksteditor, %1, trykk ALT 0 for hjelp.',toolbar:'Verktøylinje',editor:'Rikteksteditor',source:'Kilde',newPage:'Ny Side',save:'Lagre',preview:'Forhåndsvis',cut:'Klipp ut',copy:'Kopier',paste:'Lim inn',print:'Skriv ut',underline:'Understrek',bold:'Fet',italic:'Kursiv',selectAll:'Merk alt',removeFormat:'Fjern format',strike:'Gjennomstrek',subscript:'Senket skrift',superscript:'Hevet skrift',horizontalrule:'Sett inn horisontal linje',pagebreak:'Sett inn sideskift',unlink:'Fjern lenke',undo:'Angre',redo:'Gjør om',common:{browseServer:'Bla igjennom server',url:'URL',protocol:'Protokoll',upload:'Last opp',uploadSubmit:'Send det til serveren',image:'Bilde',flash:'Flash',form:'Skjema',checkbox:'Avmerkingsboks',radio:'Alternativknapp',textField:'Tekstboks',textarea:'Tekstområde',hiddenField:'Skjult felt',button:'Knapp',select:'Rullegardinliste',imageButton:'Bildeknapp',notSet:'<ikke satt>',id:'Id',name:'Navn',langDir:'Språkretning',langDirLtr:'Venstre til høyre (VTH)',langDirRtl:'Høyre til venstre (HTV)',langCode:'Språkkode',longDescr:'Utvidet beskrivelse',cssClass:'Stilarkklasser',advisoryTitle:'Tittel',cssStyle:'Stil',ok:'OK',cancel:'Avbryt',close:'Lukk',preview:'Forhåndsvis',generalTab:'Generelt',advancedTab:'Avansert',validateNumberFailed:'Denne verdien er ikke ett nummer',confirmNewPage:'Alle endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?',confirmCancel:'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?',options:'Valg',target:'Mål',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, utilgjenglig</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Sett inn spesielt tegn',title:'Velg spesielt tegn',options:'Special Character Options'},link:{toolbar:'Sett inn/Rediger lenke',other:'<other>',menu:'Rediger lenke',title:'Lenke',info:'Lenkeinfo',target:'Mål',upload:'Last opp',advanced:'Avansert',type:'Lenketype',toUrl:'URL',toAnchor:'Lenke til anker i teksten',toEmail:'E-post',targetFrame:'<ramme>',targetPopup:'<popup vindu>',targetFrameName:'Målramme',targetPopupName:'Navn på popup-vindus',popupFeatures:'Egenskaper for popup-vindu',popupResizable:'Skalérbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Verktøylinje',popupMenuBar:'Menylinje',popupFullScreen:'Full skjerm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Avhenging (Netscape)',popupWidth:'Bredde',popupLeft:'Venstre posisjon',popupHeight:'Høyde',popupTop:'Topp-posisjon',id:'Id',langDir:'Språkretning',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',acccessKey:'Aksessknapp',name:'Navn',langCode:'Språkretning',tabIndex:'Tab Indeks',advisoryTitle:'Tittel',advisoryContentType:'Type',cssClasses:'Stilarkklasser',charset:'Lenket språkkart',styles:'Stil',selectAnchor:'Velg et anker',anchorName:'Anker etter navn',anchorId:'Element etter ID',emailAddress:'E-postadresse',emailSubject:'Meldingsemne',emailBody:'Melding',noAnchors:'(Ingen anker i dokumentet)',noUrl:'Vennligst skriv inn lenkens url',noEmail:'Vennligst skriv inn e-postadressen'},anchor:{toolbar:'Sett inn/Rediger anker',menu:'Egenskaper for anker',title:'Egenskaper for anker',name:'Ankernavn',errorName:'Vennligst skriv inn ankernavnet'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Søk og erstatt',find:'Søk',replace:'Erstatt',findWhat:'Søk etter:',replaceWith:'Erstatt med:',notFoundMsg:'Fant ikke søketeksten.',matchCase:'Skill mellom store og små bokstaver',matchWord:'Bare hele ord',matchCyclic:'Søk i hele dokumentet',replaceAll:'Erstatt alle',replaceSuccessMsg:'%1 tilfelle erstattet.'},table:{toolbar:'Tabell',title:'Egenskaper for tabell',menu:'Egenskaper for tabell',deleteTable:'Slett tabell',rows:'Rader',columns:'Kolonner',border:'Rammestørrelse',align:'Justering',alignLeft:'Venstre',alignCenter:'Midtjuster',alignRight:'Høyre',width:'Bredde',widthPx:'piksler',widthPc:'prosent',widthUnit:'Bredde-enhet',height:'Høyde',cellSpace:'Cellemarg',cellPad:'Cellepolstring',caption:'Tittel',summary:'Sammendrag',headers:'Overskrifter',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første rad',headersBoth:'Begge',invalidRows:'Antall rader må være ett tall større enn 0.',invalidCols:'Antall kolonner må være ett tall større enn 0.',invalidBorder:'Rammestørrelse må være ett tall.',invalidWidth:'Tabellbredde må være ett nummer.',invalidHeight:'Tabellhøyde må være ett nummer.',invalidCellSpacing:'Cellemellomrom må være ett nummer.',invalidCellPadding:'Cellefyll må være ett nummer.',cell:{menu:'Celle',insertBefore:'Sett inn celle før',insertAfter:'Sett inn celle etter',deleteCell:'Slett celler',merge:'Slå sammen celler',mergeRight:'Slå sammen høyre',mergeDown:'Slå sammen ned',splitHorizontal:'Del celle horisontalt',splitVertical:'Del celle vertikalt',title:'Celleegenskaper',cellType:'Celletype',rowSpan:'Radspenn',colSpan:'Kolonnespenn',wordWrap:'Tekstbrytning',hAlign:'Horisontal justering',vAlign:'Vertikal justering',alignTop:'Topp',alignMiddle:'Midten',alignBottom:'Bunnen',alignBaseline:'Grunnlinje',bgColor:'Bakgrunnsfarge',borderColor:'Rammefarge',data:'Data',header:'Overskrift',yes:'Ja',no:'Nei',invalidWidth:'Cellebredde må være ett nummer',invalidHeight:'Cellehøyde må være ett nummer',invalidRowSpan:'Radspenn må være ett nummer.',invalidColSpan:'Kolonnespenn må være ett nummer.',chooseColor:'Velg'},row:{menu:'Rader',insertBefore:'Sett inn rad før',insertAfter:'Sett inn rad etter',deleteRow:'Slett rader'},column:{menu:'Kolonne',insertBefore:'Sett inn kolonne før',insertAfter:'Sett inn kolonne etter',deleteColumn:'Slett kolonner'}},button:{title:'Egenskaper for knapp',text:'Tekst (verdi)',type:'Type',typeBtn:'Knapp',typeSbm:'Send',typeRst:'Nullstill'},checkboxAndRadio:{checkboxTitle:'Egenskaper for avmerkingsboks',radioTitle:'Egenskaper for alternativknapp',value:'Verdi',selected:'Valgt'},form:{title:'Egenskaper for skjema',menu:'Egenskaper for skjema',action:'Handling',method:'Metode',encoding:'Encoding'},select:{title:'Egenskaper for rullegardinliste',selectInfo:'Info',opAvail:'Tilgjenglige alternativer',value:'Verdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillat flervalg',opText:'Tekst',opValue:'Verdi',btnAdd:'Legg til',btnModify:'Endre',btnUp:'Opp',btnDown:'Ned',btnSetValue:'Sett som valgt',btnDelete:'Slett'},textarea:{title:'Egenskaper for tekstområde',cols:'Kolonner',rows:'Rader'},textfield:{title:'Egenskaper for tekstfelt',name:'Navn',value:'Verdi',charWidth:'Tegnbredde',maxChars:'Maks antall tegn',type:'Type',typeText:'Tekst',typePass:'Passord'},hidden:{title:'Egenskaper for skjult felt',name:'Navn',value:'Verdi'},image:{title:'Bildeegenskaper',titleButton:'Egenskaper for bildeknapp',menu:'Bildeegenskaper',infoTab:'Bildeinformasjon',btnUpload:'Send det til serveren',upload:'Last opp',alt:'Alternativ tekst',width:'Bredde',height:'Høyde',lockRatio:'Lås forhold',unlockRatio:'Ikke lås forhold',resetSize:'Tilbakestill størrelse',border:'Ramme',hSpace:'HMarg',vSpace:'VMarg',align:'Juster',alignLeft:'Venstre',alignRight:'Høyre',alertUrl:'Vennligst skriv bilde-urlen',linkTab:'Lenke',button2Img:'Vil du endre den valgte bildeknappen til ett vanlig bilde?',img2Button:'Vil du endre det valgte bildet til en bildeknapp?',urlMissing:'Bildets adresse mangler.',validateWidth:'Bredde må være ett nummer.',validateHeight:'Høyde må være ett nummer.',validateBorder:'Ramme må være ett nummer.',validateHSpace:'HSpace må være ett nummer.',validateVSpace:'VSpace må være ett nummer.'},flash:{properties:'Egenskaper for Flash-objekt',propertiesTab:'Egenskaper',title:'Flash-egenskaper',chkPlay:'Autospill',chkLoop:'Loop',chkMenu:'Slå på Flash-meny',chkFull:'Tillat fullskjerm',scale:'Skaler',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Skaler til å passe',access:'Scripttilgang',accessAlways:'Alltid',accessSameDomain:'Samme domene',accessNever:'Aldri',align:'Juster',alignLeft:'Venstre',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignBottom:'Bunn',alignMiddle:'Midten',alignRight:'Høyre',alignTextTop:'Tekst topp',alignTop:'Topp',quality:'Kvalitet',qualityBest:'Best',qualityHigh:'Høy',qualityAutoHigh:'Auto Høy',qualityMedium:'Medium',qualityAutoLow:'Auto Lav',qualityLow:'Lav',windowModeWindow:'Vindu',windowModeOpaque:'Opaque',windowModeTransparent:'Gjennomsiktig',windowMode:'Vindu modus',flashvars:'Variabler for flash',bgcolor:'Bakgrunnsfarge',width:'Bredde',height:'Høyde',hSpace:'HMarg',vSpace:'VMarg',validateSrc:'Vennligst skriv inn lenkens url',validateWidth:'Bredde må være ett nummer.',validateHeight:'Høyde må være ett nummer',validateHSpace:'HSpace må være ett nummer.',validateVSpace:'VSpace må være ett nummer.'},spellCheck:{toolbar:'Stavekontroll',title:'Stavekontroll',notAvailable:'Beklager, tjenesten er utilgjenglig nå.',errorLoading:'Feil under lasting av applicationstjeneste tjener: %s.',notInDic:'Ikke i ordboken',changeTo:'Endre til',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer alle',btnReplace:'Erstatt',btnReplaceAll:'Erstatt alle',btnUndo:'Angre',noSuggestions:'- Ingen forslag -',progress:'Stavekontroll pågår...',noMispell:'Stavekontroll fullført: ingen feilstavinger funnet',noChanges:'Stavekontroll fullført: ingen ord endret',oneChange:'Stavekontroll fullført: Ett ord endret',manyChanges:'Stavekontroll fullført: %1 ord endret',ieSpellDownload:'Stavekontroll er ikke installert. Vil du laste den ned nå?'},smiley:{toolbar:'Smil',title:'Sett inn smil',options:'Smiley Options'},elementsPath:{eleLabel:'Element-sti',eleTitle:'%1 element'},numberedlist:'Nummerert liste',bulletedlist:'Uordnet liste',indent:'Øk nivå',outdent:'Senk nivå',justify:{left:'Venstrejuster',center:'Midtjuster',right:'Høyrejuster',block:'Blokkjuster'},blockquote:'Blockquote',clipboard:{title:'Lim inn',cutError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).',copyError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',pasteMsg:'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',securityMsg:'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.',pasteArea:'Innlimingsområde'},pastefromword:{confirmCleanup:'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?',toolbar:'Lim inn fra Word',title:'Lim inn fra Word',error:'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil'},pasteText:{button:'Lim inn som ren tekst',title:'Lim inn som ren tekst'},templates:{button:'Maler',title:'Innholdsmaler',options:'Template Options',insertOption:'Erstatt faktisk innold',selectPromptMsg:'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',emptyListMsg:'(Ingen maler definert)'},showBlocks:'Vis blokker',stylesCombo:{label:'Stil',panelTitle:'Stilformater',panelTitle1:'Blokkstiler',panelTitle2:'Inlinestiler',panelTitle3:'Objektstiler'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatert',tag_address:'Adresse',tag_h1:'Tittel 1',tag_h2:'Tittel 2',tag_h3:'Tittel 3',tag_h4:'Tittel 4',tag_h5:'Tittel 5',tag_h6:'Tittel 6',tag_div:'Normal (DIV)'},div:{title:'Sett inn Div Container',toolbar:'Sett inn Div Container',cssClassInputLabel:'Stilark-klasser',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Språk-kode',inlineStyleInputLabel:'Inlinestiler',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Språkretning',langDirLTRLabel:'Venstre til høyre (VTH)',langDirRTLLabel:'Høyre til venstre (HTV)',edit:'Rediger Div',remove:'Fjern Div'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift'},fontSize:{label:'Størrelse',voiceLabel:'Font Størrelse',panelTitle:'Størrelse'},colorButton:{textColorTitle:'Tekstfarge',bgColorTitle:'Bakgrunnsfarge',panelTitle:'Farger',auto:'Automatisk',more:'Flere farger...'},colors:{'000':'Svart',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Marine','4B0082':'Indigo',696969:'Svak grå',B22222:'Fire Brick',A52A2A:'Brun',DAA520:'Golden Rod','006400':'Mørk grå','40E0D0':'Turkis','0000CD':'Medium Blå',800080:'Purple',808080:'Grå',F00:'Red',FF8C00:'Mørk oransje',FFD700:'gull','008000':'Grønn','0FF':'Cyan','00F':'Blå',EE82EE:'Fiolett',A9A9A9:'Mørk grå',FFA07A:'Light Salmon',FFA500:'Oransje',FFFF00:'gul','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Lys Blå',DDA0DD:'Plomme',D3D3D3:'Lys grå',FFF0F5:'Lavender Blush',FAEBD7:'Antikk-hvit',FFFFE0:'Lys gul',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'Hvit'},scayt:{title:'Stavekontroll mens du skriver',opera_title:'Not supported by Opera',enable:'Slå på SCAYT',disable:'Slå av SCAYT',about:'Om SCAYT',toggle:'Veksle SCAYT',options:'Valg',langs:'Språk',moreSuggestions:'Flere forslag',ignore:'Ignorer',ignoreAll:'Ignorer Alle',addWord:'Legg til ord',emptyDic:'Ordboknavn skal ikke være tom',optionsTab:'Valg',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Språk',dictionariesTab:'Ordbøker',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',moreInfo:'For lisensieringsinformasjon vennligst besøk vårt nettsted:',copy:'Copyright &copy; $1. Alle rettigheter reservert.'},maximize:'Maksimer',minimize:'Minimer',fakeobjects:{anchor:'Anker',flash:'Flash Animasjon',div:'Sideskift',unknown:'Ukjent objekt'},resize:'Dra for å skalere',colordialog:{title:'Velg farge',options:'Color Options',highlight:'Merk',selected:'Valgt',clear:'Tøm'},toolbarCollapse:'Slå sammen verktøylinje',toolbarExpand:'Vis verktøylinje',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/nl.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/nl.js
new file mode 100644
index 000000000..7a34fb4fb
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/nl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.nl={dir:'ltr',editorTitle:'Tekstverwerker, %1, druk op ALT 0 voor hulp.',toolbar:'Werkbalk',editor:'Tekstverwerker',source:'Code',newPage:'Nieuwe pagina',save:'Opslaan',preview:'Voorbeeld',cut:'Knippen',copy:'Kopiëren',paste:'Plakken',print:'Printen',underline:'Onderstreept',bold:'Vet',italic:'Schuingedrukt',selectAll:'Alles selecteren',removeFormat:'Opmaak verwijderen',strike:'Doorhalen',subscript:'Subscript',superscript:'Superscript',horizontalrule:'Horizontale lijn invoegen',pagebreak:'Pagina-einde invoegen',unlink:'Link verwijderen',undo:'Ongedaan maken',redo:'Opnieuw uitvoeren',common:{browseServer:'Bladeren op server',url:'URL',protocol:'Protocol',upload:'Upload',uploadSubmit:'Naar server verzenden',image:'Afbeelding',flash:'Flash',form:'Formulier',checkbox:'Aanvinkvakje',radio:'Selectievakje',textField:'Tekstveld',textarea:'Tekstvak',hiddenField:'Verborgen veld',button:'Knop',select:'Selectieveld',imageButton:'Afbeeldingsknop',notSet:'<niet ingevuld>',id:'Kenmerk',name:'Naam',langDir:'Schrijfrichting',langDirLtr:'Links naar rechts (LTR)',langDirRtl:'Rechts naar links (RTL)',langCode:'Taalcode',longDescr:'Lange URL-omschrijving',cssClass:'Stylesheet-klassen',advisoryTitle:'Aanbevolen titel',cssStyle:'Stijl',ok:'OK',cancel:'Annuleren',close:'Sluiten',preview:'Voorbeeld',generalTab:'Algemeen',advancedTab:'Geavanceerd',validateNumberFailed:'Deze waarde is geen geldig getal.',confirmNewPage:'Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?',confirmCancel:'Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?',options:'Opties',target:'Doel',targetNew:'Nieuw venster (_blank)',targetTop:'Hele venster (_top)',targetSelf:'Zelfde venster (_self)',targetParent:'Origineel venster (_parent)',langDirLTR:'Links naar rechts (LTR)',langDirRTL:'Rechts naar links (RTL)',styles:'Stijlen',cssClasses:'Stylesheet klassen',unavailable:'%1<span class="cke_accessibility">, niet beschikbaar</span>'},contextmenu:{options:'Context menu opties'},specialChar:{toolbar:'Speciaal teken invoegen',title:'Selecteer speciaal teken',options:'Speciale tekens opties'},link:{toolbar:'Link invoegen/wijzigen',other:'<ander>',menu:'Link wijzigen',title:'Link',info:'Linkomschrijving',target:'Doel',upload:'Upload',advanced:'Geavanceerd',type:'Linktype',toUrl:'URL',toAnchor:'Interne link in pagina',toEmail:'E-mail',targetFrame:'<frame>',targetPopup:'<popup window>',targetFrameName:'Naam doelframe',targetPopupName:'Naam popupvenster',popupFeatures:'Instellingen popupvenster',popupResizable:'Herschaalbaar',popupStatusBar:'Statusbalk',popupLocationBar:'Locatiemenu',popupToolbar:'Menubalk',popupMenuBar:'Menubalk',popupFullScreen:'Volledig scherm (IE)',popupScrollBars:'Schuifbalken',popupDependent:'Afhankelijk (Netscape)',popupWidth:'Breedte',popupLeft:'Positie links',popupHeight:'Hoogte',popupTop:'Positie boven',id:'Id',langDir:'Schrijfrichting',langDirLTR:'Links naar rechts (LTR)',langDirRTL:'Rechts naar links (RTL)',acccessKey:'Toegangstoets',name:'Naam',langCode:'Schrijfrichting',tabIndex:'Tabvolgorde',advisoryTitle:'Aanbevolen titel',advisoryContentType:'Aanbevolen content-type',cssClasses:'Stylesheet-klassen',charset:'Karakterset van gelinkte bron',styles:'Stijl',selectAnchor:'Kies een interne link',anchorName:'Op naam interne link',anchorId:'Op kenmerk interne link',emailAddress:'E-mailadres',emailSubject:'Onderwerp bericht',emailBody:'Inhoud bericht',noAnchors:'(Geen interne links in document gevonden)',noUrl:'Geef de link van de URL',noEmail:'Geef een e-mailadres'},anchor:{toolbar:'Interne link',menu:'Eigenschappen interne link',title:'Eigenschappen interne link',name:'Naam interne link',errorName:'Geef de naam van de interne link op'},list:{numberedTitle:'Eigenschappen genummerde lijst',bulletedTitle:'Eigenschappen lijst met opsommingstekens',type:'Type',start:'Start',validateStartNumber:'Starnummer van de lijst moet een heel nummer zijn.',circle:'Cirkel',disc:'Schijf',square:'Vierkant',none:'Geen',notset:'<niet gezet>',armenian:'Armeense numering',georgian:'Greorgische numering (an, ban, gan, etc.)',lowerRoman:'Romeins kleine letters (i, ii, iii, iv, v, etc.)',upperRoman:'Romeins hoofdletters (I, II, III, IV, V, etc.)',lowerAlpha:'Kleine letters (a, b, c, d, e, etc.)',upperAlpha:'Hoofdletters (A, B, C, D, E, etc.)',lowerGreek:'Grieks kleine letters (alpha, beta, gamma, etc.)',decimal:'Cijfers (1, 2, 3, etc.)',decimalLeadingZero:'Cijfers beginnen met nul (01, 02, 03, etc.)'},findAndReplace:{title:'Zoeken en vervangen',find:'Zoeken',replace:'Vervangen',findWhat:'Zoeken naar:',replaceWith:'Vervangen met:',notFoundMsg:'De opgegeven tekst is niet gevonden.',matchCase:'Hoofdlettergevoelig',matchWord:'Hele woord moet voorkomen',matchCyclic:'Doorlopend zoeken',replaceAll:'Alles vervangen',replaceSuccessMsg:'%1 resulaten vervangen.'},table:{toolbar:'Tabel',title:'Eigenschappen tabel',menu:'Eigenschappen tabel',deleteTable:'Tabel verwijderen',rows:'Rijen',columns:'Kolommen',border:'Breedte rand',align:'Uitlijning',alignLeft:'Links',alignCenter:'Centreren',alignRight:'Rechts',width:'Breedte',widthPx:'pixels',widthPc:'procent',widthUnit:'eenheid breedte',height:'Hoogte',cellSpace:'Afstand tussen cellen',cellPad:'Ruimte in de cel',caption:'Naam',summary:'Samenvatting',headers:'Koppen',headersNone:'Geen',headersColumn:'Eerste kolom',headersRow:'Eerste rij',headersBoth:'Beide',invalidRows:'Het aantal rijen moet een getal zijn groter dan 0.',invalidCols:'Het aantal kolommen moet een getal zijn groter dan 0.',invalidBorder:'De rand breedte moet een getal zijn.',invalidWidth:'De tabel breedte moet een getal zijn.',invalidHeight:'De tabel hoogte moet een getal zijn.',invalidCellSpacing:'Afstand tussen cellen moet een getal zijn.',invalidCellPadding:'Ruimte in de cel moet een getal zijn.',cell:{menu:'Cel',insertBefore:'Voeg cel in voor',insertAfter:'Voeg cel in achter',deleteCell:'Cellen verwijderen',merge:'Cellen samenvoegen',mergeRight:'Voeg samen naar rechts',mergeDown:'Voeg samen naar beneden',splitHorizontal:'Splits cellen horizontaal',splitVertical:'Splits cellen verticaal',title:'Cel eigenschappen',cellType:'Cel type',rowSpan:'Rijen samenvoegen',colSpan:'Kolommen samenvoegen',wordWrap:'Automatische terugloop',hAlign:'Horizontale uitlijning',vAlign:'Verticale uitlijning',alignTop:'Boven',alignMiddle:'Midden',alignBottom:'Onder',alignBaseline:'Basislijn',bgColor:'Achtergrondkleur',borderColor:'Kleur rand',data:'Inhoud',header:'Kop',yes:'Ja',no:'Nee',invalidWidth:'De celbreedte moet een getal zijn.',invalidHeight:'De celhoogte moet een getal zijn.',invalidRowSpan:'Rijen samenvoegen moet een heel getal zijn.',invalidColSpan:'Kolommen samenvoegen moet een heel getal zijn.',chooseColor:'Kies'},row:{menu:'Rij',insertBefore:'Voeg rij in voor',insertAfter:'Voeg rij in achter',deleteRow:'Rijen verwijderen'},column:{menu:'Kolom',insertBefore:'Voeg kolom in voor',insertAfter:'Voeg kolom in achter',deleteColumn:'Kolommen verwijderen'}},button:{title:'Eigenschappen knop',text:'Tekst (waarde)',type:'Soort',typeBtn:'Knop',typeSbm:'Versturen',typeRst:'Leegmaken'},checkboxAndRadio:{checkboxTitle:'Eigenschappen aanvinkvakje',radioTitle:'Eigenschappen selectievakje',value:'Waarde',selected:'Geselecteerd'},form:{title:'Eigenschappen formulier',menu:'Eigenschappen formulier',action:'Actie',method:'Methode',encoding:'Codering'},select:{title:'Eigenschappen selectieveld',selectInfo:'Informatie',opAvail:'Beschikbare opties',value:'Waarde',size:'Grootte',lines:'Regels',chkMulti:'Gecombineerde selecties toestaan',opText:'Tekst',opValue:'Waarde',btnAdd:'Toevoegen',btnModify:'Wijzigen',btnUp:'Omhoog',btnDown:'Omlaag',btnSetValue:'Als geselecteerde waarde instellen',btnDelete:'Verwijderen'},textarea:{title:'Eigenschappen tekstvak',cols:'Kolommen',rows:'Rijen'},textfield:{title:'Eigenschappen tekstveld',name:'Naam',value:'Waarde',charWidth:'Breedte (tekens)',maxChars:'Maximum aantal tekens',type:'Soort',typeText:'Tekst',typePass:'Wachtwoord'},hidden:{title:'Eigenschappen verborgen veld',name:'Naam',value:'Waarde'},image:{title:'Eigenschappen afbeelding',titleButton:'Eigenschappen afbeeldingsknop',menu:'Eigenschappen afbeelding',infoTab:'Informatie afbeelding',btnUpload:'Naar server verzenden',upload:'Upload',alt:'Alternatieve tekst',width:'Breedte',height:'Hoogte',lockRatio:'Afmetingen vergrendelen',unlockRatio:'Afmetingen ontgrendelen',resetSize:'Afmetingen resetten',border:'Rand',hSpace:'HSpace',vSpace:'VSpace',align:'Uitlijning',alignLeft:'Links',alignRight:'Rechts',alertUrl:'Geef de URL van de afbeelding',linkTab:'Link',button2Img:'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?',img2Button:'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?',urlMissing:'De URL naar de afbeelding ontbreekt.',validateWidth:'Breedte moet een heel nummer zijn.',validateHeight:'Hoogte moet een heel nummer zijn.',validateBorder:'Rand moet een heel nummer zijn.',validateHSpace:'HSpace moet een heel nummer zijn.',validateVSpace:'VSpace moet een heel nummer zijn.'},flash:{properties:'Eigenschappen Flash',propertiesTab:'Eigenschappen',title:'Eigenschappen Flash',chkPlay:'Automatisch afspelen',chkLoop:'Herhalen',chkMenu:"Flashmenu's inschakelen",chkFull:'Schermvullend toestaan',scale:'Schaal',scaleAll:'Alles tonen',scaleNoBorder:'Geen rand',scaleFit:'Precies passend',access:'Script toegang',accessAlways:'Altijd',accessSameDomain:'Zelfde domeinnaam',accessNever:'Nooit',align:'Uitlijning',alignLeft:'Links',alignAbsBottom:'Absoluut-onder',alignAbsMiddle:'Absoluut-midden',alignBaseline:'Basislijn',alignBottom:'Beneden',alignMiddle:'Midden',alignRight:'Rechts',alignTextTop:'Boven tekst',alignTop:'Boven',quality:'Kwaliteit',qualityBest:'Beste',qualityHigh:'Hoog',qualityAutoHigh:'Automatisch hoog',qualityMedium:'Gemiddeld',qualityAutoLow:'Automatisch laag',qualityLow:'Laag',windowModeWindow:'Venster',windowModeOpaque:'Ondoorzichtig',windowModeTransparent:'Doorzichtig',windowMode:'Venster modus',flashvars:'Variabelen voor Flash',bgcolor:'Achtergrondkleur',width:'Breedte',height:'Hoogte',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Geef de link van de URL',validateWidth:'De breedte moet een getal zijn.',validateHeight:'De hoogte moet een getal zijn.',validateHSpace:'De HSpace moet een getal zijn.',validateVSpace:'De VSpace moet een getal zijn.'},spellCheck:{toolbar:'Spellingscontrole',title:'Spellingscontrole',notAvailable:'Excuses, deze dienst is momenteel niet beschikbaar.',errorLoading:'Er is een fout opgetreden bij het laden van de diesnt: %s.',notInDic:'Niet in het woordenboek',changeTo:'Wijzig in',btnIgnore:'Negeren',btnIgnoreAll:'Alles negeren',btnReplace:'Vervangen',btnReplaceAll:'Alles vervangen',btnUndo:'Ongedaan maken',noSuggestions:'-Geen suggesties-',progress:'Bezig met spellingscontrole...',noMispell:'Klaar met spellingscontrole: geen fouten gevonden',noChanges:'Klaar met spellingscontrole: geen woorden aangepast',oneChange:'Klaar met spellingscontrole: één woord aangepast',manyChanges:'Klaar met spellingscontrole: %1 woorden aangepast',ieSpellDownload:'De spellingscontrole niet geïnstalleerd. Wilt u deze nu downloaden?'},smiley:{toolbar:'Smiley',title:'Smiley invoegen',options:'Smiley opties'},elementsPath:{eleLabel:'Elementenpad',eleTitle:'%1 element'},numberedlist:'Genummerde lijst',bulletedlist:'Opsomming',indent:'Inspringen vergroten',outdent:'Inspringen verkleinen',justify:{left:'Links uitlijnen',center:'Centreren',right:'Rechts uitlijnen',block:'Uitvullen'},blockquote:'Citaatblok',clipboard:{title:'Plakken',cutError:'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.',copyError:'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.',pasteMsg:'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (<strong>Ctrl/Cmd+V</strong>) en klik op <strong>OK</strong>.',securityMsg:'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.',pasteArea:'Plakgebied'},pastefromword:{confirmCleanup:'De tekst die u plakte lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?',toolbar:'Plakken als Word-gegevens',title:'Plakken als Word-gegevens',error:'Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout'},pasteText:{button:'Plakken als platte tekst',title:'Plakken als platte tekst'},templates:{button:'Sjablonen',title:'Inhoud sjabonen',options:'Template opties',insertOption:'Vervang de huidige inhoud',selectPromptMsg:'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):',emptyListMsg:'(Geen sjablonen gedefinieerd)'},showBlocks:'Toon blokken',stylesCombo:{label:'Stijl',panelTitle:'Opmaakstijlen',panelTitle1:'Blok stijlen',panelTitle2:'In-line stijlen',panelTitle3:'Object stijlen'},format:{label:'Opmaak',panelTitle:'Opmaak',tag_p:'Normaal',tag_pre:'Met opmaak',tag_address:'Adres',tag_h1:'Kop 1',tag_h2:'Kop 2',tag_h3:'Kop 3',tag_h4:'Kop 4',tag_h5:'Kop 5',tag_h6:'Kop 6',tag_div:'Normaal (DIV)'},div:{title:'Div aanmaken',toolbar:'Div aanmaken',cssClassInputLabel:'Stylesheet klassen',styleSelectLabel:'Stijl',IdInputLabel:'Id',languageCodeInputLabel:' Taalcode',inlineStyleInputLabel:'Inline stijl',advisoryTitleInputLabel:'informatieve titel',langDirLabel:'Schrijfrichting',langDirLTRLabel:'Links naar rechts (LTR)',langDirRTLLabel:'Rechts naar links (RTL)',edit:'Div wijzigen',remove:'Div verwijderen'},font:{label:'Lettertype',voiceLabel:'Lettertype',panelTitle:'Lettertype'},fontSize:{label:'Lettergrootte',voiceLabel:'Lettergrootte',panelTitle:'Lettergrootte'},colorButton:{textColorTitle:'Tekstkleur',bgColorTitle:'Achtergrondkleur',panelTitle:'Kleuren',auto:'Automatisch',more:'Meer kleuren...'},colors:{'000':'Zwart',800000:'Kastanjebruin','8B4513':'Chocoladebruin','2F4F4F':'Donkerleigrijs','008080':'Blauwgroen','000080':'Marine','4B0082':'Indigo',696969:'Donkergrijs',B22222:'Baksteen',A52A2A:'Bruin',DAA520:'Donkergeel','006400':'Donkergroen','40E0D0':'Turquoise','0000CD':'Middenblauw',800080:'Paars',808080:'Grijs',F00:'Rood',FF8C00:'Donkeroranje',FFD700:'Goud','008000':'Groen','0FF':'Cyaan','00F':'Blauw',EE82EE:'Violet',A9A9A9:'Donkergrijs',FFA07A:'Lichtzalm',FFA500:'Oranje',FFFF00:'Geel','00FF00':'Felgroen',AFEEEE:'Lichtturquoise',ADD8E6:'Lichtblauw',DDA0DD:'Pruim',D3D3D3:'Lichtgrijs',FFF0F5:'Linnen',FAEBD7:'Ivoor',FFFFE0:'Lichtgeel',F0FFF0:'Honingdauw',F0FFFF:'Azuur',F0F8FF:'Licht hemelsblauw',E6E6FA:'Lavendel',FFF:'Wit'},scayt:{title:'Controleer de spelling tijdens het typen',opera_title:'Niet ondersteund door Opera',enable:'SCAYT inschakelen',disable:'SCAYT uitschakelen',about:'Over SCAYT',toggle:'SCAYT in/uitschakelen',options:'Opties',langs:'Talen',moreSuggestions:'Meer suggesties',ignore:'Negeren',ignoreAll:'Alles negeren',addWord:'Woord toevoegen',emptyDic:'De naam van het woordenboek mag niet leeg zijn.',optionsTab:'Opties',allCaps:'Negeer woorden helemaal in hoofdletters',ignoreDomainNames:'Negeer domeinnamen',mixedCase:'Negeer woorden met hoofd- en kleine letters',mixedWithDigits:'Negeer woorden met cijfers',languagesTab:'Talen',dictionariesTab:'Woordenboeken',dic_field_name:'Naam woordenboek',dic_create:'Aanmaken',dic_restore:'Terugzetten',dic_delete:'Verwijderen',dic_rename:'Hernoemen',dic_info:'Initieel wordt het gebruikerswoordenboek opgeslagen in een cookie. Cookies zijn echter beperkt in grootte. Zodra het gebruikerswoordenboek het punt bereikt waarop het niet meer in een cookie opgeslagen kan worden, dan wordt het woordenboek op de server opgeslagen. Om je persoonlijke woordenboek op je eigen server op te slaan, moet je een mapnaam opgeven. Indien je al een woordenboek hebt opgeslagen, typ dan de naam en klik op de Terugzetten knop.',aboutTab:'Over'},about:{title:'Over CKEditor',dlgTitle:'Over CKEditor',moreInfo:'Voor licentie informatie, bezoek onze website:',copy:'Copyright &copy; $1. Alle rechten voorbehouden.'},maximize:'Maximaliseren',minimize:'Minimaliseren',fakeobjects:{anchor:'Anker',flash:'Flash animatie',div:'Pagina einde',unknown:'Onbekend object'},resize:'Sleep om te herschalen',colordialog:{title:'Selecteer kleur',options:'Kleuropties',highlight:'Actief',selected:'Geselecteerd',clear:'Wissen'},toolbarCollapse:'Werkbalk inklappen',toolbarExpand:'Werkbalk uitklappen',bidi:{ltr:'Schrijfrichting van links naar rechts',rtl:'Schrijfrichting van rechts naar links'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/no.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/no.js
new file mode 100644
index 000000000..d28e6a677
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/no.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.no={dir:'ltr',editorTitle:'Rikteksteditor, %1, trykk ALT 0 for hjelp.',toolbar:'Verktøylinje',editor:'Rikteksteditor',source:'Kilde',newPage:'Ny Side',save:'Lagre',preview:'Forhåndsvis',cut:'Klipp ut',copy:'Kopier',paste:'Lim inn',print:'Skriv ut',underline:'Understrek',bold:'Fet',italic:'Kursiv',selectAll:'Merk alt',removeFormat:'Fjern format',strike:'Gjennomstrek',subscript:'Senket skrift',superscript:'Hevet skrift',horizontalrule:'Sett inn horisontal linje',pagebreak:'Sett inn sideskift',unlink:'Fjern lenke',undo:'Angre',redo:'Gjør om',common:{browseServer:'Bla igjennom server',url:'URL',protocol:'Protokoll',upload:'Last opp',uploadSubmit:'Send det til serveren',image:'Bilde',flash:'Flash',form:'Skjema',checkbox:'Avmerkingsboks',radio:'Alternativknapp',textField:'Tekstboks',textarea:'Tekstområde',hiddenField:'Skjult felt',button:'Knapp',select:'Rullegardinliste',imageButton:'Bildeknapp',notSet:'<ikke satt>',id:'Id',name:'Navn',langDir:'Språkretning',langDirLtr:'Venstre til høyre (VTH)',langDirRtl:'Høyre til venstre (HTV)',langCode:'Språkkode',longDescr:'Utvidet beskrivelse',cssClass:'Stilarkklasser',advisoryTitle:'Tittel',cssStyle:'Stil',ok:'OK',cancel:'Avbryt',close:'Lukk',preview:'Forhåndsvis',generalTab:'Generelt',advancedTab:'Avansert',validateNumberFailed:'Denne verdien er ikke ett nummer',confirmNewPage:'Alle endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?',confirmCancel:'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?',options:'Valg',target:'Mål',targetNew:'Nytt vindu (_blank)',targetTop:'Hele vindu (_top)',targetSelf:'Samme vindu (_self)',targetParent:'Foreldrevindu (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, utilgjenglig</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Sett inn spesielt tegn',title:'Velg spesielt tegn',options:'Special Character Options'},link:{toolbar:'Sett inn/Rediger lenke',other:'<other>',menu:'Rediger lenke',title:'Lenke',info:'Lenkeinfo',target:'Mål',upload:'Last opp',advanced:'Avansert',type:'Lenketype',toUrl:'URL',toAnchor:'Lenke til anker i teksten',toEmail:'E-post',targetFrame:'<ramme>',targetPopup:'<popup vindu>',targetFrameName:'Målramme',targetPopupName:'Navn på popup-vindus',popupFeatures:'Egenskaper for popup-vindu',popupResizable:'Skalérbar',popupStatusBar:'Statuslinje',popupLocationBar:'Adresselinje',popupToolbar:'Verktøylinje',popupMenuBar:'Menylinje',popupFullScreen:'Full skjerm (IE)',popupScrollBars:'Scrollbar',popupDependent:'Avhenging (Netscape)',popupWidth:'Bredde',popupLeft:'Venstre posisjon',popupHeight:'Høyde',popupTop:'Topp-posisjon',id:'Id',langDir:'Språkretning',langDirLTR:'Venstre til høyre (VTH)',langDirRTL:'Høyre til venstre (HTV)',acccessKey:'Aksessknapp',name:'Navn',langCode:'Språkretning',tabIndex:'Tab Indeks',advisoryTitle:'Tittel',advisoryContentType:'Type',cssClasses:'Stilarkklasser',charset:'Lenket språkkart',styles:'Stil',selectAnchor:'Velg et anker',anchorName:'Anker etter navn',anchorId:'Element etter ID',emailAddress:'E-postadresse',emailSubject:'Meldingsemne',emailBody:'Melding',noAnchors:'(Ingen anker i dokumentet)',noUrl:'Vennligst skriv inn lenkens url',noEmail:'Vennligst skriv inn e-postadressen'},anchor:{toolbar:'Sett inn/Rediger anker',menu:'Egenskaper for anker',title:'Egenskaper for anker',name:'Ankernavn',errorName:'Vennligst skriv inn ankernavnet'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Søk og erstatt',find:'Søk',replace:'Erstatt',findWhat:'Søk etter:',replaceWith:'Erstatt med:',notFoundMsg:'Fant ikke søketeksten.',matchCase:'Skill mellom store og små bokstaver',matchWord:'Bare hele ord',matchCyclic:'Søk i hele dokumentet',replaceAll:'Erstatt alle',replaceSuccessMsg:'%1 tilfelle erstattet.'},table:{toolbar:'Tabell',title:'Egenskaper for tabell',menu:'Egenskaper for tabell',deleteTable:'Slett tabell',rows:'Rader',columns:'Kolonner',border:'Rammestørrelse',align:'Justering',alignLeft:'Venstre',alignCenter:'Midtjuster',alignRight:'Høyre',width:'Bredde',widthPx:'piksler',widthPc:'prosent',widthUnit:'Bredde-enhet',height:'Høyde',cellSpace:'Cellemarg',cellPad:'Cellepolstring',caption:'Tittel',summary:'Sammendrag',headers:'Overskrifter',headersNone:'Ingen',headersColumn:'Første kolonne',headersRow:'Første rad',headersBoth:'Begge',invalidRows:'Antall rader må være ett tall større enn 0.',invalidCols:'Antall kolonner må være ett tall større enn 0.',invalidBorder:'Rammestørrelse må være ett tall.',invalidWidth:'Tabellbredde må være ett nummer.',invalidHeight:'Tabellhøyde må være ett nummer.',invalidCellSpacing:'Cellemellomrom må være ett nummer.',invalidCellPadding:'Cellefyll må være ett nummer.',cell:{menu:'Celle',insertBefore:'Sett inn celle før',insertAfter:'Sett inn celle etter',deleteCell:'Slett celler',merge:'Slå sammen celler',mergeRight:'Slå sammen høyre',mergeDown:'Slå sammen ned',splitHorizontal:'Del celle horisontalt',splitVertical:'Del celle vertikalt',title:'Celleegenskaper',cellType:'Celletype',rowSpan:'Radspenn',colSpan:'Kolonnespenn',wordWrap:'Tekstbrytning',hAlign:'Horisontal justering',vAlign:'Vertikal justering',alignTop:'Topp',alignMiddle:'Midten',alignBottom:'Bunnen',alignBaseline:'Grunnlinje',bgColor:'Bakgrunnsfarge',borderColor:'Rammefarge',data:'Data',header:'Overskrift',yes:'Ja',no:'Nei',invalidWidth:'Cellebredde må være ett nummer',invalidHeight:'Cellehøyde må være ett nummer',invalidRowSpan:'Radspenn må være ett nummer.',invalidColSpan:'Kolonnespenn må være ett nummer.',chooseColor:'Velg'},row:{menu:'Rader',insertBefore:'Sett inn rad før',insertAfter:'Sett inn rad etter',deleteRow:'Slett rader'},column:{menu:'Kolonne',insertBefore:'Sett inn kolonne før',insertAfter:'Sett inn kolonne etter',deleteColumn:'Slett kolonner'}},button:{title:'Egenskaper for knapp',text:'Tekst (verdi)',type:'Type',typeBtn:'Knapp',typeSbm:'Send',typeRst:'Nullstill'},checkboxAndRadio:{checkboxTitle:'Egenskaper for avmerkingsboks',radioTitle:'Egenskaper for alternativknapp',value:'Verdi',selected:'Valgt'},form:{title:'Egenskaper for skjema',menu:'Egenskaper for skjema',action:'Handling',method:'Metode',encoding:'Encoding'},select:{title:'Egenskaper for rullegardinliste',selectInfo:'Info',opAvail:'Tilgjenglige alternativer',value:'Verdi',size:'Størrelse',lines:'Linjer',chkMulti:'Tillat flervalg',opText:'Tekst',opValue:'Verdi',btnAdd:'Legg til',btnModify:'Endre',btnUp:'Opp',btnDown:'Ned',btnSetValue:'Sett som valgt',btnDelete:'Slett'},textarea:{title:'Egenskaper for tekstområde',cols:'Kolonner',rows:'Rader'},textfield:{title:'Egenskaper for tekstfelt',name:'Navn',value:'Verdi',charWidth:'Tegnbredde',maxChars:'Maks antall tegn',type:'Type',typeText:'Tekst',typePass:'Passord'},hidden:{title:'Egenskaper for skjult felt',name:'Navn',value:'Verdi'},image:{title:'Bildeegenskaper',titleButton:'Egenskaper for bildeknapp',menu:'Bildeegenskaper',infoTab:'Bildeinformasjon',btnUpload:'Send det til serveren',upload:'Last opp',alt:'Alternativ tekst',width:'Bredde',height:'Høyde',lockRatio:'Lås forhold',unlockRatio:'Ikke lås forhold',resetSize:'Tilbakestill størrelse',border:'Ramme',hSpace:'HMarg',vSpace:'VMarg',align:'Juster',alignLeft:'Venstre',alignRight:'Høyre',alertUrl:'Vennligst skriv bilde-urlen',linkTab:'Lenke',button2Img:'Vil du endre den valgte bildeknappen til ett vanlig bilde?',img2Button:'Vil du endre det valgte bildet til en bildeknapp?',urlMissing:'Bildets adresse mangler.',validateWidth:'Bredde må være ett nummer.',validateHeight:'Høyde må være ett nummer.',validateBorder:'Ramme må være ett nummer.',validateHSpace:'HSpace må være ett nummer.',validateVSpace:'VSpace må være ett nummer.'},flash:{properties:'Egenskaper for Flash-objekt',propertiesTab:'Egenskaper',title:'Flash-egenskaper',chkPlay:'Autospill',chkLoop:'Loop',chkMenu:'Slå på Flash-meny',chkFull:'Tillat fullskjerm',scale:'Skaler',scaleAll:'Vis alt',scaleNoBorder:'Ingen ramme',scaleFit:'Skaler til å passe',access:'Scripttilgang',accessAlways:'Alltid',accessSameDomain:'Samme domene',accessNever:'Aldri',align:'Juster',alignLeft:'Venstre',alignAbsBottom:'Abs bunn',alignAbsMiddle:'Abs midten',alignBaseline:'Bunnlinje',alignBottom:'Bunn',alignMiddle:'Midten',alignRight:'Høyre',alignTextTop:'Tekst topp',alignTop:'Topp',quality:'Kvalitet',qualityBest:'Best',qualityHigh:'Høy',qualityAutoHigh:'Auto Høy',qualityMedium:'Medium',qualityAutoLow:'Auto Lav',qualityLow:'Lav',windowModeWindow:'Vindu',windowModeOpaque:'Opaque',windowModeTransparent:'Gjennomsiktig',windowMode:'Vindu modus',flashvars:'Variabler for flash',bgcolor:'Bakgrunnsfarge',width:'Bredde',height:'Høyde',hSpace:'HMarg',vSpace:'VMarg',validateSrc:'Vennligst skriv inn lenkens url',validateWidth:'Bredde må være ett nummer.',validateHeight:'Høyde må være ett nummer',validateHSpace:'HSpace må være ett nummer.',validateVSpace:'VSpace må være ett nummer.'},spellCheck:{toolbar:'Stavekontroll',title:'Stavekontroll',notAvailable:'Beklager, tjenesten er utilgjenglig nå.',errorLoading:'Feil under lasting av applicationstjeneste tjener: %s.',notInDic:'Ikke i ordboken',changeTo:'Endre til',btnIgnore:'Ignorer',btnIgnoreAll:'Ignorer alle',btnReplace:'Erstatt',btnReplaceAll:'Erstatt alle',btnUndo:'Angre',noSuggestions:'- Ingen forslag -',progress:'Stavekontroll pågår...',noMispell:'Stavekontroll fullført: ingen feilstavinger funnet',noChanges:'Stavekontroll fullført: ingen ord endret',oneChange:'Stavekontroll fullført: Ett ord endret',manyChanges:'Stavekontroll fullført: %1 ord endret',ieSpellDownload:'Stavekontroll er ikke installert. Vil du laste den ned nå?'},smiley:{toolbar:'Smil',title:'Sett inn smil',options:'Smiley Options'},elementsPath:{eleLabel:'Element-sti',eleTitle:'%1 element'},numberedlist:'Nummerert liste',bulletedlist:'Uordnet liste',indent:'Øk nivå',outdent:'Senk nivå',justify:{left:'Venstrejuster',center:'Midtjuster',right:'Høyrejuster',block:'Blokkjuster'},blockquote:'Blockquote',clipboard:{title:'Lim inn',cutError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).',copyError:'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).',pasteMsg:'Vennligst lim inn i den følgende boksen med tastaturet (<STRONG>Ctrl+V</STRONG>) og trykk <STRONG>OK</STRONG>.',securityMsg:'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.',pasteArea:'Innlimingsområde'},pastefromword:{confirmCleanup:'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?',toolbar:'Lim inn fra Word',title:'Lim inn fra Word',error:'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil'},pasteText:{button:'Lim inn som ren tekst',title:'Lim inn som ren tekst'},templates:{button:'Maler',title:'Innholdsmaler',options:'Template Options',insertOption:'Erstatt faktisk innold',selectPromptMsg:'Velg malen du vil åpne<br>(innholdet du har skrevet blir tapt!):',emptyListMsg:'(Ingen maler definert)'},showBlocks:'Vis blokker',stylesCombo:{label:'Stil',panelTitle:'Stilformater',panelTitle1:'Blokkstiler',panelTitle2:'Inlinestiler',panelTitle3:'Objektstiler'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatert',tag_address:'Adresse',tag_h1:'Tittel 1',tag_h2:'Tittel 2',tag_h3:'Tittel 3',tag_h4:'Tittel 4',tag_h5:'Tittel 5',tag_h6:'Tittel 6',tag_div:'Normal (DIV)'},div:{title:'Sett inn Div Container',toolbar:'Sett inn Div Container',cssClassInputLabel:'Stilark-klasser',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Språk-kode',inlineStyleInputLabel:'Inlinestiler',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Språkretning',langDirLTRLabel:'Venstre til høyre (VTH)',langDirRTLLabel:'Høyre til venstre (HTV)',edit:'Rediger Div',remove:'Fjern Div'},font:{label:'Skrift',voiceLabel:'Font',panelTitle:'Skrift'},fontSize:{label:'Størrelse',voiceLabel:'Font Størrelse',panelTitle:'Størrelse'},colorButton:{textColorTitle:'Tekstfarge',bgColorTitle:'Bakgrunnsfarge',panelTitle:'Farger',auto:'Automatisk',more:'Flere farger...'},colors:{'000':'Svart',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Marine','4B0082':'Indigo',696969:'Svak grå',B22222:'Fire Brick',A52A2A:'Brun',DAA520:'Golden Rod','006400':'Mørk grå','40E0D0':'Turkis','0000CD':'Medium Blå',800080:'Purple',808080:'Grå',F00:'Red',FF8C00:'Mørk oransje',FFD700:'gull','008000':'Grønn','0FF':'Cyan','00F':'Blå',EE82EE:'Fiolett',A9A9A9:'Mørk grå',FFA07A:'Light Salmon',FFA500:'Oransje',FFFF00:'gul','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Lys Blå',DDA0DD:'Plomme',D3D3D3:'Lys grå',FFF0F5:'Lavender Blush',FAEBD7:'Antikk-hvit',FFFFE0:'Lys gul',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'Hvit'},scayt:{title:'Stavekontroll mens du skriver',opera_title:'Not supported by Opera',enable:'Slå på SCAYT',disable:'Slå av SCAYT',about:'Om SCAYT',toggle:'Veksle SCAYT',options:'Valg',langs:'Språk',moreSuggestions:'Flere forslag',ignore:'Ignorer',ignoreAll:'Ignorer Alle',addWord:'Legg til ord',emptyDic:'Ordboknavn skal ikke være tom',optionsTab:'Valg',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Språk',dictionariesTab:'Ordbøker',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Om'},about:{title:'Om CKEditor',dlgTitle:'Om CKEditor',moreInfo:'For lisensieringsinformasjon vennligst besøk vårt nettsted:',copy:'Copyright &copy; $1. Alle rettigheter reservert.'},maximize:'Maksimer',minimize:'Minimer',fakeobjects:{anchor:'Anker',flash:'Flash Animasjon',div:'Sideskift',unknown:'Ukjent objekt'},resize:'Dra for å skalere',colordialog:{title:'Velg farge',options:'Color Options',highlight:'Merk',selected:'Valgt',clear:'Tøm'},toolbarCollapse:'Slå sammen verktøylinje',toolbarExpand:'Vis verktøylinje',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/pl.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/pl.js
new file mode 100644
index 000000000..6dc1b3797
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/pl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.pl={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Źródło dokumentu',newPage:'Nowa strona',save:'Zapisz',preview:'Podgląd',cut:'Wytnij',copy:'Kopiuj',paste:'Wklej',print:'Drukuj',underline:'Podkreślenie',bold:'Pogrubienie',italic:'Kursywa',selectAll:'Zaznacz wszystko',removeFormat:'Usuń formatowanie',strike:'Przekreślenie',subscript:'Indeks dolny',superscript:'Indeks górny',horizontalrule:'Wstaw poziomą linię',pagebreak:'Wstaw odstęp',unlink:'Usuń hiperłącze',undo:'Cofnij',redo:'Ponów',common:{browseServer:'Przeglądaj',url:'Adres URL',protocol:'Protokół',upload:'Wyślij',uploadSubmit:'Wyślij',image:'Obrazek',flash:'Flash',form:'Formularz',checkbox:'Pole wyboru (checkbox)',radio:'Pole wyboru (radio)',textField:'Pole tekstowe',textarea:'Obszar tekstowy',hiddenField:'Pole ukryte',button:'Przycisk',select:'Lista wyboru',imageButton:'Przycisk-obrazek',notSet:'<nie ustawione>',id:'Id',name:'Nazwa',langDir:'Kierunek tekstu',langDirLtr:'Od lewej do prawej (LTR)',langDirRtl:'Od prawej do lewej (RTL)',langCode:'Kod języka',longDescr:'Długi opis hiperłącza',cssClass:'Nazwa klasy CSS',advisoryTitle:'Opis obiektu docelowego',cssStyle:'Styl',ok:'OK',cancel:'Anuluj',close:'Close',preview:'Preview',generalTab:'Ogólne',advancedTab:'Zaawansowane',validateNumberFailed:'Ta wartość nie jest liczbą.',confirmNewPage:'Wszystkie niezapisane zmiany zostaną utracone. Czy na pewno wczytać nową stronę?',confirmCancel:'Pewne opcje zostały zmienione. Czy na pewno zamknąć okno dialogowe?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, niedostępne</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Wstaw znak specjalny',title:'Wybierz znak specjalny',options:'Special Character Options'},link:{toolbar:'Wstaw/edytuj hiperłącze',other:'<inny>',menu:'Edytuj hiperłącze',title:'Hiperłącze',info:'Informacje ',target:'Cel',upload:'Wyślij',advanced:'Zaawansowane',type:'Typ hiperłącza',toUrl:'URL',toAnchor:'Odnośnik wewnątrz strony',toEmail:'Adres e-mail',targetFrame:'<ramka>',targetPopup:'<wyskakujące okno>',targetFrameName:'Nazwa Ramki Docelowej',targetPopupName:'Nazwa wyskakującego okna',popupFeatures:'Właściwości wyskakującego okna',popupResizable:'Skalowalny',popupStatusBar:'Pasek statusu',popupLocationBar:'Pasek adresu',popupToolbar:'Pasek narzędzi',popupMenuBar:'Pasek menu',popupFullScreen:'Pełny ekran (IE)',popupScrollBars:'Paski przewijania',popupDependent:'Okno zależne (Netscape)',popupWidth:'Szerokość',popupLeft:'Pozycja w poziomie',popupHeight:'Wysokość',popupTop:'Pozycja w pionie',id:'Id',langDir:'Kierunek tekstu',langDirLTR:'Od lewej do prawej (LTR)',langDirRTL:'Od prawej do lewej (RTL)',acccessKey:'Klawisz dostępu',name:'Nazwa',langCode:'Kierunek tekstu',tabIndex:'Indeks tabeli',advisoryTitle:'Opis obiektu docelowego',advisoryContentType:'Typ MIME obiektu docelowego',cssClasses:'Nazwa klasy CSS',charset:'Kodowanie znaków obiektu docelowego',styles:'Styl',selectAnchor:'Wybierz etykietę',anchorName:'Wg etykiety',anchorId:'Wg identyfikatora elementu',emailAddress:'Adres e-mail',emailSubject:'Temat',emailBody:'Treść',noAnchors:'(W dokumencie nie zdefiniowano żadnych etykiet)',noUrl:'Podaj adres URL',noEmail:'Podaj adres e-mail'},anchor:{toolbar:'Wstaw/edytuj kotwicę',menu:'Właściwości kotwicy',title:'Właściwości kotwicy',name:'Nazwa kotwicy',errorName:'Wpisz nazwę kotwicy'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Znajdź i zamień',find:'Znajdź',replace:'Zamień',findWhat:'Znajdź:',replaceWith:'Zastąp przez:',notFoundMsg:'Nie znaleziono szukanego hasła.',matchCase:'Uwzględnij wielkość liter',matchWord:'Całe słowa',matchCyclic:'Cykliczne dopasowanie',replaceAll:'Zastąp wszystko',replaceSuccessMsg:'%1 wystąpień zastąpionych.'},table:{toolbar:'Tabela',title:'Właściwości tabeli',menu:'Właściwości tabeli',deleteTable:'Usuń tabelę',rows:'Liczba wierszy',columns:'Liczba kolumn',border:'Grubość ramki',align:'Wyrównanie',alignLeft:'Do lewej',alignCenter:'Do środka',alignRight:'Do prawej',width:'Szerokość',widthPx:'piksele',widthPc:'%',widthUnit:'width unit',height:'Wysokość',cellSpace:'Odstęp pomiędzy komórkami',cellPad:'Margines wewnętrzny komórek',caption:'Tytuł',summary:'Podsumowanie',headers:'Nagłowki',headersNone:'Brak',headersColumn:'Pierwsza kolumna',headersRow:'Pierwszy wiersz',headersBoth:'Oba',invalidRows:'Liczba wierszy musi być liczbą większą niż 0.',invalidCols:'Liczba kolumn musi być liczbą większą niż 0.',invalidBorder:'Liczba obramowań musi być liczbą.',invalidWidth:'Szerokość tabeli musi być liczbą.',invalidHeight:'Wysokość tabeli musi być liczbą.',invalidCellSpacing:'Odstęp komórek musi być liczbą.',invalidCellPadding:'Dopełnienie komórek musi być liczbą.',cell:{menu:'Komórka',insertBefore:'Wstaw komórkę z lewej',insertAfter:'Wstaw komórkę z prawej',deleteCell:'Usuń komórki',merge:'Połącz komórki',mergeRight:'Połącz z komórką z prawej',mergeDown:'Połącz z komórką poniżej',splitHorizontal:'Podziel komórkę poziomo',splitVertical:'Podziel komórkę pionowo',title:'Właściwości komórki',cellType:'Typ komórki',rowSpan:'Scalenie wierszy',colSpan:'Scalenie komórek',wordWrap:'Zawijanie słów',hAlign:'Wyrównanie poziome',vAlign:'Wyrównanie pionowe',alignTop:'Góra',alignMiddle:'Środek',alignBottom:'Dół',alignBaseline:'Linia bazowa',bgColor:'Kolor tła',borderColor:'Kolor obramowania',data:'Dane',header:'Nagłowek',yes:'Tak',no:'Nie',invalidWidth:'Szerokość komórki musi być liczbą.',invalidHeight:'Wysokość komórki musi być liczbą.',invalidRowSpan:'Scalenie wierszy musi być liczbą całkowitą.',invalidColSpan:'Scalenie komórek musi być liczbą całkowitą.',chooseColor:'Wybierz'},row:{menu:'Wiersz',insertBefore:'Wstaw wiersz powyżej',insertAfter:'Wstaw wiersz poniżej',deleteRow:'Usuń wiersze'},column:{menu:'Kolumna',insertBefore:'Wstaw kolumnę z lewej',insertAfter:'Wstaw kolumnę z prawej',deleteColumn:'Usuń kolumny'}},button:{title:'Właściwości przycisku',text:'Tekst (Wartość)',type:'Typ',typeBtn:'Przycisk',typeSbm:'Wyślij',typeRst:'Wyzeruj'},checkboxAndRadio:{checkboxTitle:'Właściwości pola wyboru (checkbox)',radioTitle:'Właściwości pola wyboru (radio)',value:'Wartość',selected:'Zaznaczone'},form:{title:'Właściwości formularza',menu:'Właściwości formularza',action:'Akcja',method:'Metoda',encoding:'Kodowanie'},select:{title:'Właściwości listy wyboru',selectInfo:'Informacje',opAvail:'Dostępne opcje',value:'Wartość',size:'Rozmiar',lines:'linii',chkMulti:'Wielokrotny wybór',opText:'Tekst',opValue:'Wartość',btnAdd:'Dodaj',btnModify:'Zmień',btnUp:'Do góry',btnDown:'Do dołu',btnSetValue:'Ustaw wartość zaznaczoną',btnDelete:'Usuń'},textarea:{title:'Właściwości obszaru tekstowego',cols:'Kolumnu',rows:'Wiersze'},textfield:{title:'Właściwości pola tekstowego',name:'Nazwa',value:'Wartość',charWidth:'Szerokość w znakach',maxChars:'Max. szerokość',type:'Typ',typeText:'Tekst',typePass:'Hasło'},hidden:{title:'Właściwości pola ukrytego',name:'Nazwa',value:'Wartość'},image:{title:'Właściwości obrazka',titleButton:'Właściwości przycisku obrazka',menu:'Właściwości obrazka',infoTab:'Informacje o obrazku',btnUpload:'Wyślij',upload:'Wyślij',alt:'Tekst zastępczy',width:'Szerokość',height:'Wysokość',lockRatio:'Zablokuj proporcje',unlockRatio:'Unlock Ratio',resetSize:'Przywróć rozmiar',border:'Ramka',hSpace:'Odstęp poziomy',vSpace:'Odstęp pionowy',align:'Wyrównaj',alignLeft:'Do lewej',alignRight:'Do prawej',alertUrl:'Podaj adres obrazka.',linkTab:'Hiperłącze',button2Img:'Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?',img2Button:'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?',urlMissing:'Podaj adres URL obrazka.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Właściwości elementu Flash',propertiesTab:'Właściwości',title:'Właściwości elementu Flash',chkPlay:'Autoodtwarzanie',chkLoop:'Pętla',chkMenu:'Włącz menu',chkFull:'Dopuść pełny ekran',scale:'Skaluj',scaleAll:'Pokaż wszystko',scaleNoBorder:'Bez Ramki',scaleFit:'Dokładne dopasowanie',access:'Dostęp skryptów',accessAlways:'Zawsze',accessSameDomain:'Ta sama domena',accessNever:'Nigdy',align:'Wyrównaj',alignLeft:'Do lewej',alignAbsBottom:'Do dołu',alignAbsMiddle:'Do środka w pionie',alignBaseline:'Do linii bazowej',alignBottom:'Do dołu',alignMiddle:'Do środka',alignRight:'Do prawej',alignTextTop:'Do góry tekstu',alignTop:'Do góry',quality:'Jakość',qualityBest:'Najlepsza',qualityHigh:'Wysoka',qualityAutoHigh:'Auto wysoka',qualityMedium:'Średnia',qualityAutoLow:'Auto niska',qualityLow:'Niska',windowModeWindow:'Okno',windowModeOpaque:'Nieprzeźroczyste',windowModeTransparent:'Przeźroczyste',windowMode:'Tryb okna',flashvars:'Zmienne dla Flasha',bgcolor:'Kolor tła',width:'Szerokość',height:'Wysokość',hSpace:'Odstęp poziomy',vSpace:'Odstęp pionowy',validateSrc:'Podaj adres URL',validateWidth:'Szerokość musi być liczbą.',validateHeight:'Wysokość musi być liczbą.',validateHSpace:'Odstęp poziomy musi być liczbą.',validateVSpace:'Odstęp pionowy musi być liczbą.'},spellCheck:{toolbar:'Sprawdź pisownię',title:'Sprawdź pisownię',notAvailable:'Przepraszamy, ale usługa jest obecnie niedostępna.',errorLoading:'Błąd wczytywania hosta aplikacji usługi: %s.',notInDic:'Słowa nie ma w słowniku',changeTo:'Zmień na',btnIgnore:'Ignoruj',btnIgnoreAll:'Ignoruj wszystkie',btnReplace:'Zmień',btnReplaceAll:'Zmień wszystkie',btnUndo:'Cofnij',noSuggestions:'- Brak sugestii -',progress:'Trwa sprawdzanie...',noMispell:'Sprawdzanie zakończone: nie znaleziono błędów',noChanges:'Sprawdzanie zakończone: nie zmieniono żadnego słowa',oneChange:'Sprawdzanie zakończone: zmieniono jedno słowo',manyChanges:'Sprawdzanie zakończone: zmieniono %l słów',ieSpellDownload:'Słownik nie jest zainstalowany. Chcesz go ściągnąć?'},smiley:{toolbar:'Emotikona',title:'Wstaw emotikonę',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'element %1'},numberedlist:'Lista numerowana',bulletedlist:'Lista wypunktowana',indent:'Zwiększ wcięcie',outdent:'Zmniejsz wcięcie',justify:{left:'Wyrównaj do lewej',center:'Wyrównaj do środka',right:'Wyrównaj do prawej',block:'Wyrównaj do lewej i prawej'},blockquote:'Cytat',clipboard:{title:'Wklej',cutError:'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.',copyError:'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.',pasteMsg:'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl/Cmd+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.',securityMsg:'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Word. Czy chcesz go wyczyścic przed wklejeniem?',toolbar:'Wklej z Worda',title:'Wklej z Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Wklej jako czysty tekst',title:'Wklej jako czysty tekst'},templates:{button:'Szablony',title:'Szablony zawartości',options:'Template Options',insertOption:'Zastąp aktualną zawartość',selectPromptMsg:'Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):',emptyListMsg:'(Brak zdefiniowanych szablonów)'},showBlocks:'Pokaż bloki',stylesCombo:{label:'Styl',panelTitle:'Formatting Styles',panelTitle1:'Style blokowe',panelTitle2:'Style liniowe',panelTitle3:'Style obiektowe'},format:{label:'Format',panelTitle:'Format',tag_p:'Normalny',tag_pre:'Tekst sformatowany',tag_address:'Adres',tag_h1:'Nagłówek 1',tag_h2:'Nagłówek 2',tag_h3:'Nagłówek 3',tag_h4:'Nagłówek 4',tag_h5:'Nagłówek 5',tag_h6:'Nagłówek 6',tag_div:'Normalny (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Czcionka',voiceLabel:'Czcionka',panelTitle:'Czcionka'},fontSize:{label:'Rozmiar',voiceLabel:'Rozmiar czcionki',panelTitle:'Rozmiar'},colorButton:{textColorTitle:'Kolor tekstu',bgColorTitle:'Kolor tła',panelTitle:'Colors',auto:'Automatycznie',more:'Więcej kolorów...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Sprawdź pisownię podczas pisania (SCAYT)',opera_title:'Not supported by Opera',enable:'Włącz SCAYT',disable:'Wyłącz SCAYT',about:'Na temat SCAYT',toggle:'Przełącz SCAYT',options:'Opcje',langs:'Języki',moreSuggestions:'Więcej sugestii',ignore:'Ignoruj',ignoreAll:'Ignoruj wszystkie',addWord:'Dodaj słowo',emptyDic:'Nazwa słownika nie może być pusta.',optionsTab:'Opcje',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Języki',dictionariesTab:'Słowniki',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Na temat SCAYT'},about:{title:'Na temat CKEditor',dlgTitle:'Na temat CKEditor',moreInfo:'Informacje na temat licencji można znaleźć na naszej stronie:',copy:'Copyright &copy; $1. Wszelkie prawa zastrzeżone.'},maximize:'Maksymalizuj',minimize:'Minimalizuj',fakeobjects:{anchor:'Kotwica',flash:'Animacja Flash',div:'Separator stron',unknown:'Nieznany obiekt'},resize:'Przeciągnij, aby zmienić rozmiar',colordialog:{title:'Wybierz kolor',options:'Color Options',highlight:'Zaznacz',selected:'Wybrany',clear:'Wyczyść'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/pt-br.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/pt-br.js
new file mode 100644
index 000000000..912899a7d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/pt-br.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['pt-br']={dir:'ltr',editorTitle:'Editor de Texto, %1, pressione ALT 0 para obter ajuda.',toolbar:'Barra de Ferramentas',editor:'Editor de Texto',source:'Código-Fonte',newPage:'Novo',save:'Salvar',preview:'Visualizar',cut:'Recortar',copy:'Copiar',paste:'Colar',print:'Imprimir',underline:'Sublinhado',bold:'Negrito',italic:'Itálico',selectAll:'Selecionar Tudo',removeFormat:'Remover Formatação',strike:'Tachado',subscript:'Subscrito',superscript:'Sobrescrito',horizontalrule:'Inserir Linha Horizontal',pagebreak:'Inserir Quebra de Página',unlink:'Remover Link',undo:'Desfazer',redo:'Refazer',common:{browseServer:'Localizar no Servidor',url:'URL',protocol:'Protocolo',upload:'Enviar ao Servidor',uploadSubmit:'Enviar para o Servidor',image:'Imagem',flash:'Flash',form:'Formulário',checkbox:'Caixa de Seleção',radio:'Botão de Opção',textField:'Caixa de Texto',textarea:'Ãrea de Texto',hiddenField:'Campo Oculto',button:'Botão',select:'Caixa de Listagem',imageButton:'Botão de Imagem',notSet:'<não ajustado>',id:'Id',name:'Nome',langDir:'Direção do idioma',langDirLtr:'Esquerda para Direita (LTR)',langDirRtl:'Direita para Esquerda (RTL)',langCode:'Idioma',longDescr:'Descrição da URL',cssClass:'Classe de CSS',advisoryTitle:'Título',cssStyle:'Estilos',ok:'OK',cancel:'Cancelar',close:'Fechar',preview:'Visualizar',generalTab:'Geral',advancedTab:'Avançado',validateNumberFailed:'Este valor não é um número.',confirmNewPage:'Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?',confirmCancel:'Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?',options:'Opções',target:'Destino',targetNew:'Nova Janela (_blank)',targetTop:'Janela de Cima (_top)',targetSelf:'Mesma Janela (_self)',targetParent:'Janela Pai (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, indisponível</span>'},contextmenu:{options:'Opções Menu de Contexto'},specialChar:{toolbar:'Inserir Caractere Especial',title:'Selecione um Caractere Especial',options:'Opções de Caractere Especial'},link:{toolbar:'Inserir/Editar Link',other:'<outro>',menu:'Editar Link',title:'Editar Link',info:'Informações',target:'Destino',upload:'Enviar ao Servidor',advanced:'Avançado',type:'Tipo de hiperlink',toUrl:'URL',toAnchor:'Âncora nesta página',toEmail:'E-Mail',targetFrame:'<frame>',targetPopup:'<janela popup>',targetFrameName:'Nome do Frame de Destino',targetPopupName:'Nome da Janela Pop-up',popupFeatures:'Propriedades da Janela Pop-up',popupResizable:'Redimensionável',popupStatusBar:'Barra de Status',popupLocationBar:'Barra de Endereços',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menus',popupFullScreen:'Modo Tela Cheia (IE)',popupScrollBars:'Barras de Rolagem',popupDependent:'Dependente (Netscape)',popupWidth:'Largura',popupLeft:'Esquerda',popupHeight:'Altura',popupTop:'Topo',id:'Id',langDir:'Direção do idioma',langDirLTR:'Esquerda para Direita (LTR)',langDirRTL:'Direita para Esquerda (RTL)',acccessKey:'Chave de Acesso',name:'Nome',langCode:'Direção do idioma',tabIndex:'Ãndice de Tabulação',advisoryTitle:'Título',advisoryContentType:'Tipo de Conteúdo',cssClasses:'Classe de CSS',charset:'Charset do Link',styles:'Estilos',selectAnchor:'Selecione uma âncora',anchorName:'Nome da âncora',anchorId:'Id da âncora',emailAddress:'Endereço E-Mail',emailSubject:'Assunto da Mensagem',emailBody:'Corpo da Mensagem',noAnchors:'(Não há âncoras no documento)',noUrl:'Por favor, digite o endereço do Link',noEmail:'Por favor, digite o endereço de e-mail'},anchor:{toolbar:'Inserir/Editar Âncora',menu:'Formatar Âncora',title:'Formatar Âncora',name:'Nome da Âncora',errorName:'Por favor, digite o nome da âncora'},list:{numberedTitle:'Propriedades da Lista Numerada',bulletedTitle:'Propriedades da Lista sem Numeros',type:'Tipo',start:'Início',validateStartNumber:'List start number must be a whole number.',circle:'Círculo',disc:'Disco',square:'Quadrado',none:'Nenhum',notset:'<não definido>',armenian:'Numeração Armêna',georgian:'Numeração da Geórgia (an, ban, gan, etc.)',lowerRoman:'Numeração Romana minúscula (i, ii, iii, iv, v, etc.)',upperRoman:'Numeração Romana maiúscula (I, II, III, IV, V, etc.)',lowerAlpha:'Numeração Alfabética minúscula (a, b, c, d, e, etc.)',upperAlpha:'Numeração Alfabética Maiúscula (A, B, C, D, E, etc.)',lowerGreek:'Numeração Grega minúscula (alpha, beta, gamma, etc.)',decimal:'Numeração Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Numeração Decimal com zeros (01, 02, 03, etc.)'},findAndReplace:{title:'Localizar e Substituir',find:'Localizar',replace:'Substituir',findWhat:'Procurar por:',replaceWith:'Substituir por:',notFoundMsg:'O texto especificado não foi encontrado.',matchCase:'Coincidir Maiúsculas/Minúsculas',matchWord:'Coincidir a palavra inteira',matchCyclic:'Coincidir cíclico',replaceAll:'Substituir Tudo',replaceSuccessMsg:'%1 ocorrência(s) substituída(s).'},table:{toolbar:'Tabela',title:'Formatar Tabela',menu:'Formatar Tabela',deleteTable:'Apagar Tabela',rows:'Linhas',columns:'Colunas',border:'Borda',align:'Alinhamento',alignLeft:'Esquerda',alignCenter:'Centralizado',alignRight:'Direita',width:'Largura',widthPx:'pixels',widthPc:'%',widthUnit:'unidade largura',height:'Altura',cellSpace:'Espaçamento',cellPad:'Margem interna',caption:'Legenda',summary:'Resumo',headers:'Cabeçalho',headersNone:'Nenhum',headersColumn:'Primeira coluna',headersRow:'Primeira linha',headersBoth:'Ambos',invalidRows:'O número de linhas tem que ser um número maior que 0.',invalidCols:'O número de colunas tem que ser um número maior que 0.',invalidBorder:'O tamanho da borda tem que ser um número.',invalidWidth:'A largura da tabela tem que ser um número.',invalidHeight:'A altura da tabela tem que ser um número.',invalidCellSpacing:'O espaçamento das células tem que ser um número.',invalidCellPadding:'A margem interna das células tem que ser um número.',cell:{menu:'Célula',insertBefore:'Inserir célula a esquerda',insertAfter:'Inserir célula a direita',deleteCell:'Remover Células',merge:'Mesclar Células',mergeRight:'Mesclar com célula a direita',mergeDown:'Mesclar com célula abaixo',splitHorizontal:'Dividir célula horizontalmente',splitVertical:'Dividir célula verticalmente',title:'Propriedades da célula',cellType:'Tipo de célula',rowSpan:'Linhas cobertas',colSpan:'Colunas cobertas',wordWrap:'Quebra de palavra',hAlign:'Alinhamento horizontal',vAlign:'Alinhamento vertical',alignTop:'Alinhar no topo',alignMiddle:'Centralizado verticalmente',alignBottom:'Alinhar na base',alignBaseline:'Patamar de alinhamento',bgColor:'Cor de fundo',borderColor:'Cor das bordas',data:'Dados',header:'Cabeçalho',yes:'Sim',no:'Não',invalidWidth:'A largura da célula tem que ser um número.',invalidHeight:'A altura da célula tem que ser um número.',invalidRowSpan:'Linhas cobertas tem que ser um número inteiro.',invalidColSpan:'Colunas cobertas tem que ser um número inteiro.',chooseColor:'Escolher'},row:{menu:'Linha',insertBefore:'Inserir linha acima',insertAfter:'Inserir linha abaixo',deleteRow:'Remover Linhas'},column:{menu:'Coluna',insertBefore:'Inserir coluna a esquerda',insertAfter:'Inserir coluna a direita',deleteColumn:'Remover Colunas'}},button:{title:'Formatar Botão',text:'Texto (Valor)',type:'Tipo',typeBtn:'Botão',typeSbm:'Enviar',typeRst:'Limpar'},checkboxAndRadio:{checkboxTitle:'Formatar Caixa de Seleção',radioTitle:'Formatar Botão de Opção',value:'Valor',selected:'Selecionado'},form:{title:'Formatar Formulário',menu:'Formatar Formulário',action:'Ação',method:'Método',encoding:'Codificação'},select:{title:'Formatar Caixa de Listagem',selectInfo:'Informações',opAvail:'Opções disponíveis',value:'Valor',size:'Tamanho',lines:'linhas',chkMulti:'Permitir múltiplas seleções',opText:'Texto',opValue:'Valor',btnAdd:'Adicionar',btnModify:'Modificar',btnUp:'Para cima',btnDown:'Para baixo',btnSetValue:'Definir como selecionado',btnDelete:'Remover'},textarea:{title:'Formatar Ãrea de Texto',cols:'Colunas',rows:'Linhas'},textfield:{title:'Formatar Caixa de Texto',name:'Nome',value:'Valor',charWidth:'Comprimento (em caracteres)',maxChars:'Número Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Senha'},hidden:{title:'Formatar Campo Oculto',name:'Nome',value:'Valor'},image:{title:'Formatar Imagem',titleButton:'Formatar Botão de Imagem',menu:'Formatar Imagem',infoTab:'Informações da Imagem',btnUpload:'Enviar para o Servidor',upload:'Enviar',alt:'Texto Alternativo',width:'Largura',height:'Altura',lockRatio:'Travar Proporções',unlockRatio:'Destravar Proporções',resetSize:'Redefinir para o Tamanho Original',border:'Borda',hSpace:'HSpace',vSpace:'VSpace',align:'Alinhamento',alignLeft:'Esquerda',alignRight:'Direita',alertUrl:'Por favor, digite a URL da imagem.',linkTab:'Link',button2Img:'Deseja transformar o botão de imagem em uma imagem comum?',img2Button:'Deseja transformar a imagem em um botão de imagem?',urlMissing:'URL da imagem está faltando.',validateWidth:'A largura deve ser um número inteiro.',validateHeight:'A altura deve ser um número inteiro.',validateBorder:'A borda deve ser um número inteiro.',validateHSpace:'O HSpace deve ser um número inteiro.',validateVSpace:'O VSpace deve ser um número inteiro.'},flash:{properties:'Propriedades do Flash',propertiesTab:'Propriedades',title:'Propriedades do Flash',chkPlay:'Tocar Automaticamente',chkLoop:'Tocar Infinitamente',chkMenu:'Habilita Menu Flash',chkFull:'Permitir tela cheia',scale:'Escala',scaleAll:'Mostrar tudo',scaleNoBorder:'Sem Borda',scaleFit:'Escala Exata',access:'Acesso ao script',accessAlways:'Sempre',accessSameDomain:'Acessar Mesmo Domínio',accessNever:'Nunca',align:'Alinhamento',alignLeft:'Esquerda',alignAbsBottom:'Inferior Absoluto',alignAbsMiddle:'Centralizado Absoluto',alignBaseline:'Baseline',alignBottom:'Inferior',alignMiddle:'Centralizado',alignRight:'Direita',alignTextTop:'Superior Absoluto',alignTop:'Superior',quality:'Qualidade',qualityBest:'Qualidade Melhor',qualityHigh:'Qualidade Alta',qualityAutoHigh:'Qualidade Alta Automática',qualityMedium:'Qualidade Média',qualityAutoLow:'Qualidade Baixa Automática',qualityLow:'Qualidade Baixa',windowModeWindow:'Janela',windowModeOpaque:'Opaca',windowModeTransparent:'Transparente',windowMode:'Modo da janela',flashvars:'Variáveis do Flash',bgcolor:'Cor do Plano de Fundo',width:'Largura',height:'Altura',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Por favor, digite o endereço do link',validateWidth:'A largura tem que ser um número.',validateHeight:'A altura tem que ser um número',validateHSpace:'O HSpace tem que ser um número',validateVSpace:'O VSpace tem que ser um número.'},spellCheck:{toolbar:'Verificar Ortografia',title:'Corretor Ortográfico',notAvailable:'Desculpe, o serviço não está disponível no momento.',errorLoading:'Erro carregando servidor de aplicação: %s.',notInDic:'Não encontrada',changeTo:'Alterar para',btnIgnore:'Ignorar uma vez',btnIgnoreAll:'Ignorar Todas',btnReplace:'Alterar',btnReplaceAll:'Alterar Todas',btnUndo:'Desfazer',noSuggestions:'-sem sugestões de ortografia-',progress:'Verificação ortográfica em andamento...',noMispell:'Verificação encerrada: Não foram encontrados erros de ortografia',noChanges:'Verificação ortográfica encerrada: Não houve alterações',oneChange:'Verificação ortográfica encerrada: Uma palavra foi alterada',manyChanges:'Verificação ortográfica encerrada: %1 palavras foram alteradas',ieSpellDownload:'A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?'},smiley:{toolbar:'Emoticon',title:'Inserir Emoticon',options:'Opções de Emoticons'},elementsPath:{eleLabel:'Caminho dos Elementos',eleTitle:'Elemento %1'},numberedlist:'Lista numerada',bulletedlist:'Lista sem números',indent:'Aumentar Recuo',outdent:'Diminuir Recuo',justify:{left:'Alinhar Esquerda',center:'Centralizar',right:'Alinhar Direita',block:'Justificado'},blockquote:'Citação',clipboard:{title:'Colar',cutError:'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).',copyError:'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).',pasteMsg:'Transfira o link usado na caixa usando o teclado com (<STRONG>Ctrl/Cmd+V</STRONG>) e <STRONG>OK</STRONG>.',securityMsg:'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.',pasteArea:'Ãrea para Colar'},pastefromword:{confirmCleanup:'O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?',toolbar:'Colar do Word',title:'Colar do Word',error:'Não foi possível limpar os dados colados devido a um erro interno'},pasteText:{button:'Colar como Texto sem Formatação',title:'Colar como Texto sem Formatação'},templates:{button:'Modelos de layout',title:'Modelo de layout de conteúdo',options:'Opções de Template',insertOption:'Substituir o conteúdo atual',selectPromptMsg:'Selecione um modelo de layout para ser aberto no editor<br>(o conteúdo atual será perdido):',emptyListMsg:'(Não foram definidos modelos de layout)'},showBlocks:'Mostrar blocos de código',stylesCombo:{label:'Estilo',panelTitle:'Estilos de Formatação',panelTitle1:'Estilos de bloco',panelTitle2:'Estilos de texto corrido',panelTitle3:'Estilos de objeto'},format:{label:'Formatação',panelTitle:'Formatação',tag_p:'Normal',tag_pre:'Formatado',tag_address:'Endereço',tag_h1:'Título 1',tag_h2:'Título 2',tag_h3:'Título 3',tag_h4:'Título 4',tag_h5:'Título 5',tag_h6:'Título 6',tag_div:'Normal (DIV)'},div:{title:'Criar Container de DIV',toolbar:'Criar Container de DIV',cssClassInputLabel:'Classes de CSS',styleSelectLabel:'Estilo',IdInputLabel:'Id',languageCodeInputLabel:'Código de Idioma',inlineStyleInputLabel:'Estilo Inline',advisoryTitleInputLabel:'Título Consulta',langDirLabel:'Direção da Escrita',langDirLTRLabel:'Esquerda para Direita (LTR)',langDirRTLLabel:'Direita para Esquerda (RTL)',edit:'Editar Div',remove:'Remover Div'},font:{label:'Fonte',voiceLabel:'Fonte',panelTitle:'Fonte'},fontSize:{label:'Tamanho',voiceLabel:'Tamanho da fonte',panelTitle:'Tamanho'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor do Plano de Fundo',panelTitle:'Cores',auto:'Automático',more:'Mais Cores...'},colors:{'000':'Preto',800000:'Foquete','8B4513':'Marrom 1','2F4F4F':'Cinza 1','008080':'Cerceta','000080':'Azul Marinho','4B0082':'Ãndigo',696969:'Cinza 2',B22222:'Tijolo de Fogo',A52A2A:'Marrom 2',DAA520:'Vara Dourada','006400':'Verde Escuro','40E0D0':'Turquesa','0000CD':'Azul Médio',800080:'Roxo',808080:'Cinza 3',F00:'Vermelho',FF8C00:'Laranja Escuro',FFD700:'Dourado','008000':'Verde','0FF':'Ciano','00F':'Azul',EE82EE:'Violeta',A9A9A9:'Cinza Escuro',FFA07A:'Salmão Claro',FFA500:'Laranja',FFFF00:'Amarelo','00FF00':'Lima',AFEEEE:'Turquesa Pálido',ADD8E6:'Azul Claro',DDA0DD:'Ameixa',D3D3D3:'Cinza Claro',FFF0F5:'Lavanda 1',FAEBD7:'Branco Antiguidade',FFFFE0:'Amarelo Claro',F0FFF0:'Orvalho',F0FFFF:'Azure',F0F8FF:'Azul Alice',E6E6FA:'Lavanda 2',FFF:'Branco'},scayt:{title:'Correção ortográfica durante a digitação',opera_title:'Não suportado no Opera',enable:'Habilitar correção ortográfica durante a digitação',disable:'Desabilitar correção ortográfica durante a digitação',about:'Sobre a correção ortográfica durante a digitação',toggle:'Ativar/desativar correção ortográfica durante a digitação',options:'Opções',langs:'Idiomas',moreSuggestions:'Mais sugestões',ignore:'Ignorar',ignoreAll:'Ignorar todas',addWord:'Adicionar palavra',emptyDic:'O nome do dicionário não deveria estar vazio.',optionsTab:'Opções',allCaps:'Ignorar palavras maiúsculas',ignoreDomainNames:'Ignorar nomes de domínio',mixedCase:'Ignorar palavras com maiúsculas e minúsculas misturadas',mixedWithDigits:'Ignorar palavras com números',languagesTab:'Idiomas',dictionariesTab:'Dicionários',dic_field_name:'Nome do Dicionário',dic_create:'Criar',dic_restore:'Restaurar',dic_delete:'Excluir',dic_rename:'Renomear',dic_info:'Inicialmente, o dicionário do usuário fica armazenado em um Cookie. Porém, Cookies tem tamanho limitado, portanto quand o dicionário do usuário atingir o tamanho limite poderá ser armazenado no nosso servidor. Para armazenar seu dicionário pessoal no nosso servidor deverá especificar um nome para ele. Se já tiver um dicionário armazenado por favor especifique o seu nome e clique em Restaurar.',aboutTab:'Sobre'},about:{title:'Sobre o CKEditor',dlgTitle:'Sobre o CKEditor',moreInfo:'Para informações sobre a licença por favor visite o nosso site:',copy:'Copyright &copy; $1. Todos os direitos reservados.'},maximize:'Maximizar',minimize:'Minimize',fakeobjects:{anchor:'Âncora',flash:'Animação em Flash',div:'Quebra de página',unknown:'Objeto desconhecido'},resize:'Arraste para redimensionar',colordialog:{title:'Selecione uma cor',options:'Opções de Cor',highlight:'Grifar',selected:'Cor Selecionada',clear:'Limpar'},toolbarCollapse:'Diminuir Barra de Ferramentas',toolbarExpand:'Aumentar Barra de Ferramentas',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/pt.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/pt.js
new file mode 100644
index 000000000..3ed6877ea
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/pt.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.pt={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Fonte',newPage:'Nova Página',save:'Guardar',preview:'Pré-visualizar',cut:'Cortar',copy:'Copiar',paste:'Colar',print:'Imprimir',underline:'Sublinhado',bold:'Negrito',italic:'Itálico',selectAll:'Seleccionar Tudo',removeFormat:'Eliminar Formato',strike:'Rasurado',subscript:'Superior à Linha',superscript:'Inferior à Linha',horizontalrule:'Inserir Linha Horizontal',pagebreak:'Inserir Quebra de Página',unlink:'Eliminar Hiperligação',undo:'Anular',redo:'Repetir',common:{browseServer:'Navegar no Servidor',url:'URL',protocol:'Protocolo',upload:'Carregar',uploadSubmit:'Enviar para o Servidor',image:'Imagem',flash:'Flash',form:'Formulário',checkbox:'Caixa de Verificação',radio:'Botão de Opção',textField:'Campo de Texto',textarea:'Ãrea de Texto',hiddenField:'Campo Escondido',button:'Botão',select:'Caixa de Combinação',imageButton:'Botão de Imagem',notSet:'<Não definido>',id:'Id',name:'Nome',langDir:'Orientação de idioma',langDirLtr:'Esquerda à Direita (LTR)',langDirRtl:'Direita a Esquerda (RTL)',langCode:'Código de Idioma',longDescr:'Descrição Completa do URL',cssClass:'Classes de Estilo de Folhas Classes',advisoryTitle:'Título',cssStyle:'Estilo',ok:'OK',cancel:'Cancelar',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Avançado',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Inserir Caracter Especial',title:'Seleccione um caracter especial',options:'Special Character Options'},link:{toolbar:'Inserir/Editar Hiperligação',other:'<outro>',menu:'Editar Hiperligação',title:'Hiperligação',info:'Informação de Hiperligação',target:'Destino',upload:'Carregar',advanced:'Avançado',type:'Tipo de Hiperligação',toUrl:'URL',toAnchor:'Referência a esta página',toEmail:'E-Mail',targetFrame:'<Frame>',targetPopup:'<Janela de popup>',targetFrameName:'Nome do Frame Destino',targetPopupName:'Nome da Janela de Popup',popupFeatures:'Características de Janela de Popup',popupResizable:'Resizable',popupStatusBar:'Barra de Estado',popupLocationBar:'Barra de localização',popupToolbar:'Barra de Ferramentas',popupMenuBar:'Barra de Menu',popupFullScreen:'Janela Completa (IE)',popupScrollBars:'Barras de deslocamento',popupDependent:'Dependente (Netscape)',popupWidth:'Largura',popupLeft:'Posição Esquerda',popupHeight:'Altura',popupTop:'Posição Direita',id:'Id',langDir:'Orientação de idioma',langDirLTR:'Esquerda à Direita (LTR)',langDirRTL:'Direita a Esquerda (RTL)',acccessKey:'Chave de Acesso',name:'Nome',langCode:'Orientação de idioma',tabIndex:'Ãndice de Tubulação',advisoryTitle:'Título',advisoryContentType:'Tipo de Conteúdo',cssClasses:'Classes de Estilo de Folhas Classes',charset:'Fonte de caracteres vinculado',styles:'Estilo',selectAnchor:'Seleccionar una referência',anchorName:'Por Nome de Referência',anchorId:'Por ID de elemento',emailAddress:'Endereço de E-Mail',emailSubject:'Título de Mensagem',emailBody:'Corpo da Mensagem',noAnchors:'(Não há referências disponíveis no documento)',noUrl:'Por favor introduza a hiperligação URL',noEmail:'Por favor introduza o endereço de e-mail'},anchor:{toolbar:' Inserir/Editar Âncora',menu:'Propriedades da Âncora',title:'Propriedades da Âncora',name:'Nome da Âncora',errorName:'Por favor, introduza o nome da âncora'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Procurar',replace:'Substituir',findWhat:'Texto a Procurar:',replaceWith:'Substituir por:',notFoundMsg:'O texto especificado não foi encontrado.',matchCase:'Maiúsculas/Minúsculas',matchWord:'Coincidir com toda a palavra',matchCyclic:'Match cyclic',replaceAll:'Substituir Tudo',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Propriedades da Tabela',menu:'Propriedades da Tabela',deleteTable:'Eliminar Tabela',rows:'Linhas',columns:'Colunas',border:'Tamanho do Limite',align:'Alinhamento',alignLeft:'Esquerda',alignCenter:'Centrado',alignRight:'Direita',width:'Largura',widthPx:'pixeis',widthPc:'percentagem',widthUnit:'width unit',height:'Altura',cellSpace:'Esp. e/células',cellPad:'Esp. interior',caption:'Título',summary:'Sumário',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Célula',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Eliminar Célula',merge:'Unir Células',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Linha',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Eliminar Linhas'},column:{menu:'Coluna',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Eliminar Coluna'}},button:{title:'Propriedades do Botão',text:'Texto (Valor)',type:'Tipo',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Propriedades da Caixa de Verificação',radioTitle:'Propriedades do Botão de Opção',value:'Valor',selected:'Seleccionado'},form:{title:'Propriedades do Formulário',menu:'Propriedades do Formulário',action:'Acção',method:'Método',encoding:'Encoding'},select:{title:'Propriedades da Caixa de Combinação',selectInfo:'Informação',opAvail:'Opções Possíveis',value:'Valor',size:'Tamanho',lines:'linhas',chkMulti:'Permitir selecções múltiplas',opText:'Texto',opValue:'Valor',btnAdd:'Adicionar',btnModify:'Modificar',btnUp:'Para cima',btnDown:'Para baixo',btnSetValue:'Definir um valor por defeito',btnDelete:'Apagar'},textarea:{title:'Propriedades da Ãrea de Texto',cols:'Colunas',rows:'Linhas'},textfield:{title:'Propriedades do Campo de Texto',name:'Nome',value:'Valor',charWidth:'Tamanho do caracter',maxChars:'Nr. Máximo de Caracteres',type:'Tipo',typeText:'Texto',typePass:'Palavra-chave'},hidden:{title:'Propriedades do Campo Escondido',name:'Nome',value:'Valor'},image:{title:'Propriedades da Imagem',titleButton:'Propriedades do Botão de imagens',menu:'Propriedades da Imagem',infoTab:'Informação da Imagem',btnUpload:'Enviar para o Servidor',upload:'Carregar',alt:'Texto Alternativo',width:'Largura',height:'Altura',lockRatio:'Proporcional',unlockRatio:'Unlock Ratio',resetSize:'Tamanho Original',border:'Limite',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',align:'Alinhamento',alignLeft:'Esquerda',alignRight:'Direita',alertUrl:'Por favor introduza o URL da imagem',linkTab:'Hiperligação',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Propriedades do Flash',propertiesTab:'Properties',title:'Propriedades do Flash',chkPlay:'Reproduzir automaticamente',chkLoop:'Loop',chkMenu:'Permitir Menu do Flash',chkFull:'Allow Fullscreen',scale:'Escala',scaleAll:'Mostrar tudo',scaleNoBorder:'Sem Limites',scaleFit:'Tamanho Exacto',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Alinhamento',alignLeft:'Esquerda',alignAbsBottom:'Abs inferior',alignAbsMiddle:'Abs centro',alignBaseline:'Linha de base',alignBottom:'Fundo',alignMiddle:'Centro',alignRight:'Direita',alignTextTop:'Topo do texto',alignTop:'Topo',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Cor de Fundo',width:'Largura',height:'Altura',hSpace:'Esp.Horiz',vSpace:'Esp.Vert',validateSrc:'Por favor introduza a hiperligação URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Verificação Ortográfica',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Não está num directório',changeTo:'Mudar para',btnIgnore:'Ignorar',btnIgnoreAll:'Ignorar Tudo',btnReplace:'Substituir',btnReplaceAll:'Substituir Tudo',btnUndo:'Anular',noSuggestions:'- Sem sugestões -',progress:'Verificação ortográfica em progresso…',noMispell:'Verificação ortográfica completa: não foram encontrados erros',noChanges:'Verificação ortográfica completa: não houve alteração de palavras',oneChange:'Verificação ortográfica completa: uma palavra alterada',manyChanges:'Verificação ortográfica completa: %1 palavras alteradas',ieSpellDownload:' Verificação ortográfica não instalada. Quer descarregar agora?'},smiley:{toolbar:'Emoticons',title:'Inserir um Emoticon',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numeração',bulletedlist:'Marcas',indent:'Aumentar Avanço',outdent:'Diminuir Avanço',justify:{left:'Alinhar à Esquerda',center:'Alinhar ao Centro',right:'Alinhar à Direita',block:'Justificado'},blockquote:'Block Quote',clipboard:{title:'Colar',cutError:'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).',copyError:'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).',pasteMsg:'Por favor, cole dentro da seguinte caixa usando o teclado (<STRONG>Ctrl/Cmd+V</STRONG>) e prima <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Colar do Word',title:'Colar do Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Colar como Texto Simples',title:'Colar como Texto Simples'},templates:{button:'Modelos',title:'Modelo de Conteúdo',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Por favor, seleccione o modelo a abrir no editor<br>(o conteúdo actual será perdido):',emptyListMsg:'(Sem modelos definidos)'},showBlocks:'Show Blocks',stylesCombo:{label:'Estilo',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formato',panelTitle:'Formato',tag_p:'Normal',tag_pre:'Formatado',tag_address:'Endereço',tag_h1:'Título 1',tag_h2:'Título 2',tag_h3:'Título 3',tag_h4:'Título 4',tag_h5:'Título 5',tag_h6:'Título 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Tipo de Letra',voiceLabel:'Font',panelTitle:'Tipo de Letra'},fontSize:{label:'Tamanho',voiceLabel:'Font Size',panelTitle:'Tamanho'},colorButton:{textColorTitle:'Cor do Texto',bgColorTitle:'Cor de Fundo',panelTitle:'Colors',auto:'Automático',more:'Mais Cores...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ro.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ro.js
new file mode 100644
index 000000000..aa265fa39
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ro.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ro={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Sursa',newPage:'Pagină nouă',save:'Salvează',preview:'Previzualizare',cut:'Taie',copy:'Copiază',paste:'Adaugă',print:'Printează',underline:'Subliniat (underline)',bold:'Îngroşat (bold)',italic:'Înclinat (italic)',selectAll:'Selectează tot',removeFormat:'Înlătură formatarea',strike:'Tăiat (strike through)',subscript:'Indice (subscript)',superscript:'Putere (superscript)',horizontalrule:'Inserează linie orizontă',pagebreak:'Inserează separator de pagină (Page Break)',unlink:'Înlătură link (legătură web)',undo:'Starea anterioară (undo)',redo:'Starea ulterioară (redo)',common:{browseServer:'Răsfoieşte server',url:'URL',protocol:'Protocol',upload:'Încarcă',uploadSubmit:'Trimite la server',image:'Imagine',flash:'Flash',form:'Formular (Form)',checkbox:'Bifă (Checkbox)',radio:'Buton radio (RadioButton)',textField:'Câmp text (TextField)',textarea:'Suprafaţă text (Textarea)',hiddenField:'Câmp ascuns (HiddenField)',button:'Buton',select:'Câmp selecţie (SelectionField)',imageButton:'Buton imagine (ImageButton)',notSet:'<nesetat>',id:'Id',name:'Nume',langDir:'Direcţia cuvintelor',langDirLtr:'stânga-dreapta (LTR)',langDirRtl:'dreapta-stânga (RTL)',langCode:'Codul limbii',longDescr:'Descrierea lungă URL',cssClass:'Clasele cu stilul paginii (CSS)',advisoryTitle:'Titlul consultativ',cssStyle:'Stil',ok:'Bine',cancel:'Anulare',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Avansat',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Inserează caracter special',title:'Selectează caracter special',options:'Special Character Options'},link:{toolbar:'Inserează/Editează link (legătură web)',other:'<alt>',menu:'Editează Link',title:'Link (Legătură web)',info:'Informaţii despre link (Legătură web)',target:'Ţintă (Target)',upload:'Încarcă',advanced:'Avansat',type:'Tipul link-ului (al legăturii web)',toUrl:'URL',toAnchor:'Ancoră în această pagină',toEmail:'E-Mail',targetFrame:'<frame>',targetPopup:'<fereastra popup>',targetFrameName:'Numele frame-ului ţintă',targetPopupName:'Numele ferestrei popup',popupFeatures:'Proprietăţile ferestrei popup',popupResizable:'Resizable',popupStatusBar:'Bara de status',popupLocationBar:'Bara de locaţie',popupToolbar:'Bara de opţiuni',popupMenuBar:'Bara de meniu',popupFullScreen:'Tot ecranul (Full Screen)(IE)',popupScrollBars:'Scroll Bars',popupDependent:'Dependent (Netscape)',popupWidth:'Lăţime',popupLeft:'Poziţia la stânga',popupHeight:'Înălţime',popupTop:'Poziţia la dreapta',id:'Id',langDir:'Direcţia cuvintelor',langDirLTR:'stânga-dreapta (LTR)',langDirRTL:'dreapta-stânga (RTL)',acccessKey:'Tasta de acces',name:'Nume',langCode:'Direcţia cuvintelor',tabIndex:'Indexul tabului',advisoryTitle:'Titlul consultativ',advisoryContentType:'Tipul consultativ al titlului',cssClasses:'Clasele cu stilul paginii (CSS)',charset:'Setul de caractere al resursei legate',styles:'Stil',selectAnchor:'Selectaţi o ancoră',anchorName:'după numele ancorei',anchorId:'după Id-ul elementului',emailAddress:'Adresă de e-mail',emailSubject:'Subiectul mesajului',emailBody:'Conţinutul mesajului',noAnchors:'(Nicio ancoră disponibilă în document)',noUrl:'Vă rugăm să scrieţi URL-ul',noEmail:'Vă rugăm să scrieţi adresa de e-mail'},anchor:{toolbar:'Inserează/Editează ancoră',menu:'Proprietăţi ancoră',title:'Proprietăţi ancoră',name:'Numele ancorei',errorName:'Vă rugăm scrieţi numele ancorei'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Găseşte şi înlocuieşte',find:'Găseşte',replace:'Înlocuieşte',findWhat:'Găseşte:',replaceWith:'Înlocuieşte cu:',notFoundMsg:'Textul specificat nu a fost găsit.',matchCase:'Deosebeşte majuscule de minuscule (Match case)',matchWord:'Doar cuvintele întregi',matchCyclic:'Match cyclic',replaceAll:'Înlocuieşte tot',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabel',title:'Proprietăţile tabelului',menu:'Proprietăţile tabelului',deleteTable:'Şterge tabel',rows:'Linii',columns:'Coloane',border:'Mărimea marginii',align:'Aliniament',alignLeft:'Stânga',alignCenter:'Centru',alignRight:'Dreapta',width:'Lăţime',widthPx:'pixeli',widthPc:'procente',widthUnit:'width unit',height:'Înălţime',cellSpace:'Spaţiu între celule',cellPad:'Spaţiu în cadrul celulei',caption:'Titlu (Caption)',summary:'Rezumat',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Celulă',insertBefore:'Inserează celulă înainte',insertAfter:'Inserează celulă după',deleteCell:'Şterge celule',merge:'Uneşte celule',mergeRight:'Uneşte la dreapta',mergeDown:'Uneşte jos',splitHorizontal:'Împarte celula pe orizontală',splitVertical:'Împarte celula pe verticală',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Linie',insertBefore:'Inserează linie înainte',insertAfter:'Inserează linie după',deleteRow:'Şterge linii'},column:{menu:'Coloană',insertBefore:'Inserează coloană înainte',insertAfter:'Inserează coloană după',deleteColumn:'Şterge celule'}},button:{title:'Proprietăţi buton',text:'Text (Valoare)',type:'Tip',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Proprietăţi bifă (Checkbox)',radioTitle:'Proprietăţi buton radio (Radio Button)',value:'Valoare',selected:'Selectat'},form:{title:'Proprietăţi formular (Form)',menu:'Proprietăţi formular (Form)',action:'Acţiune',method:'Metodă',encoding:'Encoding'},select:{title:'Proprietăţi câmp selecţie (Selection Field)',selectInfo:'Informaţii',opAvail:'Opţiuni disponibile',value:'Valoare',size:'Mărime',lines:'linii',chkMulti:'Permite selecţii multiple',opText:'Text',opValue:'Valoare',btnAdd:'Adaugă',btnModify:'Modifică',btnUp:'Sus',btnDown:'Jos',btnSetValue:'Setează ca valoare selectată',btnDelete:'Şterge'},textarea:{title:'Proprietăţi suprafaţă text (Textarea)',cols:'Coloane',rows:'Linii'},textfield:{title:'Proprietăţi câmp text (Text Field)',name:'Nume',value:'Valoare',charWidth:'Lărgimea caracterului',maxChars:'Caractere maxime',type:'Tip',typeText:'Text',typePass:'Parolă'},hidden:{title:'Proprietăţi câmp ascuns (Hidden Field)',name:'Nume',value:'Valoare'},image:{title:'Proprietăţile imaginii',titleButton:'Proprietăţi buton imagine (Image Button)',menu:'Proprietăţile imaginii',infoTab:'Informaţii despre imagine',btnUpload:'Trimite la server',upload:'Încarcă',alt:'Text alternativ',width:'Lăţime',height:'Înălţime',lockRatio:'Păstrează proporţiile',unlockRatio:'Unlock Ratio',resetSize:'Resetează mărimea',border:'Margine',hSpace:'HSpace',vSpace:'VSpace',align:'Aliniere',alignLeft:'Stânga',alignRight:'Dreapta',alertUrl:'Vă rugăm să scrieţi URL-ul imaginii',linkTab:'Link (Legătură web)',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Proprietăţile flash-ului',propertiesTab:'Properties',title:'Proprietăţile flash-ului',chkPlay:'Rulează automat',chkLoop:'Repetă (Loop)',chkMenu:'Activează meniul flash',chkFull:'Allow Fullscreen',scale:'Scală',scaleAll:'Arată tot',scaleNoBorder:'Fără margini (No border)',scaleFit:'Potriveşte',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Aliniere',alignLeft:'Stânga',alignAbsBottom:'Jos absolut (Abs Bottom)',alignAbsMiddle:'Mijloc absolut (Abs Middle)',alignBaseline:'Linia de jos (Baseline)',alignBottom:'Jos',alignMiddle:'Mijloc',alignRight:'Dreapta',alignTextTop:'Text sus',alignTop:'Sus',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Coloarea fundalului',width:'Lăţime',height:'Înălţime',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Vă rugăm să scrieţi URL-ul',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Verifică text',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nu e în dicţionar',changeTo:'Schimbă în',btnIgnore:'Ignoră',btnIgnoreAll:'Ignoră toate',btnReplace:'Înlocuieşte',btnReplaceAll:'Înlocuieşte tot',btnUndo:'Starea anterioară (undo)',noSuggestions:'- Fără sugestii -',progress:'Verificarea textului în desfăşurare...',noMispell:'Verificarea textului terminată: Nicio greşeală găsită',noChanges:'Verificarea textului terminată: Niciun cuvânt modificat',oneChange:'Verificarea textului terminată: Un cuvânt modificat',manyChanges:'Verificarea textului terminată: 1% cuvinte modificate',ieSpellDownload:'Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?'},smiley:{toolbar:'Figură expresivă (Emoticon)',title:'Inserează o figură expresivă (Emoticon)',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Listă numerotată',bulletedlist:'Listă cu puncte',indent:'Creşte indentarea',outdent:'Scade indentarea',justify:{left:'Aliniere la stânga',center:'Aliniere centrală',right:'Aliniere la dreapta',block:'Aliniere în bloc (Block Justify)'},blockquote:'Citat',clipboard:{title:'Adaugă',cutError:'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).',copyError:'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).',pasteMsg:'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (<STRONG>Ctrl/Cmd+V</STRONG>) şi apăsaţi <STRONG>OK</STRONG>.',securityMsg:'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Adaugă din Word',title:'Adaugă din Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Adaugă ca text simplu (Plain Text)',title:'Adaugă ca text simplu (Plain Text)'},templates:{button:'Template-uri (şabloane)',title:'Template-uri (şabloane) de conţinut',options:'Template Options',insertOption:'Înlocuieşte cuprinsul actual',selectPromptMsg:'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):',emptyListMsg:'(Niciun template (şablon) definit)'},showBlocks:'Arată blocurile',stylesCombo:{label:'Stil',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formatare',panelTitle:'Formatare',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'Mărime',voiceLabel:'Font Size',panelTitle:'Mărime'},colorButton:{textColorTitle:'Culoarea textului',bgColorTitle:'Coloarea fundalului',panelTitle:'Colors',auto:'Automatic',more:'Mai multe culori...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/ru.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/ru.js
new file mode 100644
index 000000000..fbd990c9b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/ru.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.ru={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'ИÑточник',newPage:'ÐÐ¾Ð²Ð°Ñ Ñтраница',save:'Сохранить',preview:'Предварительный проÑмотр',cut:'Вырезать',copy:'Копировать',paste:'Ð’Ñтавить',print:'Печать',underline:'Подчеркнутый',bold:'Жирный',italic:'КурÑив',selectAll:'Выделить вÑе',removeFormat:'Убрать форматирование',strike:'Зачеркнутый',subscript:'ПодÑтрочный индекÑ',superscript:'ÐадÑтрочный индекÑ',horizontalrule:'Ð’Ñтавить горизонтальную линию',pagebreak:'Ð’Ñтавить разрыв Ñтраницы',unlink:'Убрать ÑÑылку',undo:'Отменить',redo:'Повторить',common:{browseServer:'ПроÑмотреть на Ñервере',url:'URL',protocol:'Протокол',upload:'Закачать',uploadSubmit:'ПоÑлать на Ñервер',image:'Изображение',flash:'Flash',form:'Форма',checkbox:'Ð¤Ð»Ð°Ð³Ð¾Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°',radio:'Кнопка выбора',textField:'ТекÑтовое поле',textarea:'ТекÑÑ‚Ð¾Ð²Ð°Ñ Ð¾Ð±Ð»Ð°Ñть',hiddenField:'Скрытое поле',button:'Кнопка',select:'СпиÑок',imageButton:'Кнопка Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼',notSet:'<не определено>',id:'Идентификатор',name:'ИмÑ',langDir:'Ðаправление Ñзыка',langDirLtr:'Слева на право (LTR)',langDirRtl:'Справа на лево (RTL)',langCode:'Язык',longDescr:'Длинное опиÑание URL',cssClass:'КлаÑÑ CSS',advisoryTitle:'Заголовок',cssStyle:'Стиль CSS',ok:'ОК',cancel:'Отмена',close:'Close',preview:'Preview',generalTab:'ИнформациÑ',advancedTab:'РаÑширенный',validateNumberFailed:'Это значение не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом.',confirmNewPage:'Ð’Ñе неÑохраненные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ утерÑны. Ð’Ñ‹ уверены, что хотите перейти на другую Ñтраницу?',confirmCancel:'Ðекоторые опции были изменены. Ð’Ñ‹ уверены, что хотите закрыть диалог?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, недоÑтупно</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ð’Ñтавить Ñпециальный Ñимвол',title:'Выберите Ñпециальный Ñимвол',options:'Special Character Options'},link:{toolbar:'Ð’Ñтавить/Редактировать ÑÑылку',other:'<другой>',menu:'Ð’Ñтавить ÑÑылку',title:'СÑылка',info:'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑÑылки',target:'Цель',upload:'Закачать',advanced:'РаÑширенный',type:'Тип ÑÑылки',toUrl:'URL',toAnchor:'Якорь на Ñту Ñтраницу',toEmail:'Эл. почта',targetFrame:'<фрейм>',targetPopup:'<вÑплывающее окно>',targetFrameName:'Ð˜Ð¼Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ фрейма',targetPopupName:'Ð˜Ð¼Ñ Ð²Ñплывающего окна',popupFeatures:'СвойÑтва вÑплывающего окна',popupResizable:'ИзменÑемый размер',popupStatusBar:'Строка ÑоÑтоÑниÑ',popupLocationBar:'Панель локации',popupToolbar:'Панель инÑтрументов',popupMenuBar:'Панель меню',popupFullScreen:'Полный Ñкран (IE)',popupScrollBars:'ПолоÑÑ‹ прокрутки',popupDependent:'ЗавиÑимый (Netscape)',popupWidth:'Ширина',popupLeft:'ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñлева',popupHeight:'Ð’Ñ‹Ñота',popupTop:'ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ñверху',id:'Id',langDir:'Ðаправление Ñзыка',langDirLTR:'Слева направо (LTR)',langDirRTL:'Справа налево (RTL)',acccessKey:'ГорÑÑ‡Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ°',name:'ИмÑ',langCode:'Код Ñзыка',tabIndex:'ПоÑледовательноÑть перехода',advisoryTitle:'Заголовок',advisoryContentType:'Тип Ñодержимого',cssClasses:'КлаÑÑ CSS',charset:'Кодировка',styles:'Стиль CSS',selectAnchor:'Выберите Ñкорь',anchorName:'По имени ÑкорÑ',anchorId:'По идентификатору Ñлемента',emailAddress:'ÐÐ´Ñ€ÐµÑ Ñл. почты',emailSubject:'Заголовок ÑообщениÑ',emailBody:'Тело ÑообщениÑ',noAnchors:'(Ðет Ñкорей доÑтупных в Ñтом документе)',noUrl:'ПожалуйÑта, введите URL ÑÑылки',noEmail:'ПожалуйÑта, введите Ð°Ð´Ñ€ÐµÑ Ñл. почты'},anchor:{toolbar:'Ð’Ñтавить/Редактировать Ñкорь',menu:'СвойÑтва ÑкорÑ',title:'СвойÑтва ÑкорÑ',name:'Ð˜Ð¼Ñ ÑкорÑ',errorName:'ПожалуйÑта, введите Ð¸Ð¼Ñ ÑкорÑ'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Ðайти и заменить',find:'Ðайти',replace:'Заменить',findWhat:'Ðайти:',replaceWith:'Заменить на:',notFoundMsg:'Указанный текÑÑ‚ не найден.',matchCase:'Учитывать региÑтр',matchWord:'Только Ñлово целиком',matchCyclic:'Ðачинать Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° поÑле доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ†Ð°',replaceAll:'Заменить вÑе',replaceSuccessMsg:'%1 Ñовпадение(й) заменено.'},table:{toolbar:'Таблица',title:'СвойÑтва таблицы',menu:'СвойÑтва таблицы',deleteTable:'Удалить таблицу',rows:'Строки',columns:'Колонки',border:'Размер бордюра',align:'Выравнивание',alignLeft:'Слева',alignCenter:'По центру',alignRight:'Справа',width:'Ширина',widthPx:'пикÑелей',widthPc:'процентов',widthUnit:'width unit',height:'Ð’Ñ‹Ñота',cellSpace:'Промежуток (spacing)',cellPad:'ОтÑтуп (padding)',caption:'Заголовок',summary:'Резюме',headers:'Заголовки',headersNone:'Ðет',headersColumn:'Первый Ñтолбец',headersRow:'ÐŸÐµÑ€Ð²Ð°Ñ Ñтрока',headersBoth:'Оба варианта',invalidRows:'ЧиÑло Ñтрок должно быть больше 0.',invalidCols:'ЧиÑло Ñтолбцов должно быть больше 0.',invalidBorder:'Ширина бордюра должна быть чиÑлом.',invalidWidth:'Ширина таблицы должна быть чиÑлом.',invalidHeight:'Ð’Ñ‹Ñота таблицы должна быть чиÑлом.',invalidCellSpacing:'Размер промежутков (cellspacing) между Ñчейками должны быть чиÑлом.',invalidCellPadding:'ОтÑтупы внутри Ñчеек (cellpadding) должны быть чиÑлом.',cell:{menu:'Ячейка',insertBefore:'Ð’Ñтавить Ñчейку до',insertAfter:'Ð’Ñтавить Ñчейку поÑле',deleteCell:'Удалить Ñчейки',merge:'Объединить Ñчейки',mergeRight:'Объединить Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹',mergeDown:'Объединить Ñ Ð½Ð¸Ð¶Ð½ÐµÐ¹',splitHorizontal:'Разбить Ñчейку горизонтально',splitVertical:'Разбить Ñчейку вертикально',title:'СвойÑтва Ñчейки',cellType:'Тип Ñчейки',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ð¾ Ñловам',hAlign:'Выравнивание по горизонтали',vAlign:'Выравнивание по вертикали',alignTop:'По верху',alignMiddle:'ПоÑередине',alignBottom:'По низу',alignBaseline:'По базовой линии',bgColor:'Цвет фона',borderColor:'Цвет границы',data:'Данные',header:'Заголовок',yes:'Да',no:'Ðет',invalidWidth:'Ширина Ñчейки должна быть чиÑлом.',invalidHeight:'Ð’Ñ‹Ñота Ñчейки должна быть чиÑлом.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Выберите'},row:{menu:'Строка',insertBefore:'Ð’Ñтавить Ñтроку до',insertAfter:'Ð’Ñтавить Ñтроку поÑле',deleteRow:'Удалить Ñтроки'},column:{menu:'Колонка',insertBefore:'Ð’Ñтавить колонку до',insertAfter:'Ð’Ñтавить колонку поÑле',deleteColumn:'Удалить колонки'}},button:{title:'СвойÑтва кнопки',text:'ТекÑÑ‚ (Значение)',type:'Тип',typeBtn:'Кнопка',typeSbm:'Отправить',typeRst:'СброÑить'},checkboxAndRadio:{checkboxTitle:'СвойÑтва флаговой кнопки',radioTitle:'СвойÑтва кнопки выбора',value:'Значение',selected:'ВыбраннаÑ'},form:{title:'СвойÑтва формы',menu:'СвойÑтва формы',action:'ДейÑтвие',method:'Метод',encoding:'Кодировка'},select:{title:'СвойÑтва ÑпиÑка',selectInfo:'ИнформациÑ',opAvail:'ДоÑтупные варианты',value:'Значение',size:'Размер',lines:'линии',chkMulti:'Разрешить множеÑтвенный выбор',opText:'ТекÑÑ‚',opValue:'Значение',btnAdd:'Добавить',btnModify:'Модифицировать',btnUp:'Вверх',btnDown:'Вниз',btnSetValue:'УÑтановить как выбранное значение',btnDelete:'Удалить'},textarea:{title:'СвойÑтва текÑтовой облаÑти',cols:'Колонки',rows:'Строки'},textfield:{title:'СвойÑтва текÑтового полÑ',name:'ИмÑ',value:'Значение',charWidth:'Ширина',maxChars:'МакÑ. кол-во Ñимволов',type:'Тип',typeText:'ТекÑÑ‚',typePass:'Пароль'},hidden:{title:'СвойÑтва Ñкрытого полÑ',name:'ИмÑ',value:'Значение'},image:{title:'СвойÑтва изображениÑ',titleButton:'СвойÑтва кнопки Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼',menu:'СвойÑтва изображениÑ',infoTab:'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ изображении',btnUpload:'Отправить на Ñервер',upload:'Закачать',alt:'Ðльтернативный текÑÑ‚',width:'Ширина',height:'Ð’Ñ‹Ñота',lockRatio:'СохранÑть пропорции',unlockRatio:'Unlock Ratio',resetSize:'СброÑить размер',border:'Бордюр',hSpace:'Горизонтальный отÑтуп',vSpace:'Вертикальный отÑтуп',align:'Выравнивание',alignLeft:'По левому краю',alignRight:'По правому краю',alertUrl:'ПожалуйÑта, введите URL изображениÑ',linkTab:'СÑылка',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'ОтÑутÑтвует URL картинки.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'СвойÑтва Flash',propertiesTab:'СвойÑтва',title:'СвойÑтва Flash',chkPlay:'Ðвто проигрывание',chkLoop:'Повтор',chkMenu:'Включить меню Flash',chkFull:'разрешить полноÑкранный режим',scale:'МаÑштабировать',scaleAll:'Показывать вÑе',scaleNoBorder:'Без бордюра',scaleFit:'Точное Ñовпадение',access:'ОблаÑть доÑтупа Ñкрипта',accessAlways:'Ð’Ñегда',accessSameDomain:'Тот же домен',accessNever:'Ðикогда',align:'Выравнивание',alignLeft:'По левому краю',alignAbsBottom:'ÐÐ±Ñ Ð¿Ð¾Ð½Ð¸Ð·Ñƒ',alignAbsMiddle:'ÐÐ±Ñ Ð¿Ð¾Ñередине',alignBaseline:'По базовой линии',alignBottom:'Понизу',alignMiddle:'ПоÑередине',alignRight:'По правому краю',alignTextTop:'ТекÑÑ‚ наверху',alignTop:'По верху',quality:'КачеÑтво',qualityBest:'Лучшее',qualityHigh:'Ð’Ñ‹Ñокое',qualityAutoHigh:'Ð’Ñ‹Ñокое (авто)',qualityMedium:'Среднее',qualityAutoLow:'Ðизкое (авто)',qualityLow:'Ðизкое',windowModeWindow:'Окно',windowModeOpaque:'Ðепрозрачный',windowModeTransparent:'Прозрачный',windowMode:'Оконный режим',flashvars:'Переменные Ð´Ð»Ñ Flash',bgcolor:'Цвет фона',width:'Ширина',height:'Ð’Ñ‹Ñота',hSpace:'Горизонтальный отÑтуп',vSpace:'Вертикальный отÑтуп',validateSrc:'ПожалуйÑта, введите URL ÑÑылки',validateWidth:'Ширина задаетÑÑ Ñ‡Ð¸Ñлом.',validateHeight:'Ð’Ñ‹Ñота задаетÑÑ Ñ‡Ð¸Ñлом.',validateHSpace:'Горизонтальный отÑтуп задаетÑÑ Ñ‡Ð¸Ñлом.',validateVSpace:'Вертикальный отÑтуп задаетÑÑ Ñ‡Ð¸Ñлом.'},spellCheck:{toolbar:'Проверить орфографию',title:'Проверка правопиÑаниÑ',notAvailable:'Извините, ÑÐµÑ€Ð²Ð¸Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÐ´Ð¾Ñтупен.',errorLoading:'Ошибка при загрузке Ñлужебного хоÑта приложениÑ: %s.',notInDic:'Ðет в Ñловаре',changeTo:'Заменить на',btnIgnore:'Игнорировать',btnIgnoreAll:'Игнорировать вÑе',btnReplace:'Заменить',btnReplaceAll:'Заменить вÑе',btnUndo:'Отменить',noSuggestions:'- Ðет предположений -',progress:'Идет проверка орфографии...',noMispell:'Проверка орфографии закончена: ошибок не найдено',noChanges:'Проверка орфографии закончена: ни одного Ñлова не изменено',oneChange:'Проверка орфографии закончена: одно Ñлово изменено',manyChanges:'Проверка орфографии закончена: 1% Ñлов изменено',ieSpellDownload:'Модуль проверки орфографии не уÑтановлен. Хотите Ñкачать его ÑейчаÑ?'},smiley:{toolbar:'Смайлик',title:'Ð’Ñтавить Ñмайлик',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 Ñлемент'},numberedlist:'Ðумерованный ÑпиÑок',bulletedlist:'Маркированный ÑпиÑок',indent:'Увеличить отÑтуп',outdent:'Уменьшить отÑтуп',justify:{left:'По левому краю',center:'По центру',right:'По правому краю',block:'По ширине'},blockquote:'Цитата',clipboard:{title:'Ð’Ñтавить',cutError:'ÐаÑтройки безопаÑноÑти вашего браузера не позволÑÑŽÑ‚ редактору автоматичеÑки выполнÑть операции вырезаниÑ. ПожалуйÑта, иÑпользуйте клавиатуру Ð´Ð»Ñ Ñтого (Ctrl/Cmd+X).',copyError:'ÐаÑтройки безопаÑноÑти вашего браузера не позволÑÑŽÑ‚ редактору автоматичеÑки выполнÑть операции копированиÑ. ПожалуйÑта, иÑпользуйте клавиатуру Ð´Ð»Ñ Ñтого (Ctrl/Cmd+C).',pasteMsg:'ПожалуйÑта, вÑтавьте текÑÑ‚ в прÑмоугольник, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñочетание клавиш (<STRONG>Ctrl/Cmd+V</STRONG>), и нажмите <STRONG>OK</STRONG>.',securityMsg:'По причине наÑтроек безопаÑноÑти браузера, редактор не имеет доÑтупа к данным буфера обмена напрÑмую. Вам необходимо вÑтавить текÑÑ‚ Ñнова в Ñто окно.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'ТекÑÑ‚, который вы хотите вÑтавить, похож на копируемый из Word. Ð’Ñ‹ хотите очиÑтить его перед вÑтавкой?',toolbar:'Ð’Ñтавить из Word',title:'Ð’Ñтавить из Word',error:'Ðевозможно очиÑтить вÑтавленные данные из-за внутренней ошибки'},pasteText:{button:'Ð’Ñтавить только текÑÑ‚',title:'Ð’Ñтавить только текÑÑ‚'},templates:{button:'Шаблоны',title:'Шаблоны Ñодержимого',options:'Template Options',insertOption:'Заменить текущее Ñодержание',selectPromptMsg:'ПожалуйÑта, выберете шаблон Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð² редакторе<br>(текущее Ñодержимое будет потерÑно):',emptyListMsg:'(Ðи одного шаблона не определено)'},showBlocks:'Показать блоки',stylesCombo:{label:'Стиль',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Стили объекта'},format:{label:'Форматирование',panelTitle:'Форматирование',tag_p:'Ðормальный',tag_pre:'Форматированный',tag_address:'ÐдреÑ',tag_h1:'Заголовок 1',tag_h2:'Заголовок 2',tag_h3:'Заголовок 3',tag_h4:'Заголовок 4',tag_h5:'Заголовок 5',tag_h6:'Заголовок 6',tag_div:'Ðормальный (DIV)'},div:{title:'Создать Div-контейнер',toolbar:'Создать Div-контейнер',cssClassInputLabel:'КлаÑÑÑ‹ таблицы Ñтилей',styleSelectLabel:'Стиль',IdInputLabel:'Id',languageCodeInputLabel:'Код Ñзыка',inlineStyleInputLabel:'Локальный Ñтиль',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Ðаправление пиÑьма',langDirLTRLabel:'Слева направо (LTR)',langDirRTLLabel:'Справа налево (RTL)',edit:'Редактировать Div',remove:'Убрать Div'},font:{label:'Шрифт',voiceLabel:'Шрифт',panelTitle:'Шрифт'},fontSize:{label:'Размер',voiceLabel:'Размер шрифта',panelTitle:'Размер'},colorButton:{textColorTitle:'Цвет текÑта',bgColorTitle:'Цвет фона',panelTitle:'Colors',auto:'ÐвтоматичеÑкий',more:'Цвета...'},colors:{'000':'Черный',800000:'Бордовый','8B4513':'Старой кожи','2F4F4F':'Темный Ñиневато-Ñерый','008080':'Чайный','000080':'Темно-Ñиниый','4B0082':'Индиго',696969:'ГрÑзно-Ñерый',B22222:'Огнеупорный кирпич',A52A2A:'Коричневый',DAA520:'КраÑное золото','006400':'Темно-зеленый','40E0D0':'Бирюзовый','0000CD':'Синий',800080:'Пурпурный',808080:'Серый',F00:'КраÑный',FF8C00:'Темно-оранжевый',FFD700:'Золотой','008000':'Зеленый','0FF':'МорÑкой волны','00F':'Голубой',EE82EE:'Фиолетовый',A9A9A9:'Темно-Ñерый',FFA07A:'Светлый оранжево-розовый',FFA500:'Оранжевый',FFFF00:'Желтый','00FF00':'ИзвеÑтковый',AFEEEE:'Бледно-бирюзовый',ADD8E6:'Свелто-Ñиний',DDA0DD:'Сливовый',D3D3D3:'Светло-Ñерый',FFF0F5:'Бледный розово-лиловый ',FAEBD7:'Ðнтичный белый',FFFFE0:'Светло-желтый',F0FFF0:'Свежего меда',F0FFFF:'Лазурь',F0F8FF:'Бледно-голубой',E6E6FA:'Бледно-лиловый',FFF:'Белый'},scayt:{title:'Проверка Орфографии по Мере Ввода',opera_title:'Not supported by Opera',enable:'Включить ПОМВ',disable:'Отключить ПОМВ',about:'О ПОМВ',toggle:'Переключить ПОМВ',options:'ÐаÑтройки',langs:'Языки',moreSuggestions:'Больше вариантов',ignore:'ПропуÑтить',ignoreAll:'ПропуÑтить вÑÑ‘',addWord:'Добавить Ñлово',emptyDic:'Ð˜Ð¼Ñ ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ быть не пуÑтым.',optionsTab:'ÐаÑтройки',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Языки',dictionariesTab:'Словари',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'О ÑловарÑÑ…'},about:{title:'О программе CKEditor',dlgTitle:'О программе CKEditor',moreInfo:'По вопроÑам Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±Ñ€Ð°Ñ‰Ð°Ð¹Ñ‚ÐµÑÑŒ на наш Ñайт:',copy:'Copyright &copy; $1. Ð’Ñе права защищены.'},maximize:'МакÑимизировать',minimize:'Минимизировать',fakeobjects:{anchor:'Якорь',flash:'Flash-анимациÑ',div:'Разрыв Ñтраницы',unknown:'ÐеизвеÑтный объект'},resize:'Перетащите Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°',colordialog:{title:'Выберите цвет',options:'Color Options',highlight:'Выделить',selected:'Выбранное',clear:'ОчиÑтить'},toolbarCollapse:'Свернуть панель инÑтрументов',toolbarExpand:'Развернуть панель инÑтрументов',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/sk.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/sk.js
new file mode 100644
index 000000000..6b007382d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/sk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sk={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Zdroj',newPage:'Nová stránka',save:'UložiÅ¥',preview:'Náhľad',cut:'Vystrihnúť',copy:'KopírovaÅ¥',paste:'VložiÅ¥',print:'TlaÄ',underline:'PodÄiarknuté',bold:'TuÄné',italic:'Kurzíva',selectAll:'VybraÅ¥ vÅ¡etko',removeFormat:'OdstrániÅ¥ formátovanie',strike:'PreÄiarknuté',subscript:'Dolný index',superscript:'Horný index',horizontalrule:'VložiÅ¥ vodorovnú Äiaru',pagebreak:'VložiÅ¥ oddeľovaÄ stránky',unlink:'OdstrániÅ¥ odkaz',undo:'Späť',redo:'Znovu',common:{browseServer:'PrechádzaÅ¥ server',url:'URL',protocol:'Protokol',upload:'OdoslaÅ¥',uploadSubmit:'OdoslaÅ¥ na server',image:'Obrázok',flash:'Flash',form:'Formulár',checkbox:'ZaÅ¡krtávacie políÄko',radio:'PrepínaÄ',textField:'Textové pole',textarea:'Textová oblasÅ¥',hiddenField:'Skryté pole',button:'TlaÄidlo',select:'Rozbaľovací zoznam',imageButton:'Obrázkové tlaÄidlo',notSet:'<nenastavené>',id:'Id',name:'Meno',langDir:'Orientácia jazyka',langDirLtr:'Zľava doprava (LTR)',langDirRtl:'Sprava doľava (RTL)',langCode:'Kód jazyka',longDescr:'Dlhý popis URL',cssClass:'Trieda Å¡týlu',advisoryTitle:'Pomocný titulok',cssStyle:'Å týl',ok:'OK',cancel:'ZruÅ¡iÅ¥',close:'Close',preview:'Preview',generalTab:'Hlavné',advancedTab:'Rozšírené',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'VložiÅ¥ Å¡peciálne znaky',title:'Výber Å¡peciálneho znaku',options:'Special Character Options'},link:{toolbar:'VložiÅ¥/zmeniÅ¥ odkaz',other:'<iný>',menu:'ZmeniÅ¥ odkaz',title:'Odkaz',info:'Informácie o odkaze',target:'Cieľ',upload:'OdoslaÅ¥',advanced:'Rozšírené',type:'Typ odkazu',toUrl:'URL',toAnchor:'Kotva v tejto stránke',toEmail:'E-Mail',targetFrame:'<rámec>',targetPopup:'<vyskakovacie okno>',targetFrameName:'Meno rámu cieľa',targetPopupName:'Názov vyskakovacieho okna',popupFeatures:'Vlastnosti vyskakovacieho okna',popupResizable:'Resizable',popupStatusBar:'Stavový riadok',popupLocationBar:'Panel umiestnenia',popupToolbar:'Panel nástrojov',popupMenuBar:'Panel ponuky',popupFullScreen:'Celá obrazovka (IE)',popupScrollBars:'Posuvníky',popupDependent:'ZávislosÅ¥ (Netscape)',popupWidth:'Šírka',popupLeft:'Ľavý okraj',popupHeight:'Výška',popupTop:'Horný okraj',id:'Id',langDir:'Orientácia jazyka',langDirLTR:'Zľava doprava (LTR)',langDirRTL:'Sprava doľava (RTL)',acccessKey:'Prístupový kľúÄ',name:'Meno',langCode:'Orientácia jazyka',tabIndex:'Poradie prvku',advisoryTitle:'Pomocný titulok',advisoryContentType:'Pomocný typ obsahu',cssClasses:'Trieda Å¡týlu',charset:'Priradená znaková sada',styles:'Å týl',selectAnchor:'VybraÅ¥ kotvu',anchorName:'Podľa mena kotvy',anchorId:'Podľa Id objektu',emailAddress:'E-Mailová adresa',emailSubject:'Predmet správy',emailBody:'Telo správy',noAnchors:'(V stránke nie je definovaná žiadna kotva)',noUrl:'Zadajte prosím URL odkazu',noEmail:'Zadajte prosím e-mailovú adresu'},anchor:{toolbar:'VložiÅ¥/zmeniÅ¥ kotvu',menu:'Vlastnosti kotvy',title:'Vlastnosti kotvy',name:'Meno kotvy',errorName:'Zadajte prosím meno kotvy'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'NájsÅ¥ a nahradiÅ¥',find:'HľadaÅ¥',replace:'NahradiÅ¥',findWhat:'ÄŒo hľadaÅ¥:',replaceWith:'Čím nahradiÅ¥:',notFoundMsg:'Hľadaný text nebol nájdený.',matchCase:'RozliÅ¡ovaÅ¥ malé/veľké písmená',matchWord:'Len celé slová',matchCyclic:'Match cyclic',replaceAll:'NahradiÅ¥ vÅ¡etko',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabuľka',title:'Vlastnosti tabuľky',menu:'Vlastnosti tabuľky',deleteTable:'VymazaÅ¥ tabuľku',rows:'Riadky',columns:'Stĺpce',border:'OhraniÄenie',align:'Zarovnanie',alignLeft:'Vľavo',alignCenter:'Na stred',alignRight:'Vpravo',width:'Šírka',widthPx:'pixelov',widthPc:'percent',widthUnit:'width unit',height:'Výška',cellSpace:'VzdialenosÅ¥ buniek',cellPad:'Odsadenie obsahu',caption:'Popis',summary:'Prehľad',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Bunka',insertBefore:'VložiÅ¥ bunku pred',insertAfter:'VložiÅ¥ bunku za',deleteCell:'VymazaÅ¥ bunky',merge:'ZlúÄiÅ¥ bunky',mergeRight:'ZlúÄiÅ¥ doprava',mergeDown:'ZlúÄiÅ¥ dole',splitHorizontal:'RozdeliÅ¥ bunky horizontálne',splitVertical:'RozdeliÅ¥ bunky vertikálne',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Riadok',insertBefore:'VložiÅ¥ riadok za',insertAfter:'VložiÅ¥ riadok pred',deleteRow:'VymazaÅ¥ riadok'},column:{menu:'Stĺpec',insertBefore:'VložiÅ¥ stĺpec za',insertAfter:'VložiÅ¥ stĺpec pred',deleteColumn:'ZmazaÅ¥ stĺpec'}},button:{title:'Vlastnosti tlaÄidla',text:'Text',type:'Typ',typeBtn:'TlaÄidlo',typeSbm:'OdoslaÅ¥',typeRst:'VymazaÅ¥'},checkboxAndRadio:{checkboxTitle:'Vlastnosti zaÅ¡krtávacieho políÄka',radioTitle:'Vlastnosti prepínaÄa',value:'Hodnota',selected:'Vybrané'},form:{title:'Vlastnosti formulára',menu:'Vlastnosti formulára',action:'Akcie',method:'Metóda',encoding:'Encoding'},select:{title:'Vlastnosti rozbaľovacieho zoznamu',selectInfo:'Info',opAvail:'Dostupné možnosti',value:'Hodnota',size:'VeľkosÅ¥',lines:'riadkov',chkMulti:'PovoliÅ¥ viacnásobný výber',opText:'Text',opValue:'Hodnota',btnAdd:'PridaÅ¥',btnModify:'ZmeniÅ¥',btnUp:'Hore',btnDown:'Dole',btnSetValue:'NastaviÅ¥ ako vybranú hodnotu',btnDelete:'ZmazaÅ¥'},textarea:{title:'Vlastnosti textovej oblasti',cols:'Stĺpce',rows:'Riadky'},textfield:{title:'Vlastnosti textového poľa',name:'Názov',value:'Hodnota',charWidth:'Šírka pola (znakov)',maxChars:'Maximálny poÄet znakov',type:'Typ',typeText:'Text',typePass:'Heslo'},hidden:{title:'Vlastnosti skrytého poľa',name:'Názov',value:'Hodnota'},image:{title:'Vlastnosti obrázku',titleButton:'Vlastnosti obrázkového tlaÄidla',menu:'Vlastnosti obrázku',infoTab:'Informácie o obrázku',btnUpload:'OdoslaÅ¥ na server',upload:'OdoslaÅ¥',alt:'Alternatívny text',width:'Šírka',height:'Výška',lockRatio:'Zámok',unlockRatio:'Unlock Ratio',resetSize:'Pôvodná veľkosÅ¥',border:'Okraje',hSpace:'H-medzera',vSpace:'V-medzera',align:'Zarovnanie',alignLeft:'Vľavo',alignRight:'Vpravo',alertUrl:'Zadajte prosím URL obrázku',linkTab:'Odkaz',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Vlastnosti Flashu',propertiesTab:'Properties',title:'Vlastnosti Flashu',chkPlay:'Automatické prehrávanie',chkLoop:'Opakovanie',chkMenu:'PovoliÅ¥ Flash Menu',chkFull:'Allow Fullscreen',scale:'Mierka',scaleAll:'ZobraziÅ¥ mierku',scaleNoBorder:'Bez okrajov',scaleFit:'RoztiahnuÅ¥ na celé',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Zarovnanie',alignLeft:'Vľavo',alignAbsBottom:'Úplne dole',alignAbsMiddle:'Do stredu',alignBaseline:'Na základňu',alignBottom:'Dole',alignMiddle:'Na stred',alignRight:'Vpravo',alignTextTop:'Na horný okraj textu',alignTop:'Nahor',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Farba pozadia',width:'Šírka',height:'Výška',hSpace:'H-medzera',vSpace:'V-medzera',validateSrc:'Zadajte prosím URL odkazu',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Kontrola pravopisu',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nie je v slovníku',changeTo:'ZmeniÅ¥ na',btnIgnore:'IgnorovaÅ¥',btnIgnoreAll:'IgnorovaÅ¥ vÅ¡etko',btnReplace:'Prepísat',btnReplaceAll:'Prepísat vÅ¡etko',btnUndo:'Späť',noSuggestions:'- Žiadny návrh -',progress:'Prebieha kontrola pravopisu...',noMispell:'Kontrola pravopisu dokonÄená: bez chýb',noChanges:'Kontrola pravopisu dokonÄená: žiadne slová nezmenené',oneChange:'Kontrola pravopisu dokonÄená: zmenené jedno slovo',manyChanges:'Kontrola pravopisu dokonÄená: zmenených %1 slov',ieSpellDownload:'Kontrola pravopisu nie je naiÅ¡talovaná. Chcete ju hneÄ stiahnuÅ¥?'},smiley:{toolbar:'Smajlíky',title:'Vkladanie smajlíkov',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Číslovanie',bulletedlist:'Odrážky',indent:'ZväÄÅ¡iÅ¥ odsadenie',outdent:'ZmenÅ¡iÅ¥ odsadenie',justify:{left:'ZarovnaÅ¥ vľavo',center:'ZarovnaÅ¥ na stred',right:'ZarovnaÅ¥ vpravo',block:'ZarovnaÅ¥ do bloku'},blockquote:'Citácia',clipboard:{title:'VložiÅ¥',cutError:'BezpeÄnostné nastavenia Vášho prehliadaÄa nedovoľujú editoru spustiÅ¥ funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+X).',copyError:'BezpeÄnostné nastavenia Vášho prehliadaÄa nedovoľujú editoru spustiÅ¥ funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+C).',pasteMsg:'Prosím vložte nasledovný rámÄek použitím klávesnice (<STRONG>Ctrl/Cmd+V</STRONG>) a stlaÄte <STRONG>OK</STRONG>.',securityMsg:'BezpeÄnostné nastavenia Vášho prehliadaÄa nedovoľujú editoru pristupovaÅ¥ priamo k datám v schránke. Musíte ich vložiÅ¥ znovu do tohto okna.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'VložiÅ¥ z Wordu',title:'VložiÅ¥ z Wordu',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'VložiÅ¥ ako Äistý text',title:'VložiÅ¥ ako Äistý text'},templates:{button:'Å ablóny',title:'Å ablóny obsahu',options:'Template Options',insertOption:'NahradiÅ¥ aktuálny obsah',selectPromptMsg:'Prosím vyberte Å¡ablóny na otvorenie v editore<br>(súšasný obsah bude stratený):',emptyListMsg:'(žiadne Å¡ablóny nenájdené)'},showBlocks:'UkázaÅ¥ bloky',stylesCombo:{label:'Å týl',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Formát',panelTitle:'Formát',tag_p:'Normálny',tag_pre:'Formátovaný',tag_address:'Adresa',tag_h1:'Nadpis 1',tag_h2:'Nadpis 2',tag_h3:'Nadpis 3',tag_h4:'Nadpis 4',tag_h5:'Nadpis 5',tag_h6:'Nadpis 6',tag_div:'Odsek (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Písmo',voiceLabel:'Font',panelTitle:'Písmo'},fontSize:{label:'VeľkosÅ¥',voiceLabel:'Font Size',panelTitle:'VeľkosÅ¥'},colorButton:{textColorTitle:'Farba textu',bgColorTitle:'Farba pozadia',panelTitle:'Colors',auto:'Automaticky',more:'Viac farieb...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/sl.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/sl.js
new file mode 100644
index 000000000..e1c768a4a
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/sl.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sl={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Izvorna koda',newPage:'Nova stran',save:'Shrani',preview:'Predogled',cut:'Izreži',copy:'Kopiraj',paste:'Prilepi',print:'Natisni',underline:'PodÄrtano',bold:'Krepko',italic:'LežeÄe',selectAll:'Izberi vse',removeFormat:'Odstrani oblikovanje',strike:'PreÄrtano',subscript:'Podpisano',superscript:'Nadpisano',horizontalrule:'Vstavi vodoravno Ärto',pagebreak:'Vstavi prelom strani',unlink:'Odstrani povezavo',undo:'Razveljavi',redo:'Ponovi',common:{browseServer:'Prebrskaj na strežniku',url:'URL',protocol:'Protokol',upload:'Prenesi',uploadSubmit:'PoÅ¡lji na strežnik',image:'Slika',flash:'Flash',form:'Obrazec',checkbox:'Potrditveno polje',radio:'Izbirno polje',textField:'Vnosno polje',textarea:'Vnosno obmoÄje',hiddenField:'Skrito polje',button:'Gumb',select:'Spustni seznam',imageButton:'Gumb s sliko',notSet:'<ni postavljen>',id:'Id',name:'Ime',langDir:'Smer jezika',langDirLtr:'Od leve proti desni (LTR)',langDirRtl:'Od desne proti levi (RTL)',langCode:'Oznaka jezika',longDescr:'Dolg opis URL-ja',cssClass:'Razred stilne predloge',advisoryTitle:'Predlagani naslov',cssStyle:'Slog',ok:'V redu',cancel:'PrekliÄi',close:'Close',preview:'Preview',generalTab:'SploÅ¡no',advancedTab:'Napredno',validateNumberFailed:'Ta vrednost ni Å¡tevilo.',confirmNewPage:'Vse neshranjene spremembe te vsebine bodo izgubljene. Ali gotovo želiÅ¡ naložiti novo stran?',confirmCancel:'Nekaj možnosti je bilo spremenjenih. Ali gotovo želiÅ¡ zapreti okno?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, nedosegljiv</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Vstavi posebni znak',title:'Izberi posebni znak',options:'Special Character Options'},link:{toolbar:'Vstavi/uredi povezavo',other:'<drug>',menu:'Uredi povezavo',title:'Povezava',info:'Podatki o povezavi',target:'Cilj',upload:'Prenesi',advanced:'Napredno',type:'Vrsta povezave',toUrl:'URL',toAnchor:'Zaznamek na tej strani',toEmail:'Elektronski naslov',targetFrame:'<okvir>',targetPopup:'<pojavno okno>',targetFrameName:'Ime ciljnega okvirja',targetPopupName:'Ime pojavnega okna',popupFeatures:'ZnaÄilnosti pojavnega okna',popupResizable:'Spremenljive velikosti',popupStatusBar:'Vrstica stanja',popupLocationBar:'Naslovna vrstica',popupToolbar:'Orodna vrstica',popupMenuBar:'Menijska vrstica',popupFullScreen:'Celozaslonska slika (IE)',popupScrollBars:'Drsniki',popupDependent:'Podokno (Netscape)',popupWidth:'Å irina',popupLeft:'Lega levo',popupHeight:'ViÅ¡ina',popupTop:'Lega na vrhu',id:'Id',langDir:'Smer jezika',langDirLTR:'Od leve proti desni (LTR)',langDirRTL:'Od desne proti levi (RTL)',acccessKey:'Vstopno geslo',name:'Ime',langCode:'Smer jezika',tabIndex:'Å tevilka tabulatorja',advisoryTitle:'Predlagani naslov',advisoryContentType:'Predlagani tip vsebine (content-type)',cssClasses:'Razred stilne predloge',charset:'Kodna tabela povezanega vira',styles:'Slog',selectAnchor:'Izberi zaznamek',anchorName:'Po imenu zaznamka',anchorId:'Po ID-ju elementa',emailAddress:'Elektronski naslov',emailSubject:'Predmet sporoÄila',emailBody:'Vsebina sporoÄila',noAnchors:'(V tem dokumentu ni zaznamkov)',noUrl:'Vnesite URL povezave',noEmail:'Vnesite elektronski naslov'},anchor:{toolbar:'Vstavi/uredi zaznamek',menu:'Lastnosti zaznamka',title:'Lastnosti zaznamka',name:'Ime zaznamka',errorName:'Prosim vnesite ime zaznamka'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Najdi in zamenjaj',find:'Najdi',replace:'Zamenjaj',findWhat:'Najdi:',replaceWith:'Zamenjaj z:',notFoundMsg:'Navedeno besedilo ni bilo najdeno.',matchCase:'Razlikuj velike in male Ärke',matchWord:'Samo cele besede',matchCyclic:'Primerjaj znake v cirilici',replaceAll:'Zamenjaj vse',replaceSuccessMsg:'%1 pojavitev je bilo zamenjano.'},table:{toolbar:'Tabela',title:'Lastnosti tabele',menu:'Lastnosti tabele',deleteTable:'IzbriÅ¡i tabelo',rows:'Vrstice',columns:'Stolpci',border:'Velikost obrobe',align:'Poravnava',alignLeft:'Levo',alignCenter:'Sredinsko',alignRight:'Desno',width:'Å irina',widthPx:'pik',widthPc:'procentov',widthUnit:'width unit',height:'ViÅ¡ina',cellSpace:'Razmik med celicami',cellPad:'Polnilo med celicami',caption:'Naslov',summary:'Povzetek',headers:'Glave',headersNone:'Brez',headersColumn:'Prvi stolpec',headersRow:'Prva vrstica',headersBoth:'Oboje',invalidRows:'Å tevilo vrstic mora biti veÄje od 0.',invalidCols:'Å tevilo stolpcev mora biti veÄje od 0.',invalidBorder:'Å irina obrobe mora biti Å¡tevilo.',invalidWidth:'Å irina tabele mora biti Å¡tevilo.',invalidHeight:'ViÅ¡ina tabele mora biti Å¡tevilo.',invalidCellSpacing:'Razmik med celicami mora biti Å¡tevilo.',invalidCellPadding:'Zamik celic mora biti Å¡tevilo',cell:{menu:'Celica',insertBefore:'Vstavi celico pred',insertAfter:'Vstavi celico za',deleteCell:'IzbriÅ¡i celice',merge:'Združi celice',mergeRight:'Združi desno',mergeDown:'Druži navzdol',splitHorizontal:'Razdeli celico vodoravno',splitVertical:'Razdeli celico navpiÄno',title:'Lastnosti celice',cellType:'Vrsta celice',rowSpan:'Razpon vrstic',colSpan:'Razpon stolpcev',wordWrap:'Prelom besedila',hAlign:'Vodoravna poravnava',vAlign:'NavpiÄna poravnava',alignTop:'Vrh',alignMiddle:'Sredina',alignBottom:'Dno',alignBaseline:'Osnovnica',bgColor:'Barva ozadja',borderColor:'Barva obrobe',data:'Podatki',header:'Glava',yes:'Da',no:'Ne',invalidWidth:'Å irina celice mora biti Å¡tevilo.',invalidHeight:'ViÅ¡ina celice mora biti Å¡tevilo.',invalidRowSpan:'Razpon vrstic mora biti celo Å¡tevilo.',invalidColSpan:'Razpon stolpcev mora biti celo Å¡tevilo.',chooseColor:'Izberi'},row:{menu:'Vrstica',insertBefore:'Vstavi vrstico pred',insertAfter:'Vstavi vrstico za',deleteRow:'IzbriÅ¡i vrstice'},column:{menu:'Stolpec',insertBefore:'Vstavi stolpec pred',insertAfter:'Vstavi stolpec za',deleteColumn:'IzbriÅ¡i stolpce'}},button:{title:'Lastnosti gumba',text:'Besedilo (Vrednost)',type:'Tip',typeBtn:'Gumb',typeSbm:'Potrdi',typeRst:'Ponastavi'},checkboxAndRadio:{checkboxTitle:'Lastnosti potrditvenega polja',radioTitle:'Lastnosti izbirnega polja',value:'Vrednost',selected:'Izbrano'},form:{title:'Lastnosti obrazca',menu:'Lastnosti obrazca',action:'Akcija',method:'Metoda',encoding:'Kodiranje znakov'},select:{title:'Lastnosti spustnega seznama',selectInfo:'Podatki',opAvail:'Razpoložljive izbire',value:'Vrednost',size:'Velikost',lines:'vrstic',chkMulti:'Dovoli izbor veÄih vrstic',opText:'Besedilo',opValue:'Vrednost',btnAdd:'Dodaj',btnModify:'Spremeni',btnUp:'Gor',btnDown:'Dol',btnSetValue:'Postavi kot privzeto izbiro',btnDelete:'IzbriÅ¡i'},textarea:{title:'Lastnosti vnosnega obmoÄja',cols:'Stolpcev',rows:'Vrstic'},textfield:{title:'Lastnosti vnosnega polja',name:'Ime',value:'Vrednost',charWidth:'Dolžina',maxChars:'NajveÄje Å¡tevilo znakov',type:'Tip',typeText:'Besedilo',typePass:'Geslo'},hidden:{title:'Lastnosti skritega polja',name:'Ime',value:'Vrednost'},image:{title:'Lastnosti slike',titleButton:'Lastnosti gumba s sliko',menu:'Lastnosti slike',infoTab:'Podatki o sliki',btnUpload:'PoÅ¡lji na strežnik',upload:'PoÅ¡lji',alt:'Nadomestno besedilo',width:'Å irina',height:'ViÅ¡ina',lockRatio:'Zakleni razmerje',unlockRatio:'Unlock Ratio',resetSize:'Ponastavi velikost',border:'Obroba',hSpace:'Vodoravni razmik',vSpace:'NavpiÄni razmik',align:'Poravnava',alignLeft:'Levo',alignRight:'Desno',alertUrl:'Vnesite URL slike',linkTab:'Povezava',button2Img:'ŽeliÅ¡ pretvoriti izbrani gumb s sliko v preprosto sliko?',img2Button:'ŽeliÅ¡ pretvoriti izbrano sliko v gumb s sliko?',urlMissing:'Manjka vir (URL) slike.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Lastnosti Flash',propertiesTab:'Lastnosti',title:'Lastnosti Flash',chkPlay:'Samodejno predvajaj',chkLoop:'Ponavljanje',chkMenu:'OmogoÄi Flash Meni',chkFull:'Dovoli celozaslonski naÄin',scale:'PoveÄava',scaleAll:'Pokaži vse',scaleNoBorder:'Brez obrobe',scaleFit:'NatanÄno prileganje',access:'Dostop skript',accessAlways:'Vedno',accessSameDomain:'Samo ista domena',accessNever:'Nikoli',align:'Poravnava',alignLeft:'Levo',alignAbsBottom:'Popolnoma na dno',alignAbsMiddle:'Popolnoma v sredino',alignBaseline:'Na osnovno Ärto',alignBottom:'Na dno',alignMiddle:'V sredino',alignRight:'Desno',alignTextTop:'Besedilo na vrh',alignTop:'Na vrh',quality:'Kakovost',qualityBest:'NajviÅ¡ja',qualityHigh:'Visoka',qualityAutoHigh:'Samodejno visoka',qualityMedium:'Srednja',qualityAutoLow:'Samodejno nizka',qualityLow:'Nizka',windowModeWindow:'Okno',windowModeOpaque:'Motno',windowModeTransparent:'Prosojno',windowMode:'Vrsta okna',flashvars:'Spremenljivke za Flash',bgcolor:'Barva ozadja',width:'Å irina',height:'ViÅ¡ina',hSpace:'Vodoravni razmik',vSpace:'NavpiÄni razmik',validateSrc:'Vnesite URL povezave',validateWidth:'Å irina mora biti Å¡tevilo.',validateHeight:'ViÅ¡ina mora biti Å¡tevilo.',validateHSpace:'Vodoravni razmik mora biti Å¡tevilo.',validateVSpace:'NavpiÄni razmik mora biti Å¡tevilo.'},spellCheck:{toolbar:'Preveri Ärkovanje',title:'ÄŒrkovalnik',notAvailable:'Oprostite, storitev trenutno ni dosegljiva.',errorLoading:'Napaka pri nalaganju storitve programa na naslovu %s.',notInDic:'Ni v slovarju',changeTo:'Spremeni v',btnIgnore:'Prezri',btnIgnoreAll:'Prezri vse',btnReplace:'Zamenjaj',btnReplaceAll:'Zamenjaj vse',btnUndo:'Razveljavi',noSuggestions:'- Ni predlogov -',progress:'Preverjanje Ärkovanja se izvaja...',noMispell:'ÄŒrkovanje je konÄano: Brez napak',noChanges:'ÄŒrkovanje je konÄano: Nobena beseda ni bila spremenjena',oneChange:'ÄŒrkovanje je konÄano: Spremenjena je bila ena beseda',manyChanges:'ÄŒrkovanje je konÄano: Spremenjenih je bilo %1 besed',ieSpellDownload:'ÄŒrkovalnik ni nameÅ¡Äen. Ali ga želite prenesti sedaj?'},smiley:{toolbar:'SmeÅ¡ko',title:'Vstavi smeÅ¡ka',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'OÅ¡tevilÄen seznam',bulletedlist:'OznaÄen seznam',indent:'PoveÄaj zamik',outdent:'ZmanjÅ¡aj zamik',justify:{left:'Leva poravnava',center:'Sredinska poravnava',right:'Desna poravnava',block:'Obojestranska poravnava'},blockquote:'Citat',clipboard:{title:'Prilepi',cutError:'Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).',copyError:'Varnostne nastavitve brskalnika ne dopuÅ¡Äajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).',pasteMsg:'Prosim prilepite v sleÄi okvir s pomoÄjo tipkovnice (<STRONG>Ctrl/Cmd+V</STRONG>) in pritisnite <STRONG>V redu</STRONG>.',securityMsg:'Zaradi varnostnih nastavitev vaÅ¡ega brskalnika urejevalnik ne more neposredno dostopati do odložiÅ¡Äa. Vsebino odložiÅ¡Äa ponovno prilepite v to okno.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Prilepi iz Worda',title:'Prilepi iz Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Prilepi kot golo besedilo',title:'Prilepi kot golo besedilo'},templates:{button:'Predloge',title:'Vsebinske predloge',options:'Template Options',insertOption:'Zamenjaj trenutno vsebino',selectPromptMsg:'Izberite predlogo, ki jo želite odpreti v urejevalniku<br>(trenutna vsebina bo izgubljena):',emptyListMsg:'(Ni pripravljenih predlog)'},showBlocks:'Prikaži ograde',stylesCombo:{label:'Slog',panelTitle:'Formatting Styles',panelTitle1:'Slogi odstavkov',panelTitle2:'Slogi besedila',panelTitle3:'Slogi objektov'},format:{label:'Oblika',panelTitle:'Oblika',tag_p:'Navaden',tag_pre:'Oblikovan',tag_address:'Napis',tag_h1:'Naslov 1',tag_h2:'Naslov 2',tag_h3:'Naslov 3',tag_h4:'Naslov 4',tag_h5:'Naslov 5',tag_h6:'Naslov 6',tag_div:'Navaden (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Pisava',voiceLabel:'Pisava',panelTitle:'Pisava'},fontSize:{label:'Velikost',voiceLabel:'Velikost',panelTitle:'Velikost'},colorButton:{textColorTitle:'Barva besedila',bgColorTitle:'Barva ozadja',panelTitle:'Colors',auto:'Samodejno',more:'VeÄ barv...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'ÄŒrkovanje med tipkanjem',opera_title:'Not supported by Opera',enable:'OmogoÄi SCAYT',disable:'OnemogoÄi SCAYT',about:'O storitvi SCAYT',toggle:'Preklopi SCAYT',options:'Možnosti',langs:'Jeziki',moreSuggestions:'VeÄ predlogov',ignore:'Prezri',ignoreAll:'Prezri vse',addWord:'Dodaj besedo',emptyDic:'Ime slovarja ne more biti prazno.',optionsTab:'Možnosti',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Jeziki',dictionariesTab:'Slovarji',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'O storitvi'},about:{title:'O programu CKEditor',dlgTitle:'O programu CKEditor',moreInfo:'Za informacijo o licenci prostim obiÅ¡Äite naÅ¡o spletno stran:',copy:'Copyright &copy; $1. Vse pravice pridržane.'},maximize:'Maksimiraj',minimize:'Minimiraj',fakeobjects:{anchor:'Sidro',flash:'Flash animacija',div:'Prelom strani',unknown:'Neznan objekt'},resize:'Potegni za spremembo velikosti',colordialog:{title:'Izberi barvo',options:'Color Options',highlight:'Poudarjeno',selected:'Izbrano',clear:'PoÄisti'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js
new file mode 100644
index 000000000..f9783b7b7
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['sr-latn']={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Kôd',newPage:'Nova stranica',save:'SaÄuvaj',preview:'Izgled stranice',cut:'Iseci',copy:'Kopiraj',paste:'Zalepi',print:'Å tampa',underline:'PodvuÄeno',bold:'Podebljano',italic:'Kurziv',selectAll:'OznaÄi sve',removeFormat:'Ukloni formatiranje',strike:'Precrtano',subscript:'Indeks',superscript:'Stepen',horizontalrule:'Unesi horizontalnu liniju',pagebreak:'Insert Page Break for Printing',unlink:'Ukloni link',undo:'Poni�ti akciju',redo:'Ponovi akciju',common:{browseServer:'Pretraži server',url:'URL',protocol:'Protokol',upload:'PoÅ¡alji',uploadSubmit:'PoÅ¡alji na server',image:'Slika',flash:'FleÅ¡',form:'Forma',checkbox:'Polje za potvrdu',radio:'Radio-dugme',textField:'Tekstualno polje',textarea:'Zona teksta',hiddenField:'Skriveno polje',button:'Dugme',select:'Izborno polje',imageButton:'Dugme sa slikom',notSet:'<nije postavljeno>',id:'Id',name:'Naziv',langDir:'Smer jezika',langDirLtr:'S leva na desno (LTR)',langDirRtl:'S desna na levo (RTL)',langCode:'Kôd jezika',longDescr:'Pun opis URL',cssClass:'Stylesheet klase',advisoryTitle:'Advisory naslov',cssStyle:'Stil',ok:'OK',cancel:'Otkaži',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Napredni tagovi',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Unesi specijalni karakter',title:'Odaberite specijalni karakter',options:'Special Character Options'},link:{toolbar:'Unesi/izmeni link',other:'<оÑтало>',menu:'Izmeni link',title:'Link',info:'Link Info',target:'Meta',upload:'PoÅ¡alji',advanced:'Napredni tagovi',type:'Vrsta linka',toUrl:'URL',toAnchor:'Sidro na ovoj stranici',toEmail:'E-Mail',targetFrame:'<okvir>',targetPopup:'<popup prozor>',targetFrameName:'Naziv odrediÅ¡nog frejma',targetPopupName:'Naziv popup prozora',popupFeatures:'Mogućnosti popup prozora',popupResizable:'Resizable',popupStatusBar:'Statusna linija',popupLocationBar:'Lokacija',popupToolbar:'Toolbar',popupMenuBar:'Kontekstni meni',popupFullScreen:'Prikaz preko celog ekrana (IE)',popupScrollBars:'Scroll bar',popupDependent:'Zavisno (Netscape)',popupWidth:'Å irina',popupLeft:'Od leve ivice ekrana (px)',popupHeight:'Visina',popupTop:'Od vrha ekrana (px)',id:'Id',langDir:'Smer jezika',langDirLTR:'S leva na desno (LTR)',langDirRTL:'S desna na levo (RTL)',acccessKey:'Pristupni taster',name:'Naziv',langCode:'Smer jezika',tabIndex:'Tab indeks',advisoryTitle:'Advisory naslov',advisoryContentType:'Advisory vrsta sadržaja',cssClasses:'Stylesheet klase',charset:'Linked Resource Charset',styles:'Stil',selectAnchor:'Odaberi sidro',anchorName:'Po nazivu sidra',anchorId:'Po Id-ju elementa',emailAddress:'E-Mail adresa',emailSubject:'Naslov',emailBody:'Sadržaj poruke',noAnchors:'(Nema dostupnih sidra)',noUrl:'Unesite URL linka',noEmail:'Otkucajte adresu elektronske pote'},anchor:{toolbar:'Unesi/izmeni sidro',menu:'Osobine sidra',title:'Osobine sidra',name:'Ime sidra',errorName:'Unesite ime sidra'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Pretraga',replace:'Zamena',findWhat:'Pronadi:',replaceWith:'Zameni sa:',notFoundMsg:'Traženi tekst nije pronaÄ‘en.',matchCase:'Razlikuj mala i velika slova',matchWord:'Uporedi cele reci',matchCyclic:'Match cyclic',replaceAll:'Zameni sve',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabela',title:'Osobine tabele',menu:'Osobine tabele',deleteTable:'Delete Table',rows:'Redova',columns:'Kolona',border:'VeliÄina okvira',align:'Ravnanje',alignLeft:'Levo',alignCenter:'Sredina',alignRight:'Desno',width:'Å irina',widthPx:'piksela',widthPc:'procenata',widthUnit:'width unit',height:'Visina',cellSpace:'Ćelijski prostor',cellPad:'Razmak ćelija',caption:'Naslov tabele',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'ObriÅ¡i ćelije',merge:'Spoj celije',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'ObriÅ¡i redove'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'ObriÅ¡i kolone'}},button:{title:'Osobine dugmeta',text:'Tekst (vrednost)',type:'Tip',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'Osobine polja za potvrdu',radioTitle:'Osobine radio-dugmeta',value:'Vrednost',selected:'OznaÄeno'},form:{title:'Osobine forme',menu:'Osobine forme',action:'Akcija',method:'Metoda',encoding:'Encoding'},select:{title:'Osobine izbornog polja',selectInfo:'Info',opAvail:'Dostupne opcije',value:'Vrednost',size:'VeliÄina',lines:'linija',chkMulti:'Dozvoli viÅ¡estruku selekciju',opText:'Tekst',opValue:'Vrednost',btnAdd:'Dodaj',btnModify:'Izmeni',btnUp:'Gore',btnDown:'Dole',btnSetValue:'Podesi kao oznaÄenu vrednost',btnDelete:'ObriÅ¡i'},textarea:{title:'Osobine zone teksta',cols:'Broj kolona',rows:'Broj redova'},textfield:{title:'Osobine tekstualnog polja',name:'Naziv',value:'Vrednost',charWidth:'Å irina (karaktera)',maxChars:'Maksimalno karaktera',type:'Tip',typeText:'Tekst',typePass:'Lozinka'},hidden:{title:'Osobine skrivenog polja',name:'Naziv',value:'Vrednost'},image:{title:'Osobine slika',titleButton:'Osobine dugmeta sa slikom',menu:'Osobine slika',infoTab:'Info slike',btnUpload:'PoÅ¡alji na server',upload:'PoÅ¡alji',alt:'Alternativni tekst',width:'Å irina',height:'Visina',lockRatio:'ZakljuÄaj odnos',unlockRatio:'Unlock Ratio',resetSize:'Resetuj veliÄinu',border:'Okvir',hSpace:'HSpace',vSpace:'VSpace',align:'Ravnanje',alignLeft:'Levo',alignRight:'Desno',alertUrl:'Unesite URL slike',linkTab:'Link',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Osobine fleÅ¡a',propertiesTab:'Properties',title:'Osobine fleÅ¡a',chkPlay:'Automatski start',chkLoop:'Ponavljaj',chkMenu:'UkljuÄi fleÅ¡ meni',chkFull:'Allow Fullscreen',scale:'Skaliraj',scaleAll:'Prikaži sve',scaleNoBorder:'Bez ivice',scaleFit:'Popuni povrÅ¡inu',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Ravnanje',alignLeft:'Levo',alignAbsBottom:'Abs dole',alignAbsMiddle:'Abs sredina',alignBaseline:'Bazno',alignBottom:'Dole',alignMiddle:'Sredina',alignRight:'Desno',alignTextTop:'Vrh teksta',alignTop:'Vrh',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Boja pozadine',width:'Å irina',height:'Visina',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'Unesite URL linka',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Proveri spelovanje',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Nije u reÄniku',changeTo:'Izmeni',btnIgnore:'IgnoriÅ¡i',btnIgnoreAll:'IgnoriÅ¡i sve',btnReplace:'Zameni',btnReplaceAll:'Zameni sve',btnUndo:'Vrati akciju',noSuggestions:'- Bez sugestija -',progress:'Provera spelovanja u toku...',noMispell:'Provera spelovanja zavrÅ¡ena: greÅ¡ke nisu pronadene',noChanges:'Provera spelovanja zavrÅ¡ena: Nije izmenjena nijedna rec',oneChange:'Provera spelovanja zavrÅ¡ena: Izmenjena je jedna reÄ',manyChanges:'Provera spelovanja zavrÅ¡ena: %1 reÄ(i) je izmenjeno',ieSpellDownload:'Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?'},smiley:{toolbar:'Smajli',title:'Unesi smajlija',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Nabrojiva lista',bulletedlist:'Nenabrojiva lista',indent:'Uvećaj levu marginu',outdent:'Smanji levu marginu',justify:{left:'Levo ravnanje',center:'Centriran tekst',right:'Desno ravnanje',block:'Obostrano ravnanje'},blockquote:'Block Quote',clipboard:{title:'Zalepi',cutError:'Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl/Cmd+X).',copyError:'Sigurnosna podeÅ¡avanja VaÅ¡eg pretraživaÄa ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite preÄicu sa tastature (Ctrl/Cmd+C).',pasteMsg:'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu preÄicu (<STRONG>Ctrl/Cmd+V</STRONG>) i da pritisnete <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Zalepi iz Worda',title:'Zalepi iz Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Zalepi kao Äist tekst',title:'Zalepi kao Äist tekst'},templates:{button:'Obrasci',title:'Obrasci za sadržaj',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):',emptyListMsg:'(Nema definisanih obrazaca)'},showBlocks:'Show Blocks',stylesCombo:{label:'Stil',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Format',panelTitle:'Format',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Adresa',tag_h1:'Naslov 1',tag_h2:'Naslov 2',tag_h3:'Naslov 3',tag_h4:'Naslov 4',tag_h5:'Naslov 5',tag_h6:'Naslov 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Font',voiceLabel:'Font',panelTitle:'Font'},fontSize:{label:'VeliÄina fonta',voiceLabel:'Font Size',panelTitle:'VeliÄina fonta'},colorButton:{textColorTitle:'Boja teksta',bgColorTitle:'Boja pozadine',panelTitle:'Colors',auto:'Automatski',more:'ViÅ¡e boja...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/sr.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/sr.js
new file mode 100644
index 000000000..a180fa5dc
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/sr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sr={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Kôд',newPage:'Ðова Ñтраница',save:'Сачувај',preview:'Изглед Ñтранице',cut:'ИÑеци',copy:'Копирај',paste:'Залепи',print:'Штампа',underline:'Подвучено',bold:'Подебљано',italic:'Курзив',selectAll:'Означи Ñве',removeFormat:'Уклони форматирање',strike:'Прецртано',subscript:'ИндекÑ',superscript:'Степен',horizontalrule:'УнеÑи хоризонталну линију',pagebreak:'Insert Page Break for Printing',unlink:'Уклони линк',undo:'Поништи акцију',redo:'Понови акцију',common:{browseServer:'Претражи Ñервер',url:'УРЛ',protocol:'Протокол',upload:'Пошаљи',uploadSubmit:'Пошаљи на Ñервер',image:'Слика',flash:'Флеш елемент',form:'Форма',checkbox:'Поље за потврду',radio:'Радио-дугме',textField:'ТекÑтуално поље',textarea:'Зона текÑта',hiddenField:'Скривено поље',button:'Дугме',select:'Изборно поље',imageButton:'Дугме Ñа Ñликом',notSet:'<није поÑтављено>',id:'Ид',name:'Ðазив',langDir:'Смер језика',langDirLtr:'С лева на деÑно (LTR)',langDirRtl:'С деÑна на лево (RTL)',langCode:'Kôд језика',longDescr:'Пун Ð¾Ð¿Ð¸Ñ Ð£Ð Ð›',cssClass:'Stylesheet клаÑе',advisoryTitle:'Advisory наÑлов',cssStyle:'Стил',ok:'OK',cancel:'Oткажи',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Ðапредни тагови',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'УнеÑи Ñпецијални карактер',title:'Одаберите Ñпецијални карактер',options:'Special Character Options'},link:{toolbar:'УнеÑи/измени линк',other:'<other>',menu:'Промени линк',title:'Линк',info:'Линк инфо',target:'MeÑ‚a',upload:'Пошаљи',advanced:'Ðапредни тагови',type:'Ð’Ñ€Ñта линка',toUrl:'URL',toAnchor:'Сидро на овој Ñтраници',toEmail:'EлектронÑка пошта',targetFrame:'<оквир>',targetPopup:'<иÑкачући прозор>',targetFrameName:'Ðазив одредишног фрејма',targetPopupName:'Ðазив иÑкачућег прозора',popupFeatures:'МогућноÑти иÑкачућег прозора',popupResizable:'Resizable',popupStatusBar:'СтатуÑна линија',popupLocationBar:'Локација',popupToolbar:'Toolbar',popupMenuBar:'КонтекÑтни мени',popupFullScreen:'Приказ преко целог екрана (ИE)',popupScrollBars:'Скрол бар',popupDependent:'ЗавиÑно (Netscape)',popupWidth:'Ширина',popupLeft:'Од леве ивице екрана (пикÑела)',popupHeight:'ВиÑина',popupTop:'Од врха екрана (пикÑела)',id:'Id',langDir:'Смер језика',langDirLTR:'С лева на деÑно (LTR)',langDirRTL:'С деÑна на лево (RTL)',acccessKey:'ПриÑтупни таÑтер',name:'Ðазив',langCode:'Смер језика',tabIndex:'Таб индекÑ',advisoryTitle:'Advisory наÑлов',advisoryContentType:'Advisory врÑта Ñадржаја',cssClasses:'Stylesheet клаÑе',charset:'Linked Resource Charset',styles:'Стил',selectAnchor:'Одабери Ñидро',anchorName:'По називу Ñидра',anchorId:'Пo Ид-jу елемента',emailAddress:'ÐдреÑа електронÑке поште',emailSubject:'ÐаÑлов',emailBody:'Садржај поруке',noAnchors:'(Ðема доÑтупних Ñидра)',noUrl:'УнеÑите УРЛ линка',noEmail:'Откуцајте адреÑу електронÑке поште'},anchor:{toolbar:'УнеÑи/измени Ñидро',menu:'ОÑобине Ñидра',title:'ОÑобине Ñидра',name:'Име Ñидра',errorName:'Молимо Ð’Ð°Ñ Ð´Ð° унеÑете име Ñидра'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'Претрага',replace:'Замена',findWhat:'Пронађи:',replaceWith:'Замени Ñа:',notFoundMsg:'Тражени текÑÑ‚ није пронађен.',matchCase:'Разликуј велика и мала Ñлова',matchWord:'Упореди целе речи',matchCyclic:'Match cyclic',replaceAll:'Замени Ñве',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Табела',title:'ОÑобине табеле',menu:'ОÑобине табеле',deleteTable:'Delete Table',rows:'Редова',columns:'Kолона',border:'Величина оквира',align:'Равнање',alignLeft:'Лево',alignCenter:'Средина',alignRight:'ДеÑно',width:'Ширина',widthPx:'пикÑела',widthPc:'процената',widthUnit:'width unit',height:'ВиÑина',cellSpace:'ЋелијÑки проÑтор',cellPad:'Размак ћелија',caption:'ÐаÑлов табеле',summary:'Summary',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'Обриши ћелије',merge:'Спој ћелије',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Row',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'Обриши редове'},column:{menu:'Column',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'Обриши колоне'}},button:{title:'ОÑобине дугмета',text:'ТекÑÑ‚ (вредноÑÑ‚)',type:'Tип',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'ОÑобине поља за потврду',radioTitle:'ОÑобине радио-дугмета',value:'ВредноÑÑ‚',selected:'Означено'},form:{title:'ОÑобине форме',menu:'ОÑобине форме',action:'Aкција',method:'Mетода',encoding:'Encoding'},select:{title:'ОÑобине изборног поља',selectInfo:'Инфо',opAvail:'ДоÑтупне опције',value:'ВредноÑÑ‚',size:'Величина',lines:'линија',chkMulti:'Дозволи вишеÑтруку Ñелекцију',opText:'ТекÑÑ‚',opValue:'ВредноÑÑ‚',btnAdd:'Додај',btnModify:'Измени',btnUp:'Горе',btnDown:'Доле',btnSetValue:'ПодеÑи као означену вредноÑÑ‚',btnDelete:'Обриши'},textarea:{title:'ОÑобине зоне текÑта',cols:'Број колона',rows:'Број редова'},textfield:{title:'ОÑобине текÑтуалног поља',name:'Ðазив',value:'ВредноÑÑ‚',charWidth:'Ширина (карактера)',maxChars:'МакÑимално карактера',type:'Тип',typeText:'ТекÑÑ‚',typePass:'Лозинка'},hidden:{title:'ОÑобине Ñкривеног поља',name:'Ðазив',value:'ВредноÑÑ‚'},image:{title:'ОÑобине Ñлика',titleButton:'ОÑобине дугмета Ñа Ñликом',menu:'ОÑобине Ñлика',infoTab:'Инфо Ñлике',btnUpload:'Пошаљи на Ñервер',upload:'Пошаљи',alt:'Ðлтернативни текÑÑ‚',width:'Ширина',height:'ВиÑина',lockRatio:'Закључај одноÑ',unlockRatio:'Unlock Ratio',resetSize:'РеÑетуј величину',border:'Оквир',hSpace:'HSpace',vSpace:'VSpace',align:'Равнање',alignLeft:'Лево',alignRight:'ДеÑно',alertUrl:'УнеÑите УРЛ Ñлике',linkTab:'Линк',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ОÑобине Флеша',propertiesTab:'Properties',title:'ОÑобине флеша',chkPlay:'ÐутоматÑки Ñтарт',chkLoop:'Понављај',chkMenu:'Укључи флеш мени',chkFull:'Allow Fullscreen',scale:'Скалирај',scaleAll:'Прикажи Ñве',scaleNoBorder:'Без ивице',scaleFit:'Попуни површину',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Равнање',alignLeft:'Лево',alignAbsBottom:'Abs доле',alignAbsMiddle:'Abs Ñредина',alignBaseline:'Базно',alignBottom:'Доле',alignMiddle:'Средина',alignRight:'ДеÑно',alignTextTop:'Врх текÑта',alignTop:'Врх',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Боја позадине',width:'Ширина',height:'ВиÑина',hSpace:'HSpace',vSpace:'VSpace',validateSrc:'УнеÑите УРЛ линка',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Провери Ñпеловање',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Ðије у речнику',changeTo:'Измени',btnIgnore:'Игнориши',btnIgnoreAll:'Игнориши Ñве',btnReplace:'Замени',btnReplaceAll:'Замени Ñве',btnUndo:'Врати акцију',noSuggestions:'- Без ÑугеÑтија -',progress:'Провера Ñпеловања у току...',noMispell:'Провера Ñпеловања завршена: грешке ниÑу пронађене',noChanges:'Провера Ñпеловања завршена: Ðије измењена ниједна реч',oneChange:'Провера Ñпеловања завршена: Измењена је једна реч',manyChanges:'Провера Ñпеловања завршена: %1 реч(и) је измењено',ieSpellDownload:'Провера Ñпеловања није инÑталирана. Да ли желите да је Ñкинете Ñа Интернета?'},smiley:{toolbar:'Смајли',title:'УнеÑи Ñмајлија',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Ðабројиву лиÑту',bulletedlist:'Ðенабројива лиÑта',indent:'Увећај леву маргину',outdent:'Смањи леву маргину',justify:{left:'Лево равнање',center:'Центриран текÑÑ‚',right:'ДеÑно равнање',block:'ОбоÑтрано равнање'},blockquote:'Block Quote',clipboard:{title:'Залепи',cutError:'СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког иÑецања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl/Cmd+X).',copyError:'СигурноÑна подешавања Вашег претраживача не дозвољавају операције аутоматÑког копирања текÑта. Молимо Ð’Ð°Ñ Ð´Ð° кориÑтите пречицу Ñа таÑтатуре (Ctrl/Cmd+C).',pasteMsg:'Молимо Ð’Ð°Ñ Ð´Ð° залепите унутар доње површине кориÑтећи таÑтатурну пречицу (<STRONG>Ctrl/Cmd+V</STRONG>) и да притиÑнете <STRONG>OK</STRONG>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Залепи из Worda',title:'Залепи из Worda',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Залепи као чиÑÑ‚ текÑÑ‚',title:'Залепи као чиÑÑ‚ текÑÑ‚'},templates:{button:'ОбраÑци',title:'ОбраÑци за Ñадржај',options:'Template Options',insertOption:'Replace actual contents',selectPromptMsg:'Молимо Ð’Ð°Ñ Ð´Ð° одаберете образац који ће бити примењен на Ñтраницу (тренутни Ñадржај ће бити обриÑан):',emptyListMsg:'(Ðема дефиниÑаних образаца)'},showBlocks:'Show Blocks',stylesCombo:{label:'Стил',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Формат',panelTitle:'Формат',tag_p:'Normal',tag_pre:'Formatirano',tag_address:'Adresa',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Фонт',voiceLabel:'Font',panelTitle:'Фонт'},fontSize:{label:'Величина фонта',voiceLabel:'Font Size',panelTitle:'Величина фонта'},colorButton:{textColorTitle:'Боја текÑта',bgColorTitle:'Боја позадине',panelTitle:'Colors',auto:'ÐутоматÑки',more:'Више боја...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/sv.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/sv.js
new file mode 100644
index 000000000..4a7ba1439
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/sv.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.sv={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Källa',newPage:'Ny sida',save:'Spara',preview:'Förhandsgranska',cut:'Klipp ut',copy:'Kopiera',paste:'Klistra in',print:'Skriv ut',underline:'Understruken',bold:'Fet',italic:'Kursiv',selectAll:'Markera allt',removeFormat:'Radera formatering',strike:'Genomstruken',subscript:'Nedsänkta tecken',superscript:'Upphöjda tecken',horizontalrule:'Infoga horisontal linje',pagebreak:'Infoga sidbrytning',unlink:'Radera länk',undo:'Ångra',redo:'Gör om',common:{browseServer:'Bläddra på server',url:'URL',protocol:'Protokoll',upload:'Ladda upp',uploadSubmit:'Skicka till server',image:'Bild',flash:'Flash',form:'Formulär',checkbox:'Kryssruta',radio:'Alternativknapp',textField:'Textfält',textarea:'Textruta',hiddenField:'Dolt fält',button:'Knapp',select:'Flervalslista',imageButton:'Bildknapp',notSet:'<ej angivet>',id:'Id',name:'Namn',langDir:'Språkriktning',langDirLtr:'Vänster till Höger (VTH)',langDirRtl:'Höger till Vänster (HTV)',langCode:'Språkkod',longDescr:'URL-beskrivning',cssClass:'Stylesheet class',advisoryTitle:'Titel',cssStyle:'Style',ok:'OK',cancel:'Avbryt',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'Avancerad',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Klistra in utökat tecken',title:'Välj utökat tecken',options:'Special Character Options'},link:{toolbar:'Infoga/Redigera länk',other:'<annan>',menu:'Redigera länk',title:'Länk',info:'Länkinformation',target:'Mål',upload:'Ladda upp',advanced:'Avancerad',type:'Länktyp',toUrl:'URL',toAnchor:'Ankare i sidan',toEmail:'E-post',targetFrame:'<ram>',targetPopup:'<popup-fönster>',targetFrameName:'Målets ramnamn',targetPopupName:'Popup-fönstrets namn',popupFeatures:'Popup-fönstrets egenskaper',popupResizable:'Resizable',popupStatusBar:'Statusfält',popupLocationBar:'Adressfält',popupToolbar:'Verktygsfält',popupMenuBar:'Menyfält',popupFullScreen:'Helskärm (endast IE)',popupScrollBars:'Scrolllista',popupDependent:'Beroende (endest Netscape)',popupWidth:'Bredd',popupLeft:'Position från vänster',popupHeight:'Höjd',popupTop:'Position från sidans topp',id:'Id',langDir:'Språkriktning',langDirLTR:'Vänster till Höger (VTH)',langDirRTL:'Höger till Vänster (HTV)',acccessKey:'Behörighetsnyckel',name:'Namn',langCode:'Språkriktning',tabIndex:'Tabindex',advisoryTitle:'Titel',advisoryContentType:'Innehållstyp',cssClasses:'Stylesheet class',charset:'Teckenuppställning',styles:'Style',selectAnchor:'Välj ett ankare',anchorName:'efter ankarnamn',anchorId:'efter objektid',emailAddress:'E-postadress',emailSubject:'Ämne',emailBody:'Innehåll',noAnchors:'(Inga ankare kunde hittas)',noUrl:'Var god ange länkens URL',noEmail:'Var god ange E-postadress'},anchor:{toolbar:'Infoga/Redigera ankarlänk',menu:'Egenskaper för ankarlänk',title:'Egenskaper för ankarlänk',name:'Ankarnamn',errorName:'Var god ange ett ankarnamn'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Sök och ersätt',find:'Sök',replace:'Ersätt',findWhat:'Sök efter:',replaceWith:'Ersätt med:',notFoundMsg:'Angiven text kunde ej hittas.',matchCase:'Skiftläge',matchWord:'Inkludera hela ord',matchCyclic:'Match cyclic',replaceAll:'Ersätt alla',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'Tabell',title:'Tabellegenskaper',menu:'Tabellegenskaper',deleteTable:'Radera tabell',rows:'Rader',columns:'Kolumner',border:'Kantstorlek',align:'Justering',alignLeft:'Vänster',alignCenter:'Centrerad',alignRight:'Höger',width:'Bredd',widthPx:'pixlar',widthPc:'procent',widthUnit:'width unit',height:'Höjd',cellSpace:'Cellavstånd',cellPad:'Cellutfyllnad',caption:'Rubrik',summary:'Sammanfattning',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'Cell',insertBefore:'Lägg till Cell Före',insertAfter:'Lägg till Cell Efter',deleteCell:'Radera celler',merge:'Sammanfoga celler',mergeRight:'Sammanfoga Höger',mergeDown:'Sammanfoga Ner',splitHorizontal:'Dela Cell Horisontellt',splitVertical:'Dela Cell Vertikalt',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'Rad',insertBefore:'Lägg till Rad Före',insertAfter:'Lägg till Rad Efter',deleteRow:'Radera rad'},column:{menu:'Kolumn',insertBefore:'Lägg till Kolumn Före',insertAfter:'Lägg till Kolumn Efter',deleteColumn:'Radera kolumn'}},button:{title:'Egenskaper för knapp',text:'Text (Värde)',type:'Typ',typeBtn:'Knapp',typeSbm:'Skicka',typeRst:'Återställ'},checkboxAndRadio:{checkboxTitle:'Egenskaper för kryssruta',radioTitle:'Egenskaper för alternativknapp',value:'Värde',selected:'Vald'},form:{title:'Egenskaper för formulär',menu:'Egenskaper för formulär',action:'Funktion',method:'Metod',encoding:'Encoding'},select:{title:'Egenskaper för flervalslista',selectInfo:'Information',opAvail:'Befintliga val',value:'Värde',size:'Storlek',lines:'Linjer',chkMulti:'Tillåt flerval',opText:'Text',opValue:'Värde',btnAdd:'Lägg till',btnModify:'Redigera',btnUp:'Upp',btnDown:'Ner',btnSetValue:'Markera som valt värde',btnDelete:'Radera'},textarea:{title:'Egenskaper för textruta',cols:'Kolumner',rows:'Rader'},textfield:{title:'Egenskaper för textfält',name:'Namn',value:'Värde',charWidth:'Teckenbredd',maxChars:'Max antal tecken',type:'Typ',typeText:'Text',typePass:'Lösenord'},hidden:{title:'Egenskaper för dolt fält',name:'Namn',value:'Värde'},image:{title:'Bildegenskaper',titleButton:'Egenskaper för bildknapp',menu:'Bildegenskaper',infoTab:'Bildinformation',btnUpload:'Skicka till server',upload:'Ladda upp',alt:'Alternativ text',width:'Bredd',height:'Höjd',lockRatio:'Lås höjd/bredd förhållanden',unlockRatio:'Unlock Ratio',resetSize:'Återställ storlek',border:'Kant',hSpace:'Horis. marginal',vSpace:'Vert. marginal',align:'Justering',alignLeft:'Vänster',alignRight:'Höger',alertUrl:'Var god och ange bildens URL',linkTab:'Länk',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flashegenskaper',propertiesTab:'Properties',title:'Flashegenskaper',chkPlay:'Automatisk uppspelning',chkLoop:'Upprepa/Loopa',chkMenu:'Aktivera Flashmeny',chkFull:'Allow Fullscreen',scale:'Skala',scaleAll:'Visa allt',scaleNoBorder:'Ingen ram',scaleFit:'Exakt passning',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'Justering',alignLeft:'Vänster',alignAbsBottom:'Absolut nederkant',alignAbsMiddle:'Absolut centrering',alignBaseline:'Baslinje',alignBottom:'Nederkant',alignMiddle:'Mitten',alignRight:'Höger',alignTextTop:'Text överkant',alignTop:'Överkant',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'Bakgrundsfärg',width:'Bredd',height:'Höjd',hSpace:'Horis. marginal',vSpace:'Vert. marginal',validateSrc:'Var god ange länkens URL',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'Stavningskontroll',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'Saknas i ordlistan',changeTo:'Ändra till',btnIgnore:'Ignorera',btnIgnoreAll:'Ignorera alla',btnReplace:'Ersätt',btnReplaceAll:'Ersätt alla',btnUndo:'Ångra',noSuggestions:'- Förslag saknas -',progress:'Stavningskontroll pågår...',noMispell:'Stavningskontroll slutförd: Inga stavfel påträffades.',noChanges:'Stavningskontroll slutförd: Inga ord rättades.',oneChange:'Stavningskontroll slutförd: Ett ord rättades.',manyChanges:'Stavningskontroll slutförd: %1 ord rättades.',ieSpellDownload:'Stavningskontrollen är ej installerad. Vill du göra det nu?'},smiley:{toolbar:'Smiley',title:'Infoga smiley',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'Numrerad lista',bulletedlist:'Punktlista',indent:'Öka indrag',outdent:'Minska indrag',justify:{left:'Vänsterjustera',center:'Centrera',right:'Högerjustera',block:'Justera till marginaler'},blockquote:'Block Quote',clipboard:{title:'Klistra in',cutError:'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl/Cmd+X) istället.',copyError:'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl/Cmd+C) istället',pasteMsg:'Var god och klistra in Er text i rutan nedan genom att använda (<STRONG>Ctrl/Cmd+V</STRONG>) klicka sen på <STRONG>OK</STRONG>.',securityMsg:'På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'Klistra in från Word',title:'Klistra in från Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Klistra in som vanlig text',title:'Klistra in som vanlig text'},templates:{button:'Sidmallar',title:'Sidmallar',options:'Template Options',insertOption:'Ersätt aktuellt innehåll',selectPromptMsg:'Var god välj en mall att använda med editorn<br>(allt nuvarande innehåll raderas):',emptyListMsg:'(Ingen mall är vald)'},showBlocks:'Show Blocks',stylesCombo:{label:'Anpassad stil',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'Teckenformat',panelTitle:'Teckenformat',tag_p:'Normal',tag_pre:'Formaterad',tag_address:'Adress',tag_h1:'Rubrik 1',tag_h2:'Rubrik 2',tag_h3:'Rubrik 3',tag_h4:'Rubrik 4',tag_h5:'Rubrik 5',tag_h6:'Rubrik 6',tag_div:'Normal (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Typsnitt',voiceLabel:'Font',panelTitle:'Typsnitt'},fontSize:{label:'Storlek',voiceLabel:'Font Size',panelTitle:'Storlek'},colorButton:{textColorTitle:'Textfärg',bgColorTitle:'Bakgrundsfärg',panelTitle:'Colors',auto:'Automatisk',more:'Fler färger...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/th.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/th.js
new file mode 100644
index 000000000..ce2df477b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/th.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.th={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'ดูรหัส HTML',newPage:'สร้างหน้าเอà¸à¸ªà¸²à¸£à¹ƒà¸«à¸¡à¹ˆ',save:'บันทึà¸',preview:'ดูหน้าเอà¸à¸ªà¸²à¸£à¸•ัวอย่าง',cut:'ตัด',copy:'สำเนา',paste:'วาง',print:'สั่งพิมพ์',underline:'ตัวขีดเส้นใต้',bold:'ตัวหนา',italic:'ตัวเอียง',selectAll:'เลือà¸à¸—ั้งหมด',removeFormat:'ล้างรูปà¹à¸šà¸š',strike:'ตัวขีดเส้นทับ',subscript:'ตัวห้อย',superscript:'ตัวยà¸',horizontalrule:'à¹à¸—รà¸à¹€à¸ªà¹‰à¸™à¸„ั่นบรรทัด',pagebreak:'à¹à¸—รà¸à¸•ัวà¹à¸šà¹ˆà¸‡à¸«à¸™à¹‰à¸² Page Break',unlink:'ลบ ลิงค์',undo:'ยà¸à¹€à¸¥à¸´à¸à¸„ำสั่ง',redo:'ทำซ้ำคำสั่ง',common:{browseServer:'เปิดหน้าต่างจัดà¸à¸²à¸£à¹„ฟล์อัพโหลด',url:'ที่อยู่อ้างอิง URL',protocol:'โปรโตคอล',upload:'อัพโหลดไฟล์',uploadSubmit:'อัพโหลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่องà¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวอร์)',image:'รูปภาพ',flash:'ไฟล์ Flash',form:'à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡',checkbox:'เช็คบ๊อà¸',radio:'เรดิโอบัตตอน',textField:'เท็à¸à¸‹à¹Œà¸Ÿà¸´à¸¥à¸”์',textarea:'เท็à¸à¸‹à¹Œà¹à¸­à¹€à¸£à¸µà¸¢',hiddenField:'ฮิดเดนฟิลด์',button:'ปุ่ม',select:'à¹à¸–บตัวเลือà¸',imageButton:'ปุ่มà¹à¸šà¸šà¸£à¸¹à¸›à¸ à¸²à¸ž',notSet:'<ไม่ระบุ>',id:'ไอดี',name:'ชื่อ',langDir:'à¸à¸²à¸£à¹€à¸‚ียน-อ่านภาษา',langDirLtr:'จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)',langDirRtl:'จาà¸à¸‚วามาซ้าย (RTL)',langCode:'รหัสภาษา',longDescr:'คำอธิบายประà¸à¸­à¸š URL',cssClass:'คลาสของไฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล',advisoryTitle:'คำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³',cssStyle:'ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล',ok:'ตà¸à¸¥à¸‡',cancel:'ยà¸à¹€à¸¥à¸´à¸',close:'Close',preview:'Preview',generalTab:'General',advancedTab:'ขั้นสูง',validateNumberFailed:'This value is not a number.',confirmNewPage:'Any unsaved changes to this content will be lost. Are you sure you want to load new page?',confirmCancel:'Some of the options have been changed. Are you sure to close the dialog?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, unavailable</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'à¹à¸—รà¸à¸•ัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©',title:'à¹à¸—รà¸à¸•ัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©',options:'Special Character Options'},link:{toolbar:'à¹à¸—รà¸/à¹à¸à¹‰à¹„ข ลิงค์',other:'<อื่น ๆ>',menu:'à¹à¸à¹‰à¹„ข ลิงค์',title:'ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ',info:'รายละเอียด',target:'à¸à¸²à¸£à¹€à¸›à¸´à¸”หน้าลิงค์',upload:'อัพโหลดไฟล์',advanced:'ขั้นสูง',type:'ประเภทของลิงค์',toUrl:'URL',toAnchor:'จุดเชื่อมโยง (Anchor)',toEmail:'ส่งอีเมล์ (E-Mail)',targetFrame:'<เปิดในเฟรม>',targetPopup:'<เปิดหน้าจอเล็ภ(Pop-up)>',targetFrameName:'ชื่อทาร์เà¸à¹‡à¸•เฟรม',targetPopupName:'ระบุชื่อหน้าจอเล็ภ(Pop-up)',popupFeatures:'คุณสมบัติของหน้าจอเล็ภ(Pop-up)',popupResizable:'Resizable',popupStatusBar:'à¹à¸ªà¸”งà¹à¸–บสถานะ',popupLocationBar:'à¹à¸ªà¸”งที่อยู่ของไฟล์',popupToolbar:'à¹à¸ªà¸”งà¹à¸–บเครื่องมือ',popupMenuBar:'à¹à¸ªà¸”งà¹à¸–บเมนู',popupFullScreen:'à¹à¸ªà¸”งเต็มหน้าจอ (IE5.5++ เท่านั้น)',popupScrollBars:'à¹à¸ªà¸”งà¹à¸–บเลื่อน',popupDependent:'à¹à¸ªà¸”งเต็มหน้าจอ (Netscape)',popupWidth:'à¸à¸§à¹‰à¸²à¸‡',popupLeft:'พิà¸à¸±à¸”ซ้าย (Left Position)',popupHeight:'สูง',popupTop:'พิà¸à¸±à¸”บน (Top Position)',id:'Id',langDir:'à¸à¸²à¸£à¹€à¸‚ียน-อ่านภาษา',langDirLTR:'จาà¸à¸‹à¹‰à¸²à¸¢à¹„ปขวา (LTR)',langDirRTL:'จาà¸à¸‚วามาซ้าย (RTL)',acccessKey:'à¹à¸­à¸„เซส คีย์',name:'ชื่อ',langCode:'à¸à¸²à¸£à¹€à¸‚ียน-อ่านภาษา',tabIndex:'ลำดับของ à¹à¸—็บ',advisoryTitle:'คำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³',advisoryContentType:'ชนิดของคำเà¸à¸£à¸´à¹ˆà¸™à¸™à¸³',cssClasses:'คลาสของไฟล์à¸à¸³à¸«à¸™à¸”ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล',charset:'ลิงค์เชื่อมโยงไปยังชุดตัวอัà¸à¸©à¸£',styles:'ลัà¸à¸©à¸“ะà¸à¸²à¸£à¹à¸ªà¸”งผล',selectAnchor:'ระบุข้อมูลของจุดเชื่อมโยง (Anchor)',anchorName:'ชื่อ',anchorId:'ไอดี',emailAddress:'อีเมล์ (E-Mail)',emailSubject:'หัวเรื่อง',emailBody:'ข้อความ',noAnchors:'(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอà¸à¸ªà¸²à¸£à¸™à¸µà¹‰)',noUrl:'à¸à¸£à¸¸à¸“าระบุที่อยู่อ้างอิงออนไลน์ (URL)',noEmail:'à¸à¸£à¸¸à¸“าระบุอีเมล์ (E-mail)'},anchor:{toolbar:'à¹à¸—รà¸/à¹à¸à¹‰à¹„ข Anchor',menu:'รายละเอียด Anchor',title:'รายละเอียด Anchor',name:'ชื่อ Anchor',errorName:'à¸à¸£à¸¸à¸“าระบุชื่อของ Anchor'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Find and Replace',find:'ค้นหา',replace:'ค้นหาà¹à¸¥à¸°à¹à¸—นที่',findWhat:'ค้นหาคำว่า:',replaceWith:'à¹à¸—นที่ด้วย:',notFoundMsg:'ไม่พบคำที่ค้นหา.',matchCase:'ตัวโหà¸à¹ˆ-เล็ภต้องตรงà¸à¸±à¸™',matchWord:'ต้องตรงà¸à¸±à¸™à¸—ุà¸à¸„ำ',matchCyclic:'Match cyclic',replaceAll:'à¹à¸—นที่ทั้งหมดที่พบ',replaceSuccessMsg:'%1 occurrence(s) replaced.'},table:{toolbar:'ตาราง',title:'คุณสมบัติของ ตาราง',menu:'คุณสมบัติของ ตาราง',deleteTable:'ลบตาราง',rows:'à¹à¸–ว',columns:'สดมน์',border:'ขนาดเส้นขอบ',align:'à¸à¸²à¸£à¸ˆà¸±à¸”ตำà¹à¸«à¸™à¹ˆà¸‡',alignLeft:'ชิดซ้าย',alignCenter:'à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡',alignRight:'ชิดขวา',width:'à¸à¸§à¹‰à¸²à¸‡',widthPx:'จุดสี',widthPc:'เปอร์เซ็น',widthUnit:'width unit',height:'สูง',cellSpace:'ระยะà¹à¸™à¸§à¸™à¸­à¸™à¸™',cellPad:'ระยะà¹à¸™à¸§à¸•ั้ง',caption:'หัวเรื่องของตาราง',summary:'สรุปความ',headers:'Headers',headersNone:'None',headersColumn:'First column',headersRow:'First Row',headersBoth:'Both',invalidRows:'Number of rows must be a number greater than 0.',invalidCols:'Number of columns must be a number greater than 0.',invalidBorder:'Border size must be a number.',invalidWidth:'Table width must be a number.',invalidHeight:'Table height must be a number.',invalidCellSpacing:'Cell spacing must be a number.',invalidCellPadding:'Cell padding must be a number.',cell:{menu:'ช่องตาราง',insertBefore:'Insert Cell Before',insertAfter:'Insert Cell After',deleteCell:'ลบช่อง',merge:'ผสานช่อง',mergeRight:'Merge Right',mergeDown:'Merge Down',splitHorizontal:'Split Cell Horizontally',splitVertical:'Split Cell Vertically',title:'Cell Properties',cellType:'Cell Type',rowSpan:'Rows Span',colSpan:'Columns Span',wordWrap:'Word Wrap',hAlign:'Horizontal Alignment',vAlign:'Vertical Alignment',alignTop:'Top',alignMiddle:'Middle',alignBottom:'Bottom',alignBaseline:'Baseline',bgColor:'Background Color',borderColor:'Border Color',data:'Data',header:'Header',yes:'Yes',no:'No',invalidWidth:'Cell width must be a number.',invalidHeight:'Cell height must be a number.',invalidRowSpan:'Rows span must be a whole number.',invalidColSpan:'Columns span must be a whole number.',chooseColor:'Choose'},row:{menu:'à¹à¸–ว',insertBefore:'Insert Row Before',insertAfter:'Insert Row After',deleteRow:'ลบà¹à¸–ว'},column:{menu:'คอลัมน์',insertBefore:'Insert Column Before',insertAfter:'Insert Column After',deleteColumn:'ลบสดมน์'}},button:{title:'รายละเอียดของ ปุ่ม',text:'ข้อความ (ค่าตัวà¹à¸›à¸£)',type:'ข้อความ',typeBtn:'Button',typeSbm:'Submit',typeRst:'Reset'},checkboxAndRadio:{checkboxTitle:'คุณสมบัติของ เช็คบ๊อà¸',radioTitle:'คุณสมบัติของ เรดิโอบัตตอน',value:'ค่าตัวà¹à¸›à¸£',selected:'เลือà¸à¹€à¸›à¹‡à¸™à¸„่าเริ่มต้น'},form:{title:'คุณสมบัติของ à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡',menu:'คุณสมบัติของ à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡',action:'à¹à¸­à¸„ชั่น',method:'เมธอด',encoding:'Encoding'},select:{title:'คุณสมบัติของ à¹à¸–บตัวเลือà¸',selectInfo:'อินโฟ',opAvail:'รายà¸à¸²à¸£à¸•ัวเลือà¸',value:'ค่าตัวà¹à¸›à¸£',size:'ขนาด',lines:'บรรทัด',chkMulti:'เลือà¸à¸«à¸¥à¸²à¸¢à¸„่าได้',opText:'ข้อความ',opValue:'ค่าตัวà¹à¸›à¸£',btnAdd:'เพิ่ม',btnModify:'à¹à¸à¹‰à¹„ข',btnUp:'บน',btnDown:'ล่าง',btnSetValue:'เลือà¸à¹€à¸›à¹‡à¸™à¸„่าเริ่มต้น',btnDelete:'ลบ'},textarea:{title:'คุณสมบัติของ เท็à¸à¹à¸­à¹€à¸£à¸µà¸¢',cols:'สดมภ์',rows:'à¹à¸–ว'},textfield:{title:'คุณสมบัติของ เท็à¸à¸‹à¹Œà¸Ÿà¸´à¸¥à¸”์',name:'ชื่อ',value:'ค่าตัวà¹à¸›à¸£',charWidth:'ความà¸à¸§à¹‰à¸²à¸‡',maxChars:'จำนวนตัวอัà¸à¸©à¸£à¸ªà¸¹à¸‡à¸ªà¸¸à¸”',type:'ชนิด',typeText:'ข้อความ',typePass:'รหัสผ่าน'},hidden:{title:'คุณสมบัติของ ฮิดเดนฟิลด์',name:'ชื่อ',value:'ค่าตัวà¹à¸›à¸£'},image:{title:'คุณสมบัติของ รูปภาพ',titleButton:'คุณสมบัติของ ปุ่มà¹à¸šà¸šà¸£à¸¹à¸›à¸ à¸²à¸ž',menu:'คุณสมบัติของ รูปภาพ',infoTab:'ข้อมูลของรูปภาพ',btnUpload:'อัพโหลดไฟล์ไปเà¸à¹‡à¸šà¹„ว้ที่เครื่องà¹à¸¡à¹ˆà¸‚่าย (เซิร์ฟเวอร์)',upload:'อัพโหลดไฟล์',alt:'คำประà¸à¸­à¸šà¸£à¸¹à¸›à¸ à¸²à¸ž',width:'ความà¸à¸§à¹‰à¸²à¸‡',height:'ความสูง',lockRatio:'à¸à¸³à¸«à¸™à¸”อัตราส่วน à¸à¸§à¹‰à¸²à¸‡-สูง à¹à¸šà¸šà¸„งที่',unlockRatio:'Unlock Ratio',resetSize:'à¸à¸³à¸«à¸™à¸”รูปเท่าขนาดจริง',border:'ขนาดขอบรูป',hSpace:'ระยะà¹à¸™à¸§à¸™à¸­à¸™',vSpace:'ระยะà¹à¸™à¸§à¸•ั้ง',align:'à¸à¸²à¸£à¸ˆà¸±à¸”วาง',alignLeft:'ชิดซ้าย',alignRight:'ชิดขวา',alertUrl:'à¸à¸£à¸¸à¸“าระบุที่อยู่อ้างอิงออนไลน์ของไฟล์รูปภาพ (URL)',linkTab:'ลิ้งค์',button2Img:'Do you want to transform the selected image button on a simple image?',img2Button:'Do you want to transform the selected image on a image button?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'คุณสมบัติของไฟล์ Flash',propertiesTab:'Properties',title:'คุณสมบัติของไฟล์ Flash',chkPlay:'เล่นอัตโนมัติ Auto Play',chkLoop:'เล่นวนรอบ Loop',chkMenu:'ให้ใช้งานเมนูของ Flash',chkFull:'Allow Fullscreen',scale:'อัตราส่วน Scale',scaleAll:'à¹à¸ªà¸”งให้เห็นทั้งหมด Show all',scaleNoBorder:'ไม่à¹à¸ªà¸”งเส้นขอบ No Border',scaleFit:'à¹à¸ªà¸”งให้พอดีà¸à¸±à¸šà¸žà¸·à¹‰à¸™à¸—ี่ Exact Fit',access:'Script Access',accessAlways:'Always',accessSameDomain:'Same domain',accessNever:'Never',align:'à¸à¸²à¸£à¸ˆà¸±à¸”วาง',alignLeft:'ชิดซ้าย',alignAbsBottom:'ชิดด้านล่างสุด',alignAbsMiddle:'à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡',alignBaseline:'ชิดบรรทัด',alignBottom:'ชิดด้านล่าง',alignMiddle:'à¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡à¹à¸™à¸§à¸•ั้ง',alignRight:'ชิดขวา',alignTextTop:'ใต้ตัวอัà¸à¸©à¸£',alignTop:'บนสุด',quality:'Quality',qualityBest:'Best',qualityHigh:'High',qualityAutoHigh:'Auto High',qualityMedium:'Medium',qualityAutoLow:'Auto Low',qualityLow:'Low',windowModeWindow:'Window',windowModeOpaque:'Opaque',windowModeTransparent:'Transparent',windowMode:'Window mode',flashvars:'Variables for Flash',bgcolor:'สีพื้นหลัง',width:'ความà¸à¸§à¹‰à¸²à¸‡',height:'ความสูง',hSpace:'ระยะà¹à¸™à¸§à¸™à¸­à¸™',vSpace:'ระยะà¹à¸™à¸§à¸•ั้ง',validateSrc:'à¸à¸£à¸¸à¸“าระบุที่อยู่อ้างอิงออนไลน์ (URL)',validateWidth:'Width must be a number.',validateHeight:'Height must be a number.',validateHSpace:'HSpace must be a number.',validateVSpace:'VSpace must be a number.'},spellCheck:{toolbar:'ตรวจà¸à¸²à¸£à¸ªà¸°à¸à¸”คำ',title:'Spell Check',notAvailable:'Sorry, but service is unavailable now.',errorLoading:'Error loading application service host: %s.',notInDic:'ไม่พบในดิà¸à¸Šà¸±à¸™à¸™à¸²à¸£à¸µ',changeTo:'à¹à¸à¹‰à¹„ขเป็น',btnIgnore:'ยà¸à¹€à¸§à¹‰à¸™',btnIgnoreAll:'ยà¸à¹€à¸§à¹‰à¸™à¸—ั้งหมด',btnReplace:'à¹à¸—นที่',btnReplaceAll:'à¹à¸—นที่ทั้งหมด',btnUndo:'ยà¸à¹€à¸¥à¸´à¸',noSuggestions:'- ไม่มีคำà¹à¸™à¸°à¸™à¸³à¹ƒà¸”ๆ -',progress:'à¸à¸³à¸¥à¸±à¸‡à¸•รวจสอบคำสะà¸à¸”...',noMispell:'ตรวจสอบคำสะà¸à¸”เสร็จสิ้น: ไม่พบคำสะà¸à¸”ผิด',noChanges:'ตรวจสอบคำสะà¸à¸”เสร็จสิ้น: ไม่มีà¸à¸²à¸£à¹à¸à¹‰à¸„ำใดๆ',oneChange:'ตรวจสอบคำสะà¸à¸”เสร็จสิ้น: à¹à¸à¹‰à¹„ข1คำ',manyChanges:'ตรวจสอบคำสะà¸à¸”เสร็จสิ้น:: à¹à¸à¹‰à¹„ข %1 คำ',ieSpellDownload:'ไม่ได้ติดตั้งระบบตรวจสอบคำสะà¸à¸”. ต้องà¸à¸²à¸£à¸•ิดตั้งไหมครับ?'},smiley:{toolbar:'รูปสื่ออารมณ์',title:'à¹à¸—รà¸à¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์สื่ออารมณ์',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 element'},numberedlist:'ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸•ัวเลข',bulletedlist:'ลำดับรายà¸à¸²à¸£à¹à¸šà¸šà¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์',indent:'เพิ่มระยะย่อหน้า',outdent:'ลดระยะย่อหน้า',justify:{left:'จัดชิดซ้าย',center:'จัดà¸à¸¶à¹ˆà¸‡à¸à¸¥à¸²à¸‡',right:'จัดชิดขวา',block:'จัดพอดีหน้าà¸à¸£à¸°à¸”าษ'},blockquote:'Block Quote',clipboard:{title:'วาง',cutError:'ไม่สามารถตัดข้อความที่เลือà¸à¹„ว้ได้เนื่องจาà¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลอดภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่อวางข้อความà¹à¸—น (à¸à¸”ปุ่ม Ctrl/Cmd à¹à¸¥à¸°à¸•ัว X พร้อมà¸à¸±à¸™).',copyError:'ไม่สามารถสำเนาข้อความที่เลือà¸à¹„ว้ได้เนื่องจาà¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าระดับความปลอดภัย. à¸à¸£à¸¸à¸“าใช้ปุ่มลัดเพื่อวางข้อความà¹à¸—น (à¸à¸”ปุ่ม Ctrl/Cmd à¹à¸¥à¸°à¸•ัว C พร้อมà¸à¸±à¸™).',pasteMsg:'à¸à¸£à¸¸à¸“าใช้คีย์บอร์ดเท่านั้น โดยà¸à¸”ปุ๋ม (<strong>Ctrl/Cmd à¹à¸¥à¸° V</strong>)พร้อมๆà¸à¸±à¸™ à¹à¸¥à¸°à¸à¸” <strong>OK</strong>.',securityMsg:'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?',toolbar:'วางสำเนาจาà¸à¸•ัวอัà¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”',title:'วางสำเนาจาà¸à¸•ัวอัà¸à¸©à¸£à¹€à¸§à¸´à¸£à¹Œà¸”',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'วางà¹à¸šà¸šà¸•ัวอัà¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า',title:'วางà¹à¸šà¸šà¸•ัวอัà¸à¸©à¸£à¸˜à¸£à¸£à¸¡à¸”า'},templates:{button:'เทมเพลต',title:'เทมเพลตของส่วนเนื้อหาเว็บไซต์',options:'Template Options',insertOption:'à¹à¸—นที่เนื้อหาเว็บไซต์ที่เลือà¸',selectPromptMsg:'à¸à¸£à¸¸à¸“าเลือภเทมเพลต เพื่อนำไปà¹à¸à¹‰à¹„ขในอีดิตเตอร์<br />(เนื้อหาส่วนนี้จะหายไป):',emptyListMsg:'(ยังไม่มีà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”เทมเพลต)'},showBlocks:'Show Blocks',stylesCombo:{label:'ลัà¸à¸©à¸“ะ',panelTitle:'Formatting Styles',panelTitle1:'Block Styles',panelTitle2:'Inline Styles',panelTitle3:'Object Styles'},format:{label:'รูปà¹à¸šà¸š',panelTitle:'รูปà¹à¸šà¸š',tag_p:'Normal',tag_pre:'Formatted',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Paragraph (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£',voiceLabel:'Font',panelTitle:'à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£'},fontSize:{label:'ขนาด',voiceLabel:'Font Size',panelTitle:'ขนาด'},colorButton:{textColorTitle:'สีตัวอัà¸à¸©à¸£',bgColorTitle:'สีพื้นหลัง',panelTitle:'Colors',auto:'สีอัตโนมัติ',more:'เลือà¸à¸ªà¸µà¸­à¸·à¹ˆà¸™à¹†...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Spell Check As You Type',opera_title:'Not supported by Opera',enable:'Enable SCAYT',disable:'Disable SCAYT',about:'About SCAYT',toggle:'Toggle SCAYT',options:'Options',langs:'Languages',moreSuggestions:'More suggestions',ignore:'Ignore',ignoreAll:'Ignore All',addWord:'Add Word',emptyDic:'Dictionary name should not be empty.',optionsTab:'Options',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Languages',dictionariesTab:'Dictionaries',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'About'},about:{title:'About CKEditor',dlgTitle:'About CKEditor',moreInfo:'For licensing information please visit our web site:',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'Maximize',minimize:'Minimize',fakeobjects:{anchor:'Anchor',flash:'Flash Animation',div:'Page Break',unknown:'Unknown Object'},resize:'Drag to resize',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/tr.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/tr.js
new file mode 100644
index 000000000..1e62d4e77
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/tr.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.tr={dir:'ltr',editorTitle:'Zengin metin editörü, %1, yardım için ALT 0 tuşuna basın.',toolbar:'Toolbar',editor:'Zengin Metin Editörü',source:'Kaynak',newPage:'Yeni Sayfa',save:'Kaydet',preview:'Ön İzleme',cut:'Kes',copy:'Kopyala',paste:'Yapıştır',print:'Yazdır',underline:'Altı Çizgili',bold:'Kalın',italic:'İtalik',selectAll:'Tümünü Seç',removeFormat:'Biçimi Kaldır',strike:'Üstü Çizgili',subscript:'Alt Simge',superscript:'Üst Simge',horizontalrule:'Yatay Satır Ekle',pagebreak:'Sayfa Sonu Ekle',unlink:'Köprü Kaldır',undo:'Geri Al',redo:'Tekrarla',common:{browseServer:'Sunucuyu Gez',url:'URL',protocol:'Protokol',upload:'Karşıya Yükle',uploadSubmit:'Sunucuya Yolla',image:'Resim',flash:'Flash',form:'Form',checkbox:'Onay Kutusu',radio:'Seçenek Düğmesi',textField:'Metin Girişi',textarea:'Çok Satırlı Metin',hiddenField:'Gizli Veri',button:'Düğme',select:'Seçim Menüsü',imageButton:'Resimli Düğme',notSet:'<tanımlanmamış>',id:'Kimlik',name:'Ad',langDir:'Dil Yönü',langDirLtr:'Soldan Sağa (LTR)',langDirRtl:'Sağdan Sola (RTL)',langCode:'Dil Kodlaması',longDescr:'Uzun Tanımlı URL',cssClass:'Biçem Sayfası Sınıfları',advisoryTitle:'Danışma Başlığı',cssStyle:'Biçem',ok:'Tamam',cancel:'İptal',close:'Kapat',preview:'Ön gösterim',generalTab:'Genel',advancedTab:'Gelişmiş',validateNumberFailed:'Bu değer sayı değildir.',confirmNewPage:'İceriğiniz kayıt edilmediğinden dolayı kaybolacaktır. Yeni bir sayfa yüklemek istediğinize eminsiniz?',confirmCancel:'Bazı seçenekler değişmiştir. Dialog penceresini kapatmak istediğinize eminmisiniz?',options:'Seçenekler',target:'Hedef',targetNew:'Yeni Pencere (_blank)',targetTop:'Enüst Pencere (_top)',targetSelf:'Aynı Pencere (_self)',targetParent:'Ana Pencere (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, hazır değildir</span>'},contextmenu:{options:'İçerik Menüsü Seçenekleri'},specialChar:{toolbar:'Özel Karakter Ekle',title:'Özel Karakter Seç',options:'Özel Karakter Seçenekleri'},link:{toolbar:'Link Ekle/Düzenle',other:'<diğer>',menu:'Link Düzenle',title:'Link',info:'Link Bilgisi',target:'Hedef',upload:'Karşıya Yükle',advanced:'Gelişmiş',type:'Link Türü',toUrl:'URL',toAnchor:'Bu sayfada çapa',toEmail:'E-Posta',targetFrame:'<çerçeve>',targetPopup:'<yeni açılan pencere>',targetFrameName:'Hedef Çerçeve Adı',targetPopupName:'Yeni Açılan Pencere Adı',popupFeatures:'Yeni Açılan Pencere Özellikleri',popupResizable:'Resizable',popupStatusBar:'Durum Çubuğu',popupLocationBar:'Yer Çubuğu',popupToolbar:'Araç Çubuğu',popupMenuBar:'Menü Çubuğu',popupFullScreen:'Tam Ekran (IE)',popupScrollBars:'Kaydırma Çubukları',popupDependent:'Bağımlı (Netscape)',popupWidth:'Genişlik',popupLeft:'Sola Göre Konum',popupHeight:'Yükseklik',popupTop:'Yukarıya Göre Konum',id:'Id',langDir:'Dil Yönü',langDirLTR:'Soldan Sağa (LTR)',langDirRTL:'Sağdan Sola (RTL)',acccessKey:'Erişim Tuşu',name:'Ad',langCode:'Dil Yönü',tabIndex:'Sekme İndeksi',advisoryTitle:'Danışma Başlığı',advisoryContentType:'Danışma İçerik Türü',cssClasses:'Biçem Sayfası Sınıfları',charset:'Bağlı Kaynak Karakter Gurubu',styles:'Biçem',selectAnchor:'Bağlantı Seç',anchorName:'Bağlantı Adı ile',anchorId:'Eleman Kimlik Numarası ile',emailAddress:'E-Posta Adresi',emailSubject:'İleti Konusu',emailBody:'İleti Gövdesi',noAnchors:'(Bu belgede hiç çapa yok)',noUrl:"Lütfen Link URL'sini yazın",noEmail:'Lütfen E-posta adresini yazın'},anchor:{toolbar:'Bağlantı Ekle/Düzenle',menu:'Bağlantı Özellikleri',title:'Bağlantı Özellikleri',name:'Bağlantı Adı',errorName:'Lütfen bağlantı için ad giriniz'},list:{numberedTitle:'Sayılandırılmış Liste Özellikleri',bulletedTitle:'Simgeli Liste Özellikleri',type:'Tipi',start:'Başla',validateStartNumber:'List start number must be a whole number.',circle:'Daire',disc:'Disk',square:'Kare',none:'Yok',notset:'<ayarlanmamış>',armenian:'Ermenice sayılandırma',georgian:'Gürcüce numaralandırma (an, ban, gan, vs.)',lowerRoman:'Küçük Roman (i, ii, iii, iv, v, vs.)',upperRoman:'Büyük Roman (I, II, III, IV, V, vs.)',lowerAlpha:'Küçük Alpha (a, b, c, d, e, vs.)',upperAlpha:'Büyük Alpha (A, B, C, D, E, vs.)',lowerGreek:'Küçük Greek (alpha, beta, gamma, vs.)',decimal:'Ondalık (1, 2, 3, vs.)',decimalLeadingZero:'Başı sıfırlı ondalık (01, 02, 03, vs.)'},findAndReplace:{title:'Bul ve Değiştir',find:'Bul',replace:'Değiştir',findWhat:'Aranan:',replaceWith:'Bununla değiştir:',notFoundMsg:'Belirtilen yazı bulunamadı.',matchCase:'Büyük/küçük harf duyarlı',matchWord:'Kelimenin tamamı uysun',matchCyclic:'Eşleşen döngü',replaceAll:'Tümünü Değiştir',replaceSuccessMsg:'%1 bulunanlardan değiştirildi.'},table:{toolbar:'Tablo',title:'Tablo Özellikleri',menu:'Tablo Özellikleri',deleteTable:'Tabloyu Sil',rows:'Satırlar',columns:'Sütunlar',border:'Kenar Kalınlığı',align:'Hizalama',alignLeft:'Sol',alignCenter:'Merkez',alignRight:'Sağ',width:'Genişlik',widthPx:'piksel',widthPc:'yüzde',widthUnit:'genişlik birimi',height:'Yükseklik',cellSpace:'Izgara kalınlığı',cellPad:'Izgara yazı arası',caption:'Başlık',summary:'Özet',headers:'Başlıklar',headersNone:'Yok',headersColumn:'İlk Sütun',headersRow:'İlk Satır',headersBoth:'Her İkisi',invalidRows:'Satır sayısı 0 sayısından büyük olmalıdır.',invalidCols:'Sütün sayısı 0 sayısından büyük olmalıdır.',invalidBorder:'Çerceve büyüklüklüğü sayı olmalıdır.',invalidWidth:'Tablo genişliği sayı olmalıdır.',invalidHeight:'Tablo yüksekliği sayı olmalıdır.',invalidCellSpacing:'Hücre boşluğu (spacing) sayı olmalıdır.',invalidCellPadding:'Hücre aralığı (padding) sayı olmalıdır.',cell:{menu:'Hücre',insertBefore:'Hücre Ekle - Önce',insertAfter:'Hücre Ekle - Sonra',deleteCell:'Hücre Sil',merge:'Hücreleri Birleştir',mergeRight:'Birleştir - Sağdaki İle ',mergeDown:'Birleştir - Aşağıdaki İle ',splitHorizontal:'Hücreyi Yatay Böl',splitVertical:'Hücreyi Dikey Böl',title:'Hücre Özellikleri',cellType:'Hücre Tipi',rowSpan:'Satırlar Mesafesi (Span)',colSpan:'Sütünlar Mesafesi (Span)',wordWrap:'Kelime Kaydırma',hAlign:'Düşey Hizalama',vAlign:'Yataş Hizalama',alignTop:'Üst',alignMiddle:'Orta',alignBottom:'Alt',alignBaseline:'Tabana',bgColor:'Arkaplan Rengi',borderColor:'Çerçeve Rengi',data:'Veri',header:'Başlık',yes:'Evet',no:'Hayır',invalidWidth:'Hücre genişliği sayı olmalıdır.',invalidHeight:'Hücre yüksekliği sayı olmalıdır.',invalidRowSpan:'Satırların mesafesi tam sayı olmalıdır.',invalidColSpan:'Sütünların mesafesi tam sayı olmalıdır.',chooseColor:'Seçiniz'},row:{menu:'Satır',insertBefore:'Satır Ekle - Önce',insertAfter:'Satır Ekle - Sonra',deleteRow:'Satır Sil'},column:{menu:'Sütun',insertBefore:'Kolon Ekle - Önce',insertAfter:'Kolon Ekle - Sonra',deleteColumn:'Sütun Sil'}},button:{title:'Düğme Özellikleri',text:'Metin (Değer)',type:'Tip',typeBtn:'Düğme',typeSbm:'Gönder',typeRst:'Sıfırla'},checkboxAndRadio:{checkboxTitle:'Onay Kutusu Özellikleri',radioTitle:'Seçenek Düğmesi Özellikleri',value:'Değer',selected:'Seçili'},form:{title:'Form Özellikleri',menu:'Form Özellikleri',action:'İşlem',method:'Yöntem',encoding:'Kodlama'},select:{title:'Seçim Menüsü Özellikleri',selectInfo:'Bilgi',opAvail:'Mevcut Seçenekler',value:'Değer',size:'Boyut',lines:'satır',chkMulti:'Çoklu seçime izin ver',opText:'Metin',opValue:'Değer',btnAdd:'Ekle',btnModify:'Düzenle',btnUp:'Yukarı',btnDown:'Aşağı',btnSetValue:'Seçili değer olarak ata',btnDelete:'Sil'},textarea:{title:'Çok Satırlı Metin Özellikleri',cols:'Sütunlar',rows:'Satırlar'},textfield:{title:'Metin Girişi Özellikleri',name:'Ad',value:'Değer',charWidth:'Karakter Genişliği',maxChars:'En Fazla Karakter',type:'Tür',typeText:'Metin',typePass:'Şifre'},hidden:{title:'Gizli Veri Özellikleri',name:'Ad',value:'Değer'},image:{title:'Resim Özellikleri',titleButton:'Resimli Düğme Özellikleri',menu:'Resim Özellikleri',infoTab:'Resim Bilgisi',btnUpload:'Sunucuya Yolla',upload:'Karşıya Yükle',alt:'Alternatif Yazı',width:'Genişlik',height:'Yükseklik',lockRatio:'Oranı Kilitle',unlockRatio:'Kilitli Oran',resetSize:'Boyutu Başa Döndür',border:'Kenar',hSpace:'Yatay Boşluk',vSpace:'Dikey Boşluk',align:'Hizalama',alignLeft:'Sol',alignRight:'Sağ',alertUrl:"Lütfen resmin URL'sini yazınız",linkTab:'Köprü',button2Img:'Seçili resim butonunu basit resime çevirmek istermisiniz?',img2Button:'Seçili olan resimi, resimli butona çevirmek istermisiniz?',urlMissing:'Resmin URL kaynağı eksiktir.',validateWidth:'Genişlik tam sayı olmalıdır.',validateHeight:'Yükseklik tam sayı olmalıdır.',validateBorder:'Çerçeve tam sayı olmalıdır.',validateHSpace:'HSpace tam sayı olmalıdır.',validateVSpace:'VSpace tam sayı olmalıdır.'},flash:{properties:'Flash Özellikleri',propertiesTab:'Özellikler',title:'Flash Özellikleri',chkPlay:'Otomatik Oynat',chkLoop:'Döngü',chkMenu:'Flash Menüsünü Kullan',chkFull:'Tam ekrana İzinver',scale:'Boyutlandır',scaleAll:'Hepsini Göster',scaleNoBorder:'Kenar Yok',scaleFit:'Tam Sığdır',access:'Kod İzni',accessAlways:'Herzaman',accessSameDomain:'Aynı domain',accessNever:'Asla',align:'Hizalama',alignLeft:'Sol',alignAbsBottom:'Tam Altı',alignAbsMiddle:'Tam Ortası',alignBaseline:'Taban Çizgisi',alignBottom:'Alt',alignMiddle:'Orta',alignRight:'Sağ',alignTextTop:'Yazı Tepeye',alignTop:'Tepe',quality:'Kalite',qualityBest:'En iyi',qualityHigh:'Yüksek',qualityAutoHigh:'Otomatik Yükseklik',qualityMedium:'Orta',qualityAutoLow:'Otomatik Düşüklük',qualityLow:'Düşük',windowModeWindow:'Pencere',windowModeOpaque:'Opak',windowModeTransparent:'Şeffaf',windowMode:'Pencere modu',flashvars:'Flash Değerleri',bgcolor:'Arka Renk',width:'Genişlik',height:'Yükseklik',hSpace:'Yatay Boşluk',vSpace:'Dikey Boşluk',validateSrc:"Lütfen köprü URL'sini yazın",validateWidth:'Genişlik bir sayı olmalıdır.',validateHeight:'Yükseklik sayı olmalıdır.',validateHSpace:'HSpace sayı olmalıdır.',validateVSpace:'VSpace sayı olmalıdır.'},spellCheck:{toolbar:'Yazım Denetimi',title:'Yazımı Denetle',notAvailable:'Üzügünüz, bu servis şuanda hizmet dışıdır.',errorLoading:'Uygulamada yüklerken hata oluştu: %s.',notInDic:'Sözlükte Yok',changeTo:'Şuna değiştir:',btnIgnore:'Yoksay',btnIgnoreAll:'Tümünü Yoksay',btnReplace:'Değiştir',btnReplaceAll:'Tümünü Değiştir',btnUndo:'Geri Al',noSuggestions:'- Öneri Yok -',progress:'Yazım denetimi işlemde...',noMispell:'Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı',noChanges:'Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi',oneChange:'Yazım denetimi tamamlandı: Bir kelime değiştirildi',manyChanges:'Yazım denetimi tamamlandı: %1 kelime değiştirildi',ieSpellDownload:'Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?'},smiley:{toolbar:'İfade',title:'İfade Ekle',options:'İfade Seçenekleri'},elementsPath:{eleLabel:'Elementlerin yolu',eleTitle:'%1 element'},numberedlist:'Numaralı Liste',bulletedlist:'Simgeli Liste',indent:'Sekme Arttır',outdent:'Sekme Azalt',justify:{left:'Sola Dayalı',center:'Ortalanmış',right:'Sağa Dayalı',block:'İki Kenara Yaslanmış'},blockquote:'Blok Oluştur',clipboard:{title:'Yapıştır',cutError:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.',copyError:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.',pasteMsg:'Lütfen aşağıdaki kutunun içine yapıştırın. (<STRONG>Ctrl/Cmd+V</STRONG>) ve <STRONG>Tamam</STRONG> butonunu tıklayın.',securityMsg:'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:"Yapıştırmaya çalıştığınız metin Word'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?",toolbar:"Word'den Yapıştır",title:"Word'den Yapıştır",error:'Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir'},pasteText:{button:'Düz Metin Olarak Yapıştır',title:'Düz Metin Olarak Yapıştır'},templates:{button:'Şablonlar',title:'İçerik Şablonları',options:'Şablon Seçenekleri',insertOption:'Mevcut içerik ile değiştir',selectPromptMsg:'Düzenleyicide açmak için lütfen bir şablon seçin.<br>(hali hazırdaki içerik kaybolacaktır.):',emptyListMsg:'(Belirli bir şablon seçilmedi)'},showBlocks:'Blokları Göster',stylesCombo:{label:'Biçem',panelTitle:'Stilleri Düzenliyor',panelTitle1:'Blok Stilleri',panelTitle2:'Inline Stilleri',panelTitle3:'Nesne Stilleri'},format:{label:'Biçim',panelTitle:'Biçim',tag_p:'Normal',tag_pre:'Biçimli',tag_address:'Adres',tag_h1:'Başlık 1',tag_h2:'Başlık 2',tag_h3:'Başlık 3',tag_h4:'Başlık 4',tag_h5:'Başlık 5',tag_h6:'Başlık 6',tag_div:'Paragraf (DIV)'},div:{title:'Div İçeriği Oluştur',toolbar:'Div İçeriği Oluştur',cssClassInputLabel:'Stilltipi Sınıfı',styleSelectLabel:'Stil',IdInputLabel:'Id',languageCodeInputLabel:' Dil Kodu',inlineStyleInputLabel:'Inline Stili',advisoryTitleInputLabel:'Tavsiye Başlığı',langDirLabel:'Dil Yönü',langDirLTRLabel:'Soldan sağa (LTR)',langDirRTLLabel:'Sağdan sola (RTL)',edit:'Div Düzenle',remove:'Div Kaldır'},font:{label:'Yazı Türü',voiceLabel:'Font',panelTitle:'Yazı Türü'},fontSize:{label:'Boyut',voiceLabel:'Font Size',panelTitle:'Boyut'},colorButton:{textColorTitle:'Yazı Rengi',bgColorTitle:'Arka Renk',panelTitle:'Renkler',auto:'Otomatik',more:'Diğer renkler...'},colors:{'000':'Siyah',800000:'Kestane','8B4513':'Koyu Kahverengi','2F4F4F':'Koyu Kurşuni Gri','008080':'Teal','000080':'Mavi','4B0082':'Çivit Mavisi',696969:'Silik Gri',B22222:'Ateş Tuğlası',A52A2A:'Kahverengi',DAA520:'Altun Sırık','006400':'Koyu Yeşil','40E0D0':'Turkuaz','0000CD':'Orta Mavi',800080:'Pembe',808080:'Gri',F00:'Kırmızı',FF8C00:'Koyu Portakal',FFD700:'Altın','008000':'Yeşil','0FF':'Ciyan','00F':'Mavi',EE82EE:'Menekşe',A9A9A9:'Koyu Gri',FFA07A:'Açık Sarımsı',FFA500:'Portakal',FFFF00:'Sarı','00FF00':'Açık Yeşil',AFEEEE:'Sönük Turkuaz',ADD8E6:'Açık Mavi',DDA0DD:'Mor',D3D3D3:'Açık Gri',FFF0F5:'Eflatun Pembe',FAEBD7:'Antik Beyaz',FFFFE0:'Açık Sarı',F0FFF0:'Balsarısı',F0FFFF:'Gök Mavisi',F0F8FF:'Reha Mavi',E6E6FA:'Eflatun',FFF:'Beyaz'},scayt:{title:'Girmiş olduğunuz kelime denetimi',opera_title:'Opera tarafından desteklenmemektedir',enable:'SCAYT etkinleştir',disable:'SCAYT pasifleştir',about:'SCAYT hakkında',toggle:'SCAYT değiştir',options:'Seçenekler',langs:'Diller',moreSuggestions:'Daha fazla öneri',ignore:'Yoksay',ignoreAll:'Tümünü Yoksay',addWord:'Kelime Ekle',emptyDic:'Sözlük adı boş olamaz.',optionsTab:'Seçenekler',allCaps:'Tüm büyük küçük kelimeleri yoksay',ignoreDomainNames:'Domain adlarını yoksay',mixedCase:'Karışık büyüklük ile Sözcükler yoksay',mixedWithDigits:'Sayılarla Kelimeler yoksay',languagesTab:'Diller',dictionariesTab:'Sözlükler',dic_field_name:'Sözlük adı',dic_create:'Oluştur',dic_restore:'Geri al',dic_delete:'Sil',dic_rename:'Yeniden adlandır',dic_info:"Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type it's name and click the Restore button.",aboutTab:'Hakkında'},about:{title:'CKEditor Hakkında',dlgTitle:'CKEditor Hakkında',moreInfo:'Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:',copy:'Copyright &copy; $1. Tüm hakları saklıdır.'},maximize:'Büyült',minimize:'Küçült',fakeobjects:{anchor:'Bağlantı',flash:'Flash Animasyonu',div:'Sayfa Kesimi',unknown:'Bilinmeyen Nesne'},resize:'Boyutlandırmak için sürükle',colordialog:{title:'Renk seç',options:'Renk Seçenekleri',highlight:'İşaretle',selected:'Seçilmiş',clear:'Temizle'},toolbarCollapse:"Toolbar'ı topla",toolbarExpand:"Toolbar'ı aç",bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/uk.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/uk.js
new file mode 100644
index 000000000..045503621
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/uk.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.uk={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'Джерело',newPage:'Ðова Ñторінка',save:'Зберегти',preview:'Попередній переглÑд',cut:'Вирізати',copy:'Копіювати',paste:'Ð’Ñтавити',print:'Друк',underline:'ПідкреÑлений',bold:'Жирний',italic:'КурÑив',selectAll:'Виділити вÑе',removeFormat:'Прибрати форматуваннÑ',strike:'ЗакреÑлений',subscript:'ПідрÑдковий індекÑ',superscript:'ÐадрÑдковий индекÑ',horizontalrule:'Ð’Ñтавити горизонтальну лінію',pagebreak:'Ð’Ñтавити розривши Ñторінки',unlink:'Знищити поÑиланнÑ',undo:'Повернути',redo:'Повторити',common:{browseServer:'ПередивитиÑÑ Ð½Ð° Ñервері',url:'URL',protocol:'Протокол',upload:'Закачати',uploadSubmit:'ÐадіÑлати на Ñервер',image:'ЗображеннÑ',flash:'Flash',form:'Форма',checkbox:'Флагова кнопка',radio:'Кнопка вибору',textField:'ТекÑтове поле',textarea:'ТекÑтова облаÑть',hiddenField:'Приховане поле',button:'Кнопка',select:'СпиÑок',imageButton:'Кнопка із зображеннÑм',notSet:'<не визначено>',id:'Ідентифікатор',name:"Им'Ñ",langDir:'ÐапрÑмок мови',langDirLtr:'Зліва на право (LTR)',langDirRtl:'Зправа на ліво (RTL)',langCode:'Мова',longDescr:'Довгий Ð¾Ð¿Ð¸Ñ URL',cssClass:'ÐšÐ»Ð°Ñ CSS',advisoryTitle:'Заголовок',cssStyle:'Стиль CSS',ok:'ОК',cancel:'СкаÑувати',close:'Close',preview:'Preview',generalTab:'Загальна',advancedTab:'Розширений',validateNumberFailed:'Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ Ñ” чиÑлом.',confirmNewPage:'Ð’ÑÑ– не збережені зміни будуть втрачені. Ви впевнені, що хочете завантажити нову Ñторінку?',confirmCancel:'ДеÑкі опції були змінені. Закрити вікно?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, не доÑтупне</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'Ð’Ñтавити Ñпеціальний Ñимвол',title:'Оберіть Ñпеціальний Ñимвол',options:'Special Character Options'},link:{toolbar:'Ð’Ñтавити/Редагувати поÑиланнÑ',other:'<інший>',menu:'Ð’Ñтавити поÑиланнÑ',title:'ПоÑиланнÑ',info:'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ð¾ÑиланнÑ',target:'Ціль',upload:'Закачати',advanced:'Розширений',type:'Тип поÑиланнÑ',toUrl:'URL',toAnchor:'Якір на цю Ñторінку',toEmail:'Эл. пошта',targetFrame:'<фрейм>',targetPopup:'<Ñпливаюче вікно>',targetFrameName:"Ім'Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ фрейма",targetPopupName:"Ім'Ñ Ñпливаючого вікна",popupFeatures:'ВлаÑтивоÑті Ñпливаючого вікна',popupResizable:'МаÑштабоване',popupStatusBar:'Строка ÑтатуÑу',popupLocationBar:'Панель локації',popupToolbar:'Панель інÑтрументів',popupMenuBar:'Панель меню',popupFullScreen:'Повний екран (IE)',popupScrollBars:'ПолоÑи прокрутки',popupDependent:'Залежний (Netscape)',popupWidth:'Ширина',popupLeft:'ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð·Ð»Ñ–Ð²Ð°',popupHeight:'ВиÑота',popupTop:'ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð·Ð²ÐµÑ€Ñ…Ñƒ',id:'Ідентифікатор (Id)',langDir:'ÐапрÑмок мови',langDirLTR:'Зліва на право (LTR)',langDirRTL:'Зправа на ліво (RTL)',acccessKey:'ГарÑча клавіша',name:"Им'Ñ",langCode:'ÐапрÑмок мови',tabIndex:'ПоÑлідовніÑть переходу',advisoryTitle:'Заголовок',advisoryContentType:'Тип вміÑту',cssClasses:'ÐšÐ»Ð°Ñ CSS',charset:'Кодировка',styles:'Стиль CSS',selectAnchor:'Оберіть Ñкір',anchorName:"За ім'Ñм ÑкорÑ",anchorId:'За ідентифікатором елемента',emailAddress:'ÐдреÑа ел. пошти',emailSubject:'Тема лиÑта',emailBody:'Тіло повідомленнÑ',noAnchors:'(Ðемає Ñкорів доÑтупних в цьому документі)',noUrl:'Будь лаÑка, занеÑіть URL поÑиланнÑ',noEmail:'Будь лаÑка, занеÑіть Ð°Ð´Ñ€ÐµÑ Ñл. почты'},anchor:{toolbar:'Ð’Ñтавити/Редагувати Ñкір',menu:'ВлаÑтивоÑті ÑкорÑ',title:'ВлаÑтивоÑті ÑкорÑ',name:"Ім'Ñ ÑкорÑ",errorName:"Будь лаÑка, занеÑіть ім'Ñ ÑкорÑ"},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'Знайти Ñ– замінити',find:'Пошук',replace:'Заміна',findWhat:'Шукати:',replaceWith:'Замінити на:',notFoundMsg:'Вказаний текÑÑ‚ не знайдений.',matchCase:'Враховувати регіÑтр',matchWord:'Збіг цілих Ñлів',matchCyclic:'Циклічна заміна',replaceAll:'Замінити вÑе',replaceSuccessMsg:'%1 Ñпівпадінь(Ñ) замінено.'},table:{toolbar:'ТаблицÑ',title:'ВлаÑтивоÑті таблиці',menu:'ВлаÑтивоÑті таблиці',deleteTable:'Видалити таблицю',rows:'Строки',columns:'Колонки',border:'Розмір бордюра',align:'ВирівнюваннÑ',alignLeft:'Зліва',alignCenter:'По центру',alignRight:'Зправа',width:'Ширина',widthPx:'пікÑелів',widthPc:'відÑотків',widthUnit:'width unit',height:'ВиÑота',cellSpace:'Проміжок (spacing)',cellPad:'ВідÑтуп (padding)',caption:'Заголовок',summary:'Резюме',headers:'Заголовки',headersNone:'Жодного',headersColumn:'Перша колонка',headersRow:'Перший Ñ€Ñдок',headersBoth:'Обидва',invalidRows:'КількіÑть Ñ€Ñдків повинна бути чиÑлом більше за 0.',invalidCols:'КількіÑть колонок повинна бути чиÑлом більше за 0.',invalidBorder:'Розмір бордюра повинен бути чиÑлом.',invalidWidth:'Ширина таблиці повинна бути чиÑлом.',invalidHeight:'ВиÑота таблиці повинна бути чиÑлом.',invalidCellSpacing:'Проміжок (spacing) комірки повинен бути чиÑлом.',invalidCellPadding:'ВідÑтуп (padding) комірки повинен бути чиÑлом.',cell:{menu:'ОÑередок',insertBefore:'Ð’Ñтавити комірку до',insertAfter:'Ð’Ñтавити комірку піÑлÑ',deleteCell:'Видалити комірки',merge:"Об'єднати комірки",mergeRight:"Об'єднати зправа",mergeDown:"Об'єднати до низу",splitHorizontal:'Розділити комірку по горизонталі',splitVertical:'Розділити комірку по вертикалі',title:'ВлаÑтивоÑті комірки',cellType:'Тип комірки',rowSpan:'ÐžÐ±Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€Ñдків (Rows Span)',colSpan:'ÐžÐ±Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñтовпчиків (Columns Span)',wordWrap:'Ðвто Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту (Word Wrap)',hAlign:'Горизонтальне вирівнюваннÑ',vAlign:'Вертикальне вирівнюваннÑ',alignTop:'До верху',alignMiddle:'ПоÑередині',alignBottom:'До низу',alignBaseline:'По базовій лінії',bgColor:'Колір фону',borderColor:'Колір бордюру',data:'Дані',header:'Заголовок',yes:'Так',no:'ÐÑ–',invalidWidth:'Ширина комірки повинна бути чиÑлом.',invalidHeight:'ВиÑота комірки повинна бути чиÑлом.',invalidRowSpan:'КількіÑть обєднуваних Ñ€Ñдків повинна бути цілим чиÑлом.',invalidColSpan:'КількіÑть обєднуваних Ñтовпчиків повинна бути цілим чиÑлом.',chooseColor:'Choose'},row:{menu:'РÑдок',insertBefore:'Ð’Ñтавити Ñ€Ñдок до',insertAfter:'Ð’Ñтавити Ñ€Ñдок піÑлÑ',deleteRow:'Видалити Ñтроки'},column:{menu:'Колонка',insertBefore:'Ð’Ñтавити колонку до',insertAfter:'Ð’Ñтавити колонку піÑлÑ',deleteColumn:'Видалити колонки'}},button:{title:'ВлаÑтивоÑті кнопки',text:'ТекÑÑ‚ (ЗначеннÑ)',type:'Тип',typeBtn:'Кнопка',typeSbm:'Відправити',typeRst:'Скинути'},checkboxAndRadio:{checkboxTitle:'ВлаÑтивоÑті флагової кнопки',radioTitle:'ВлаÑтивоÑті кнопки вибору',value:'ЗначеннÑ',selected:'Обрана'},form:{title:'ВлаÑтивоÑті форми',menu:'ВлаÑтивоÑті форми',action:'ДіÑ',method:'Метод',encoding:'КодуваннÑ'},select:{title:'ВлаÑтивоÑті ÑпиÑку',selectInfo:'Інфо',opAvail:'ДоÑтупні варіанти',value:'ЗначеннÑ',size:'Розмір',lines:'лінії',chkMulti:'Дозволити Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… позицій',opText:'ТекÑÑ‚',opValue:'ЗначеннÑ',btnAdd:'Добавити',btnModify:'Змінити',btnUp:'Вгору',btnDown:'Вниз',btnSetValue:'Ð’Ñтановити Ñк вибране значеннÑ',btnDelete:'Видалити'},textarea:{title:'ВлаÑтивоÑті текÑтової облаÑті',cols:'Колонки',rows:'Строки'},textfield:{title:'ВлаÑтивоÑті текÑтового полÑ',name:"Ім'Ñ",value:'ЗначеннÑ',charWidth:'Ширина',maxChars:'МакÑ. кіл-ть Ñимволів',type:'Тип',typeText:'ТекÑÑ‚',typePass:'Пароль'},hidden:{title:'ВлаÑтивоÑті прихованого полÑ',name:"Ім'Ñ",value:'ЗначеннÑ'},image:{title:'ВлаÑтивоÑті зображеннÑ',titleButton:'ВлаÑтивоÑті кнопки із зображеннÑм',menu:'ВлаÑтивоÑті зображеннÑ',infoTab:'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ изображении',btnUpload:'ÐадіÑлати на Ñервер',upload:'Закачати',alt:'Ðльтернативний текÑÑ‚',width:'Ширина',height:'ВиÑота',lockRatio:'Зберегти пропорції',unlockRatio:'Unlock Ratio',resetSize:'Скинути розмір',border:'Бордюр',hSpace:'Горизонтальний відÑтуп',vSpace:'Вертикальний відÑтуп',align:'ВирівнюваннÑ',alignLeft:'По лівому краю',alignRight:'По правому краю',alertUrl:'Будь лаÑка, введіть URL зображеннÑ',linkTab:'ПоÑиланнÑ',button2Img:'Ви хочете перетворити обрану кнопку-Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° проÑте зображеннÑ?',img2Button:'Ви хочете перетворити обране Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° кнопку-зображеннÑ?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'ВлаÑтивоÑті Flash',propertiesTab:'ВлаÑтивоÑті',title:'ВлаÑтивоÑті Flash',chkPlay:'Ðвто програваннÑ',chkLoop:'Зациклити',chkMenu:'Дозволити меню Flash',chkFull:'Дозволити повноекранний переглÑд',scale:'МаÑштаб',scaleAll:'Показати вÑÑ–',scaleNoBorder:'Без рамки',scaleFit:'ДійÑний розмір',access:'ДоÑтуп до Ñкрипта',accessAlways:'Завжди',accessSameDomain:'З того ж домена',accessNever:'Ðіколи',align:'ВирівнюваннÑ',alignLeft:'По лівому краю',alignAbsBottom:'ÐÐ±Ñ Ð¿Ð¾ низу',alignAbsMiddle:'ÐÐ±Ñ Ð¿Ð¾ Ñередині',alignBaseline:'По базовій лінії',alignBottom:'По низу',alignMiddle:'По Ñередині',alignRight:'По правому краю',alignTextTop:'ТекÑÑ‚ на верху',alignTop:'По верху',quality:'ЯкіÑть',qualityBest:'Відмінна',qualityHigh:'ВиÑока',qualityAutoHigh:'Ðвто відмінна',qualityMedium:'СереднÑ',qualityAutoLow:'Ðвто низька',qualityLow:'Ðизька',windowModeWindow:'Вікно',windowModeOpaque:'ÐепрозоріÑть (Opaque)',windowModeTransparent:'ПрозоріÑть (Transparent)',windowMode:'Режим вікна',flashvars:'Змінні Flash',bgcolor:'Колір фону',width:'Ширина',height:'ВиÑота',hSpace:'Горизонтальний відÑтуп',vSpace:'Вертикальний відÑтуп',validateSrc:'Будь лаÑка, занеÑіть URL поÑиланнÑ',validateWidth:'Ширина повинна бути чиÑлом.',validateHeight:'ВиÑота повинна бути чиÑлом.',validateHSpace:'HSpace повинна бути чиÑлом.',validateVSpace:'VSpace повинна бути чиÑлом.'},spellCheck:{toolbar:'Перевірити орфографію',title:'Перевірка орфографії',notAvailable:'Вибачте, але ÑÐµÑ€Ð²Ñ–Ñ Ð½Ð°Ñ€Ð°Ð·Ñ– недоÑтупний.',errorLoading:'Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ : %s.',notInDic:'Ðе має в Ñловнику',changeTo:'Замінити на',btnIgnore:'Ігнорувати',btnIgnoreAll:'Ігнорувати вÑе',btnReplace:'Замінити',btnReplaceAll:'Замінити вÑе',btnUndo:'Ðазад',noSuggestions:'- Ðемає припущень -',progress:'ВиконуєтьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° орфографії...',noMispell:'Перевірку орфографії завершено: помилок не знайдено',noChanges:'Перевірку орфографії завершено: жодне Ñлово не змінено',oneChange:'Перевірку орфографії завершено: змінено одно Ñлово',manyChanges:'Перевірку орфографії завершено: 1% Ñлів змінено',ieSpellDownload:'Модуль перевірки орфографії не вÑтановлено. Бажаєтн завантажити його зараз?'},smiley:{toolbar:'Смайлик',title:'Ð’Ñтавити Ñмайлик',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 елемент'},numberedlist:'Ðумерований ÑпиÑок',bulletedlist:'Маркований ÑпиÑок',indent:'Збільшити відÑтуп',outdent:'Зменшити відÑтуп',justify:{left:'По лівому краю',center:'По центру',right:'По правому краю',block:'По ширині'},blockquote:'Цитата',clipboard:{title:'Ð’Ñтавити',cutError:'ÐаÑтройки безпеки вашого браузера не дозволÑють редактору автоматично виконувати операції вирізуваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl/Cmd+X).',copyError:'ÐаÑтройки безпеки вашого браузера не дозволÑють редактору автоматично виконувати операції копіюваннÑ. Будь лаÑка, викориÑтовуйте клавіатуру Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ (Ctrl/Cmd+C).',pasteMsg:'Будь лаÑка, вÑтавте з буфера обміну в цю облаÑть, кориÑтуючиÑÑŒ комбінацією клавіш (<STRONG>Ctrl/Cmd+V</STRONG>) та натиÑніть <STRONG>OK</STRONG>.',securityMsg:"Редактор не може отримати прÑмий доÑтуп до буферу обміну у зв'Ñзку з налаштуваннÑми вашого браузера. Вам потрібно вÑтавити інформацію повторно в це вікно.",pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'ТекÑÑ‚, що ви хочете вÑтавити, Ñхожий на копійований з Word. Ви хочете очиÑтити його перед вÑтавкою?',toolbar:'Ð’Ñтавити з Word',title:'Ð’Ñтавити з Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Ð’Ñтавити тільки текÑÑ‚',title:'Ð’Ñтавити тільки текÑÑ‚'},templates:{button:'Шаблони',title:'Шаблони зміÑту',options:'Template Options',insertOption:'Замінити поточний вміÑÑ‚',selectPromptMsg:'Оберіть, будь лаÑка, шаблон Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð² редакторі<br>(поточний зміÑÑ‚ буде втрачено):',emptyListMsg:'(Ðе визначено жодного шаблону)'},showBlocks:'Показувати блоки',stylesCombo:{label:'Стиль',panelTitle:'Formatting Styles',panelTitle1:'Block Ñтилі',panelTitle2:'Inline Ñтилі',panelTitle3:'Object Ñтилі'},format:{label:'ФорматуваннÑ',panelTitle:'ФорматуваннÑ',tag_p:'Ðормальний',tag_pre:'Форматований',tag_address:'ÐдреÑа',tag_h1:'Заголовок 1',tag_h2:'Заголовок 2',tag_h3:'Заголовок 3',tag_h4:'Заголовок 4',tag_h5:'Заголовок 5',tag_h6:'Заголовок 6',tag_div:'Ðормальний (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'Шрифт',voiceLabel:'Шрифт',panelTitle:'Шрифт'},fontSize:{label:'Розмір',voiceLabel:'Розмір шрифта',panelTitle:'Розмір'},colorButton:{textColorTitle:'Колір текÑту',bgColorTitle:'Колір фону',panelTitle:'Colors',auto:'Ðвтоматичний',more:'Кольори...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Перефірка орфографії по мірі набору',opera_title:'Not supported by Opera',enable:'Включити SCAYT',disable:'Відключити SCAYT',about:'Про SCAYT',toggle:'Перемкнути SCAYT',options:'Опції',langs:'Мови',moreSuggestions:'Більше пропозицій',ignore:'Ігнорувати',ignoreAll:'Ігнорувати вÑÑ–',addWord:'Додати Ñлово',emptyDic:'Ðазва Ñловника повинна бути заповнена.',optionsTab:'Опції',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'Мови',dictionariesTab:'Словники',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Про'},about:{title:'Про CKEditor',dlgTitle:'Про CKEditor',moreInfo:'Щодо інформації з Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ñ–Ñ‚Ð°Ð¹Ñ‚Ðµ до нашого Ñайту:',copy:'Copyright &copy; $1. Ð’ÑÑ– права заÑтережено.'},maximize:'МакÑимізувати',minimize:'Minimize',fakeobjects:{anchor:'Якір',flash:'Flash анімаціÑ',div:'Розрив Ñторінки',unknown:'Ðевідомий об`єкт'},resize:'ПереÑувайте Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ розміру',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/vi.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/vi.js
new file mode 100644
index 000000000..b7c3f7fb1
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/vi.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.vi={dir:'ltr',editorTitle:'Bá»™ soạn thảo, %1, nhấn ALT + 0 để xem hướng dẫn.',toolbar:'Thanh công cụ',editor:'Bá»™ soạn thảo',source:'Mã HTML',newPage:'Trang má»›i',save:'Lưu',preview:'Xem trước',cut:'Cắt',copy:'Sao chép',paste:'Dán',print:'In',underline:'Gạch chân',bold:'Äậm',italic:'Nghiêng',selectAll:'Chá»n tất cả',removeFormat:'Xoá định dạng',strike:'Gạch xuyên ngang',subscript:'Chỉ số dưới',superscript:'Chỉ số trên',horizontalrule:'Chèn đưá»ng phân cách ngang',pagebreak:'Chèn ngắt trang',unlink:'Xoá liên kết',undo:'Khôi phục thao tác',redo:'Làm lại thao tác',common:{browseServer:'Duyệt trên máy chá»§',url:'URL',protocol:'Giao thức',upload:'Tải lên',uploadSubmit:'Tải lên máy chá»§',image:'Hình ảnh',flash:'Flash',form:'Biểu mẫu',checkbox:'Nút kiểm',radio:'Nút chá»n',textField:'Trưá»ng văn bản',textarea:'Vùng văn bản',hiddenField:'Trưá»ng ẩn',button:'Nút',select:'Ô chá»n',imageButton:'Nút hình ảnh',notSet:'<không thiết lập>',id:'Äịnh danh',name:'Tên',langDir:'Hướng ngôn ngữ',langDirLtr:'Trái sang phải (LTR)',langDirRtl:'Phải sang trái (RTL)',langCode:'Mã ngôn ngữ',longDescr:'Mô tả URL',cssClass:'Lá»›p Stylesheet',advisoryTitle:'Nhan đỠhướng dẫn',cssStyle:'Kiểu (style)',ok:'Äồng ý',cancel:'Bá» qua',close:'Äóng',preview:'Xem trước',generalTab:'Tab chung',advancedTab:'Tab mở rá»™ng',validateNumberFailed:'Giá trị này không phải là số.',confirmNewPage:'Má»i thay đổi không được lưu lại, ná»™i dung này sẽ bị mất. Bạn có chắc chắn muốn tải má»™t trang má»›i?',confirmCancel:'Má»™t vài tùy chá»n đã bị thay đổi. Bạn có chắc chắn muốn đóng há»™p thoại?',options:'Tùy chá»n',target:'Äích đến',targetNew:'Cá»­a sổ má»›i (_blank)',targetTop:'Cá»­a sổ trên cùng (_top)',targetSelf:'Tại trang (_self)',targetParent:'Cá»­a sổ cha (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, không có</span>'},contextmenu:{options:'Tùy chá»n menu bổ xung'},specialChar:{toolbar:'Chèn ký tá»± đặc biệt',title:'Hãy chá»n ký tá»± đặc biệt',options:'Tùy chá»n các ký tá»± đặc biệt'},link:{toolbar:'Chèn/Sá»­a liên kết',other:'<khác>',menu:'Sá»­a liên kết',title:'Liên kết',info:'Thông tin liên kết',target:'Äích',upload:'Tải lên',advanced:'Mở rá»™ng',type:'Kiểu liên kết',toUrl:'URL',toAnchor:'Neo trong trang này',toEmail:'Thư Ä‘iện tá»­',targetFrame:'<khung>',targetPopup:'<cá»­a sổ popup>',targetFrameName:'Tên khung đích',targetPopupName:'Tên cá»­a sổ Popup',popupFeatures:'Äặc Ä‘iểm cá»§a cá»­a sổ Popup',popupResizable:'Có thể thay đổi kích cỡ',popupStatusBar:'Thanh trạng thái',popupLocationBar:'Thanh vị trí',popupToolbar:'Thanh công cụ',popupMenuBar:'Thanh Menu',popupFullScreen:'Toàn màn hình (IE)',popupScrollBars:'Thanh cuá»™n',popupDependent:'Phụ thuá»™c (Netscape)',popupWidth:'Rá»™ng',popupLeft:'Vị trí bên trái',popupHeight:'Cao',popupTop:'Vị trí phía trên',id:'Äịnh danh',langDir:'Hướng ngôn ngữ',langDirLTR:'Trái sang phải (LTR)',langDirRTL:'Phải sang trái (RTL)',acccessKey:'Phím há»— trợ truy cập',name:'Tên',langCode:'Mã ngôn ngữ',tabIndex:'Chỉ số cá»§a Tab',advisoryTitle:'Nhan đỠhướng dẫn',advisoryContentType:'Ná»™i dung hướng dẫn',cssClasses:'Lá»›p Stylesheet',charset:'Bảng mã cá»§a tài nguyên được liên kết đến',styles:'Kiểu (style)',selectAnchor:'Chá»n má»™t Ä‘iểm neo',anchorName:'Theo tên Ä‘iểm neo',anchorId:'Theo định danh thành phần',emailAddress:'Thư Ä‘iện tá»­',emailSubject:'Tiêu đỠthông Ä‘iệp',emailBody:'Ná»™i dung thông Ä‘iệp',noAnchors:'(Không có Ä‘iểm neo nào trong tài liệu)',noUrl:'Hãy đưa vào đưá»ng dẫn liên kết (URL)',noEmail:'Hãy đưa vào địa chỉ thư Ä‘iện tá»­'},anchor:{toolbar:'Chèn/Sá»­a Ä‘iểm neo',menu:'Thuá»™c tính Ä‘iểm neo',title:'Thuá»™c tính Ä‘iểm neo',name:'Tên cá»§a Ä‘iểm neo',errorName:'Hãy nhập vào tên cá»§a Ä‘iểm neo'},list:{numberedTitle:'Thuá»™c tính danh sách có thứ tá»±',bulletedTitle:'Thuá»™c tính danh sách không thứ tá»±',type:'Kiểu loại',start:'Bắt đầu',validateStartNumber:'List start number must be a whole number.',circle:'Khuyên tròn',disc:'Hình đĩa',square:'Hình vuông',none:'Không gì cả',notset:'<không thiết lập>',armenian:'Số theo kiểu Armenian',georgian:'Số theo kiểu Georgian (an, ban, gan...)',lowerRoman:'Số La Mã kiểu thưá»ng (i, ii, iii, iv, v...)',upperRoman:'Số La Mã kiểu HOA (I, II, III, IV, V...)',lowerAlpha:'Kiểu abc thưá»ng (a, b, c, d, e...)',upperAlpha:'Kiểu ABC HOA (A, B, C, D, E...)',lowerGreek:'Kiểu Hy Lạp (alpha, beta, gamma...)',decimal:'Kiểu số (1, 2, 3 ...)',decimalLeadingZero:'Kiểu số (01, 02, 03...)'},findAndReplace:{title:'Tìm kiếm và thay thế',find:'Tìm kiếm',replace:'Thay thế',findWhat:'Tìm chuá»—i:',replaceWith:'Thay bằng:',notFoundMsg:'Không tìm thấy chuá»—i cần tìm.',matchCase:'Phân biệt chữ hoa/thưá»ng',matchWord:'Giống toàn bá»™ từ',matchCyclic:'Giống má»™t phần',replaceAll:'Thay thế tất cả',replaceSuccessMsg:'%1 vị trí đã được thay thế.'},table:{toolbar:'Bảng',title:'Thuá»™c tính bảng',menu:'Thuá»™c tính bảng',deleteTable:'Xóa bảng',rows:'Số hàng',columns:'Số cá»™t',border:'Kích thước đưá»ng viá»n',align:'Canh lá»',alignLeft:'Trái',alignCenter:'Giữa',alignRight:'Phải',width:'Rá»™ng',widthPx:'Äiểm ảnh (px)',widthPc:'Phần trăm (%)',widthUnit:'ÄÆ¡n vị',height:'Chiá»u cao',cellSpace:'Khoảng cách giữa các ô',cellPad:'Khoảng đệm giữ ô và ná»™i dung',caption:'Äầu Ä‘á»',summary:'Tóm lược',headers:'Äầu Ä‘á»',headersNone:'Không có',headersColumn:'Cá»™t đầu tiên',headersRow:'Hàng đầu tiên',headersBoth:'Cả hai',invalidRows:'Số lượng hàng phải là má»™t số lá»›n hÆ¡n 0.',invalidCols:'Số lượng cá»™t phải là má»™t số lá»›n hÆ¡n 0.',invalidBorder:'Kích cỡ cá»§a đưá»ng biên phải là má»™t số nguyên.',invalidWidth:'Chiá»u rá»™ng cá»§a bảng phải là má»™t số nguyên.',invalidHeight:'Chiá»u cao cá»§a bảng phải là má»™t số nguyên.',invalidCellSpacing:'Khoảng cách giữa các ô phải là má»™t số nguyên.',invalidCellPadding:'Khoảng đệm giữa ô và ná»™i dung phải là má»™t số nguyên.',cell:{menu:'Ô',insertBefore:'Chèn ô Phía trước',insertAfter:'Chèn ô Phía sau',deleteCell:'Xoá ô',merge:'Kết hợp ô',mergeRight:'Kết hợp sang phải',mergeDown:'Kết hợp xuống dưới',splitHorizontal:'Phân tách ô theo chiá»u ngang',splitVertical:'Phân tách ô theo chiá»u dá»c',title:'Thuá»™c tính cá»§a ô',cellType:'Kiểu cá»§a ô',rowSpan:'Kết hợp hàng',colSpan:'Kết hợp cá»™t',wordWrap:'Chữ liá»n hàng',hAlign:'Canh lá» ngang',vAlign:'Canh lá» dá»c',alignTop:'Trên cùng',alignMiddle:'Chính giữa',alignBottom:'Dưới cùng',alignBaseline:'ÄÆ°á»ng cÆ¡ sở',bgColor:'Màu ná»n',borderColor:'Màu viá»n',data:'Dữ liệu',header:'Äầu Ä‘á»',yes:'Có',no:'Không',invalidWidth:'Chiá»u rá»™ng cá»§a ô phải là má»™t số nguyên.',invalidHeight:'Chiá»u cao cá»§a ô phải là má»™t số nguyên.',invalidRowSpan:'Số hàng kết hợp phải là má»™t số nguyên.',invalidColSpan:'Số cá»™t kết hợp phải là má»™t số nguyên.',chooseColor:'Chá»n màu'},row:{menu:'Hàng',insertBefore:'Chèn hàng phía trước',insertAfter:'Chèn hàng phía sau',deleteRow:'Xoá hàng'},column:{menu:'Cá»™t',insertBefore:'Chèn cá»™t phía trước',insertAfter:'Chèn cá»™t phía sau',deleteColumn:'Xoá cá»™t'}},button:{title:'Thuá»™c tính cá»§a nút',text:'Chuá»—i hiển thị (giá trị)',type:'Kiểu',typeBtn:'Nút bấm',typeSbm:'Nút gá»­i',typeRst:'Nút nhập lại'},checkboxAndRadio:{checkboxTitle:'Thuá»™c tính nút kiểm',radioTitle:'Thuá»™c tính nút chá»n',value:'Giá trị',selected:'ÄÆ°á»£c chá»n'},form:{title:'Thuá»™c tính biểu mẫu',menu:'Thuá»™c tính biểu mẫu',action:'Hành động',method:'Phương thức',encoding:'Bảng mã'},select:{title:'Thuá»™c tính ô chá»n',selectInfo:'Thông tin',opAvail:'Các tùy chá»n có thể sá»­ dụng',value:'Giá trị',size:'Kích cỡ',lines:'dòng',chkMulti:'Cho phép chá»n nhiá»u',opText:'Văn bản',opValue:'Giá trị',btnAdd:'Thêm',btnModify:'Thay đổi',btnUp:'Lên',btnDown:'Xuống',btnSetValue:'Giá trị được chá»n',btnDelete:'Nút xoá'},textarea:{title:'Thuá»™c tính vùng văn bản',cols:'Số cá»™t',rows:'Số hàng'},textfield:{title:'Thuá»™c tính trưá»ng văn bản',name:'Tên',value:'Giá trị',charWidth:'Äá»™ rá»™ng cá»§a ký tá»±',maxChars:'Số ký tá»± tối Ä‘a',type:'Kiểu',typeText:'Ký tá»±',typePass:'Mật khẩu'},hidden:{title:'Thuá»™c tính trưá»ng ẩn',name:'Tên',value:'Giá trị'},image:{title:'Thuá»™c tính cá»§a ảnh',titleButton:'Thuá»™c tính nút cá»§a ảnh',menu:'Thuá»™c tính cá»§a ảnh',infoTab:'Thông tin cá»§a ảnh',btnUpload:'Tải lên máy chá»§',upload:'Tải lên',alt:'Chú thích ảnh',width:'Chiá»u rá»™ng',height:'chiá»u cao',lockRatio:'Giữ nguyên tá»· lệ',unlockRatio:'Phá bá» tá»· lệ',resetSize:'Kích thước gốc',border:'ÄÆ°á»ng viá»n',hSpace:'Khoảng đệm ngang',vSpace:'Khoảng đệm dá»c',align:'Vị trí',alignLeft:'Bên trái',alignRight:'Bên phải',alertUrl:'Hãy đưa vào đưá»ng dẫn cá»§a ảnh',linkTab:'Tab liên kết',button2Img:'Bạn có muốn chuyển nút bấm bằng ảnh được chá»n thành ảnh?',img2Button:'Bạn có muốn chuyển đổi ảnh được chá»n thành nút bấm bằng ảnh?',urlMissing:'Thiếu đưá»ng dẫn hình ảnh',validateWidth:'Chiá»u rá»™ng cá»§a ảnh phải là má»™t số nguyên dương',validateHeight:'Chiá»u cao cá»§a ảnh phải là má»™t số nguyên dương',validateBorder:'Chiá»u rá»™ng cá»§a đưá»ng viá»n phải là má»™t số nguyên dương',validateHSpace:'Khoảng đệm ngang phải là má»™t số nguyên dương',validateVSpace:'Khoảng đệm dá»c phải là má»™t số nguyên dương'},flash:{properties:'Thuá»™c tính Flash',propertiesTab:'Thuá»™c tính',title:'Thuá»™c tính Flash',chkPlay:'Tá»± động chạy',chkLoop:'Lặp',chkMenu:'Cho phép bật menu cá»§a Flash',chkFull:'Cho phép toàn màn hình',scale:'Tá»· lệ',scaleAll:'Hiển thị tất cả',scaleNoBorder:'Không đưá»ng viá»n',scaleFit:'Vừa vặn',access:'Truy cập mã',accessAlways:'Luôn luôn',accessSameDomain:'Cùng tên miá»n',accessNever:'Không bao giá»',align:'Vị trí',alignLeft:'Trái',alignAbsBottom:'Dưới tuyệt đối',alignAbsMiddle:'Giữa tuyệt đối',alignBaseline:'ÄÆ°á»ng cÆ¡ sở',alignBottom:'Dưới',alignMiddle:'Giữa',alignRight:'Phải',alignTextTop:'Phía trên chữ',alignTop:'Trên',quality:'Chất lượng',qualityBest:'Tốt nhất',qualityHigh:'Cao',qualityAutoHigh:'Cao tá»± động',qualityMedium:'Trung bình',qualityAutoLow:'Thấp tá»± động',qualityLow:'Thấp',windowModeWindow:'Cá»­a sổ',windowModeOpaque:'MỠđục',windowModeTransparent:'Trong suốt',windowMode:'Chế độ cá»­a sổ',flashvars:'Các biến số dành cho Flash',bgcolor:'Màu ná»n',width:'Rá»™ng',height:'Cao',hSpace:'Khoảng đệm ngang',vSpace:'Khoảng đệm dá»c',validateSrc:'Hãy đưa vào đưá»ng dẫn liên kết',validateWidth:'Chiá»u rá»™ng phải là số nguyên.',validateHeight:'Chiá»u cao phải là số nguyên.',validateHSpace:'Khoảng đệm ngang phải là số nguyên.',validateVSpace:'Khoảng đệm dá»c phải là số nguyên.'},spellCheck:{toolbar:'Kiểm tra chính tả',title:'Kiểm tra chính tả',notAvailable:'Xin lá»—i, dịch vụ này hiện tại không có.',errorLoading:'Lá»—i khi Ä‘ang nạp dịch vụ ứng dụng: %s.',notInDic:'Không có trong từ Ä‘iển',changeTo:'Chuyển thành',btnIgnore:'Bá» qua',btnIgnoreAll:'Bá» qua tất cả',btnReplace:'Thay thế',btnReplaceAll:'Thay thế tất cả',btnUndo:'Phục hồi lại',noSuggestions:'- Không đưa ra gợi ý vá» từ -',progress:'Äang tiến hành kiểm tra chính tả...',noMispell:'Hoàn tất kiểm tra chính tả: Không có lá»—i chính tả',noChanges:'Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi',oneChange:'Hoàn tất kiểm tra chính tả: Má»™t từ đã được thay đổi',manyChanges:'Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi',ieSpellDownload:'Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải vá» ngay bây giá»?'},smiley:{toolbar:'Hình biểu lá»™ cảm xúc (mặt cưá»i)',title:'Chèn hình biểu lá»™ cảm xúc (mặt cưá»i)',options:'Tùy chá»n hình biểu lá»™ cảm xúc'},elementsPath:{eleLabel:'Nhãn thành phần',eleTitle:'%1 thành phần'},numberedlist:'Danh sách có thứ tá»±',bulletedlist:'Danh sách không thứ tá»±',indent:'Dịch vào trong',outdent:'Dịch ra ngoài',justify:{left:'Canh trái',center:'Canh giữa',right:'Canh phải',block:'Canh Ä‘á»u'},blockquote:'Khối trích dẫn',clipboard:{title:'Dán',cutError:'Các thiết lập bảo mật cá»§a trình duyệt không cho phép trình biên tập tá»± động thá»±c thi lệnh cắt. Hãy sá»­ dụng bàn phím cho lệnh này (Ctrl/Cmd+X).',copyError:'Các thiết lập bảo mật cá»§a trình duyệt không cho phép trình biên tập tá»± động thá»±c thi lệnh sao chép. Hãy sá»­ dụng bàn phím cho lệnh này (Ctrl/Cmd+C).',pasteMsg:'Hãy dán ná»™i dung vào trong khung bên dưới, sá»­ dụng tổ hợp phím (<STRONG>Ctrl/Cmd+V</STRONG>) và nhấn vào nút <STRONG>Äồng ý</STRONG>.',securityMsg:'Do thiết lập bảo mật cá»§a trình duyệt nên trình biên tập không thể truy cập trá»±c tiếp vào ná»™i dung đã sao chép. Bạn cần phải dán lại ná»™i dung vào cá»­a sổ này.',pasteArea:'Khu vá»±c dán'},pastefromword:{confirmCleanup:'Văn bản bạn muốn dán có kèm định dạng cá»§a Word. Bạn có muốn loại bỠđịnh dạng Word trước khi dán?',toolbar:'Dán vá»›i định dạng Word',title:'Dán vá»›i định dạng Word',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'Dán theo định dạng văn bản thuần',title:'Dán theo định dạng văn bản thuần'},templates:{button:'Mẫu dá»±ng sẵn',title:'Ná»™i dung Mẫu dá»±ng sẵn',options:'Tùy chá»n mẫu dá»±ng sẵn',insertOption:'Thay thế ná»™i dung hiện tại',selectPromptMsg:'Hãy chá»n mẫu dá»±ng sẵn để mở trong trình biên tập<br>(ná»™i dung hiện tại sẽ bị mất):',emptyListMsg:'(Không có mẫu dá»±ng sẵn nào được định nghÄ©a)'},showBlocks:'Hiển thị các khối',stylesCombo:{label:'Kiểu',panelTitle:'Phong cách định dạng',panelTitle1:'Kiểu khối',panelTitle2:'Kiểu trá»±c tiếp',panelTitle3:'Kiểu đối tượng'},format:{label:'Äịnh dạng',panelTitle:'Äịnh dạng',tag_p:'Bình thưá»ng (P)',tag_pre:'Äã thiết lập',tag_address:'Address',tag_h1:'Heading 1',tag_h2:'Heading 2',tag_h3:'Heading 3',tag_h4:'Heading 4',tag_h5:'Heading 5',tag_h6:'Heading 6',tag_div:'Bình thưá»ng (DIV)'},div:{title:'Tạo khối các thành phần',toolbar:'Tạo khối các thành phần',cssClassInputLabel:'Các lá»›p CSS',styleSelectLabel:'Kiểu (style)',IdInputLabel:'Äịnh danh (id)',languageCodeInputLabel:'Mã ngôn ngữ',inlineStyleInputLabel:'Kiểu ná»™i dòng',advisoryTitleInputLabel:'Nhan đỠhướng dẫn',langDirLabel:'Hướng ngôn ngữ',langDirLTRLabel:'Trái sang phải (LTR)',langDirRTLLabel:'Phải qua trái (RTL)',edit:'Chỉnh sá»­a',remove:'Xóa bá»'},font:{label:'Phông',voiceLabel:'Phông',panelTitle:'Phông'},fontSize:{label:'Cỡ chữ',voiceLabel:'Kích cỡ phông',panelTitle:'Cỡ chữ'},colorButton:{textColorTitle:'Màu chữ',bgColorTitle:'Màu ná»n',panelTitle:'Màu sắc',auto:'Tá»± động',more:'Màu khác...'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)',opera_title:'Không há»— trợ trên trình duyệt Opera',enable:'Bật SCAYT',disable:'Tắt SCAYT',about:'Thông tin vá» SCAYT',toggle:'Bật tắt SCAYT',options:'Tùy chá»n',langs:'Ngôn ngữ',moreSuggestions:'Äá» xuất thêm',ignore:'Bá» qua',ignoreAll:'Bá» qua tất cả',addWord:'Thêm từ',emptyDic:'Tên cá»§a từ Ä‘iển không được để trống.',optionsTab:'Tùy chá»n',allCaps:'Không phân biệt chữ HOA chữ thưá»ng',ignoreDomainNames:'Bá» qua tên miá»n',mixedCase:'Không phân biệt loại chữ',mixedWithDigits:'Không phân biệt chữ và số',languagesTab:'Tab ngôn ngữ',dictionariesTab:'Từ Ä‘iển',dic_field_name:'Tên từ Ä‘iển',dic_create:'Tạo',dic_restore:'Phục hồi',dic_delete:'Xóa',dic_rename:'Thay tên',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'Thông tin'},about:{title:'Thông tin vá» CKEditor',dlgTitle:'Thông tin vá» CKEditor',moreInfo:'Vui lòng ghé thăm trang web cá»§a chúng tôi để có thông tin vá» giấy phép:',copy:'Bản quyá»n &copy; $1. Giữ toàn quyá»n.'},maximize:'Phóng to tối Ä‘a',minimize:'Thu nhá»',fakeobjects:{anchor:'Äiểm neo',flash:'Flash',div:'Ngắt trang',unknown:'Äối tượng không rõ ràng'},resize:'Kéo rê để thay đổi kích cỡ',colordialog:{title:'Chá»n màu',options:'Color Options',highlight:'Màu chá»n',selected:'Màu đã chá»n',clear:'Xóa bá»'},toolbarCollapse:'Thu gá»n thanh công cụ',toolbarExpand:'Mở rá»™ng thnah công cụ',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js
new file mode 100644
index 000000000..4a6e6b7ab
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang['zh-cn']={dir:'ltr',editorTitle:'所è§å³æ‰€å¾—编辑器, %1, 按 ALT+0 查看帮助。',toolbar:'工具æ ',editor:'所è§å³æ‰€å¾—编辑器',source:'æºç ',newPage:'新建',save:'ä¿å­˜',preview:'预览',cut:'剪切',copy:'å¤åˆ¶',paste:'粘贴',print:'打å°',underline:'下划线',bold:'加粗',italic:'倾斜',selectAll:'全选',removeFormat:'清除格å¼',strike:'删除线',subscript:'下标',superscript:'上标',horizontalrule:'æ’入水平线',pagebreak:'æ’入分页符',unlink:'å–æ¶ˆè¶…链接',undo:'撤消',redo:'é‡åš',common:{browseServer:'æµè§ˆæœåС噍',url:'æºæ–‡ä»¶',protocol:'åè®®',upload:'上传',uploadSubmit:'上传到æœåŠ¡å™¨ä¸Š',image:'图象',flash:'Flash',form:'表å•',checkbox:'å¤é€‰æ¡†',radio:'å•选按钮',textField:'å•行文本',textarea:'多行文本',hiddenField:'éšè—域',button:'按钮',select:'列表/èœå•',imageButton:'图åƒåŸŸ',notSet:'<没有设置>',id:'ID',name:'åç§°',langDir:'语言方å‘',langDirLtr:'ä»Žå·¦åˆ°å³ (LTR)',langDirRtl:'从å³åˆ°å·¦ (RTL)',langCode:'语言代ç ',longDescr:'详细说明地å€',cssClass:'æ ·å¼ç±»åç§°',advisoryTitle:'标题',cssStyle:'行内样å¼',ok:'确定',cancel:'å–æ¶ˆ',close:'关闭',preview:'预览',generalTab:'常规',advancedTab:'高级',validateNumberFailed:'需è¦è¾“入数字格å¼',confirmNewPage:'当剿–‡æ¡£å†…容未ä¿å­˜,是å¦ç¡®è®¤æ–°å»ºæ–‡æ¡£ï¼Ÿ',confirmCancel:'部分修改尚未ä¿å­˜ï¼Œæ˜¯å¦ç¡®è®¤å…³é—­å¯¹è¯æ¡†ï¼Ÿ',options:'选项',target:'目标窗å£',targetNew:'æ–°çª—å£ (_blank)',targetTop:'整页 (_top)',targetSelf:'æœ¬çª—å£ (_self)',targetParent:'çˆ¶çª—å£ (_parent)',langDirLTR:'ä»Žå·¦åˆ°å³ (LTR)',langDirRTL:'从å³åˆ°å·¦ (RTL)',styles:'æ ·å¼',cssClasses:'æ ·å¼ç±»',unavailable:'%1<span class="cke_accessibility">, ä¸å¯ç”¨</span>'},contextmenu:{options:'å¿«æ·èœå•选项'},specialChar:{toolbar:'æ’入特殊符å·',title:'选择特殊符å·',options:'特殊符å·é€‰é¡¹'},link:{toolbar:'æ’å…¥/编辑超链接',other:'<å…¶ä»–>',menu:'编辑超链接',title:'超链接',info:'超链接信æ¯',target:'目标',upload:'上传',advanced:'高级',type:'超链接类型',toUrl:'地å€',toAnchor:'页内锚点链接',toEmail:'电å­é‚®ä»¶',targetFrame:'<框架>',targetPopup:'<弹出窗å£>',targetFrameName:'目标框架åç§°',targetPopupName:'弹出窗å£åç§°',popupFeatures:'弹出窗å£å±žæ€§',popupResizable:'å¯ç¼©æ”¾',popupStatusBar:'çŠ¶æ€æ ',popupLocationBar:'åœ°å€æ ',popupToolbar:'工具æ ',popupMenuBar:'èœå•æ ',popupFullScreen:'å…¨å± (IE)',popupScrollBars:'滚动æ¡',popupDependent:'ä¾é™„ (NS)',popupWidth:'宽',popupLeft:'å·¦',popupHeight:'高',popupTop:'å³',id:'ID',langDir:'语言方å‘',langDirLTR:'ä»Žå·¦åˆ°å³ (LTR)',langDirRTL:'从å³åˆ°å·¦ (RTL)',acccessKey:'访问键',name:'åç§°',langCode:'语言代ç ',tabIndex:'Tab 键次åº',advisoryTitle:'标题',advisoryContentType:'内容类型',cssClasses:'æ ·å¼ç±»åç§°',charset:'字符编ç ',styles:'行内样å¼',selectAnchor:'选择一个锚点',anchorName:'按锚点åç§°',anchorId:'按锚点 ID',emailAddress:'地å€',emailSubject:'主题',emailBody:'内容',noAnchors:'(此文档没有å¯ç”¨çš„锚点)',noUrl:'请输入超链接地å€',noEmail:'请输入电å­é‚®ä»¶åœ°å€'},anchor:{toolbar:'æ’å…¥/编辑锚点链接',menu:'锚点链接属性',title:'锚点链接属性',name:'锚点åç§°',errorName:'请输入锚点åç§°'},list:{numberedTitle:'ç¼–å·åˆ—表属性',bulletedTitle:'项目列表属性',type:'标记类型',start:'开始åºå·',validateStartNumber:'列表开始åºå·å¿…须为整数格å¼',circle:'空心圆',disc:'实心圆',square:'实心方å—',none:'无标记',notset:'<没有设置>',armenian:'ä¼ ç»Ÿçš„äºšç¾Žå°¼äºšç¼–å·æ–¹å¼',georgian:'ä¼ ç»Ÿçš„ä¹”æ²»äºšç¼–å·æ–¹å¼(an, ban, gan, ç­‰)',lowerRoman:'å°å†™ç½—马数字(i, ii, iii, iv, v, ç­‰)',upperRoman:'大写罗马数字(I, II, III, IV, V, ç­‰)',lowerAlpha:'å°å†™è‹±æ–‡å­—æ¯(a, b, c, d, e, ç­‰)',upperAlpha:'大写英文字æ¯(A, B, C, D, E, ç­‰)',lowerGreek:'å°å†™å¸Œè…Šå­—æ¯(alpha, beta, gamma, ç­‰)',decimal:'æ•°å­— (1, 2, 3, ç­‰)',decimalLeadingZero:'0开头的数字标记(01, 02, 03, ç­‰)'},findAndReplace:{title:'查找和替æ¢',find:'查找',replace:'替æ¢',findWhat:'查找:',replaceWith:'替æ¢:',notFoundMsg:'指定文本没有找到',matchCase:'区分大å°å†™',matchWord:'全字匹é…',matchCyclic:'循环匹é…',replaceAll:'全部替æ¢',replaceSuccessMsg:'å…±å®Œæˆ %1 处替æ¢.'},table:{toolbar:'表格',title:'表格属性',menu:'表格属性',deleteTable:'删除表格',rows:'行数',columns:'列数',border:'边框',align:'对é½',alignLeft:'左对é½',alignCenter:'居中',alignRight:'å³å¯¹é½',width:'宽度',widthPx:'åƒç´ ',widthPc:'百分比',widthUnit:'宽度å•ä½',height:'高度',cellSpace:'é—´è·',cellPad:'è¾¹è·',caption:'标题',summary:'摘è¦',headers:'标题å•元格',headersNone:'æ— ',headersColumn:'第一列',headersRow:'第一行',headersBoth:'第一列和第一行',invalidRows:'指定的列数必须大于零',invalidCols:'指定的行数必须大于零',invalidBorder:'边框粗细必须为数字格å¼',invalidWidth:'表格宽度必须为数字格å¼',invalidHeight:'表格高度必须为数字格å¼',invalidCellSpacing:'å•元格间è·å¿…须为数字格å¼',invalidCellPadding:'å•元格填充必须为数字格å¼',cell:{menu:'å•元格',insertBefore:'在左侧æ’å…¥å•元格',insertAfter:'在å³ä¾§æ’å…¥å•元格',deleteCell:'删除å•元格',merge:'åˆå¹¶å•元格',mergeRight:'å‘å³åˆå¹¶å•元格',mergeDown:'å‘下åˆå¹¶å•元格',splitHorizontal:'水平拆分å•元格',splitVertical:'垂直拆分å•元格',title:'å•元格属性',cellType:'å•元格类型',rowSpan:'纵跨行数',colSpan:'横跨列数',wordWrap:'自动æ¢è¡Œ',hAlign:'水平对é½',vAlign:'垂直对é½',alignTop:'顶端',alignMiddle:'中间',alignBottom:'底部',alignBaseline:'基线',bgColor:'背景颜色',borderColor:'边框颜色',data:'æ•°æ®',header:'表头',yes:'是',no:'å¦',invalidWidth:'å•元格宽度必须为数字格å¼',invalidHeight:'å•元格高度必须为数字格å¼',invalidRowSpan:'行跨度必须为整数格å¼',invalidColSpan:'列跨度必须为整数格å¼',chooseColor:'选择'},row:{menu:'行',insertBefore:'在上方æ’入行',insertAfter:'在下方æ’入行',deleteRow:'删除行'},column:{menu:'列',insertBefore:'在左侧æ’入列',insertAfter:'在å³ä¾§æ’入列',deleteColumn:'删除列'}},button:{title:'按钮属性',text:'标签(值)',type:'类型',typeBtn:'按钮',typeSbm:'æäº¤',typeRst:'é‡è®¾'},checkboxAndRadio:{checkboxTitle:'å¤é€‰æ¡†å±žæ€§',radioTitle:'å•选按钮属性',value:'选定值',selected:'已勾选'},form:{title:'表å•属性',menu:'表å•属性',action:'动作',method:'方法',encoding:'表å•ç¼–ç '},select:{title:'èœå•/列表属性',selectInfo:'选择信æ¯',opAvail:'å¯é€‰é¡¹',value:'值',size:'高度',lines:'行',chkMulti:'å…许多选',opText:'选项文本',opValue:'选项值',btnAdd:'添加',btnModify:'修改',btnUp:'上移',btnDown:'下移',btnSetValue:'设为åˆå§‹é€‰å®š',btnDelete:'删除'},textarea:{title:'多行文本属性',cols:'字符宽度',rows:'行数'},textfield:{title:'å•行文本属性',name:'åç§°',value:'åˆå§‹å€¼',charWidth:'字符宽度',maxChars:'最多字符数',type:'类型',typeText:'文本',typePass:'密ç '},hidden:{title:'éšè—域属性',name:'åç§°',value:'åˆå§‹å€¼'},image:{title:'图象属性',titleButton:'图åƒåŸŸå±žæ€§',menu:'图象属性',infoTab:'图象',btnUpload:'上传到æœåŠ¡å™¨ä¸Š',upload:'上传',alt:'æ›¿æ¢æ–‡æœ¬',width:'宽度',height:'高度',lockRatio:'é”定比例',unlockRatio:'ä¸é”定比例',resetSize:'原始尺寸',border:'边框大å°',hSpace:'水平间è·',vSpace:'垂直间è·',align:'坹齿–¹å¼',alignLeft:'左对é½',alignRight:'å³å¯¹é½',alertUrl:'请输入图象地å€',linkTab:'链接',button2Img:'ç¡®å®šè¦æŠŠå½“å‰æŒ‰é’®æ”¹å˜ä¸ºå›¾åƒå—?',img2Button:'ç¡®å®šè¦æŠŠå½“å‰å›¾åƒæ”¹å˜ä¸ºæŒ‰é’®å—?',urlMissing:'ç¼ºå°‘å›¾åƒæºæ–‡ä»¶åœ°å€',validateWidth:'图åƒå®½åº¦å¿…须为整数格å¼',validateHeight:'图åƒé«˜åº¦å¿…须为整数格å¼',validateBorder:'边框大å°å¿…须为整数格å¼',validateHSpace:'水平间è·å¿…须为整数格å¼',validateVSpace:'垂直间è·å¿…须为整数格å¼'},flash:{properties:'Flash 属性',propertiesTab:'属性',title:'标题',chkPlay:'自动播放',chkLoop:'循环',chkMenu:'å¯ç”¨ Flash èœå•',chkFull:'å¯ç”¨å…¨å±',scale:'缩放',scaleAll:'全部显示',scaleNoBorder:'无边框',scaleFit:'严格匹é…',access:'å…许脚本访问',accessAlways:'总是',accessSameDomain:'åŒåŸŸ',accessNever:'从ä¸',align:'坹齿–¹å¼',alignLeft:'左对é½',alignAbsBottom:'ç»å¯¹åº•部',alignAbsMiddle:'ç»å¯¹å±…中',alignBaseline:'基线',alignBottom:'底部',alignMiddle:'居中',alignRight:'å³å¯¹é½',alignTextTop:'文本上方',alignTop:'顶端',quality:'è´¨é‡',qualityBest:'最好',qualityHigh:'高',qualityAutoHigh:'高(自动)',qualityMedium:'中(自动)',qualityAutoLow:'低(自动)',qualityLow:'低',windowModeWindow:'窗体',windowModeOpaque:'ä¸é€æ˜Ž',windowModeTransparent:'逿˜Ž',windowMode:'窗体模å¼',flashvars:'Flash å˜é‡',bgcolor:'背景颜色',width:'宽度',height:'高度',hSpace:'水平间è·',vSpace:'垂直间è·',validateSrc:'è¯·è¾“å…¥æºæ–‡ä»¶åœ°å€',validateWidth:'宽度必须为数字格å¼',validateHeight:'高度必须为数字格å¼',validateHSpace:'水平间è·å¿…须为数字格å¼',validateVSpace:'垂直间è·å¿…须为数字格å¼'},spellCheck:{toolbar:'拼写检查',title:'拼写检查',notAvailable:'抱歉, æœåŠ¡ç›®å‰æš‚ä¸å¯ç”¨',errorLoading:'加载应该æœåŠ¡ä¸»æœºæ—¶å‡ºé”™: %s.',notInDic:'没有在字典里',changeTo:'更改为',btnIgnore:'忽略',btnIgnoreAll:'全部忽略',btnReplace:'替æ¢',btnReplaceAll:'全部替æ¢',btnUndo:'撤消',noSuggestions:'- 没有建议 -',progress:'正在进行拼写检查...',noMispell:'拼写检查完æˆ: 没有å‘现拼写错误',noChanges:'拼写检查完æˆ: 没有更改任何å•è¯',oneChange:'拼写检查完æˆ: 更改了一个å•è¯',manyChanges:'拼写检查完æˆ: 更改了 %1 个å•è¯',ieSpellDownload:'拼写检查æ’件还没安装, ä½ æ˜¯å¦æƒ³çŽ°åœ¨å°±ä¸‹è½½?'},smiley:{toolbar:'表情符',title:'æ’入表情图标',options:'表情图标选项'},elementsPath:{eleLabel:'元素路径',eleTitle:'%1 元素'},numberedlist:'ç¼–å·åˆ—表',bulletedlist:'项目列表',indent:'增加缩进é‡',outdent:'å‡å°‘缩进é‡',justify:{left:'左对é½',center:'居中',right:'å³å¯¹é½',block:'两端对é½'},blockquote:'å—引用',clipboard:{title:'粘贴',cutError:'您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行剪切æ“作, 请使用键盘快æ·é”®(Ctrl/Cmd+X)æ¥å®Œæˆ',copyError:'您的æµè§ˆå™¨å®‰å…¨è®¾ç½®ä¸å…许编辑器自动执行å¤åˆ¶æ“作, 请使用键盘快æ·é”®(Ctrl/Cmd+C)æ¥å®Œæˆ',pasteMsg:'请使用键盘快æ·é”®(<STRONG>Ctrl/Cmd+V</STRONG>)把内容粘贴到下é¢çš„æ–¹æ¡†é‡Œï¼Œå†æŒ‰ <STRONG>确定</STRONG>',securityMsg:'因为你的æµè§ˆå™¨çš„安全设置原因, 本编辑器ä¸èƒ½ç›´æŽ¥è®¿é—®ä½ çš„剪贴æ¿å†…容, 你需è¦åœ¨æœ¬çª—å£é‡æ–°ç²˜è´´ä¸€æ¬¡',pasteArea:'粘贴区域'},pastefromword:{confirmCleanup:'您è¦ç²˜è´´çš„å†…å®¹å¥½åƒæ˜¯æ¥è‡ª MS Word, 是å¦è¦æ¸…除 MS Word æ ¼å¼åŽå†ç²˜è´´?',toolbar:'从 MS Word 粘贴',title:'从 MS Word 粘贴',error:'由于内部错误无法清ç†è¦ç²˜è´´çš„æ•°æ®'},pasteText:{button:'ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬',title:'ç²˜è´´ä¸ºæ— æ ¼å¼æ–‡æœ¬'},templates:{button:'模æ¿',title:'内容模æ¿',options:'模æ¿é€‰é¡¹',insertOption:'替æ¢å½“å‰å†…容',selectPromptMsg:'请选择编辑器内容模æ¿:',emptyListMsg:'(没有模æ¿)'},showBlocks:'显示区å—',stylesCombo:{label:'æ ·å¼',panelTitle:'æ ·å¼',panelTitle1:'å—级元素样å¼',panelTitle2:'内è”元素样å¼',panelTitle3:'对象元素样å¼'},format:{label:'æ ¼å¼',panelTitle:'æ ¼å¼',tag_p:'普通',tag_pre:'已编排格å¼',tag_address:'地å€',tag_h1:'标题 1',tag_h2:'标题 2',tag_h3:'标题 3',tag_h4:'标题 4',tag_h5:'标题 5',tag_h6:'标题 6',tag_div:'段è½(DIV)'},div:{title:'创建 DIV 容器',toolbar:'创建 DIV 容器',cssClassInputLabel:'æ ·å¼ç±»åç§°',styleSelectLabel:'æ ·å¼',IdInputLabel:'ID',languageCodeInputLabel:'语言代ç ',inlineStyleInputLabel:'行内样å¼',advisoryTitleInputLabel:'标题',langDirLabel:'语言方å‘',langDirLTRLabel:'ä»Žå·¦åˆ°å³ (LTR)',langDirRTLLabel:'从å³åˆ°å·¦ (RTL)',edit:'编辑 DIV',remove:'移除 DIV'},font:{label:'字体',voiceLabel:'字体',panelTitle:'字体'},fontSize:{label:'大å°',voiceLabel:'文字大å°',panelTitle:'大å°'},colorButton:{textColorTitle:'文本颜色',bgColorTitle:'背景颜色',panelTitle:'颜色',auto:'自动',more:'其它颜色...'},colors:{'000':'黑',800000:'è¤çº¢','8B4513':'æ·±è¤','2F4F4F':'墨绿','008080':'绿æ¾çŸ³','000080':'海军è“','4B0082':'é›è“',696969:'æš—ç°',B22222:'砖红',A52A2A:'è¤',DAA520:'金黄','006400':'深绿','40E0D0':'è“绿','0000CD':'中è“',800080:'ç´«',808080:'ç°',F00:'红',FF8C00:'深橙',FFD700:'金','008000':'绿','0FF':'é’','00F':'è“',EE82EE:'ç´«ç½—å…°',A9A9A9:'æ·±ç°',FFA07A:'亮橙',FFA500:'æ©™',FFFF00:'黄','00FF00':'水绿',AFEEEE:'粉è“',ADD8E6:'亮è“',DDA0DD:'梅红',D3D3D3:'æ·¡ç°',FFF0F5:'淡紫红',FAEBD7:'å¤è‘£ç™½',FFFFE0:'淡黄',F0FFF0:'蜜白',F0FFFF:'天è“',F0F8FF:'æ·¡è“',E6E6FA:'æ·¡ç´«',FFF:'白'},scayt:{title:'峿—¶æ‹¼å†™æ£€æŸ¥',opera_title:'䏿”¯æŒ Opera æµè§ˆå™¨',enable:'å¯ç”¨å³æ—¶æ‹¼å†™æ£€æŸ¥',disable:'ç¦ç”¨å³æ—¶æ‹¼å†™æ£€æŸ¥',about:'å…³äºŽå³æ—¶æ‹¼å†™æ£€æŸ¥',toggle:'æš‚åœ/å¯ç”¨å³æ—¶æ‹¼å†™æ£€æŸ¥',options:'选项',langs:'语言',moreSuggestions:'更多拼写建议',ignore:'忽略',ignoreAll:'全部忽略',addWord:'添加å•è¯',emptyDic:'å­—å…¸åä¸åº”为空.',optionsTab:'选项',allCaps:'忽略所有大写å•è¯',ignoreDomainNames:'忽略域å',mixedCase:'忽略大å°å†™æ··åˆçš„å•è¯',mixedWithDigits:'忽略带数字的å•è¯',languagesTab:'语言',dictionariesTab:'å­—å…¸',dic_field_name:'å­—å…¸åç§°',dic_create:'创建',dic_restore:'还原',dic_delete:'删除',dic_rename:'é‡å‘½å',dic_info:'一开始用户è¯å…¸å‚¨å­˜åœ¨ Cookie 中, 但是 Cookies çš„å®¹é‡æ˜¯æœ‰é™çš„, 当用户è¯å…¸å¢žé•¿åˆ°è¶…出 Cookie é™åˆ¶æ—¶å°±æ— æ³•å†å‚¨å­˜äº†, 这时您å¯ä»¥å°†è¯å…¸å‚¨å­˜åˆ°æˆ‘们的æœåŠ¡å™¨ä¸Š. è¦æŠŠæ‚¨çš„ä¸ªäººè¯å…¸åˆ°å‚¨å­˜åˆ°æˆ‘们的æœåŠ¡å™¨ä¸Šçš„è¯, 需è¦ä¸ºæ‚¨çš„è¯å…¸æŒ‡å®šä¸€ä¸ªåç§°, 如果您在我们的æœåŠ¡å™¨ä¸Šå·²ç»æœ‰å‚¨å­˜æœ‰ä¸€ä¸ªè¯å…¸, 请输入è¯å…¸å称并按还原按钮.',aboutTab:'关于'},about:{title:'关于CKEditor',dlgTitle:'关于CKEditor',moreInfo:'è®¿é—®æˆ‘ä»¬çš„ç½‘ç«™ä»¥èŽ·å–æ›´å¤šå…³äºŽå议的信æ¯',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'å…¨å±',minimize:'最å°åŒ–',fakeobjects:{anchor:'锚点',flash:'Flash 动画',div:'分页',unknown:'未知对象'},resize:'拖拽以改å˜å°ºå¯¸',colordialog:{title:'选择颜色',options:'颜色选项',highlight:'高亮',selected:'选择颜色',clear:'清除'},toolbarCollapse:'折å å·¥å…·æ ',toolbarExpand:'展开工具æ ',bidi:{ltr:'文字方å‘为从左至å³',rtl:'文字方å‘为从å³è‡³å·¦'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/lang/zh.js b/rt/share/html/NoAuth/RichText/ckeditor/lang/zh.js
new file mode 100644
index 000000000..1cf8a3cd9
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/lang/zh.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.lang.zh={dir:'ltr',editorTitle:'Rich text editor, %1, press ALT 0 for help.',toolbar:'Toolbar',editor:'Rich Text Editor',source:'原始碼',newPage:'開新檔案',save:'儲存',preview:'é è¦½',cut:'剪下',copy:'複製',paste:'貼上',print:'列å°',underline:'底線',bold:'ç²—é«”',italic:'斜體',selectAll:'å…¨é¸',removeFormat:'清除格å¼',strike:'刪除線',subscript:'下標',superscript:'上標',horizontalrule:'æ’入水平線',pagebreak:'æ’入分é ç¬¦è™Ÿ',unlink:'移除超連çµ',undo:'復原',redo:'é‡è¤‡',common:{browseServer:'ç€è¦½ä¼ºæœå™¨ç«¯',url:'URL',protocol:'通訊å”定',upload:'上傳',uploadSubmit:'上傳至伺æœå™¨',image:'å½±åƒ',flash:'Flash',form:'表單',checkbox:'æ ¸å–æ–¹å¡Š',radio:'é¸é …按鈕',textField:'文字方塊',textarea:'文字å€åŸŸ',hiddenField:'éš±è—æ¬„ä½',button:'按鈕',select:'清單/é¸å–®',imageButton:'å½±åƒæŒ‰éˆ•',notSet:'<尚未設定>',id:'ID',name:'å稱',langDir:'語言方å‘',langDirLtr:'ç”±å·¦è€Œå³ (LTR)',langDirRtl:'ç”±å³è€Œå·¦ (RTL)',langCode:'語言代碼',longDescr:'詳細 URL',cssClass:'樣å¼è¡¨é¡žåˆ¥',advisoryTitle:'標題',cssStyle:'樣å¼',ok:'確定',cancel:'å–æ¶ˆ',close:'Close',preview:'Preview',generalTab:'一般',advancedTab:'進階',validateNumberFailed:'需è¦è¼¸å…¥æ•¸å­—æ ¼å¼',confirmNewPage:'ç¾å­˜çš„修改尚未儲存,è¦é–‹æ–°æª”案?',confirmCancel:'部份é¸é …尚未儲存,è¦é—œé–‰å°è©±ç›’?',options:'Options',target:'Target',targetNew:'New Window (_blank)',targetTop:'Topmost Window (_top)',targetSelf:'Same Window (_self)',targetParent:'Parent Window (_parent)',langDirLTR:'Left to Right (LTR)',langDirRTL:'Right to Left (RTL)',styles:'Style',cssClasses:'Stylesheet Classes',unavailable:'%1<span class="cke_accessibility">, 已關閉</span>'},contextmenu:{options:'Context Menu Options'},specialChar:{toolbar:'æ’入特殊符號',title:'è«‹é¸æ“‡ç‰¹æ®Šç¬¦è™Ÿ',options:'Special Character Options'},link:{toolbar:'æ’å…¥/編輯超連çµ',other:'<å…¶ä»–>',menu:'編輯超連çµ',title:'超連çµ',info:'超連çµè³‡è¨Š',target:'目標',upload:'上傳',advanced:'進階',type:'超連接類型',toUrl:'URL',toAnchor:'本é éŒ¨é»ž',toEmail:'é›»å­éƒµä»¶',targetFrame:'<框架>',targetPopup:'<快顯視窗>',targetFrameName:'目標框架å稱',targetPopupName:'快顯視窗å稱',popupFeatures:'快顯視窗屬性',popupResizable:'å¯ç¸®æ”¾',popupStatusBar:'狀態列',popupLocationBar:'ç¶²å€åˆ—',popupToolbar:'工具列',popupMenuBar:'é¸å–®åˆ—',popupFullScreen:'全螢幕 (IE)',popupScrollBars:'æ²è»¸',popupDependent:'從屬 (NS)',popupWidth:'寬',popupLeft:'å·¦',popupHeight:'高',popupTop:'å³',id:'ID',langDir:'語言方å‘',langDirLTR:'ç”±å·¦è€Œå³ (LTR)',langDirRTL:'ç”±å³è€Œå·¦ (RTL)',acccessKey:'å­˜å–éµ',name:'å稱',langCode:'語言方å‘',tabIndex:'定ä½é †åº',advisoryTitle:'標題',advisoryContentType:'內容類型',cssClasses:'樣å¼è¡¨é¡žåˆ¥',charset:'連çµè³‡æºä¹‹ç·¨ç¢¼',styles:'樣å¼',selectAnchor:'è«‹é¸æ“‡éŒ¨é»ž',anchorName:'ä¾éŒ¨é»žå稱',anchorId:'ä¾å…ƒä»¶ ID',emailAddress:'é›»å­éƒµä»¶',emailSubject:'郵件主旨',emailBody:'郵件內容',noAnchors:'(本文件尚無å¯ç”¨ä¹‹éŒ¨é»ž)',noUrl:'請輸入欲連çµçš„ URL',noEmail:'請輸入電å­éƒµä»¶ä½å€'},anchor:{toolbar:'æ’å…¥/編輯錨點',menu:'錨點屬性',title:'錨點屬性',name:'錨點å稱',errorName:'請輸入錨點å稱'},list:{numberedTitle:'Numbered List Properties',bulletedTitle:'Bulleted List Properties',type:'Type',start:'Start',validateStartNumber:'List start number must be a whole number.',circle:'Circle',disc:'Disc',square:'Square',none:'None',notset:'<not set>',armenian:'Armenian numbering',georgian:'Georgian numbering (an, ban, gan, etc.)',lowerRoman:'Lower Roman (i, ii, iii, iv, v, etc.)',upperRoman:'Upper Roman (I, II, III, IV, V, etc.)',lowerAlpha:'Lower Alpha (a, b, c, d, e, etc.)',upperAlpha:'Upper Alpha (A, B, C, D, E, etc.)',lowerGreek:'Lower Greek (alpha, beta, gamma, etc.)',decimal:'Decimal (1, 2, 3, etc.)',decimalLeadingZero:'Decimal leading zero (01, 02, 03, etc.)'},findAndReplace:{title:'尋找與å–代',find:'尋找',replace:'å–代',findWhat:'尋找:',replaceWith:'å–代:',notFoundMsg:'未找到指定的文字。',matchCase:'大å°å¯«é ˆç›¸ç¬¦',matchWord:'全字相符',matchCyclic:'循環æœç´¢',replaceAll:'全部å–代',replaceSuccessMsg:'å…±å®Œæˆ %1 次å–代'},table:{toolbar:'表格',title:'表格屬性',menu:'表格屬性',deleteTable:'刪除表格',rows:'列數',columns:'欄數',border:'邊框',align:'å°é½Š',alignLeft:'é å·¦å°é½Š',alignCenter:'置中',alignRight:'é å³å°é½Š',width:'寬度',widthPx:'åƒç´ ',widthPc:'百分比',widthUnit:'width unit',height:'高度',cellSpace:'é–“è·',cellPad:'å…§è·',caption:'標題',summary:'摘è¦',headers:'標題',headersNone:'無標題',headersColumn:'第一欄',headersRow:'第一列',headersBoth:'第一欄和第一列',invalidRows:'必須有一或更多的列',invalidCols:'必須有一或更多的欄',invalidBorder:'邊框大å°å¿…須為數字格å¼',invalidWidth:'表格寬度必須為數字格å¼',invalidHeight:'表格高度必須為數字格å¼',invalidCellSpacing:'儲存格間è·å¿…須為數字格å¼',invalidCellPadding:'儲存格內è·å¿…須為數字格å¼',cell:{menu:'儲存格',insertBefore:'å‘å·¦æ’入儲存格',insertAfter:'å‘峿’入儲存格',deleteCell:'刪除儲存格',merge:'åˆä½µå„²å­˜æ ¼',mergeRight:'å‘å³åˆä½µå„²å­˜æ ¼',mergeDown:'å‘下åˆä½µå„²å­˜æ ¼',splitHorizontal:'æ©«å‘分割儲存格',splitVertical:'縱å‘分割儲存格',title:'儲存格屬性',cellType:'儲存格類別',rowSpan:'儲存格列數',colSpan:'儲存格欄數',wordWrap:'自動æ›è¡Œ',hAlign:'æ°´å¹³å°é½Š',vAlign:'垂直å°é½Š',alignTop:'å‘上å°é½Š',alignMiddle:'置中å°é½Š',alignBottom:'å‘下å°é½Š',alignBaseline:'基線å°é½Š',bgColor:'背景é¡è‰²',borderColor:'邊框é¡è‰²',data:'數據',header:'標題',yes:'是',no:'å¦',invalidWidth:'儲存格寬度必須為數字格å¼',invalidHeight:'儲存格高度必須為數字格å¼',invalidRowSpan:'儲存格列數必須為整數格å¼',invalidColSpan:'儲存格欄數度必須為整數格å¼',chooseColor:'Choose'},row:{menu:'列',insertBefore:'å‘上æ’入列',insertAfter:'å‘下æ’入列',deleteRow:'刪除列'},column:{menu:'欄',insertBefore:'å‘å·¦æ’入欄',insertAfter:'å‘峿’入欄',deleteColumn:'刪除欄'}},button:{title:'按鈕屬性',text:'顯示文字 (值)',type:'類型',typeBtn:'按鈕 (Button)',typeSbm:'é€å‡º (Submit)',typeRst:'é‡è¨­ (Reset)'},checkboxAndRadio:{checkboxTitle:'æ ¸å–æ–¹å¡Šå±¬æ€§',radioTitle:'é¸é …按鈕屬性',value:'é¸å–值',selected:'å·²é¸å–'},form:{title:'表單屬性',menu:'表單屬性',action:'動作',method:'方法',encoding:'表單編碼'},select:{title:'清單/é¸å–®å±¬æ€§',selectInfo:'資訊',opAvail:'å¯ç”¨é¸é …',value:'值',size:'大å°',lines:'行',chkMulti:'å¯å¤šé¸',opText:'顯示文字',opValue:'é¸å–值',btnAdd:'新增',btnModify:'修改',btnUp:'上移',btnDown:'下移',btnSetValue:'設為é è¨­å€¼',btnDelete:'刪除'},textarea:{title:'文字å€åŸŸå±¬æ€§',cols:'字元寬度',rows:'列數'},textfield:{title:'文字方塊屬性',name:'å稱',value:'值',charWidth:'字元寬度',maxChars:'最多字元數',type:'類型',typeText:'文字',typePass:'密碼'},hidden:{title:'éš±è—æ¬„ä½å±¬æ€§',name:'å稱',value:'值'},image:{title:'å½±åƒå±¬æ€§',titleButton:'å½±åƒæŒ‰éˆ•屬性',menu:'å½±åƒå±¬æ€§',infoTab:'å½±åƒè³‡è¨Š',btnUpload:'上傳至伺æœå™¨',upload:'上傳',alt:'替代文字',width:'寬度',height:'高度',lockRatio:'等比例',unlockRatio:'Unlock Ratio',resetSize:'é‡è¨­ç‚ºåŽŸå¤§å°',border:'邊框',hSpace:'æ°´å¹³è·é›¢',vSpace:'垂直è·é›¢',align:'å°é½Š',alignLeft:'é å·¦å°é½Š',alignRight:'é å³å°é½Š',alertUrl:'è«‹è¼¸å…¥å½±åƒ URL',linkTab:'超連çµ',button2Img:'è¦æŠŠå½±åƒæŒ‰éˆ•改æˆå½±åƒå—Žï¼Ÿ',img2Button:'è¦æŠŠå½±åƒæ”¹æˆå½±åƒæŒ‰éˆ•嗎?',urlMissing:'Image source URL is missing.',validateWidth:'Width must be a whole number.',validateHeight:'Height must be a whole number.',validateBorder:'Border must be a whole number.',validateHSpace:'HSpace must be a whole number.',validateVSpace:'VSpace must be a whole number.'},flash:{properties:'Flash 屬性',propertiesTab:'屬性',title:'Flash 屬性',chkPlay:'自動播放',chkLoop:'é‡è¤‡',chkMenu:'開啟é¸å–®',chkFull:'啟動全螢幕顯示',scale:'縮放',scaleAll:'全部顯示',scaleNoBorder:'無邊框',scaleFit:'精確符åˆ',access:'å…許腳本訪å•',accessAlways:'æ°¸é ',accessSameDomain:'相åŒåŸŸå',accessNever:'æ°¸ä¸',align:'å°é½Š',alignLeft:'é å·¦å°é½Š',alignAbsBottom:'絕å°ä¸‹æ–¹',alignAbsMiddle:'絕å°ä¸­é–“',alignBaseline:'基準線',alignBottom:'é ä¸‹å°é½Š',alignMiddle:'置中å°é½Š',alignRight:'é å³å°é½Š',alignTextTop:'文字上方',alignTop:'é ä¸Šå°é½Š',quality:'質素',qualityBest:'最好',qualityHigh:'高',qualityAutoHigh:'高(自動)',qualityMedium:'中(自動)',qualityAutoLow:'低(自動)',qualityLow:'低',windowModeWindow:'視窗',windowModeOpaque:'ä¸é€æ˜Ž',windowModeTransparent:'逿˜Ž',windowMode:'視窗模å¼',flashvars:'Flash 變數',bgcolor:'背景é¡è‰²',width:'寬度',height:'高度',hSpace:'æ°´å¹³è·é›¢',vSpace:'垂直è·é›¢',validateSrc:'請輸入欲連çµçš„ URL',validateWidth:'寬度必須為數字格å¼',validateHeight:'高度必須為數字格å¼',validateHSpace:'水平間è·å¿…須為數字格å¼',validateVSpace:'垂直間è·å¿…須為數字格å¼'},spellCheck:{toolbar:'拼字檢查',title:'拼字檢查',notAvailable:'抱歉,æœå‹™ç›®å‰æš«ä¸å¯ç”¨',errorLoading:'無法è¯ç³»ä¾æœå™¨: %s.',notInDic:'ä¸åœ¨å­—典中',changeTo:'更改為',btnIgnore:'忽略',btnIgnoreAll:'全部忽略',btnReplace:'å–代',btnReplaceAll:'全部å–代',btnUndo:'復原',noSuggestions:'- 無建議值 -',progress:'進行拼字檢查中…',noMispell:'拼字檢查完æˆï¼šæœªç™¼ç¾æ‹¼å­—錯誤',noChanges:'拼字檢查完æˆï¼šæœªæ›´æ”¹ä»»ä½•單字',oneChange:'拼字檢查完æˆï¼šæ›´æ”¹äº† 1 個單字',manyChanges:'拼字檢查完æˆï¼šæ›´æ”¹äº† %1 個單字',ieSpellDownload:'å°šæœªå®‰è£æ‹¼å­—æª¢æŸ¥å…ƒä»¶ã€‚æ‚¨æ˜¯å¦æƒ³è¦ç¾åœ¨ä¸‹è¼‰ï¼Ÿ'},smiley:{toolbar:'表情符號',title:'æ’入表情符號',options:'Smiley Options'},elementsPath:{eleLabel:'Elements path',eleTitle:'%1 元素'},numberedlist:'編號清單',bulletedlist:'項目清單',indent:'增加縮排',outdent:'減少縮排',justify:{left:'é å·¦å°é½Š',center:'置中',right:'é å³å°é½Š',block:'å·¦å³å°é½Š'},blockquote:'引用文字',clipboard:{title:'貼上',cutError:'ç€è¦½å™¨çš„安全性設定ä¸å…許編輯器自動執行剪下動作。請使用快æ·éµ (Ctrl/Cmd+X) 剪下。',copyError:'ç€è¦½å™¨çš„安全性設定ä¸å…許編輯器自動執行複製動作。請使用快æ·éµ (Ctrl/Cmd+C) 複製。',pasteMsg:'請使用快æ·éµ (<strong>Ctrl/Cmd+V</strong>) 貼到下方å€åŸŸä¸­ä¸¦æŒ‰ä¸‹ <strong>確定</strong>',securityMsg:'因為ç€è¦½å™¨çš„å®‰å…¨æ€§è¨­å®šï¼Œæœ¬ç·¨è¼¯å™¨ç„¡æ³•ç›´æŽ¥å­˜å–æ‚¨çš„剪貼簿資料,請您自行在本視窗進行貼上動作。',pasteArea:'Paste Area'},pastefromword:{confirmCleanup:'您想貼上的文字似乎是自 Word è¤‡è£½è€Œä¾†ï¼Œè«‹å•æ‚¨æ˜¯å¦è¦å…ˆæ¸…除 Word 的格å¼å¾Œå†è¡Œè²¼ä¸Šï¼Ÿ',toolbar:'自 Word 貼上',title:'自 Word 貼上',error:'It was not possible to clean up the pasted data due to an internal error'},pasteText:{button:'貼為純文字格å¼',title:'貼為純文字格å¼'},templates:{button:'樣版',title:'內容樣版',options:'Template Options',insertOption:'å–代原有內容',selectPromptMsg:'è«‹é¸æ“‡æ¬²é–‹å•Ÿçš„æ¨£ç‰ˆ<br> (原有的內容將會被清除):',emptyListMsg:'(無樣版)'},showBlocks:'顯示å€å¡Š',stylesCombo:{label:'樣å¼',panelTitle:'Formatting Styles',panelTitle1:'塊級元素樣å¼',panelTitle2:'å…§è¯å…ƒç´ æ¨£å¼',panelTitle3:'物件元素樣å¼'},format:{label:'æ ¼å¼',panelTitle:'æ ¼å¼',tag_p:'一般',tag_pre:'已格å¼åŒ–',tag_address:'ä½å€',tag_h1:'標題 1',tag_h2:'標題 2',tag_h3:'標題 3',tag_h4:'標題 4',tag_h5:'標題 5',tag_h6:'標題 6',tag_div:'一般 (DIV)'},div:{title:'Create Div Container',toolbar:'Create Div Container',cssClassInputLabel:'Stylesheet Classes',styleSelectLabel:'Style',IdInputLabel:'Id',languageCodeInputLabel:' Language Code',inlineStyleInputLabel:'Inline Style',advisoryTitleInputLabel:'Advisory Title',langDirLabel:'Language Direction',langDirLTRLabel:'Left to Right (LTR)',langDirRTLLabel:'Right to Left (RTL)',edit:'Edit Div',remove:'Remove Div'},font:{label:'å­—é«”',voiceLabel:'å­—é«”',panelTitle:'å­—é«”'},fontSize:{label:'大å°',voiceLabel:'文字大å°',panelTitle:'大å°'},colorButton:{textColorTitle:'文字é¡è‰²',bgColorTitle:'背景é¡è‰²',panelTitle:'Colors',auto:'自動',more:'更多é¡è‰²â€¦'},colors:{'000':'Black',800000:'Maroon','8B4513':'Saddle Brown','2F4F4F':'Dark Slate Gray','008080':'Teal','000080':'Navy','4B0082':'Indigo',696969:'Dark Gray',B22222:'Fire Brick',A52A2A:'Brown',DAA520:'Golden Rod','006400':'Dark Green','40E0D0':'Turquoise','0000CD':'Medium Blue',800080:'Purple',808080:'Gray',F00:'Red',FF8C00:'Dark Orange',FFD700:'Gold','008000':'Green','0FF':'Cyan','00F':'Blue',EE82EE:'Violet',A9A9A9:'Dim Gray',FFA07A:'Light Salmon',FFA500:'Orange',FFFF00:'Yellow','00FF00':'Lime',AFEEEE:'Pale Turquoise',ADD8E6:'Light Blue',DDA0DD:'Plum',D3D3D3:'Light Grey',FFF0F5:'Lavender Blush',FAEBD7:'Antique White',FFFFE0:'Light Yellow',F0FFF0:'Honeydew',F0FFFF:'Azure',F0F8FF:'Alice Blue',E6E6FA:'Lavender',FFF:'White'},scayt:{title:'峿™‚拼寫檢查',opera_title:'Not supported by Opera',enable:'å•Ÿç”¨å³æ™‚拼寫檢查',disable:'é—œé–‰å³æ™‚拼寫檢查',about:'é—œæ–¼å³æ™‚拼寫檢查',toggle:'啟用ï¼é—œé–‰å³æ™‚拼寫檢查',options:'é¸é …',langs:'語言',moreSuggestions:'更多拼寫建議',ignore:'忽略',ignoreAll:'全部忽略',addWord:'添加單詞',emptyDic:'å­—å…¸å䏿‡‰ç‚ºç©º.',optionsTab:'é¸é …',allCaps:'Ignore All-Caps Words',ignoreDomainNames:'Ignore Domain Names',mixedCase:'Ignore Words with Mixed Case',mixedWithDigits:'Ignore Words with Numbers',languagesTab:'語言',dictionariesTab:'å­—å…¸',dic_field_name:'Dictionary name',dic_create:'Create',dic_restore:'Restore',dic_delete:'Delete',dic_rename:'Rename',dic_info:'Initially the User Dictionary is stored in a Cookie. However, Cookies are limited in size. When the User Dictionary grows to a point where it cannot be stored in a Cookie, then the dictionary may be stored on our server. To store your personal dictionary on our server you should specify a name for your dictionary. If you already have a stored dictionary, please type its name and click the Restore button.',aboutTab:'關於'},about:{title:'關於 CKEditor',dlgTitle:'關於 CKEditor',moreInfo:'è¨ªå•æˆ‘們的網站以ç²å–更多關於å”議的信æ¯',copy:'Copyright &copy; $1. All rights reserved.'},maximize:'最大化',minimize:'Minimize',fakeobjects:{anchor:'錨點',flash:'Flash å‹•ç•«',div:'分é ',unknown:'䏿˜Žç‰©ä»¶'},resize:'拖拽改變大å°',colordialog:{title:'Select color',options:'Color Options',highlight:'Highlight',selected:'Selected Color',clear:'Clear'},toolbarCollapse:'Collapse Toolbar',toolbarExpand:'Expand Toolbar',bidi:{ltr:'Text direction from left to right',rtl:'Text direction from right to left'}};
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
new file mode 100644
index 000000000..ef5329b40
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('a11yHelp',function(a){var b=a.lang.accessibilityHelp,c=CKEDITOR.tools.getNextNumber(),d={8:'BACKSPACE',9:'TAB',13:'ENTER',16:'SHIFT',17:'CTRL',18:'ALT',19:'PAUSE',20:'CAPSLOCK',27:'ESCAPE',33:'PAGE UP',34:'PAGE DOWN',35:'END',36:'HOME',37:'LEFT ARROW',38:'UP ARROW',39:'RIGHT ARROW',40:'DOWN ARROW',45:'INSERT',46:'DELETE',91:'LEFT WINDOW KEY',92:'RIGHT WINDOW KEY',93:'SELECT KEY',96:'NUMPAD 0',97:'NUMPAD 1',98:'NUMPAD 2',99:'NUMPAD 3',100:'NUMPAD 4',101:'NUMPAD 5',102:'NUMPAD 6',103:'NUMPAD 7',104:'NUMPAD 8',105:'NUMPAD 9',106:'MULTIPLY',107:'ADD',109:'SUBTRACT',110:'DECIMAL POINT',111:'DIVIDE',112:'F1',113:'F2',114:'F3',115:'F4',116:'F5',117:'F6',118:'F7',119:'F8',120:'F9',121:'F10',122:'F11',123:'F12',144:'NUM LOCK',145:'SCROLL LOCK',186:'SEMI-COLON',187:'EQUAL SIGN',188:'COMMA',189:'DASH',190:'PERIOD',191:'FORWARD SLASH',192:'GRAVE ACCENT',219:'OPEN BRACKET',220:'BACK SLASH',221:'CLOSE BRAKET',222:'SINGLE QUOTE'};d[CKEDITOR.ALT]='ALT';d[CKEDITOR.SHIFT]='SHIFT';d[CKEDITOR.CTRL]='CTRL';var e=[CKEDITOR.ALT,CKEDITOR.SHIFT,CKEDITOR.CTRL];function f(j){var k,l,m=[];for(var n=0;n<e.length;n++){l=e[n];k=j/e[n];if(k>1&&k<=2){j-=l;m.push(d[l]);}}m.push(d[j]||String.fromCharCode(j));return m.join('+');};var g=/\$\{(.*?)\}/g;function h(j,k){var l=a.config.keystrokes,m,n=l.length;for(var o=0;o<n;o++){m=l[o];if(m[1]==k)break;}return f(m[0]);};function i(){var j='<div class="cke_accessibility_legend" role="document" aria-labelledby="cke_'+c+'_arialbl" tabIndex="-1">%1</div>'+'<span id="cke_'+c+'_arialbl" class="cke_voice_label">'+b.contents+' </span>',k='<h1>%1</h1><dl>%2</dl>',l='<dt>%1</dt><dd>%2</dd>',m=[],n=b.legend,o=n.length;for(var p=0;p<o;p++){var q=n[p],r=[],s=q.items,t=s.length;for(var u=0;u<t;u++){var v=s[u],w;w=l.replace('%1',v.name).replace('%2',v.legend.replace(g,h));r.push(w);}m.push(k.replace('%1',q.name).replace('%2',r.join('')));}return j.replace('%1',m.join(''));};return{title:b.title,minWidth:600,minHeight:400,contents:[{id:'info',label:a.lang.common.generalTab,expand:true,elements:[{type:'html',id:'legends',focus:function(){},html:i()+'<style type="text/css">'+'.cke_accessibility_legend'+'{'+'width:600px;'+'height:400px;'+'padding-right:5px;'+'overflow-y:auto;'+'overflow-x:hidden;'+'}'+'.cke_accessibility_legend h1'+'{'+'font-size: 20px;'+'border-bottom: 1px solid #AAA;'+'margin: 5px 0px 15px;'+'}'+'.cke_accessibility_legend dl'+'{'+'margin-left: 5px;'+'}'+'.cke_accessibility_legend dt'+'{'+'font-size: 13px;'+'font-weight: bold;'+'}'+'.cke_accessibility_legend dd'+'{'+'white-space:normal;'+'margin:10px'+'}'+'</style>'}]}],buttons:[CKEDITOR.dialog.cancelButton]};
+});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js
new file mode 100644
index 000000000..bffdad417
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','en',{accessibilityHelp:{title:'Accessibility Instructions',contents:'Help Contents. To close this dialog press ESC.',legend:[{name:'General',items:[{name:'Editor Toolbar',legend:'Press ${toolbarFocus} to navigate to the toolbar. Move to next toolbar button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.'},{name:'Editor Dialog',legend:'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'},{name:'Editor Context Menu',legend:'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option wtih SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.'},{name:'Editor List Box',legend:'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'Editor Element Path Bar',legend:'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'}]},{name:'Commands',items:[{name:' Undo command',legend:'Press ${undo}'},{name:' Redo command',legend:'Press ${redo}'},{name:' Bold command',legend:'Press ${bold}'},{name:' Italic command',legend:'Press ${italic}'},{name:' Underline command',legend:'Press ${underline}'},{name:' Link command',legend:'Press ${link}'},{name:' Toolbar Collapse command',legend:'Press ${toolbarCollapse}'},{name:' Accessibility Help',legend:'Press ${a11yHelp}'}]}]}});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js
new file mode 100644
index 000000000..e77cb8f91
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('a11yhelp','he',{accessibilityHelp:{title:'הור×ות נגישות',contents:'הור×ות נגישות. לסגירה לחץ ×סקייפ (ESC).',legend:[{name:'כללי',items:[{name:'סרגל הכלי×',legend:'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלי×. עבור לכפתור ×”×‘× ×¢× ×ž×§×© הט×ב (TAB) ×ו ×—×¥ שמ×לי. עבור לכפתור ×”×§×•×“× ×¢× ×ž×§×© השיפט (SHIFT) + ט×ב (TAB) ×ו ×—×¥ ימני. לחץ רווח ×ו ×נטר (ENTER) כדי להפעיל ×ת הכפתור הנבחר.'},{name:'די××œ×•×’×™× (חלונות תש×ול)',legend:'בתוך די×לוג, לחץ ט×ב (TAB) כדי לנווט לשדה הב×, לחץ שיפט (SHIFT) + ט×ב (TAB) כדי לנווט לשדה הקוד×, לחץ ×נטר (ENTER) כדי לשלוח ×ת הדי×לוג, לחץ ×סקייפ (ESC) כדי לבטל. בתוך די××œ×•×’×™× ×‘×¢×œ×™ מספר ט××‘×™× (לשוניות), לחץ ×לט (ALT) + F10 כדי לנווט לשורת הט×בי×. נווט לט×ב ×”×‘× ×¢× ×˜×ב (TAB) ×ו ×—×¥ שמ×לי. עבור לט×ב ×”×§×•×“× ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) ×ו ×—×¥ שמ×לי. לחץ רווח ×ו ×נטר (ENTER) כדי להיכנס לט×ב.'},{name:'תפריט ההקשר (Context Menu)',legend:'לחץ ${contextMenu} ×ו APPLICATION KEYכדי לפתוח ×ת תפריט ההקשר. עבור ל×פשרות הב××” ×¢× ×˜×ב (TAB) ×ו ×—×¥ למטה. עבור ל×פשרות הקודמת ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) ×ו ×—×¥ למעלה. לחץ רווח ×ו ×נטר (ENTER) כדי לבחור ×ת ×”×פשרות. פתח ×ת תת התפריט (Sub-menu) של ×”×פשרות הנוכחית ×¢× ×¨×•×•×— ×ו ×נטר (ENTER) ×ו ×—×¥ שמ×לי. חזור לתפריט ×”×ב ×¢× ×סקייפ (ESC) ×ו ×—×¥ שמ×לי. סגור ×ת תפריט ההקשר ×¢× ×סקייפ (ESC).'},{name:'×ª×¤×¨×™×˜×™× ×¦×¤×™× (List boxes)',legend:'בתוך תפריט צף, עבור לפריט ×”×‘× ×¢× ×˜×ב (TAB) ×ו ×—×¥ למטה. עבור לתפריט ×”×§×•×“× ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) or ×—×¥ עליון. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'×¢×¥ ××œ×ž× ×˜×™× (Elements Path)',legend:'לחץ ${elementsPathFocus} כדי לנווט לעץ ×”×למנטי×. עבור לפריט ×”×‘× ×¢× ×˜×ב (TAB) ×ו ×—×¥ ימני. עבור לפריט ×”×§×•×“× ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) ×ו ×—×¥ שמ×לי. לחץ רווח ×ו ×נטר (ENTER) כדי לבחור ×ת ×”×למנט בעורך.'}]},{name:'פקודות',items:[{name:' ביטול צעד ×חרון',legend:'לחץ ${undo}'},{name:' חזרה על צעד ×חרון',legend:'לחץ ${redo}'},{name:' הדגשה',legend:'לחץ ${bold}'},{name:' הטייה',legend:'לחץ ${italic}'},{name:' הוספת קו תחתון',legend:'לחץ ${underline}'},{name:' הוספת לינק',legend:'לחץ ${link}'},{name:' כיווץ סרגל הכלי×',legend:'לחץ ${toolbarCollapse}'},{name:' הור×ות נגישות',legend:'לחץ ${a11yHelp}'}]}]}});CKEDITOR.plugins.setLang('a11yhelp','he',{accessibilityHelp:{title:'הור×ות נגישות',contents:'הור×ות נגישות. לסגירה לחץ ×סקייפ (ESC).',legend:[{name:'כללי',items:[{name:'סרגל הכלי×',legend:'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלי×. עבור לכפתור ×”×‘× ×¢× ×ž×§×© הט×ב (TAB) ×ו ×—×¥ שמ×לי. עבור לכפתור ×”×§×•×“× ×¢× ×ž×§×© השיפט (SHIFT) + ט×ב (TAB) ×ו ×—×¥ ימני. לחץ רווח ×ו ×נטר (ENTER) כדי להפעיל ×ת הכפתור הנבחר.'},{name:'די××œ×•×’×™× (חלונות תש×ול)',legend:'בתוך די×לוג, לחץ ט×ב (TAB) כדי לנווט לשדה הב×, לחץ שיפט (SHIFT) + ט×ב (TAB) כדי לנווט לשדה הקוד×, לחץ ×נטר (ENTER) כדי לשלוח ×ת הדי×לוג, לחץ ×סקייפ (ESC) כדי לבטל. בתוך די××œ×•×’×™× ×‘×¢×œ×™ מספר ט××‘×™× (לשוניות), לחץ ×לט (ALT) + F10 כדי לנווט לשורת הט×בי×. נווט לט×ב ×”×‘× ×¢× ×˜×ב (TAB) ×ו ×—×¥ שמ×לי. עבור לט×ב ×”×§×•×“× ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) ×ו ×—×¥ שמ×לי. לחץ רווח ×ו ×נטר (ENTER) כדי להיכנס לט×ב.'},{name:'תפריט ההקשר (Context Menu)',legend:'לחץ ${contextMenu} ×ו APPLICATION KEYכדי לפתוח ×ת תפריט ההקשר. עבור ל×פשרות הב××” ×¢× ×˜×ב (TAB) ×ו ×—×¥ למטה. עבור ל×פשרות הקודמת ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) ×ו ×—×¥ למעלה. לחץ רווח ×ו ×נטר (ENTER) כדי לבחור ×ת ×”×פשרות. פתח ×ת תת התפריט (Sub-menu) של ×”×פשרות הנוכחית ×¢× ×¨×•×•×— ×ו ×נטר (ENTER) ×ו ×—×¥ שמ×לי. חזור לתפריט ×”×ב ×¢× ×סקייפ (ESC) ×ו ×—×¥ שמ×לי. סגור ×ת תפריט ההקשר ×¢× ×סקייפ (ESC).'},{name:'×ª×¤×¨×™×˜×™× ×¦×¤×™× (List boxes)',legend:'בתוך תפריט צף, עבור לפריט ×”×‘× ×¢× ×˜×ב (TAB) ×ו ×—×¥ למטה. עבור לתפריט ×”×§×•×“× ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) or ×—×¥ עליון. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'},{name:'×¢×¥ ××œ×ž× ×˜×™× (Elements Path)',legend:'לחץ ${elementsPathFocus} כדי לנווט לעץ ×”×למנטי×. עבור לפריט ×”×‘× ×¢× ×˜×ב (TAB) ×ו ×—×¥ ימני. עבור לפריט ×”×§×•×“× ×¢× ×©×™×¤×˜ (SHIFT) + ט×ב (TAB) ×ו ×—×¥ שמ×לי. לחץ רווח ×ו ×נטר (ENTER) כדי לבחור ×ת ×”×למנט בעורך.'}]},{name:'פקודות',items:[{name:' ביטול צעד ×חרון',legend:'לחץ ${undo}'},{name:' חזרה על צעד ×חרון',legend:'לחץ ${redo}'},{name:' הדגשה',legend:'לחץ ${bold}'},{name:' הטייה',legend:'לחץ ${italic}'},{name:' הוספת קו תחתון',legend:'לחץ ${underline}'},{name:' הוספת לינק',legend:'לחץ ${link}'},{name:' כיווץ סרגל הכלי×',legend:'לחץ ${toolbarCollapse}'},{name:' הור×ות נגישות',legend:'לחץ ${a11yHelp}'}]}]}});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js
new file mode 100644
index 000000000..8065ba403
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('about',function(a){var b=a.lang.about;return{title:CKEDITOR.env.ie?b.dlgTitle:b.title,minWidth:390,minHeight:230,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[{type:'html',html:'<style type="text/css">.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+CKEDITOR.plugins.get('about').path+'dialogs/logo_ckeditor.png);'+'background-position:center; '+'background-repeat:no-repeat;'+'margin-bottom:10px;'+'}'+'.cke_about_container a'+'{'+'cursor:pointer !important;'+'color:blue !important;'+'text-decoration:underline !important;'+'}'+'</style>'+'<div class="cke_about_container">'+'<div class="cke_about_logo"></div>'+'<p>'+'CKEditor '+CKEDITOR.version+' (revision '+CKEDITOR.revision+')<br>'+'<a href="http://ckeditor.com/">http://ckeditor.com</a>'+'</p>'+'<p>'+b.moreInfo+'<br>'+'<a href="http://ckeditor.com/license">http://ckeditor.com/license</a>'+'</p>'+'<p>'+b.copy.replace('$1','<a href="http://cksource.com/">CKSource</a> - Frederico Knabben')+'</p>'+'</div>'}]}],buttons:[CKEDITOR.dialog.cancelButton]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js
new file mode 100644
index 000000000..a399376a4
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=function(b){var c=b.document,d=b.window.getViewPaneSize().height,e;if(CKEDITOR.env.ie)e=c.getBody().$.scrollHeight+24;else e=c.getDocumentElement().$.offsetHeight;var f=b.config.autoGrow_minHeight,g=b.config.autoGrow_maxHeight;f==undefined&&(b.config.autoGrow_minHeight=f=200);if(f)e=Math.max(e,f);if(g)e=Math.min(e,g);if(e!=d){e=b.fire('autoGrow',{currentHeight:d,newHeight:e}).newHeight;b.resize(b.container.getStyle('width'),e,true);}};CKEDITOR.plugins.add('autogrow',{init:function(b){for(var c in {contentDom:1,key:1,selectionChange:1,insertElement:1})b.on(c,function(d){if(d.editor.mode=='wysiwyg')setTimeout(function(){a(d.editor);},100);});}});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js
new file mode 100644
index 000000000..22b7975ee
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('paste',function(a){var b=a.lang.clipboard,c=CKEDITOR.env.isCustomDomain();function d(e){var f=new CKEDITOR.dom.document(e.document),g=f.$;f.getById('cke_actscrpt').remove();CKEDITOR.env.ie?g.body.contentEditable='true':g.designMode='on';if(CKEDITOR.env.ie&&CKEDITOR.env.version<8)f.getWindow().on('blur',function(){g.selection.empty();});f.on('keydown',function(h){var i=h.data,j=i.getKeystroke(),k;switch(j){case 27:this.hide();k=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(true);k=1;}k&&i.preventDefault();},this);a.fire('ariaWidget',new CKEDITOR.dom.element(e.frameElement));};return{title:b.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;var e='<html dir="'+a.config.contentsLangDirection+'"'+' lang="'+(a.config.contentsLanguage||a.langCode)+'">'+'<head><style>body { margin: 3px; height: 95%; } </style></head><body>'+'<script id="cke_actscrpt" type="text/javascript">'+'window.parent.CKEDITOR.tools.callFunction( '+CKEDITOR.tools.addFunction(d,this)+', this );'+'</script></body>'+'</html>',f=CKEDITOR.dom.element.createFromHtml('<iframe class="cke_pasteframe" frameborder="0" allowTransparency="true"'+(c?" src=\"javascript:void((function(){document.open();document.domain='"+document.domain+"';"+'document.close();'+'})())"':'')+' role="region"'+' aria-label="'+b.pasteArea+'"'+' aria-describedby="'+this.getContentElement('general','pasteMsg').domId+'"'+' aria-multiple="true"'+'></iframe>');f.on('load',function(j){j.removeListener();var k=f.getFrameDocument().$;k.open();if(c)k.domain=document.domain;k.write(e);k.close();},this);f.setCustomData('dialog',this);var g=this.getContentElement('general','editing_area'),h=g.getElement();h.setHtml('');h.append(f);if(CKEDITOR.env.ie){var i=CKEDITOR.dom.element.createFromHtml('<span tabindex="-1" style="position:absolute;" role="presentation"></span>');i.on('focus',function(){f.$.contentWindow.focus();});h.append(i);g.focus=function(){i.focus();this.fire('focus');};}g.getInputElement=function(){return f;};if(CKEDITOR.env.ie){h.setStyle('display','block');h.setStyle('height',f.$.offsetHeight+2+'px');}},onHide:function(){if(CKEDITOR.env.ie)this.getParentEditor().document.getBody().$.contentEditable='true';},onLoad:function(){if((CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&a.lang.dir=='rtl')this.parts.contents.setStyle('overflow','hidden');},onOk:function(){var e=this.getContentElement('general','editing_area').getElement(),f=e.getElementsByTag('iframe').getItem(0),g=this.getParentEditor(),h=f.$.contentWindow.document.body.innerHTML;
+setTimeout(function(){g.fire('paste',{html:h});},0);},contents:[{id:'general',label:a.lang.common.generalTab,elements:[{type:'html',id:'securityMsg',html:'<div style="white-space:normal;width:340px;">'+b.securityMsg+'</div>'},{type:'html',id:'pasteMsg',html:'<div style="white-space:normal;width:340px;">'+b.pasteMsg+'</div>'},{type:'html',id:'editing_area',style:'width: 100%; height: 100%;',html:'',focus:function(){var e=this.getInputElement().$.contentWindow;setTimeout(function(){e.focus();},500);}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js
new file mode 100644
index 000000000..7c6cf8b9a
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('colordialog',function(a){var b=CKEDITOR.dom.element,c=CKEDITOR.document,d=CKEDITOR.tools,e=a.lang.colordialog,f;function g(){return{type:'html',html:'&nbsp;'};};function h(){c.getById(w).removeStyle('background-color');f.getContentElement('picker','selectedColor').setValue('');};function i(y){if(!(y instanceof CKEDITOR.dom.event))y=new CKEDITOR.dom.event(y);var z=y.getTarget(),A;if(z.getName()=='a'&&(A=z.getChild(0).getHtml()))f.getContentElement('picker','selectedColor').setValue(A);};function j(y){if(!(y instanceof CKEDITOR.dom.event))y=y.data;var z=y.getTarget(),A;if(z.getName()=='a'&&(A=z.getChild(0).getHtml())){c.getById(u).setStyle('background-color',A);c.getById(v).setHtml(A);}};function k(){c.getById(u).removeStyle('background-color');c.getById(v).setHtml('&nbsp;');};var l=d.addFunction(k),m=i,n=CKEDITOR.tools.addFunction(m),o=j,p=k,q=CKEDITOR.tools.addFunction(function(y){y=new CKEDITOR.dom.event(y);var z=y.getTarget(),A,B,C=y.getKeystroke(),D=a.lang.dir=='rtl';switch(C){case 38:if(A=z.getParent().getParent().getPrevious()){B=A.getChild([z.getParent().getIndex(),0]);B.focus();p(y,z);o(y,B);}y.preventDefault();break;case 40:if(A=z.getParent().getParent().getNext()){B=A.getChild([z.getParent().getIndex(),0]);if(B&&B.type==1){B.focus();p(y,z);o(y,B);}}y.preventDefault();break;case 32:m(y);y.preventDefault();break;case D?37:39:if(A=z.getParent().getNext()){B=A.getChild(0);if(B.type==1){B.focus();p(y,z);o(y,B);y.preventDefault(true);}else p(null,z);}else if(A=z.getParent().getParent().getNext()){B=A.getChild([0,0]);if(B&&B.type==1){B.focus();p(y,z);o(y,B);y.preventDefault(true);}else p(null,z);}break;case D?39:37:if(A=z.getParent().getPrevious()){B=A.getChild(0);B.focus();p(y,z);o(y,B);y.preventDefault(true);}else if(A=z.getParent().getParent().getPrevious()){B=A.getLast().getChild(0);B.focus();p(y,z);o(y,B);y.preventDefault(true);}else p(null,z);break;default:return;}});function r(){var y=['00','33','66','99','cc','ff'];function z(E,F){for(var G=E;G<E+3;G++){var H=s.$.insertRow(-1);for(var I=F;I<F+3;I++)for(var J=0;J<6;J++)A(H,'#'+y[I]+y[J]+y[G]);}};function A(E,F){var G=new b(E.insertCell(-1));G.setAttribute('class','ColorCell');G.setStyle('background-color',F);G.setStyle('width','15px');G.setStyle('height','15px');var H=G.$.cellIndex+1+18*E.rowIndex;G.append(CKEDITOR.dom.element.createFromHtml('<a href="javascript: void(0);" role="option" aria-posinset="'+H+'"'+' aria-setsize="'+234+'"'+' style="cursor: pointer;display:block;width:100%;height:100% " title="'+CKEDITOR.tools.htmlEncode(F)+'"'+' onkeydown="CKEDITOR.tools.callFunction( '+q+', event, this )"'+' onclick="CKEDITOR.tools.callFunction('+n+', event, this ); return false;"'+' tabindex="-1"><span class="cke_voice_label">'+F+'</span>&nbsp;</a>',CKEDITOR.document));
+};z(0,0);z(3,0);z(0,3);z(3,3);var B=s.$.insertRow(-1);for(var C=0;C<6;C++)A(B,'#'+y[C]+y[C]+y[C]);for(var D=0;D<12;D++)A(B,'#000000');};var s=new b('table');r();var t=function(y){return CKEDITOR.tools.getNextId()+'_'+y;},u=t('hicolor'),v=t('hicolortext'),w=t('selhicolor'),x=t('color_table_label');return{title:e.title,minWidth:360,minHeight:220,onLoad:function(){f=this;},contents:[{id:'picker',label:e.title,accessKey:'I',elements:[{type:'hbox',padding:0,widths:['70%','10%','30%'],children:[{type:'html',html:'<table role="listbox" aria-labelledby="'+x+'" onmouseout="CKEDITOR.tools.callFunction( '+l+' );">'+s.getHtml()+'</table>'+'<span id="'+x+'" class="cke_voice_label">'+e.options+'</span>',onLoad:function(){var y=CKEDITOR.document.getById(this.domId);y.on('mouseover',j);},focus:function(){var y=this.getElement().getElementsByTag('a').getItem(0);y.focus();}},g(),{type:'vbox',padding:0,widths:['70%','5%','25%'],children:[{type:'html',html:'<span>'+e.highlight+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+u+'" style="border: 1px solid; height: 74px; width: 74px;"></div>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+v+'">&nbsp;</div><span>'+e.selected+'</span>\t\t\t\t\t\t\t\t\t\t\t\t<div id="'+w+'" style="border: 1px solid; height: 20px; width: 74px;"></div>'},{type:'text',label:e.selected,labelStyle:'display:none',id:'selectedColor',style:'width: 74px',onChange:function(){try{c.getById(w).setStyle('background-color',this.getValue());}catch(y){h();}}},g(),{type:'button',id:'clear',style:'margin-top: 5px',label:e.clear,onClick:h}]}]}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js
new file mode 100644
index 000000000..b07ba7875
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js
@@ -0,0 +1,4 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js
new file mode 100644
index 000000000..45dc22670
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(d,e,f){if(!e.is||!e.getCustomData('block_processed')){e.is&&CKEDITOR.dom.element.setMarker(f,e,'block_processed',true);d.push(e);}};function b(d){var e=[],f=d.getChildren();for(var g=0;g<f.count();g++){var h=f.getItem(g);if(!(h.type===CKEDITOR.NODE_TEXT&&/^[ \t\n\r]+$/.test(h.getText())))e.push(h);}return e;};function c(d,e){var f=(function(){var p=CKEDITOR.tools.extend({},CKEDITOR.dtd.$blockLimit);delete p.div;if(d.config.div_wrapTable){delete p.td;delete p.th;}return p;})(),g=CKEDITOR.dtd.div;function h(p){var q=new CKEDITOR.dom.elementPath(p).elements,r;for(var s=0;s<q.length;s++){if(q[s].getName() in f){r=q[s];break;}}return r;};function i(){this.foreach(function(p){if(/^(?!vbox|hbox)/.test(p.type)){if(!p.setup)p.setup=function(q){p.setValue(q.getAttribute(p.id)||'');};if(!p.commit)p.commit=function(q){var r=this.getValue();if('dir'==p.id&&q.getComputedStyle('direction')==r)return;if(r)q.setAttribute(p.id,r);else q.removeAttribute(p.id);};}});};function j(p){var q=[],r={},s=[],t,u=p.document.getSelection(),v=u.getRanges(),w=u.createBookmarks(),x,y,z=p.config.enterMode==CKEDITOR.ENTER_DIV?'div':'p';for(x=0;x<v.length;x++){y=v[x].createIterator();while(t=y.getNextParagraph()){if(t.getName() in f){var A,B=t.getChildren();for(A=0;A<B.count();A++)a(s,B.getItem(A),r);}else{while(!g[t.getName()]&&t.getName()!='body')t=t.getParent();a(s,t,r);}}}CKEDITOR.dom.element.clearAllMarkers(r);var C=l(s),D,E,F;for(x=0;x<C.length;x++){var G=C[x][0];D=G.getParent();for(A=1;A<C[x].length;A++)D=D.getCommonAncestor(C[x][A]);F=new CKEDITOR.dom.element('div',p.document);for(A=0;A<C[x].length;A++){G=C[x][A];while(!G.getParent().equals(D))G=G.getParent();C[x][A]=G;}var H=null;for(A=0;A<C[x].length;A++){G=C[x][A];if(!(G.getCustomData&&G.getCustomData('block_processed'))){G.is&&CKEDITOR.dom.element.setMarker(r,G,'block_processed',true);if(!A)F.insertBefore(G);F.append(G);}}CKEDITOR.dom.element.clearAllMarkers(r);q.push(F);}u.selectBookmarks(w);return q;};function k(p){var q=new CKEDITOR.dom.elementPath(p.getSelection().getStartElement()),r=q.blockLimit,s=r&&r.getAscendant('div',true);return s;};function l(p){var q=[],r=null,s,t;for(var u=0;u<p.length;u++){t=p[u];var v=h(t);if(!v.equals(r)){r=v;q.push([]);}q[q.length-1].push(t);}return q;};function m(p){var q=this.getDialog(),r=q._element&&q._element.clone()||new CKEDITOR.dom.element('div',d.document);this.commit(r,true);p=[].concat(p);var s=p.length,t;for(var u=0;u<s;u++){t=q.getContentElement.apply(q,p[u].split(':'));
+t&&t.setup&&t.setup(r,true);}};var n={},o=[];return{title:d.lang.div.title,minWidth:400,minHeight:165,contents:[{id:'info',label:d.lang.common.generalTab,title:d.lang.common.generalTab,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'elementStyle',type:'select',style:'width: 100%;',label:d.lang.div.styleSelectLabel,'default':'',items:[[d.lang.common.notSet,'']],onChange:function(){m.call(this,['info:class','advanced:dir','advanced:style']);},setup:function(p){for(var q in n)n[q].checkElementRemovable(p,true)&&this.setValue(q);},commit:function(p){var q;if(q=this.getValue()){var r=n[q],s=p.getCustomData('elementStyle')||'';r.applyToObject(p);p.setCustomData('elementStyle',s+r._.definition.attributes.style);}}},{id:'class',type:'text',label:d.lang.common.cssClass,'default':''}]}]},{id:'advanced',label:d.lang.common.advancedTab,title:d.lang.common.advancedTab,elements:[{type:'vbox',padding:1,children:[{type:'hbox',widths:['50%','50%'],children:[{type:'text',id:'id',label:d.lang.common.id,'default':''},{type:'text',id:'lang',label:d.lang.link.langCode,'default':''}]},{type:'hbox',children:[{type:'text',id:'style',style:'width: 100%;',label:d.lang.common.cssStyle,'default':'',commit:function(p){var q=this.getValue()+(p.getCustomData('elementStyle')||'');p.setAttribute('style',q);}}]},{type:'hbox',children:[{type:'text',id:'title',style:'width: 100%;',label:d.lang.common.advisoryTitle,'default':''}]},{type:'select',id:'dir',style:'width: 100%;',label:d.lang.common.langDir,'default':'',items:[[d.lang.common.notSet,''],[d.lang.common.langDirLtr,'ltr'],[d.lang.common.langDirRtl,'rtl']]}]}]}],onLoad:function(){i.call(this);var p=this,q=this.getContentElement('info','elementStyle');d.getStylesSet(function(r){var s;if(r)for(var t=0;t<r.length;t++){var u=r[t];if(u.element&&u.element=='div'){s=u.name;n[s]=new CKEDITOR.style(u);q.items.push([s,s]);q.add(s,s);}}q[q.items.length>1?'enable':'disable']();setTimeout(function(){q.setup(p._element);},0);});},onShow:function(){if(e=='editdiv'){var p=k(d);p&&this.setupContent(this._element=p);}},onOk:function(){if(e=='editdiv')o=[this._element];else o=j(d,true);var p=o.length;for(var q=0;q<p;q++){this.commitContent(o[q]);!o[q].getAttribute('style')&&o[q].removeAttribute('style');}this.hide();},onHide:function(){if(e=='editdiv')this._element.removeCustomData('elementStyle');delete this._element;}};};CKEDITOR.dialog.add('creatediv',function(d){return c(d,'creatediv');});CKEDITOR.dialog.add('editdiv',function(d){return c(d,'editdiv');
+});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js
new file mode 100644
index 000000000..ac4d573f9
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a;function b(i){return i.type==CKEDITOR.NODE_TEXT&&i.getLength()>0&&(!a||!i.isReadOnly());};function c(i){return!(i.type==CKEDITOR.NODE_ELEMENT&&i.isBlockBoundary(CKEDITOR.tools.extend({},CKEDITOR.dtd.$empty,CKEDITOR.dtd.$nonEditable)));};var d=function(){var i=this;return{textNode:i.textNode,offset:i.offset,character:i.textNode?i.textNode.getText().charAt(i.offset):null,hitMatchBoundary:i._.matchBoundary};},e=['find','replace'],f=[['txtFindFind','txtFindReplace'],['txtFindCaseChk','txtReplaceCaseChk'],['txtFindWordChk','txtReplaceWordChk'],['txtFindCyclic','txtReplaceCyclic']];function g(i){var j,k,l,m;j=i==='find'?1:0;k=1-j;var n,o=f.length;for(n=0;n<o;n++){l=this.getContentElement(e[j],f[n][j]);m=this.getContentElement(e[k],f[n][k]);m.setValue(l.getValue());}};var h=function(i,j){var k=new CKEDITOR.style(CKEDITOR.tools.extend({fullMatch:true,childRule:function(){return false;}},i.config.find_highlight)),l=function(x,y){var z=new CKEDITOR.dom.walker(x);z.guard=y?c:null;z.evaluator=b;z.breakOnFalse=true;this._={matchWord:y,walker:z,matchBoundary:false};};l.prototype={next:function(){return this.move();},back:function(){return this.move(true);},move:function(x){var z=this;var y=z.textNode;if(y===null)return d.call(z);z._.matchBoundary=false;if(y&&x&&z.offset>0){z.offset--;return d.call(z);}else if(y&&z.offset<y.getLength()-1){z.offset++;return d.call(z);}else{y=null;while(!y){y=z._.walker[x?'previous':'next'].call(z._.walker);if(z._.matchWord&&!y||z._.walker._.end)break;if(!y&&!c(z._.walker.current))z._.matchBoundary=true;}z.textNode=y;if(y)z.offset=x?y.getLength()-1:0;else z.offset=0;}return d.call(z);}};var m=function(x,y){this._={walker:x,cursors:[],rangeLength:y,highlightRange:null,isMatched:false};};m.prototype={toDomRange:function(){var x=new CKEDITOR.dom.range(i.document),y=this._.cursors;if(y.length<1){var z=this._.walker.textNode;if(z)x.setStartAfter(z);else return null;}else{var A=y[0],B=y[y.length-1];x.setStart(A.textNode,A.offset);x.setEnd(B.textNode,B.offset+1);}return x;},updateFromDomRange:function(x){var A=this;var y,z=new l(x);A._.cursors=[];do{y=z.next();if(y.character)A._.cursors.push(y);}while(y.character)A._.rangeLength=A._.cursors.length;},setMatched:function(){this._.isMatched=true;},clearMatched:function(){this._.isMatched=false;},isMatched:function(){return this._.isMatched;},highlight:function(){var A=this;if(A._.cursors.length<1)return;if(A._.highlightRange)A.removeHighlight();var x=A.toDomRange(),y=x.createBookmark();
+k.applyToRange(x);x.moveToBookmark(y);A._.highlightRange=x;var z=x.startContainer;if(z.type!=CKEDITOR.NODE_ELEMENT)z=z.getParent();z.scrollIntoView();A.updateFromDomRange(x);},removeHighlight:function(){var y=this;if(!y._.highlightRange)return;var x=y._.highlightRange.createBookmark();k.removeFromRange(y._.highlightRange);y._.highlightRange.moveToBookmark(x);y.updateFromDomRange(y._.highlightRange);y._.highlightRange=null;},isReadOnly:function(){if(!this._.highlightRange)return 0;return this._.highlightRange.startContainer.isReadOnly();},moveBack:function(){var z=this;var x=z._.walker.back(),y=z._.cursors;if(x.hitMatchBoundary)z._.cursors=y=[];y.unshift(x);if(y.length>z._.rangeLength)y.pop();return x;},moveNext:function(){var z=this;var x=z._.walker.next(),y=z._.cursors;if(x.hitMatchBoundary)z._.cursors=y=[];y.push(x);if(y.length>z._.rangeLength)y.shift();return x;},getEndCharacter:function(){var x=this._.cursors;if(x.length<1)return null;return x[x.length-1].character;},getNextCharacterRange:function(x){var y,z,A=this._.cursors;if((y=A[A.length-1])&&y.textNode)z=new l(n(y));else z=this._.walker;return new m(z,x);},getCursors:function(){return this._.cursors;}};function n(x,y){var z=new CKEDITOR.dom.range();z.setStart(x.textNode,y?x.offset:x.offset+1);z.setEndAt(i.document.getBody(),CKEDITOR.POSITION_BEFORE_END);return z;};function o(x){var y=new CKEDITOR.dom.range();y.setStartAt(i.document.getBody(),CKEDITOR.POSITION_AFTER_START);y.setEnd(x.textNode,x.offset);return y;};var p=0,q=1,r=2,s=function(x,y){var z=[-1];if(y)x=x.toLowerCase();for(var A=0;A<x.length;A++){z.push(z[A]+1);while(z[A+1]>0&&x.charAt(A)!=x.charAt(z[A+1]-1))z[A+1]=z[z[A+1]-1]+1;}this._={overlap:z,state:0,ignoreCase:!!y,pattern:x};};s.prototype={feedCharacter:function(x){var y=this;if(y._.ignoreCase)x=x.toLowerCase();for(;;){if(x==y._.pattern.charAt(y._.state)){y._.state++;if(y._.state==y._.pattern.length){y._.state=0;return r;}return q;}else if(!y._.state)return p;else y._.state=y._.overlap[y._.state];}return null;},reset:function(){this._.state=0;}};var t=/[.,"'?!;: \u0085\u00a0\u1680\u280e\u2028\u2029\u202f\u205f\u3000]/,u=function(x){if(!x)return true;var y=x.charCodeAt(0);return y>=9&&y<=13||y>=8192&&y<=8202||t.test(x);},v={searchRange:null,matchRange:null,find:function(x,y,z,A,B,C){var L=this;if(!L.matchRange)L.matchRange=new m(new l(L.searchRange),x.length);else{L.matchRange.removeHighlight();L.matchRange=L.matchRange.getNextCharacterRange(x.length);}var D=new s(x,!y),E=p,F='%';while(F!==null){L.matchRange.moveNext();
+while(F=L.matchRange.getEndCharacter()){E=D.feedCharacter(F);if(E==r)break;if(L.matchRange.moveNext().hitMatchBoundary)D.reset();}if(E==r){if(z){var G=L.matchRange.getCursors(),H=G[G.length-1],I=G[0],J=new l(o(I),true),K=new l(n(H),true);if(!(u(J.back().character)&&u(K.next().character)))continue;}L.matchRange.setMatched();if(B!==false)L.matchRange.highlight();return true;}}L.matchRange.clearMatched();L.matchRange.removeHighlight();if(A&&!C){L.searchRange=w(true);L.matchRange=null;return arguments.callee.apply(L,Array.prototype.slice.call(arguments).concat([true]));}return false;},replaceCounter:0,replace:function(x,y,z,A,B,C,D){var I=this;a=1;var E=false;if(I.matchRange&&I.matchRange.isMatched()&&!I.matchRange._.isReplaced&&!I.matchRange.isReadOnly()){I.matchRange.removeHighlight();var F=I.matchRange.toDomRange(),G=i.document.createText(z);if(!D){var H=i.getSelection();H.selectRanges([F]);i.fire('saveSnapshot');}F.deleteContents();F.insertNode(G);if(!D){H.selectRanges([F]);i.fire('saveSnapshot');}I.matchRange.updateFromDomRange(F);if(!D)I.matchRange.highlight();I.matchRange._.isReplaced=true;I.replaceCounter++;E=true;}else E=I.find(y,A,B,C,!D);a=0;return E;}};function w(x){var y,z=i.getSelection(),A=i.document.getBody();if(z&&!x){y=z.getRanges()[0].clone();y.collapse(true);}else{y=new CKEDITOR.dom.range();y.setStartAt(A,CKEDITOR.POSITION_AFTER_START);}y.setEndAt(A,CKEDITOR.POSITION_BEFORE_END);return y;};return{title:i.lang.findAndReplace.title,resizable:CKEDITOR.DIALOG_RESIZE_NONE,minWidth:350,minHeight:165,buttons:[CKEDITOR.dialog.cancelButton],contents:[{id:'find',label:i.lang.findAndReplace.find,title:i.lang.findAndReplace.find,accessKey:'',elements:[{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtFindFind',label:i.lang.findAndReplace.findWhat,isChanged:false,labelLayout:'horizontal',accessKey:'F'},{type:'button',align:'left',style:'width:100%',label:i.lang.findAndReplace.find,onClick:function(){var x=this.getDialog();if(!v.find(x.getValueOf('find','txtFindFind'),x.getValueOf('find','txtFindCaseChk'),x.getValueOf('find','txtFindWordChk'),x.getValueOf('find','txtFindCyclic')))alert(i.lang.findAndReplace.notFoundMsg);}}]},{type:'vbox',padding:0,children:[{type:'checkbox',id:'txtFindCaseChk',isChanged:false,style:'margin-top:28px',label:i.lang.findAndReplace.matchCase},{type:'checkbox',id:'txtFindWordChk',isChanged:false,label:i.lang.findAndReplace.matchWord},{type:'checkbox',id:'txtFindCyclic',isChanged:false,'default':true,label:i.lang.findAndReplace.matchCyclic}]}]},{id:'replace',label:i.lang.findAndReplace.replace,accessKey:'M',elements:[{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtFindReplace',label:i.lang.findAndReplace.findWhat,isChanged:false,labelLayout:'horizontal',accessKey:'F'},{type:'button',align:'left',style:'width:100%',label:i.lang.findAndReplace.replace,onClick:function(){var x=this.getDialog();
+if(!v.replace(x,x.getValueOf('replace','txtFindReplace'),x.getValueOf('replace','txtReplace'),x.getValueOf('replace','txtReplaceCaseChk'),x.getValueOf('replace','txtReplaceWordChk'),x.getValueOf('replace','txtReplaceCyclic')))alert(i.lang.findAndReplace.notFoundMsg);}}]},{type:'hbox',widths:['230px','90px'],children:[{type:'text',id:'txtReplace',label:i.lang.findAndReplace.replaceWith,isChanged:false,labelLayout:'horizontal',accessKey:'R'},{type:'button',align:'left',style:'width:100%',label:i.lang.findAndReplace.replaceAll,isChanged:false,onClick:function(){var x=this.getDialog(),y;v.replaceCounter=0;v.searchRange=w(true);if(v.matchRange){v.matchRange.removeHighlight();v.matchRange=null;}i.fire('saveSnapshot');while(v.replace(x,x.getValueOf('replace','txtFindReplace'),x.getValueOf('replace','txtReplace'),x.getValueOf('replace','txtReplaceCaseChk'),x.getValueOf('replace','txtReplaceWordChk'),false,true)){}if(v.replaceCounter){alert(i.lang.findAndReplace.replaceSuccessMsg.replace(/%1/,v.replaceCounter));i.fire('saveSnapshot');}else alert(i.lang.findAndReplace.notFoundMsg);}}]},{type:'vbox',padding:0,children:[{type:'checkbox',id:'txtReplaceCaseChk',isChanged:false,label:i.lang.findAndReplace.matchCase},{type:'checkbox',id:'txtReplaceWordChk',isChanged:false,label:i.lang.findAndReplace.matchWord},{type:'checkbox',id:'txtReplaceCyclic',isChanged:false,'default':true,label:i.lang.findAndReplace.matchCyclic}]}]}],onLoad:function(){var x=this,y,z,A=false;this.on('hide',function(){A=false;});this.on('show',function(){A=true;});this.selectPage=CKEDITOR.tools.override(this.selectPage,function(B){return function(C){B.call(x,C);var D=x._.tabs[C],E,F,G;F=C==='find'?'txtFindFind':'txtFindReplace';G=C==='find'?'txtFindWordChk':'txtReplaceWordChk';y=x.getContentElement(C,F);z=x.getContentElement(C,G);if(!D.initialized){E=CKEDITOR.document.getById(y._.inputId);D.initialized=true;}if(A)g.call(this,C);};});},onShow:function(){v.searchRange=w();this.selectPage(j);},onHide:function(){var x;if(v.matchRange&&v.matchRange.isMatched()){v.matchRange.removeHighlight();i.focus();x=v.matchRange.toDomRange();if(x)i.getSelection().selectRanges([x]);}delete v.matchRange;},onFocus:function(){if(j=='replace')return this.getContentElement('replace','txtFindReplace');else return this.getContentElement('find','txtFindFind');}};};CKEDITOR.dialog.add('find',function(i){return h(i,'find');});CKEDITOR.dialog.add('replace',function(i){return h(i,'replace');});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js
new file mode 100644
index 000000000..61b82889c
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=1,b=2,c=4,d={id:[{type:a,name:'id'}],classid:[{type:a,name:'classid'}],codebase:[{type:a,name:'codebase'}],pluginspage:[{type:c,name:'pluginspage'}],src:[{type:b,name:'movie'},{type:c,name:'src'}],name:[{type:c,name:'name'}],align:[{type:a,name:'align'}],title:[{type:a,name:'title'},{type:c,name:'title'}],'class':[{type:a,name:'class'},{type:c,name:'class'}],width:[{type:a,name:'width'},{type:c,name:'width'}],height:[{type:a,name:'height'},{type:c,name:'height'}],hSpace:[{type:a,name:'hSpace'},{type:c,name:'hSpace'}],vSpace:[{type:a,name:'vSpace'},{type:c,name:'vSpace'}],style:[{type:a,name:'style'},{type:c,name:'style'}],type:[{type:c,name:'type'}]},e=['play','loop','menu','quality','scale','salign','wmode','bgcolor','base','flashvars','allowScriptAccess','allowFullScreen'];for(var f=0;f<e.length;f++)d[e[f]]=[{type:c,name:e[f]},{type:b,name:e[f]}];e=['allowFullScreen','play','loop','menu'];for(f=0;f<e.length;f++)d[e[f]][0]['default']=d[e[f]][1]['default']=true;function g(i,j,k){var q=this;var l=d[q.id];if(!l)return;var m=q instanceof CKEDITOR.ui.dialog.checkbox;for(var n=0;n<l.length;n++){var o=l[n];switch(o.type){case a:if(!i)continue;if(i.getAttribute(o.name)!==null){var p=i.getAttribute(o.name);if(m)q.setValue(p.toLowerCase()=='true');else q.setValue(p);return;}else if(m)q.setValue(!!o['default']);break;case b:if(!i)continue;if(o.name in k){p=k[o.name];if(m)q.setValue(p.toLowerCase()=='true');else q.setValue(p);return;}else if(m)q.setValue(!!o['default']);break;case c:if(!j)continue;if(j.getAttribute(o.name)){p=j.getAttribute(o.name);if(m)q.setValue(p.toLowerCase()=='true');else q.setValue(p);return;}else if(m)q.setValue(!!o['default']);}}};function h(i,j,k){var s=this;var l=d[s.id];if(!l)return;var m=s.getValue()==='',n=s instanceof CKEDITOR.ui.dialog.checkbox;for(var o=0;o<l.length;o++){var p=l[o];switch(p.type){case a:if(!i)continue;var q=s.getValue();if(m||n&&q===p['default'])i.removeAttribute(p.name);else i.setAttribute(p.name,q);break;case b:if(!i)continue;q=s.getValue();if(m||n&&q===p['default']){if(p.name in k)k[p.name].remove();}else if(p.name in k)k[p.name].setAttribute('value',q);else{var r=CKEDITOR.dom.element.createFromHtml('<cke:param></cke:param>',i.getDocument());r.setAttributes({name:p.name,value:q});if(i.getChildCount()<1)r.appendTo(i);else r.insertBefore(i.getFirst());}break;case c:if(!j)continue;q=s.getValue();if(m||n&&q===p['default'])j.removeAttribute(p.name);else j.setAttribute(p.name,q);}}};CKEDITOR.dialog.add('flash',function(i){var j=!i.config.flashEmbedTagOnly,k=i.config.flashAddEmbedTag||i.config.flashEmbedTagOnly,l,m='<div>'+CKEDITOR.tools.htmlEncode(i.lang.common.preview)+'<br>'+'<div id="cke_FlashPreviewLoader'+CKEDITOR.tools.getNextNumber()+'" style="display:none"><div class="loading">&nbsp;</div></div>'+'<div id="cke_FlashPreviewBox'+CKEDITOR.tools.getNextNumber()+'" class="FlashPreviewBox"></div></div>';
+return{title:i.lang.flash.title,minWidth:420,minHeight:310,onShow:function(){var z=this;z.fakeImage=z.objectNode=z.embedNode=null;l=new CKEDITOR.dom.element('embed',i.document);var n=z.getSelectedElement();if(n&&n.getAttribute('_cke_real_element_type')&&n.getAttribute('_cke_real_element_type')=='flash'){z.fakeImage=n;var o=i.restoreRealElement(n),p=null,q=null,r={};if(o.getName()=='cke:object'){p=o;var s=p.getElementsByTag('embed','cke');if(s.count()>0)q=s.getItem(0);var t=p.getElementsByTag('param','cke');for(var u=0,v=t.count();u<v;u++){var w=t.getItem(u),x=w.getAttribute('name'),y=w.getAttribute('value');r[x]=y;}}else if(o.getName()=='cke:embed')q=o;z.objectNode=p;z.embedNode=q;z.setupContent(p,q,r,n);}},onOk:function(){var x=this;var n=null,o=null,p=null;if(!x.fakeImage){if(j){n=CKEDITOR.dom.element.createFromHtml('<cke:object></cke:object>',i.document);var q={classid:'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',codebase:'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'};n.setAttributes(q);}if(k){o=CKEDITOR.dom.element.createFromHtml('<cke:embed></cke:embed>',i.document);o.setAttributes({type:'application/x-shockwave-flash',pluginspage:'http://www.macromedia.com/go/getflashplayer'});if(n)o.appendTo(n);}}else{n=x.objectNode;o=x.embedNode;}if(n){p={};var r=n.getElementsByTag('param','cke');for(var s=0,t=r.count();s<t;s++)p[r.getItem(s).getAttribute('name')]=r.getItem(s);}var u={},v={};x.commitContent(n,o,p,u,v);var w=i.createFakeElement(n||o,'cke_flash','flash',true);w.setAttributes(v);w.setStyles(u);if(x.fakeImage){w.replace(x.fakeImage);i.getSelection().selectElement(w);}else i.insertElement(w);},onHide:function(){if(this.preview)this.preview.setHtml('');},contents:[{id:'info',label:i.lang.common.generalTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['280px','110px'],align:'right',children:[{id:'src',type:'text',label:i.lang.common.url,required:true,validate:CKEDITOR.dialog.validate.notEmpty(i.lang.flash.validateSrc),setup:g,commit:h,onLoad:function(){var n=this.getDialog(),o=function(p){l.setAttribute('src',p);n.preview.setHtml('<embed height="100%" width="100%" src="'+CKEDITOR.tools.htmlEncode(l.getAttribute('src'))+'" type="application/x-shockwave-flash"></embed>');};n.preview=n.getContentElement('info','preview').getElement().getChild(3);this.on('change',function(p){if(p.data&&p.data.value)o(p.data.value);});this.getInputElement().on('change',function(p){o(this.getValue());},this);
+}},{type:'button',id:'browse',filebrowser:'info:src',hidden:true,style:'display:inline-block;margin-top:10px;',label:i.lang.common.browseServer}]}]},{type:'hbox',widths:['25%','25%','25%','25%','25%'],children:[{type:'text',id:'width',style:'width:95px',label:i.lang.flash.width,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateWidth),setup:function(n,o,p,q){g.apply(this,arguments);if(q){var r=parseInt(q.$.style.width,10);if(!isNaN(r))this.setValue(r);}},commit:function(n,o,p,q){h.apply(this,arguments);if(this.getValue())q.width=this.getValue()+'px';}},{type:'text',id:'height',style:'width:95px',label:i.lang.flash.height,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateHeight),setup:function(n,o,p,q){g.apply(this,arguments);if(q){var r=parseInt(q.$.style.height,10);if(!isNaN(r))this.setValue(r);}},commit:function(n,o,p,q){h.apply(this,arguments);if(this.getValue())q.height=this.getValue()+'px';}},{type:'text',id:'hSpace',style:'width:95px',label:i.lang.flash.hSpace,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateHSpace),setup:g,commit:h},{type:'text',id:'vSpace',style:'width:95px',label:i.lang.flash.vSpace,validate:CKEDITOR.dialog.validate.integer(i.lang.flash.validateVSpace),setup:g,commit:h}]},{type:'vbox',children:[{type:'html',id:'preview',style:'width:95%;',html:m}]}]},{id:'Upload',hidden:true,filebrowser:'uploadButton',label:i.lang.common.upload,elements:[{type:'file',id:'upload',label:i.lang.common.upload,size:38},{type:'fileButton',id:'uploadButton',label:i.lang.common.uploadSubmit,filebrowser:'info:src','for':['Upload','upload']}]},{id:'properties',label:i.lang.flash.propertiesTab,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'scale',type:'select',label:i.lang.flash.scale,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.scaleAll,'showall'],[i.lang.flash.scaleNoBorder,'noborder'],[i.lang.flash.scaleFit,'exactfit']],setup:g,commit:h},{id:'allowScriptAccess',type:'select',label:i.lang.flash.access,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.accessAlways,'always'],[i.lang.flash.accessSameDomain,'samedomain'],[i.lang.flash.accessNever,'never']],setup:g,commit:h}]},{type:'hbox',widths:['50%','50%'],children:[{id:'wmode',type:'select',label:i.lang.flash.windowMode,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.windowModeWindow,'window'],[i.lang.flash.windowModeOpaque,'opaque'],[i.lang.flash.windowModeTransparent,'transparent']],setup:g,commit:h},{id:'quality',type:'select',label:i.lang.flash.quality,'default':'high',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.qualityBest,'best'],[i.lang.flash.qualityHigh,'high'],[i.lang.flash.qualityAutoHigh,'autohigh'],[i.lang.flash.qualityMedium,'medium'],[i.lang.flash.qualityAutoLow,'autolow'],[i.lang.flash.qualityLow,'low']],setup:g,commit:h}]},{type:'hbox',widths:['50%','50%'],children:[{id:'align',type:'select',label:i.lang.flash.align,'default':'',style:'width : 100%;',items:[[i.lang.common.notSet,''],[i.lang.flash.alignLeft,'left'],[i.lang.flash.alignAbsBottom,'absBottom'],[i.lang.flash.alignAbsMiddle,'absMiddle'],[i.lang.flash.alignBaseline,'baseline'],[i.lang.flash.alignBottom,'bottom'],[i.lang.flash.alignMiddle,'middle'],[i.lang.flash.alignRight,'right'],[i.lang.flash.alignTextTop,'textTop'],[i.lang.flash.alignTop,'top']],setup:g,commit:function(n,o,p,q,r){var s=this.getValue();
+h.apply(this,arguments);s&&(r.align=s);}},{type:'html',html:'<div></div>'}]},{type:'fieldset',label:CKEDITOR.tools.htmlEncode(i.lang.flash.flashvars),children:[{type:'vbox',padding:0,children:[{type:'checkbox',id:'menu',label:i.lang.flash.chkMenu,'default':true,setup:g,commit:h},{type:'checkbox',id:'play',label:i.lang.flash.chkPlay,'default':true,setup:g,commit:h},{type:'checkbox',id:'loop',label:i.lang.flash.chkLoop,'default':true,setup:g,commit:h},{type:'checkbox',id:'allowFullScreen',label:i.lang.flash.chkFull,'default':true,setup:g,commit:h}]}]}]},{id:'advanced',label:i.lang.common.advancedTab,elements:[{type:'hbox',widths:['45%','55%'],children:[{type:'text',id:'id',label:i.lang.common.id,setup:g,commit:h},{type:'text',id:'title',label:i.lang.common.advisoryTitle,setup:g,commit:h}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',id:'bgcolor',label:i.lang.flash.bgcolor,setup:g,commit:h},{type:'text',id:'class',label:i.lang.common.cssClass,setup:g,commit:h}]},{type:'text',id:'style',label:i.lang.common.cssStyle,setup:g,commit:h}]}]};});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js
new file mode 100644
index 000000000..6fb73d1d9
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('button',function(a){return{title:a.lang.button.title,minWidth:350,minHeight:150,onShow:function(){var d=this;delete d.button;var b=d.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'){var c=b.getAttribute('type');if(c=='button'||c=='reset'||c=='submit'){d.button=b;d.setupContent(b);}}},onOk:function(){var b,c=this.button,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.button.title,title:a.lang.button.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.common.name,'default':'',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.button.text,accessKey:'V','default':'',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'type',type:'select',label:a.lang.button.type,'default':'button',accessKey:'T',items:[[a.lang.button.typeBtn,'button'],[a.lang.button.typeSbm,'submit'],[a.lang.button.typeRst,'reset']],setup:function(b){this.setValue(b.getAttribute('type')||'');},commit:function(b){var c=b.element;if(CKEDITOR.env.ie){var d=c.getAttribute('type'),e=this.getValue();if(e!=d){var f=CKEDITOR.dom.element.createFromHtml('<input type="'+e+'"></input>',a.document);c.copyAttributes(f,{type:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}else c.setAttribute('type',this.getValue());}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js
new file mode 100644
index 000000000..5370caed3
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('checkbox',function(a){return{title:a.lang.checkboxAndRadio.checkboxTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.checkbox;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getAttribute('type')=='checkbox'){c.checkbox=b;c.setupContent(b);}},onOk:function(){var b,c=this.checkbox,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','checkbox');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.checkboxTitle,title:a.lang.checkboxAndRadio.checkboxTitle,startupFocus:'txtName',elements:[{id:'txtName',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'txtValue',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){var c=b.getAttribute('value');this.setValue(CKEDITOR.env.ie&&c=='on'?'':c);},commit:function(b){var c=b.element,d=this.getValue();if(d&&!(CKEDITOR.env.ie&&d=='on'))c.setAttribute('value',d);else if(CKEDITOR.env.ie){var e=new CKEDITOR.dom.element('input',c.getDocument());c.copyAttributes(e,{value:1});e.replace(c);a.getSelection().selectElement(e);b.element=e;}else c.removeAttribute('value');}},{id:'cmbSelected',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(CKEDITOR.env.ie){var d=!!c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="checkbox"'+(e?' checked="checked"':'')+'/>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}else{var g=this.getValue();if(g)c.setAttribute('checked','checked');else c.removeAttribute('checked');}}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js
new file mode 100644
index 000000000..e0b42fa25
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('form',function(a){var b={action:1,id:1,method:1,enctype:1,target:1};return{title:a.lang.form.title,minWidth:350,minHeight:200,onShow:function(){var e=this;delete e.form;var c=e.getParentEditor().getSelection().getStartElement(),d=c&&c.getAscendant('form',true);if(d){e.form=d;e.setupContent(d);}},onOk:function(){var c,d=this.form,e=!d;if(e){c=this.getParentEditor();d=c.document.createElement('form');d.append(c.document.createElement('br'));}if(e)c.insertElement(d);this.commitContent(d);},onLoad:function(){function c(e){this.setValue(e.getAttribute(this.id)||'');};function d(e){var f=this;if(f.getValue())e.setAttribute(f.id,f.getValue());else e.removeAttribute(f.id);};this.foreach(function(e){if(b[e.id]){e.setup=c;e.commit=d;}});},contents:[{id:'info',label:a.lang.form.title,title:a.lang.form.title,elements:[{id:'txtName',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(c){this.setValue(c.getAttribute('_cke_saved_name')||c.getAttribute('name')||'');},commit:function(c){if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'action',type:'text',label:a.lang.form.action,'default':'',accessKey:'T'},{type:'hbox',widths:['45%','55%'],children:[{id:'id',type:'text',label:a.lang.common.id,'default':'',accessKey:'I'},{id:'enctype',type:'select',label:a.lang.form.encoding,style:'width:100%',accessKey:'E','default':'',items:[[''],['text/plain'],['multipart/form-data'],['application/x-www-form-urlencoded']]}]},{type:'hbox',widths:['45%','55%'],children:[{id:'target',type:'select',label:a.lang.common.target,style:'width:100%',accessKey:'M','default':'',items:[[a.lang.common.notSet,''],[a.lang.common.targetNew,'_blank'],[a.lang.common.targetTop,'_top'],[a.lang.common.targetSelf,'_self'],[a.lang.common.targetParent,'_parent']]},{id:'method',type:'select',label:a.lang.form.method,accessKey:'M','default':'GET',items:[['GET','get'],['POST','post']]}]}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js
new file mode 100644
index 000000000..d75c13cbb
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('hiddenfield',function(a){return{title:a.lang.hidden.title,hiddenField:null,minWidth:350,minHeight:110,onShow:function(){var e=this;delete e.hiddenField;var b=e.getParentEditor(),c=b.getSelection(),d=c.getSelectedElement();if(d&&d.getAttribute('_cke_real_element_type')&&d.getAttribute('_cke_real_element_type')=='hiddenfield'){e.hiddenField=d;d=b.restoreRealElement(e.hiddenField);e.setupContent(d);c.selectElement(e.hiddenField);}},onOk:function(){var g=this;var b=g.getValueOf('info','_cke_saved_name'),c=g.getValueOf('info','value'),d=g.getParentEditor(),e=CKEDITOR.env.ie?d.document.createElement('<input name="'+CKEDITOR.tools.htmlEncode(b)+'">'):d.document.createElement('input');e.setAttribute('type','hidden');g.commitContent(e);var f=d.createFakeElement(e,'cke_hidden','hiddenfield');if(!g.hiddenField)d.insertElement(f);else{f.replace(g.hiddenField);d.getSelection().selectElement(f);}return true;},contents:[{id:'info',label:a.lang.hidden.title,title:a.lang.hidden.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.hidden.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){if(this.getValue())b.setAttribute('name',this.getValue());else b.removeAttribute('name');}},{id:'value',type:'text',label:a.lang.hidden.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){if(this.getValue())b.setAttribute('value',this.getValue());else b.removeAttribute('value');}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js
new file mode 100644
index 000000000..9bfcaccf7
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('radio',function(a){return{title:a.lang.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){var c=this;delete c.radioButton;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='input'&&b.getAttribute('type')=='radio'){c.radioButton=b;c.setupContent(b);}},onOk:function(){var b,c=this.radioButton,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('input');c.setAttribute('type','radio');}if(d)b.insertElement(c);this.commitContent({element:c});},contents:[{id:'info',label:a.lang.checkboxAndRadio.radioTitle,title:a.lang.checkboxAndRadio.radioTitle,elements:[{id:'name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('_cke_saved_name',this.getValue());else{c.removeAttribute('_cke_saved_name');c.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.checkboxAndRadio.value,'default':'',accessKey:'V',setup:function(b){this.setValue(b.getAttribute('value')||'');},commit:function(b){var c=b.element;if(this.getValue())c.setAttribute('value',this.getValue());else c.removeAttribute('value');}},{id:'checked',type:'checkbox',label:a.lang.checkboxAndRadio.selected,'default':'',accessKey:'S',value:'checked',setup:function(b){this.setValue(b.getAttribute('checked'));},commit:function(b){var c=b.element;if(!CKEDITOR.env.ie){if(this.getValue())c.setAttribute('checked','checked');else c.removeAttribute('checked');}else{var d=c.getAttribute('checked'),e=!!this.getValue();if(d!=e){var f=CKEDITOR.dom.element.createFromHtml('<input type="radio"'+(e?' checked="checked"':'')+'></input>',a.document);c.copyAttributes(f,{type:1,checked:1});f.replace(c);a.getSelection().selectElement(f);b.element=f;}}}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js
new file mode 100644
index 000000000..8a6f77496
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('select',function(a){function b(k,l,m,n,o){k=j(k);var p;if(n)p=n.createElement('OPTION');else p=document.createElement('OPTION');if(k&&p&&p.getName()=='option'){if(CKEDITOR.env.ie){if(!isNaN(parseInt(o,10)))k.$.options.add(p.$,o);else k.$.options.add(p.$);p.$.innerHTML=l.length>0?l:'';p.$.value=m;}else{if(o!==null&&o<k.getChildCount())k.getChild(o<0?0:o).insertBeforeMe(p);else k.append(p);p.setText(l.length>0?l:'');p.setValue(m);}}else return false;return p;};function c(k){k=j(k);var l=g(k);for(var m=k.getChildren().count()-1;m>=0;m--){if(k.getChild(m).$.selected)k.getChild(m).remove();}h(k,l);};function d(k,l,m,n){k=j(k);if(l<0)return false;var o=k.getChild(l);o.setText(m);o.setValue(n);return o;};function e(k){k=j(k);while(k.getChild(0)&&k.getChild(0).remove()){}};function f(k,l,m){k=j(k);var n=g(k);if(n<0)return false;var o=n+l;o=o<0?0:o;o=o>=k.getChildCount()?k.getChildCount()-1:o;if(n==o)return false;var p=k.getChild(n),q=p.getText(),r=p.getValue();p.remove();p=b(k,q,r,!m?null:m,o);h(k,o);return p;};function g(k){k=j(k);return k?k.$.selectedIndex:-1;};function h(k,l){k=j(k);if(l<0)return null;var m=k.getChildren().count();k.$.selectedIndex=l>=m?m-1:l;return k;};function i(k){k=j(k);return k?k.getChildren():false;};function j(k){if(k&&k.domId&&k.getInputElement().$)return k.getInputElement();else if(k&&k.$)return k;return false;};return{title:a.lang.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,onShow:function(){var n=this;delete n.selectBox;n.setupContent('clear');var k=n.getParentEditor().getSelection().getSelectedElement();if(k&&k.getName()=='select'){n.selectBox=k;n.setupContent(k.getName(),k);var l=i(k);for(var m=0;m<l.count();m++)n.setupContent('option',l.getItem(m));}},onOk:function(){var k=this.getParentEditor(),l=this.selectBox,m=!l;if(m)l=k.document.createElement('select');this.commitContent(l);if(m){k.insertElement(l);if(CKEDITOR.env.ie){var n=k.getSelection(),o=n.createBookmarks();setTimeout(function(){n.selectBookmarks(o);},0);}}},contents:[{id:'info',label:a.lang.select.selectInfo,title:a.lang.select.selectInfo,accessKey:'',elements:[{id:'txtName',type:'text',widths:['25%','75%'],labelLayout:'horizontal',label:a.lang.common.name,'default':'',accessKey:'N',align:'center',style:'width:350px',setup:function(k,l){if(k=='clear')this.setValue(this['default']||'');else if(k=='select')this.setValue(l.getAttribute('_cke_saved_name')||l.getAttribute('name')||'');},commit:function(k){if(this.getValue())k.setAttribute('_cke_saved_name',this.getValue());
+else{k.removeAttribute('_cke_saved_name');k.removeAttribute('name');}}},{id:'txtValue',type:'text',widths:['25%','75%'],labelLayout:'horizontal',label:a.lang.select.value,style:'width:350px','default':'',className:'cke_disabled',onLoad:function(){this.getInputElement().setAttribute('readOnly',true);},setup:function(k,l){if(k=='clear')this.setValue('');else if(k=='option'&&l.getAttribute('selected'))this.setValue(l.$.value);}},{type:'hbox',widths:['175px','170px'],align:'center',children:[{id:'txtSize',type:'text',align:'center',labelLayout:'horizontal',label:a.lang.select.size,'default':'',accessKey:'S',style:'width:175px',validate:function(){var k=CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed);return this.getValue()===''||k.apply(this);},setup:function(k,l){if(k=='select')this.setValue(l.getAttribute('size')||'');if(CKEDITOR.env.webkit)this.getInputElement().setStyle('width','86px');},commit:function(k){if(this.getValue())k.setAttribute('size',this.getValue());else k.removeAttribute('size');}},{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(a.lang.select.lines)+'</span>'}]},{type:'html',html:'<span>'+CKEDITOR.tools.htmlEncode(a.lang.select.opAvail)+'</span>'},{type:'hbox',widths:['115px','115px','100px'],align:'top',children:[{type:'vbox',children:[{id:'txtOptName',type:'text',label:a.lang.select.opText,style:'width:115px',setup:function(k,l){if(k=='clear')this.setValue('');}},{type:'select',id:'cmbName',label:'',title:'',size:5,style:'width:115px;height:75px',items:[],onChange:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbValue'),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=g(this);h(l,o);m.setValue(this.getValue());n.setValue(l.getValue());},setup:function(k,l){if(k=='clear')e(this);else if(k=='option')b(this,l.getText(),l.getText(),this.getDialog().getParentEditor().document);},commit:function(k){var l=this.getDialog(),m=i(this),n=i(l.getContentElement('info','cmbValue')),o=l.getContentElement('info','txtValue').getValue();e(k);for(var p=0;p<m.count();p++){var q=b(k,m.getItem(p).getValue(),n.getItem(p).getValue(),l.getParentEditor().document);if(n.getItem(p).getValue()==o){q.setAttribute('selected','selected');q.selected=true;}}}}]},{type:'vbox',children:[{id:'txtOptValue',type:'text',label:a.lang.select.opValue,style:'width:115px',setup:function(k,l){if(k=='clear')this.setValue('');}},{type:'select',id:'cmbValue',label:'',size:5,style:'width:115px;height:75px',items:[],onChange:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=g(this);
+h(l,o);m.setValue(l.getValue());n.setValue(this.getValue());},setup:function(k,l){var n=this;if(k=='clear')e(n);else if(k=='option'){var m=l.getValue();b(n,m,m,n.getDialog().getParentEditor().document);if(l.getAttribute('selected')=='selected')n.getDialog().getContentElement('info','txtValue').setValue(m);}}}]},{type:'vbox',padding:5,children:[{type:'button',style:'',label:a.lang.select.btnAdd,title:a.lang.select.btnAdd,style:'width:100%;',onClick:function(){var k=this.getDialog(),l=k.getParentEditor(),m=k.getContentElement('info','txtOptName'),n=k.getContentElement('info','txtOptValue'),o=k.getContentElement('info','cmbName'),p=k.getContentElement('info','cmbValue');b(o,m.getValue(),m.getValue(),k.getParentEditor().document);b(p,n.getValue(),n.getValue(),k.getParentEditor().document);m.setValue('');n.setValue('');}},{type:'button',label:a.lang.select.btnModify,title:a.lang.select.btnModify,style:'width:100%;',onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','txtOptName'),m=k.getContentElement('info','txtOptValue'),n=k.getContentElement('info','cmbName'),o=k.getContentElement('info','cmbValue'),p=g(n);if(p>=0){d(n,p,l.getValue(),l.getValue());d(o,p,m.getValue(),m.getValue());}}},{type:'button',style:'width:100%;',label:a.lang.select.btnUp,title:a.lang.select.btnUp,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue');f(l,-1,k.getParentEditor().document);f(m,-1,k.getParentEditor().document);}},{type:'button',style:'width:100%;',label:a.lang.select.btnDown,title:a.lang.select.btnDown,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue');f(l,1,k.getParentEditor().document);f(m,1,k.getParentEditor().document);}}]}]},{type:'hbox',widths:['40%','20%','40%'],children:[{type:'button',label:a.lang.select.btnSetValue,title:a.lang.select.btnSetValue,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbValue'),m=k.getContentElement('info','txtValue');m.setValue(l.getValue());}},{type:'button',label:a.lang.select.btnDelete,title:a.lang.select.btnDelete,onClick:function(){var k=this.getDialog(),l=k.getContentElement('info','cmbName'),m=k.getContentElement('info','cmbValue'),n=k.getContentElement('info','txtOptName'),o=k.getContentElement('info','txtOptValue');c(l);c(m);n.setValue('');o.setValue('');}},{id:'chkMulti',type:'checkbox',label:a.lang.select.chkMulti,'default':'',accessKey:'M',value:'checked',setup:function(k,l){if(k=='select')this.setValue(l.getAttribute('multiple'));
+if(CKEDITOR.env.webkit)this.getElement().getParent().setStyle('vertical-align','middle');},commit:function(k){if(this.getValue())k.setAttribute('multiple',this.getValue());else k.removeAttribute('multiple');}}]}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js
new file mode 100644
index 000000000..1c85c5f38
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('textarea',function(a){return{title:a.lang.textarea.title,minWidth:350,minHeight:150,onShow:function(){var c=this;delete c.textarea;var b=c.getParentEditor().getSelection().getSelectedElement();if(b&&b.getName()=='textarea'){c.textarea=b;c.setupContent(b);}},onOk:function(){var b,c=this.textarea,d=!c;if(d){b=this.getParentEditor();c=b.document.createElement('textarea');}this.commitContent(c);if(d)b.insertElement(c);},contents:[{id:'info',label:a.lang.textarea.title,title:a.lang.textarea.title,elements:[{id:'_cke_saved_name',type:'text',label:a.lang.common.name,'default':'',accessKey:'N',setup:function(b){this.setValue(b.getAttribute('_cke_saved_name')||b.getAttribute('name')||'');},commit:function(b){if(this.getValue())b.setAttribute('_cke_saved_name',this.getValue());else{b.removeAttribute('_cke_saved_name');b.removeAttribute('name');}}},{id:'cols',type:'text',label:a.lang.textarea.cols,'default':'',accessKey:'C',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed),setup:function(b){var c=b.hasAttribute('cols')&&b.getAttribute('cols');this.setValue(c||'');},commit:function(b){if(this.getValue())b.setAttribute('cols',this.getValue());else b.removeAttribute('cols');}},{id:'rows',type:'text',label:a.lang.textarea.rows,'default':'',accessKey:'R',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed),setup:function(b){var c=b.hasAttribute('rows')&&b.getAttribute('rows');this.setValue(c||'');},commit:function(b){if(this.getValue())b.setAttribute('rows',this.getValue());else b.removeAttribute('rows');}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js
new file mode 100644
index 000000000..07553499f
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('textfield',function(a){var b={value:1,size:1,maxLength:1},c={text:1,password:1};return{title:a.lang.textfield.title,minWidth:350,minHeight:150,onShow:function(){var e=this;delete e.textField;var d=e.getParentEditor().getSelection().getSelectedElement();if(d&&d.getName()=='input'&&(c[d.getAttribute('type')]||!d.getAttribute('type'))){e.textField=d;e.setupContent(d);}},onOk:function(){var d,e=this.textField,f=!e;if(f){d=this.getParentEditor();e=d.document.createElement('input');e.setAttribute('type','text');}if(f)d.insertElement(e);this.commitContent({element:e});},onLoad:function(){var d=function(f){var g=f.hasAttribute(this.id)&&f.getAttribute(this.id);this.setValue(g||'');},e=function(f){var g=f.element,h=this.getValue();if(h)g.setAttribute(this.id,h);else g.removeAttribute(this.id);};this.foreach(function(f){if(b[f.id]){f.setup=d;f.commit=e;}});},contents:[{id:'info',label:a.lang.textfield.title,title:a.lang.textfield.title,elements:[{type:'hbox',widths:['50%','50%'],children:[{id:'_cke_saved_name',type:'text',label:a.lang.textfield.name,'default':'',accessKey:'N',setup:function(d){this.setValue(d.getAttribute('_cke_saved_name')||d.getAttribute('name')||'');},commit:function(d){var e=d.element;if(this.getValue())e.setAttribute('_cke_saved_name',this.getValue());else{e.removeAttribute('_cke_saved_name');e.removeAttribute('name');}}},{id:'value',type:'text',label:a.lang.textfield.value,'default':'',accessKey:'V'}]},{type:'hbox',widths:['50%','50%'],children:[{id:'size',type:'text',label:a.lang.textfield.charWidth,'default':'',accessKey:'C',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed)},{id:'maxLength',type:'text',label:a.lang.textfield.maxChars,'default':'',accessKey:'M',style:'width:50px',validate:CKEDITOR.dialog.validate.integer(a.lang.common.validateNumberFailed)}],onLoad:function(){if(CKEDITOR.env.ie7Compat)this.getElement().setStyle('zoom','100%');}},{id:'type',type:'select',label:a.lang.textfield.type,'default':'text',accessKey:'M',items:[[a.lang.textfield.typeText,'text'],[a.lang.textfield.typePass,'password']],setup:function(d){this.setValue(d.getAttribute('type'));},commit:function(d){var e=d.element;if(CKEDITOR.env.ie){var f=e.getAttribute('type'),g=this.getValue();if(f!=g){var h=CKEDITOR.dom.element.createFromHtml('<input type="'+g+'"></input>',a.document);e.copyAttributes(h,{type:1});h.replace(e);a.getSelection().selectElement(h);d.element=h;}}else e.setAttribute('type',this.getValue());
+}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js
new file mode 100644
index 000000000..e977c4d98
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('iframedialog',{requires:['dialog'],onLoad:function(){CKEDITOR.dialog.addIframe=function(a,b,c,d,e,f){var g={type:'iframe',src:c,width:'100%',height:'100%'};if(typeof f=='function')g.onContentLoad=f;var h={title:b,minWidth:d,minHeight:e,contents:[{id:'iframe',label:b,expand:true,elements:[g]}]};return this.add(a,function(){return h;});};(function(){var a=function(b,c,d){if(arguments.length<3)return;var e=this._||(this._={}),f=c.onContentLoad&&CKEDITOR.tools.bind(c.onContentLoad,this),g=CKEDITOR.tools.cssLength(c.width),h=CKEDITOR.tools.cssLength(c.height);e.frameId=CKEDITOR.tools.getNextNumber()+'_iframe';b.on('load',function(){var k=CKEDITOR.document.getById(e.frameId),l=k.getParent();l.setStyles({width:g,height:h});});var i={src:'%2',id:e.frameId,frameborder:0,allowtransparency:true},j=[];if(typeof c.onContentLoad=='function')i.onload='CKEDITOR.tools.callFunction(%1);';CKEDITOR.ui.dialog.uiElement.call(this,b,c,j,'iframe',{width:g,height:h},i,'');d.push('<div style="width:'+g+';height:'+h+';" id="'+this.domId+'"></div>');j=j.join('');b.on('show',function(){var k=CKEDITOR.document.getById(e.frameId),l=k.getParent(),m=CKEDITOR.tools.addFunction(f),n=j.replace('%1',m).replace('%2',CKEDITOR.tools.htmlEncode(c.src));l.setHtml(n);});};a.prototype=new CKEDITOR.ui.dialog.uiElement();CKEDITOR.dialog.addUIElement('iframe',{build:function(b,c,d){return new a(b,c,d);}});})();}});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js
new file mode 100644
index 000000000..76eeadf35
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js
@@ -0,0 +1,13 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=function(b,c){var d=1,e=2,f=4,g=8,h=/^\s*(\d+)((px)|\%)?\s*$/i,i=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,j=/^\d+px$/,k=function(){var C=this.getValue(),D=this.getDialog(),E=C.match(h);if(E){if(E[2]=='%')p(D,false);C=E[1];}if(D.lockRatio){var F=D.originalElement;if(F.getCustomData('isReady')=='true')if(this.id=='txtHeight'){if(C&&C!='0')C=Math.round(F.$.width*(C/F.$.height));if(!isNaN(C))D.setValueOf('info','txtWidth',C);}else{if(C&&C!='0')C=Math.round(F.$.height*(C/F.$.width));if(!isNaN(C))D.setValueOf('info','txtHeight',C);}}l(D);},l=function(C){if(!C.originalElement||!C.preview)return 1;C.commitContent(f,C.preview);return 0;};function m(){var C=arguments,D=this.getContentElement('advanced','txtdlgGenStyle');D&&D.commit.apply(D,C);this.foreach(function(E){if(E.commit&&E.id!='txtdlgGenStyle')E.commit.apply(E,C);});};var n;function o(C){if(n)return;n=1;var D=this.getDialog(),E=D.imageElement;if(E){this.commit(d,E);C=[].concat(C);var F=C.length,G;for(var H=0;H<F;H++){G=D.getContentElement.apply(D,C[H].split(':'));G&&G.setup(d,E);}}n=0;};var p=function(C,D){var E=C.originalElement;if(!E)return null;var F=CKEDITOR.document.getById(w);if(E.getCustomData('isReady')=='true'){if(D=='check'){var G=C.getValueOf('info','txtWidth'),H=C.getValueOf('info','txtHeight'),I=E.$.width*1000/E.$.height,J=G*1000/H;C.lockRatio=false;if(!G&&!H)C.lockRatio=true;else if(!isNaN(I)&&!isNaN(J))if(Math.round(I)==Math.round(J))C.lockRatio=true;}else if(D!=undefined)C.lockRatio=D;else C.lockRatio=!C.lockRatio;}else if(D!='check')C.lockRatio=false;if(C.lockRatio)F.removeClass('cke_btn_unlocked');else F.addClass('cke_btn_unlocked');var K=C._.editor.lang.image,L=K[C.lockRatio?'unlockRatio':'lockRatio'];F.setAttribute('title',L);F.getFirst().setText(L);return C.lockRatio;},q=function(C){var D=C.originalElement;if(D.getCustomData('isReady')=='true'){C.setValueOf('info','txtWidth',D.$.width);C.setValueOf('info','txtHeight',D.$.height);}l(C);},r=function(C,D){if(C!=d)return;function E(J,K){var L=J.match(h);if(L){if(L[2]=='%'){L[1]+='%';p(F,false);}return L[1];}return K;};var F=this.getDialog(),G='',H=this.id=='txtWidth'?'width':'height',I=D.getAttribute(H);if(I)G=E(I,G);G=E(D.getStyle(H),G);this.setValue(G);},s,t=function(){var C=this.originalElement;C.setCustomData('isReady','true');C.removeListener('load',t);C.removeListener('error',u);C.removeListener('abort',u);CKEDITOR.document.getById(y).setStyle('display','none');if(!this.dontResetSize)q(this);if(this.firstLoad)CKEDITOR.tools.setTimeout(function(){p(this,'check');
+},0,this);this.firstLoad=false;this.dontResetSize=false;},u=function(){var E=this;var C=E.originalElement;C.removeListener('load',t);C.removeListener('error',u);C.removeListener('abort',u);var D=CKEDITOR.getUrl(b.skinPath+'images/noimage.png');if(E.preview)E.preview.setAttribute('src',D);CKEDITOR.document.getById(y).setStyle('display','none');p(E,false);},v=function(C){return CKEDITOR.tools.getNextId()+'_'+C;},w=v('btnLockSizes'),x=v('btnResetSize'),y=v('ImagePreviewLoader'),z=v('ImagePreviewBox'),A=v('previewLink'),B=v('previewImage');return{title:c=='image'?b.lang.image.title:b.lang.image.titleButton,minWidth:420,minHeight:310,onShow:function(){var I=this;I.imageElement=false;I.linkElement=false;I.imageEditMode=false;I.linkEditMode=false;I.lockRatio=true;I.dontResetSize=false;I.firstLoad=true;I.addLink=false;var C=I.getParentEditor(),D=I.getParentEditor().getSelection(),E=D.getSelectedElement(),F=E&&E.getAscendant('a');CKEDITOR.document.getById(y).setStyle('display','none');s=new CKEDITOR.dom.element('img',C.document);I.preview=CKEDITOR.document.getById(B);I.originalElement=C.document.createElement('img');I.originalElement.setAttribute('alt','');I.originalElement.setCustomData('isReady','false');if(F){I.linkElement=F;I.linkEditMode=true;var G=F.getChildren();if(G.count()==1){var H=G.getItem(0).getName();if(H=='img'||H=='input'){I.imageElement=G.getItem(0);if(I.imageElement.getName()=='img')I.imageEditMode='img';else if(I.imageElement.getName()=='input')I.imageEditMode='input';}}if(c=='image')I.setupContent(e,F);}if(E&&E.getName()=='img'&&!E.getAttribute('_cke_realelement')||E&&E.getName()=='input'&&E.getAttribute('type')=='image'){I.imageEditMode=E.getName();I.imageElement=E;}if(I.imageEditMode){I.cleanImageElement=I.imageElement;I.imageElement=I.cleanImageElement.clone(true,true);I.setupContent(d,I.imageElement);p(I,true);}else I.imageElement=C.document.createElement('img');if(!CKEDITOR.tools.trim(I.getValueOf('info','txtUrl'))){I.preview.removeAttribute('src');I.preview.setStyle('display','none');}},onOk:function(){var D=this;if(D.imageEditMode){var C=D.imageEditMode;if(c=='image'&&C=='input'&&confirm(b.lang.image.button2Img)){C='img';D.imageElement=b.document.createElement('img');D.imageElement.setAttribute('alt','');b.insertElement(D.imageElement);}else if(c!='image'&&C=='img'&&confirm(b.lang.image.img2Button)){C='input';D.imageElement=b.document.createElement('input');D.imageElement.setAttributes({type:'image',alt:''});b.insertElement(D.imageElement);
+}else{D.imageElement=D.cleanImageElement;delete D.cleanImageElement;}}else{if(c=='image')D.imageElement=b.document.createElement('img');else{D.imageElement=b.document.createElement('input');D.imageElement.setAttribute('type','image');}D.imageElement.setAttribute('alt','');}if(!D.linkEditMode)D.linkElement=b.document.createElement('a');D.commitContent(d,D.imageElement);D.commitContent(e,D.linkElement);if(!D.imageElement.getAttribute('style'))D.imageElement.removeAttribute('style');if(!D.imageEditMode){if(D.addLink){if(!D.linkEditMode){b.insertElement(D.linkElement);D.linkElement.append(D.imageElement,false);}else b.insertElement(D.imageElement);}else b.insertElement(D.imageElement);}else if(!D.linkEditMode&&D.addLink){b.insertElement(D.linkElement);D.imageElement.appendTo(D.linkElement);}else if(D.linkEditMode&&!D.addLink){b.getSelection().selectElement(D.linkElement);b.insertElement(D.imageElement);}},onLoad:function(){var D=this;if(c!='image')D.hidePage('Link');var C=D._.element.getDocument();D.addFocusable(C.getById(x),5);D.addFocusable(C.getById(w),5);D.commitContent=m;},onHide:function(){var C=this;if(C.preview)C.commitContent(g,C.preview);if(C.originalElement){C.originalElement.removeListener('load',t);C.originalElement.removeListener('error',u);C.originalElement.removeListener('abort',u);C.originalElement.remove();C.originalElement=false;}delete C.imageElement;},contents:[{id:'info',label:b.lang.image.infoTab,accessKey:'I',elements:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['280px','110px'],align:'right',children:[{id:'txtUrl',type:'text',label:b.lang.common.url,required:true,onChange:function(){var C=this.getDialog(),D=this.getValue();if(D.length>0){C=this.getDialog();var E=C.originalElement;C.preview.removeStyle('display');E.setCustomData('isReady','false');var F=CKEDITOR.document.getById(y);if(F)F.setStyle('display','');E.on('load',t,C);E.on('error',u,C);E.on('abort',u,C);E.setAttribute('src',D);s.setAttribute('src',D);C.preview.setAttribute('src',s.$.src);l(C);}else if(C.preview){C.preview.removeAttribute('src');C.preview.setStyle('display','none');}},setup:function(C,D){if(C==d){var E=D.getAttribute('_cke_saved_src')||D.getAttribute('src'),F=this;this.getDialog().dontResetSize=true;F.setValue(E);F.setInitValue();}},commit:function(C,D){var E=this;if(C==d&&(E.getValue()||E.isChanged())){D.setAttribute('_cke_saved_src',decodeURI(E.getValue()));D.setAttribute('src',decodeURI(E.getValue()));}else if(C==g){D.setAttribute('src','');D.removeAttribute('src');
+}},validate:CKEDITOR.dialog.validate.notEmpty(b.lang.image.urlMissing)},{type:'button',id:'browse',style:'display:inline-block;margin-top:10px;',align:'center',label:b.lang.common.browseServer,hidden:true,filebrowser:'info:txtUrl'}]}]},{id:'txtAlt',type:'text',label:b.lang.image.alt,accessKey:'T','default':'',onChange:function(){l(this.getDialog());},setup:function(C,D){if(C==d)this.setValue(D.getAttribute('alt'));},commit:function(C,D){var E=this;if(C==d){if(E.getValue()||E.isChanged())D.setAttribute('alt',E.getValue());}else if(C==f)D.setAttribute('alt',E.getValue());else if(C==g)D.removeAttribute('alt');}},{type:'hbox',widths:['140px','240px'],children:[{type:'vbox',padding:10,children:[{type:'hbox',widths:['70%','30%'],children:[{type:'vbox',padding:1,children:[{type:'text',width:'40px',id:'txtWidth',labelLayout:'horizontal',label:b.lang.image.width,onKeyUp:k,onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:function(){var C=this.getValue().match(i);if(!C)alert(b.lang.image.validateWidth);return!!C;},setup:r,commit:function(C,D,E){var F=this.getValue();if(C==d){if(F)D.setStyle('width',CKEDITOR.tools.cssLength(F));else if(!F&&this.isChanged())D.removeStyle('width');!E&&D.removeAttribute('width');}else if(C==f){var G=F.match(h);if(!G){var H=this.getDialog().originalElement;if(H.getCustomData('isReady')=='true')D.setStyle('width',H.$.width+'px');}else D.setStyle('width',CKEDITOR.tools.cssLength(F));}else if(C==g){D.removeAttribute('width');D.removeStyle('width');}}},{type:'text',id:'txtHeight',width:'40px',labelLayout:'horizontal',label:b.lang.image.height,onKeyUp:k,onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:function(){var C=this.getValue().match(i);if(!C)alert(b.lang.image.validateHeight);return!!C;},setup:r,commit:function(C,D,E){var F=this.getValue();if(C==d){if(F)D.setStyle('height',CKEDITOR.tools.cssLength(F));else if(!F&&this.isChanged())D.removeStyle('height');if(!E&&C==d)D.removeAttribute('height');}else if(C==f){var G=F.match(h);if(!G){var H=this.getDialog().originalElement;if(H.getCustomData('isReady')=='true')D.setStyle('height',H.$.height+'px');}else D.setStyle('height',CKEDITOR.tools.cssLength(F));}else if(C==g){D.removeAttribute('height');D.removeStyle('height');}}}]},{type:'html',style:'margin-top:10px;width:40px;height:40px;',onLoad:function(){var C=CKEDITOR.document.getById(x),D=CKEDITOR.document.getById(w);if(C){C.on('click',function(E){q(this);E.data.preventDefault();},this.getDialog());C.on('mouseover',function(){this.addClass('cke_btn_over');
+},C);C.on('mouseout',function(){this.removeClass('cke_btn_over');},C);}if(D){D.on('click',function(E){var J=this;var F=p(J),G=J.originalElement,H=J.getValueOf('info','txtWidth');if(G.getCustomData('isReady')=='true'&&H){var I=G.$.height/G.$.width*H;if(!isNaN(I)){J.setValueOf('info','txtHeight',Math.round(I));l(J);}}E.data.preventDefault();},this.getDialog());D.on('mouseover',function(){this.addClass('cke_btn_over');},D);D.on('mouseout',function(){this.removeClass('cke_btn_over');},D);}},html:'<div><a href="javascript:void(0)" tabindex="-1" title="'+b.lang.image.unlockRatio+'" class="cke_btn_locked" id="'+w+'" role="button"><span class="cke_label">'+b.lang.image.unlockRatio+'</span></a>'+'<a href="javascript:void(0)" tabindex="-1" title="'+b.lang.image.resetSize+'" class="cke_btn_reset" id="'+x+'" role="button"><span class="cke_label">'+b.lang.image.resetSize+'</span></a>'+'</div>'}]},{type:'vbox',padding:1,children:[{type:'text',id:'txtBorder',width:'60px',labelLayout:'horizontal',label:b.lang.image.border,'default':'',onKeyUp:function(){l(this.getDialog());},onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:CKEDITOR.dialog.validate.integer(b.lang.image.validateBorder),setup:function(C,D){if(C==d){var E,F=D.getStyle('border-width');F=F&&F.match(/^(\d+px)(?: \1 \1 \1)?$/);E=F&&parseInt(F[1],10);isNaN(parseInt(E,10))&&(E=D.getAttribute('border'));this.setValue(E);}},commit:function(C,D,E){var F=parseInt(this.getValue(),10);if(C==d||C==f){if(!isNaN(F)){D.setStyle('border-width',CKEDITOR.tools.cssLength(F));D.setStyle('border-style','solid');}else if(!F&&this.isChanged()){D.removeStyle('border-width');D.removeStyle('border-style');D.removeStyle('border-color');}if(!E&&C==d)D.removeAttribute('border');}else if(C==g){D.removeAttribute('border');D.removeStyle('border-width');D.removeStyle('border-style');D.removeStyle('border-color');}}},{type:'text',id:'txtHSpace',width:'60px',labelLayout:'horizontal',label:b.lang.image.hSpace,'default':'',onKeyUp:function(){l(this.getDialog());},onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:CKEDITOR.dialog.validate.integer(b.lang.image.validateHSpace),setup:function(C,D){if(C==d){var E,F,G,H=D.getStyle('margin-left'),I=D.getStyle('margin-right');H=H&&H.match(j);I=I&&I.match(j);F=parseInt(H,10);G=parseInt(I,10);E=F==G&&F;isNaN(parseInt(E,10))&&(E=D.getAttribute('hspace'));this.setValue(E);}},commit:function(C,D,E){var F=parseInt(this.getValue(),10);if(C==d||C==f){if(!isNaN(F)){D.setStyle('margin-left',CKEDITOR.tools.cssLength(F));
+D.setStyle('margin-right',CKEDITOR.tools.cssLength(F));}else if(!F&&this.isChanged()){D.removeStyle('margin-left');D.removeStyle('margin-right');}if(!E&&C==d)D.removeAttribute('hspace');}else if(C==g){D.removeAttribute('hspace');D.removeStyle('margin-left');D.removeStyle('margin-right');}}},{type:'text',id:'txtVSpace',width:'60px',labelLayout:'horizontal',label:b.lang.image.vSpace,'default':'',onKeyUp:function(){l(this.getDialog());},onChange:function(){o.call(this,'advanced:txtdlgGenStyle');},validate:CKEDITOR.dialog.validate.integer(b.lang.image.validateVSpace),setup:function(C,D){if(C==d){var E,F,G,H=D.getStyle('margin-top'),I=D.getStyle('margin-bottom');H=H&&H.match(j);I=I&&I.match(j);F=parseInt(H,10);G=parseInt(I,10);E=F==G&&F;isNaN(parseInt(E,10))&&(E=D.getAttribute('vspace'));this.setValue(E);}},commit:function(C,D,E){var F=parseInt(this.getValue(),10);if(C==d||C==f){if(!isNaN(F)){D.setStyle('margin-top',CKEDITOR.tools.cssLength(F));D.setStyle('margin-bottom',CKEDITOR.tools.cssLength(F));}else if(!F&&this.isChanged()){D.removeStyle('margin-top');D.removeStyle('margin-bottom');}if(!E&&C==d)D.removeAttribute('vspace');}else if(C==g){D.removeAttribute('vspace');D.removeStyle('margin-top');D.removeStyle('margin-bottom');}}},{id:'cmbAlign',type:'select',labelLayout:'horizontal',widths:['35%','65%'],style:'width:90px',label:b.lang.image.align,'default':'',items:[[b.lang.common.notSet,''],[b.lang.image.alignLeft,'left'],[b.lang.image.alignRight,'right']],onChange:function(){l(this.getDialog());o.call(this,'advanced:txtdlgGenStyle');},setup:function(C,D){if(C==d){var E=D.getStyle('float');switch(E){case 'inherit':case 'none':E='';}!E&&(E=(D.getAttribute('align')||'').toLowerCase());this.setValue(E);}},commit:function(C,D,E){var F=this.getValue();if(C==d||C==f){if(F)D.setStyle('float',F);else D.removeStyle('float');if(!E&&C==d){F=(D.getAttribute('align')||'').toLowerCase();switch(F){case 'left':case 'right':D.removeAttribute('align');}}}else if(C==g)D.removeStyle('float');}}]}]},{type:'vbox',height:'250px',children:[{type:'html',style:'width:95%;',html:'<div>'+CKEDITOR.tools.htmlEncode(b.lang.common.preview)+'<br>'+'<div id="'+y+'" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+'<div id="'+z+'" class="ImagePreviewBox"><table><tr><td>'+'<a href="javascript:void(0)" target="_blank" onclick="return false;" id="'+A+'">'+'<img id="'+B+'" alt="" /></a>'+(b.config.image_previewText||'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.')+'</td></tr></table></div></div>'}]}]}]},{id:'Link',label:b.lang.link.title,padding:0,elements:[{id:'txtUrl',type:'text',label:b.lang.common.url,style:'width: 100%','default':'',setup:function(C,D){if(C==e){var E=D.getAttribute('_cke_saved_href');
+if(!E)E=D.getAttribute('href');this.setValue(E);}},commit:function(C,D){var E=this;if(C==e)if(E.getValue()||E.isChanged()){D.setAttribute('_cke_saved_href',decodeURI(E.getValue()));D.setAttribute('href','javascript:void(0)/*'+CKEDITOR.tools.getNextNumber()+'*/');if(E.getValue()||!b.config.image_removeLinkByEmptyURL)E.getDialog().addLink=true;}}},{type:'button',id:'browse',filebrowser:{action:'Browse',target:'Link:txtUrl',url:b.config.filebrowserImageBrowseLinkUrl||b.config.filebrowserBrowseUrl},style:'float:right',hidden:true,label:b.lang.common.browseServer},{id:'cmbTarget',type:'select',label:b.lang.common.target,'default':'',items:[[b.lang.common.notSet,''],[b.lang.common.targetNew,'_blank'],[b.lang.common.targetTop,'_top'],[b.lang.common.targetSelf,'_self'],[b.lang.common.targetParent,'_parent']],setup:function(C,D){if(C==e)this.setValue(D.getAttribute('target'));},commit:function(C,D){if(C==e)if(this.getValue()||this.isChanged())D.setAttribute('target',this.getValue());}}]},{id:'Upload',hidden:true,filebrowser:'uploadButton',label:b.lang.image.upload,elements:[{type:'file',id:'upload',label:b.lang.image.btnUpload,style:'height:40px',size:38},{type:'fileButton',id:'uploadButton',filebrowser:'info:txtUrl',label:b.lang.image.btnUpload,'for':['Upload','upload']}]},{id:'advanced',label:b.lang.common.advancedTab,elements:[{type:'hbox',widths:['50%','25%','25%'],children:[{type:'text',id:'linkId',label:b.lang.common.id,setup:function(C,D){if(C==d)this.setValue(D.getAttribute('id'));},commit:function(C,D){if(C==d)if(this.getValue()||this.isChanged())D.setAttribute('id',this.getValue());}},{id:'cmbLangDir',type:'select',style:'width : 100px;',label:b.lang.common.langDir,'default':'',items:[[b.lang.common.notSet,''],[b.lang.common.langDirLtr,'ltr'],[b.lang.common.langDirRtl,'rtl']],setup:function(C,D){if(C==d)this.setValue(D.getAttribute('dir'));},commit:function(C,D){if(C==d)if(this.getValue()||this.isChanged())D.setAttribute('dir',this.getValue());}},{type:'text',id:'txtLangCode',label:b.lang.common.langCode,'default':'',setup:function(C,D){if(C==d)this.setValue(D.getAttribute('lang'));},commit:function(C,D){if(C==d)if(this.getValue()||this.isChanged())D.setAttribute('lang',this.getValue());}}]},{type:'text',id:'txtGenLongDescr',label:b.lang.common.longDescr,setup:function(C,D){if(C==d)this.setValue(D.getAttribute('longDesc'));},commit:function(C,D){if(C==d)if(this.getValue()||this.isChanged())D.setAttribute('longDesc',this.getValue());}},{type:'hbox',widths:['50%','50%'],children:[{type:'text',id:'txtGenClass',label:b.lang.common.cssClass,'default':'',setup:function(C,D){if(C==d)this.setValue(D.getAttribute('class'));
+},commit:function(C,D){if(C==d)if(this.getValue()||this.isChanged())D.setAttribute('class',this.getValue());}},{type:'text',id:'txtGenTitle',label:b.lang.common.advisoryTitle,'default':'',onChange:function(){l(this.getDialog());},setup:function(C,D){if(C==d)this.setValue(D.getAttribute('title'));},commit:function(C,D){var E=this;if(C==d){if(E.getValue()||E.isChanged())D.setAttribute('title',E.getValue());}else if(C==f)D.setAttribute('title',E.getValue());else if(C==g)D.removeAttribute('title');}}]},{type:'text',id:'txtdlgGenStyle',label:b.lang.common.cssStyle,'default':'',setup:function(C,D){if(C==d){var E=D.getAttribute('style');if(!E&&D.$.style.cssText)E=D.$.style.cssText;this.setValue(E);var F=D.$.style.height,G=D.$.style.width,H=(F?F:'').match(h),I=(G?G:'').match(h);this.attributesInStyle={height:!!H,width:!!I};}},onChange:function(){o.call(this,['info:cmbFloat','info:cmbAlign','info:txtVSpace','info:txtHSpace','info:txtBorder','info:txtWidth','info:txtHeight']);l(this);},commit:function(C,D){if(C==d&&(this.getValue()||this.isChanged()))D.setAttribute('style',this.getValue());}}]}]};};CKEDITOR.dialog.add('image',function(b){return a(b,'image');});CKEDITOR.dialog.add('imagebutton',function(b){return a(b,'imagebutton');});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js
new file mode 100644
index 000000000..91391f6d4
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('anchor',function(a){var b=function(c,d,e){var g=this;g.editMode=true;g.editObj=e;var f=g.editObj.getAttribute('name');if(f)g.setValueOf('info','txtName',f);else g.setValueOf('info','txtName','');};return{title:a.lang.anchor.title,minWidth:300,minHeight:60,onOk:function(){var f=this;var c=f.getValueOf('info','txtName'),d=CKEDITOR.env.ie?a.document.createElement('<a name="'+CKEDITOR.tools.htmlEncode(c)+'">'):a.document.createElement('a');if(f.editMode){f.editObj.copyAttributes(d,{name:1});f.editObj.moveChildren(d);}d.removeAttribute('_cke_saved_name');d.setAttribute('name',c);var e=a.createFakeElement(d,'cke_anchor','anchor');if(!f.editMode)a.insertElement(e);else{e.replace(f.fakeObj);a.getSelection().selectElement(e);}return true;},onShow:function(){var e=this;e.editObj=false;e.fakeObj=false;e.editMode=false;var c=a.getSelection(),d=c.getSelectedElement();if(d&&d.getAttribute('_cke_real_element_type')&&d.getAttribute('_cke_real_element_type')=='anchor'){e.fakeObj=d;d=a.restoreRealElement(e.fakeObj);b.apply(e,[a,c,d]);c.selectElement(e.fakeObj);}e.getContentElement('info','txtName').focus();},contents:[{id:'info',label:a.lang.anchor.title,accessKey:'I',elements:[{type:'text',id:'txtName',label:a.lang.anchor.name,required:true,validate:function(){if(!this.getValue()){alert(a.lang.anchor.errorName);return false;}return true;}}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js
new file mode 100644
index 000000000..82467f094
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js
@@ -0,0 +1,11 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('link',function(a){var b=CKEDITOR.plugins.link,c=function(){var C=this.getDialog(),D=C.getContentElement('target','popupFeatures'),E=C.getContentElement('target','linkTargetName'),F=this.getValue();if(!D||!E)return;D=D.getElement();D.hide();E.setValue('');switch(F){case 'frame':E.setLabel(a.lang.link.targetFrameName);E.getElement().show();break;case 'popup':D.show();E.setLabel(a.lang.link.targetPopupName);E.getElement().show();break;default:E.setValue(F);E.getElement().hide();break;}},d=function(){var C=this.getDialog(),D=['urlOptions','anchorOptions','emailOptions'],E=this.getValue(),F=C.definition.getContents('upload'),G=F&&F.hidden;if(E=='url'){if(a.config.linkShowTargetTab)C.showPage('target');if(!G)C.showPage('upload');}else{C.hidePage('target');if(!G)C.hidePage('upload');}for(var H=0;H<D.length;H++){var I=C.getContentElement('info',D[H]);if(!I)continue;I=I.getElement().getParent().getParent();if(D[H]==E+'Options')I.show();else I.hide();}},e=/^javascript:/,f=/^mailto:([^?]+)(?:\?(.+))?$/,g=/subject=([^;?:@&=$,\/]*)/,h=/body=([^;?:@&=$,\/]*)/,i=/^#(.*)$/,j=/^((?:http|https|ftp|news):\/\/)?(.*)$/,k=/^(_(?:self|top|parent|blank))$/,l=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,m=/^javascript:([^(]+)\(([^)]+)\)$/,n=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,o=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,p=function(C,D){var E=D&&(D.getAttribute('_cke_saved_href')||D.getAttribute('href'))||'',F,G,H,I,J={};if(F=E.match(e))if(y=='encode')E=E.replace(l,function(Z,aa,ab){return 'mailto:'+String.fromCharCode.apply(String,aa.split(','))+(ab&&w(ab));});else if(y)E.replace(m,function(Z,aa,ab){if(aa==z.name){J.type='email';var ac=J.email={},ad=/[^,\s]+/g,ae=/(^')|('$)/g,af=ab.match(ad),ag=af.length,ah,ai;for(var aj=0;aj<ag;aj++){ai=decodeURIComponent(w(af[aj].replace(ae,'')));ah=z.params[aj].toLowerCase();ac[ah]=ai;}ac.address=[ac.name,ac.domain].join('@');}});if(!J.type)if(H=E.match(i)){J.type='anchor';J.anchor={};J.anchor.name=J.anchor.id=H[1];}else if(G=E.match(f)){var K=E.match(g),L=E.match(h);J.type='email';var M=J.email={};M.address=G[1];K&&(M.subject=decodeURIComponent(K[1]));L&&(M.body=decodeURIComponent(L[1]));}else if(E&&(I=E.match(j))){J.type='url';J.url={};J.url.protocol=I[1];J.url.url=I[2];}else J.type='url';if(D){var N=D.getAttribute('target');J.target={};J.adv={};if(!N){var O=D.getAttribute('_cke_pa_onclick')||D.getAttribute('onclick'),P=O&&O.match(n);
+if(P){J.target.type='popup';J.target.name=P[1];var Q;while(Q=o.exec(P[2])){if(Q[2]=='yes'||Q[2]=='1')J.target[Q[1]]=true;else if(isFinite(Q[2]))J.target[Q[1]]=Q[2];}}}else{var R=N.match(k);if(R)J.target.type=J.target.name=N;else{J.target.type='frame';J.target.name=N;}}var S=this,T=function(Z,aa){var ab=D.getAttribute(aa);if(ab!==null)J.adv[Z]=ab||'';};T('advId','id');T('advLangDir','dir');T('advAccessKey','accessKey');T('advName','name');T('advLangCode','lang');T('advTabIndex','tabindex');T('advTitle','title');T('advContentType','type');T('advCSSClasses','class');T('advCharset','charset');T('advStyles','style');}var U=C.document.getElementsByTag('img'),V=new CKEDITOR.dom.nodeList(C.document.$.anchors),W=J.anchors=[];for(var X=0;X<U.count();X++){var Y=U.getItem(X);if(Y.getAttribute('_cke_realelement')&&Y.getAttribute('_cke_real_element_type')=='anchor')W.push(C.restoreRealElement(Y));}for(X=0;X<V.count();X++)W.push(V.getItem(X));for(X=0;X<W.length;X++){Y=W[X];W[X]={name:Y.getAttribute('name'),id:Y.getAttribute('id')};}this._.selectedElement=D;return J;},q=function(C,D){if(D[C])this.setValue(D[C][this.id]||'');},r=function(C){return q.call(this,'target',C);},s=function(C){return q.call(this,'adv',C);},t=function(C,D){if(!D[C])D[C]={};D[C][this.id]=this.getValue()||'';},u=function(C){return t.call(this,'target',C);},v=function(C){return t.call(this,'adv',C);};function w(C){return C.replace(/\\'/g,"'");};function x(C){return C.replace(/'/g,'\\$&');};var y=a.config.emailProtection||'';if(y&&y!='encode'){var z={};y.replace(/^([^(]+)\(([^)]+)\)$/,function(C,D,E){z.name=D;z.params=[];E.replace(/[^,\s]+/g,function(F){z.params.push(F);});});}function A(C){var D,E=z.name,F=z.params,G,H;D=[E,'('];for(var I=0;I<F.length;I++){G=F[I].toLowerCase();H=C[G];I>0&&D.push(',');D.push("'",H?x(encodeURIComponent(C[G])):'',"'");}D.push(')');return D.join('');};function B(C){var D,E=C.length,F=[];for(var G=0;G<E;G++){D=C.charCodeAt(G);F.push(D);}return 'String.fromCharCode('+F.join(',')+')';};return{title:a.lang.link.title,minWidth:350,minHeight:230,contents:[{id:'info',label:a.lang.link.info,title:a.lang.link.info,elements:[{id:'linkType',type:'select',label:a.lang.link.type,'default':'url',items:[[a.lang.link.toUrl,'url'],[a.lang.link.toAnchor,'anchor'],[a.lang.link.toEmail,'email']],onChange:d,setup:function(C){if(C.type)this.setValue(C.type);},commit:function(C){C.type=this.getValue();}},{type:'vbox',id:'urlOptions',children:[{type:'hbox',widths:['25%','75%'],children:[{id:'protocol',type:'select',label:a.lang.common.protocol,'default':'http://',items:[['http://‎','http://'],['https://‎','https://'],['ftp://‎','ftp://'],['news://‎','news://'],[a.lang.link.other,'']],setup:function(C){if(C.url)this.setValue(C.url.protocol||'');
+},commit:function(C){if(!C.url)C.url={};C.url.protocol=this.getValue();}},{type:'text',id:'url',label:a.lang.common.url,required:true,onLoad:function(){this.allowOnChange=true;},onKeyUp:function(){var H=this;H.allowOnChange=false;var C=H.getDialog().getContentElement('info','protocol'),D=H.getValue(),E=/^(http|https|ftp|news):\/\/(?=.)/gi,F=/^((javascript:)|[#\/\.\?])/gi,G=E.exec(D);if(G){H.setValue(D.substr(G[0].length));C.setValue(G[0].toLowerCase());}else if(F.test(D))C.setValue('');H.allowOnChange=true;},onChange:function(){if(this.allowOnChange)this.onKeyUp();},validate:function(){var C=this.getDialog();if(C.getContentElement('info','linkType')&&C.getValueOf('info','linkType')!='url')return true;if(this.getDialog().fakeObj)return true;var D=CKEDITOR.dialog.validate.notEmpty(a.lang.link.noUrl);return D.apply(this);},setup:function(C){this.allowOnChange=false;if(C.url)this.setValue(C.url.url);this.allowOnChange=true;},commit:function(C){this.onChange();if(!C.url)C.url={};C.url.url=this.getValue();this.allowOnChange=false;}}],setup:function(C){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().show();}},{type:'button',id:'browse',hidden:'true',filebrowser:'info:url',label:a.lang.common.browseServer}]},{type:'vbox',id:'anchorOptions',width:260,align:'center',padding:0,children:[{type:'fieldset',id:'selectAnchorText',label:a.lang.link.selectAnchor,setup:function(C){if(C.anchors.length>0)this.getElement().show();else this.getElement().hide();},children:[{type:'hbox',id:'selectAnchor',children:[{type:'select',id:'anchorName','default':'',label:a.lang.link.anchorName,style:'width: 100%;',items:[['']],setup:function(C){var F=this;F.clear();F.add('');for(var D=0;D<C.anchors.length;D++){if(C.anchors[D].name)F.add(C.anchors[D].name);}if(C.anchor)F.setValue(C.anchor.name);var E=F.getDialog().getContentElement('info','linkType');if(E&&E.getValue()=='email')F.focus();},commit:function(C){if(!C.anchor)C.anchor={};C.anchor.name=this.getValue();}},{type:'select',id:'anchorId','default':'',label:a.lang.link.anchorId,style:'width: 100%;',items:[['']],setup:function(C){var E=this;E.clear();E.add('');for(var D=0;D<C.anchors.length;D++){if(C.anchors[D].id)E.add(C.anchors[D].id);}if(C.anchor)E.setValue(C.anchor.id);},commit:function(C){if(!C.anchor)C.anchor={};C.anchor.id=this.getValue();}}],setup:function(C){if(C.anchors.length>0)this.getElement().show();else this.getElement().hide();}}]},{type:'html',id:'noAnchors',style:'text-align: center;',html:'<div role="label" tabIndex="-1">'+CKEDITOR.tools.htmlEncode(a.lang.link.noAnchors)+'</div>',focus:true,setup:function(C){if(C.anchors.length<1)this.getElement().show();
+else this.getElement().hide();}}],setup:function(C){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}},{type:'vbox',id:'emailOptions',padding:1,children:[{type:'text',id:'emailAddress',label:a.lang.link.emailAddress,required:true,validate:function(){var C=this.getDialog();if(!C.getContentElement('info','linkType')||C.getValueOf('info','linkType')!='email')return true;var D=CKEDITOR.dialog.validate.notEmpty(a.lang.link.noEmail);return D.apply(this);},setup:function(C){if(C.email)this.setValue(C.email.address);var D=this.getDialog().getContentElement('info','linkType');if(D&&D.getValue()=='email')this.select();},commit:function(C){if(!C.email)C.email={};C.email.address=this.getValue();}},{type:'text',id:'emailSubject',label:a.lang.link.emailSubject,setup:function(C){if(C.email)this.setValue(C.email.subject);},commit:function(C){if(!C.email)C.email={};C.email.subject=this.getValue();}},{type:'textarea',id:'emailBody',label:a.lang.link.emailBody,rows:3,'default':'',setup:function(C){if(C.email)this.setValue(C.email.body);},commit:function(C){if(!C.email)C.email={};C.email.body=this.getValue();}}],setup:function(C){if(!this.getDialog().getContentElement('info','linkType'))this.getElement().hide();}}]},{id:'target',label:a.lang.link.target,title:a.lang.link.target,elements:[{type:'hbox',widths:['50%','50%'],children:[{type:'select',id:'linkTargetType',label:a.lang.common.target,'default':'notSet',style:'width : 100%;',items:[[a.lang.common.notSet,'notSet'],[a.lang.link.targetFrame,'frame'],[a.lang.link.targetPopup,'popup'],[a.lang.common.targetNew,'_blank'],[a.lang.common.targetTop,'_top'],[a.lang.common.targetSelf,'_self'],[a.lang.common.targetParent,'_parent']],onChange:c,setup:function(C){if(C.target)this.setValue(C.target.type);c.call(this);},commit:function(C){if(!C.target)C.target={};C.target.type=this.getValue();}},{type:'text',id:'linkTargetName',label:a.lang.link.targetFrameName,'default':'',setup:function(C){if(C.target)this.setValue(C.target.name);},commit:function(C){if(!C.target)C.target={};C.target.name=this.getValue().replace(/\W/gi,'');}}]},{type:'vbox',width:260,align:'center',padding:2,id:'popupFeatures',children:[{type:'fieldset',label:a.lang.link.popupFeatures,children:[{type:'hbox',children:[{type:'checkbox',id:'resizable',label:a.lang.link.popupResizable,setup:r,commit:u},{type:'checkbox',id:'status',label:a.lang.link.popupStatusBar,setup:r,commit:u}]},{type:'hbox',children:[{type:'checkbox',id:'location',label:a.lang.link.popupLocationBar,setup:r,commit:u},{type:'checkbox',id:'toolbar',label:a.lang.link.popupToolbar,setup:r,commit:u}]},{type:'hbox',children:[{type:'checkbox',id:'menubar',label:a.lang.link.popupMenuBar,setup:r,commit:u},{type:'checkbox',id:'fullscreen',label:a.lang.link.popupFullScreen,setup:r,commit:u}]},{type:'hbox',children:[{type:'checkbox',id:'scrollbars',label:a.lang.link.popupScrollBars,setup:r,commit:u},{type:'checkbox',id:'dependent',label:a.lang.link.popupDependent,setup:r,commit:u}]},{type:'hbox',children:[{type:'text',widths:['30%','70%'],labelLayout:'horizontal',label:a.lang.link.popupWidth,id:'width',setup:r,commit:u},{type:'text',labelLayout:'horizontal',widths:['55%','45%'],label:a.lang.link.popupLeft,id:'left',setup:r,commit:u}]},{type:'hbox',children:[{type:'text',labelLayout:'horizontal',widths:['30%','70%'],label:a.lang.link.popupHeight,id:'height',setup:r,commit:u},{type:'text',labelLayout:'horizontal',label:a.lang.link.popupTop,widths:['55%','45%'],id:'top',setup:r,commit:u}]}]}]}]},{id:'upload',label:a.lang.link.upload,title:a.lang.link.upload,hidden:true,filebrowser:'uploadButton',elements:[{type:'file',id:'upload',label:a.lang.common.upload,style:'height:40px',size:29},{type:'fileButton',id:'uploadButton',label:a.lang.common.uploadSubmit,filebrowser:'info:url','for':['upload','upload']}]},{id:'advanced',label:a.lang.link.advanced,title:a.lang.link.advanced,elements:[{type:'vbox',padding:1,children:[{type:'hbox',widths:['45%','35%','20%'],children:[{type:'text',id:'advId',label:a.lang.link.id,setup:s,commit:v},{type:'select',id:'advLangDir',label:a.lang.link.langDir,'default':'',style:'width:110px',items:[[a.lang.common.notSet,''],[a.lang.link.langDirLTR,'ltr'],[a.lang.link.langDirRTL,'rtl']],setup:s,commit:v},{type:'text',id:'advAccessKey',width:'80px',label:a.lang.link.acccessKey,maxLength:1,setup:s,commit:v}]},{type:'hbox',widths:['45%','35%','20%'],children:[{type:'text',label:a.lang.link.name,id:'advName',setup:s,commit:v},{type:'text',label:a.lang.link.langCode,id:'advLangCode',width:'110px','default':'',setup:s,commit:v},{type:'text',label:a.lang.link.tabIndex,id:'advTabIndex',width:'80px',maxLength:5,setup:s,commit:v}]}]},{type:'vbox',padding:1,children:[{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:a.lang.link.advisoryTitle,'default':'',id:'advTitle',setup:s,commit:v},{type:'text',label:a.lang.link.advisoryContentType,'default':'',id:'advContentType',setup:s,commit:v}]},{type:'hbox',widths:['45%','55%'],children:[{type:'text',label:a.lang.link.cssClasses,'default':'',id:'advCSSClasses',setup:s,commit:v},{type:'text',label:a.lang.link.charset,'default':'',id:'advCharset',setup:s,commit:v}]},{type:'hbox',children:[{type:'text',label:a.lang.link.styles,'default':'',id:'advStyles',setup:s,commit:v}]}]}]}],onShow:function(){var F=this;
+F.fakeObj=false;var C=F.getParentEditor(),D=C.getSelection(),E=null;if((E=b.getSelectedLink(C))&&E.hasAttribute('href'))D.selectElement(E);else if((E=D.getSelectedElement())&&E.is('img')&&E.getAttribute('_cke_real_element_type')&&E.getAttribute('_cke_real_element_type')=='anchor'){F.fakeObj=E;E=C.restoreRealElement(F.fakeObj);D.selectElement(F.fakeObj);}else E=null;F.setupContent(p.apply(F,[C,E]));},onOk:function(){var C={href:'javascript:void(0)/*'+CKEDITOR.tools.getNextNumber()+'*/'},D=[],E={href:C.href},F=this,G=this.getParentEditor();this.commitContent(E);switch(E.type||'url'){case 'url':var H=E.url&&E.url.protocol!=undefined?E.url.protocol:'http://',I=E.url&&E.url.url||'';C._cke_saved_href=I.indexOf('/')===0?I:H+I;break;case 'anchor':var J=E.anchor&&E.anchor.name,K=E.anchor&&E.anchor.id;C._cke_saved_href='#'+(J||K||'');break;case 'email':var L,M=E.email,N=M.address;switch(y){case '':case 'encode':var O=encodeURIComponent(M.subject||''),P=encodeURIComponent(M.body||''),Q=[];O&&Q.push('subject='+O);P&&Q.push('body='+P);Q=Q.length?'?'+Q.join('&'):'';if(y=='encode'){L=["javascript:void(location.href='mailto:'+",B(N)];Q&&L.push("+'",x(Q),"'");L.push(')');}else L=['mailto:',N,Q];break;default:var R=N.split('@',2);M.name=R[0];M.domain=R[1];L=['javascript:',A(M)];}C._cke_saved_href=L.join('');break;}if(E.target)if(E.target.type=='popup'){var S=["window.open(this.href, '",E.target.name||'',"', '"],T=['resizable','status','location','toolbar','menubar','fullscreen','scrollbars','dependent'],U=T.length,V=function(ah){if(E.target[ah])T.push(ah+'='+E.target[ah]);};for(var W=0;W<U;W++)T[W]=T[W]+(E.target[T[W]]?'=yes':'=no');V('width');V('left');V('height');V('top');S.push(T.join(','),"'); return false;");C._cke_pa_onclick=S.join('');}else{if(E.target.type!='notSet'&&E.target.name)C.target=E.target.name;else D.push('target');D.push('_cke_pa_onclick','onclick');}if(E.adv){var X=function(ah,ai){var aj=E.adv[ah];if(aj)C[ai]=aj;else D.push(ai);};if(this._.selectedElement)X('advId','id');X('advLangDir','dir');X('advAccessKey','accessKey');X('advName','name');X('advLangCode','lang');X('advTabIndex','tabindex');X('advTitle','title');X('advContentType','type');X('advCSSClasses','class');X('advCharset','charset');X('advStyles','style');}if(!this._.selectedElement){var Y=G.getSelection(),Z=Y.getRanges(true);if(Z.length==1&&Z[0].collapsed){var aa=new CKEDITOR.dom.text(E.type=='email'?E.email.address:C._cke_saved_href,G.document);Z[0].insertNode(aa);Z[0].selectNodeContents(aa);Y.selectRanges(Z);
+}var ab=new CKEDITOR.style({element:'a',attributes:C});ab.type=CKEDITOR.STYLE_INLINE;ab.apply(G.document);if(E.adv&&E.adv.advId){var ac=this.getParentEditor().document.$.getElementsByTagName('a');for(W=0;W<ac.length;W++){if(ac[W].href==C.href){ac[W].id=E.adv.advId;break;}}}}else{var ad=this._.selectedElement,ae=ad.getAttribute('_cke_saved_href'),af=ad.getHtml();if(CKEDITOR.env.ie&&C.name!=ad.getAttribute('name')){var ag=new CKEDITOR.dom.element('<a name="'+CKEDITOR.tools.htmlEncode(C.name)+'">',G.document);Y=G.getSelection();ad.moveChildren(ag);ad.copyAttributes(ag,{name:1});ag.replace(ad);ad=ag;Y.selectElement(ad);}ad.setAttributes(C);ad.removeAttributes(D);if(ae==af||E.type=='email'&&af.indexOf('@')!=-1)ad.setHtml(E.type=='email'?E.email.address:C._cke_saved_href);if(ad.getAttribute('name'))ad.addClass('cke_anchor');else ad.removeClass('cke_anchor');if(this.fakeObj)G.createFakeElement(ad,'cke_anchor','anchor').replace(this.fakeObj);delete this._.selectedElement;}},onLoad:function(){if(!a.config.linkShowAdvancedTab)this.hidePage('advanced');if(!a.config.linkShowTargetTab)this.hidePage('target');},onFocus:function(){var C=this.getContentElement('info','linkType'),D;if(C&&C.getValue()=='url'){D=this.getContentElement('info','url');D.select();}}};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js
new file mode 100644
index 000000000..d95e54db8
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){function a(d,e){var f;try{f=d.getSelection().getRanges()[0];}catch(g){return null;}f.shrink(CKEDITOR.SHRINK_TEXT);return f.getCommonAncestor().getAscendant(e,true);};var b={a:'lower-alpha',A:'upper-alpha',i:'lower-roman',I:'upper-roman',1:'decimal',disc:'disc',circle:'circle',square:'square'};function c(d,e){if(e=='bulletedListStyle')return{title:d.lang.list.bulletedTitle,minWidth:300,minHeight:50,contents:[{id:'info',accessKey:'I',elements:[{type:'select',label:d.lang.list.type,id:'type',style:'width: 150px; margin: auto;',items:[[d.lang.list.notset,''],[d.lang.list.circle,'circle'],[d.lang.list.disc,'disc'],[d.lang.list.square,'square']],setup:function(g){var h=g.getStyle('list-style-type')||b[g.getAttribute('type')]||g.getAttribute('type')||'';this.setValue(h);},commit:function(g){var h=this.getValue();if(h)g.setStyle('list-style-type',h);else g.removeStyle('list-style-type');}}]}],onShow:function(){var g=this.getParentEditor(),h=a(g,'ul');h&&this.setupContent(h);},onOk:function(){var g=this.getParentEditor(),h=a(g,'ul');h&&this.commitContent(h);}};else if(e=='numberedListStyle'){var f=[[d.lang.list.notset,''],[d.lang.list.lowerRoman,'lower-roman'],[d.lang.list.upperRoman,'upper-roman'],[d.lang.list.lowerAlpha,'lower-alpha'],[d.lang.list.upperAlpha,'upper-alpha'],[d.lang.list.decimal,'decimal']];if(!CKEDITOR.env.ie||CKEDITOR.env.version>7)f.concat([[d.lang.list.armenian,'armenian'],[d.lang.list.decimalLeadingZero,'decimal-leading-zero'],[d.lang.list.georgian,'georgian'],[d.lang.list.lowerGreek,'lower-greek']]);return{title:d.lang.list.numberedTitle,minWidth:300,minHeight:50,contents:[{id:'info',accessKey:'I',elements:[{type:'hbox',widths:['25%','75%'],children:[{label:d.lang.list.start,type:'text',id:'start',validate:CKEDITOR.dialog.validate.integer(d.lang.list.validateStartNumber),setup:function(g){var h=g.getAttribute('start')||1;h&&this.setValue(h);},commit:function(g){g.setAttribute('start',this.getValue());}},{type:'select',label:d.lang.list.type,id:'type',style:'width: 100%;',items:f,setup:function(g){var h=g.getStyle('list-style-type')||b[g.getAttribute('type')]||g.getAttribute('type')||'';this.setValue(h);},commit:function(g){var h=this.getValue();if(h)g.setStyle('list-style-type',h);else g.removeStyle('list-style-type');}}]}]}],onShow:function(){var g=this.getParentEditor(),h=a(g,'ol');h&&this.setupContent(h);},onOk:function(){var g=this.getParentEditor(),h=a(g,'ol');h&&this.commitContent(h);}};}};CKEDITOR.dialog.add('numberedListStyle',function(d){return c(d,'numberedListStyle');
+});CKEDITOR.dialog.add('bulletedListStyle',function(d){return c(d,'bulletedListStyle');});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js
new file mode 100644
index 000000000..922fa662b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js
@@ -0,0 +1,10 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.htmlParser.fragment.prototype,b=CKEDITOR.htmlParser.element.prototype;a.onlyChild=b.onlyChild=function(){var h=this.children,i=h.length,j=i==1&&h[0];return j||null;};b.removeAnyChildWithName=function(h){var i=this.children,j=[],k;for(var l=0;l<i.length;l++){k=i[l];if(!k.name)continue;if(k.name==h){j.push(k);i.splice(l--,1);}j=j.concat(k.removeAnyChildWithName(h));}return j;};b.getAncestor=function(h){var i=this.parent;while(i&&!(i.name&&i.name.match(h)))i=i.parent;return i;};a.firstChild=b.firstChild=function(h){var i;for(var j=0;j<this.children.length;j++){i=this.children[j];if(h(i))return i;else if(i.name){i=i.firstChild(h);if(i)return i;}}return null;};b.addStyle=function(h,i,j){var n=this;var k,l='';if(typeof i=='string')l+=h+':'+i+';';else{if(typeof h=='object')for(var m in h){if(h.hasOwnProperty(m))l+=m+':'+h[m]+';';}else l+=h;j=i;}if(!n.attributes)n.attributes={};k=n.attributes.style||'';k=(j?[l,k]:[k,l]).join(';');n.attributes.style=k.replace(/^;|;(?=;)/,'');};CKEDITOR.dtd.parentOf=function(h){var i={};for(var j in this){if(j.indexOf('$')==-1&&this[j][h])i[j]=1;}return i;};var c=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i,d=/^(?:\b0[^\s]*\s*){1,4}$/,e=0,f;CKEDITOR.plugins.pastefromword={utils:{createListBulletMarker:function(h,i){var j=new CKEDITOR.htmlParser.element('cke:listbullet'),k;if(!h){h='decimal';k='ol';}else if(h[2]){if(!isNaN(h[1]))h='decimal';else if(/^[a-z]+$/.test(h[1]))h='lower-alpha';else if(/^[A-Z]+$/.test(h[1]))h='upper-alpha';else h='decimal';k='ol';}else{if(/[l\u00B7\u2002]/.test(h[1]))h='disc';else if(/[\u006F\u00D8]/.test(h[1]))h='circle';else if(/[\u006E\u25C6]/.test(h[1]))h='square';else h='disc';k='ul';}j.attributes={'cke:listtype':k,style:'list-style-type:'+h+';'};j.add(new CKEDITOR.htmlParser.text(i));return j;},isListBulletIndicator:function(h){var i=h.attributes&&h.attributes.style;if(/mso-list\s*:\s*Ignore/i.test(i))return true;},isContainingOnlySpaces:function(h){var i;return(i=h.onlyChild())&&/^(:?\s|&nbsp;)+$/.test(i.value);},resolveList:function(h){var i=h.attributes,j;if((j=h.removeAnyChildWithName('cke:listbullet'))&&j.length&&(j=j[0])){h.name='cke:li';if(i.style)i.style=CKEDITOR.plugins.pastefromword.filters.stylesFilter([['text-indent'],['line-height'],[/^margin(:?-left)?$/,null,function(m){var n=m.split(' ');m=n[3]||n[1]||n[0];m=parseInt(m,10);if(!e&&f&&m>f)e=m-f;i['cke:margin']=f=m;}]])(i.style,h)||'';var k=j.attributes,l=k.style;h.addStyle(l);
+CKEDITOR.tools.extend(i,k);return true;}return false;},convertToPx:(function(){var h=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(h);return function(i){if(c.test(i)){h.setStyle('width',i);return h.$.clientWidth+'px';}return i;};})(),getStyleComponents:(function(){var h=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(h);return function(i,j,k){h.setStyle(i,j);var l={},m=k.length;for(var n=0;n<m;n++)l[k[n]]=h.getStyle(k[n]);return l;};})(),listDtdParents:CKEDITOR.dtd.parentOf('ol')},filters:{flattenList:function(h){var i=h.attributes,j=h.parent,k,l=1;while(j){j.attributes&&j.attributes['cke:list']&&l++;j=j.parent;}switch(i.type){case 'a':k='lower-alpha';break;}var m=h.children,n;for(var o=0;o<m.length;o++){n=m[o];var p=n.attributes;if(n.name in CKEDITOR.dtd.$listItem){var q=n.children,r=q.length,s=q[r-1];if(s.name in CKEDITOR.dtd.$list){m.splice(o+1,0,s);s.parent=h;if(!--q.length)m.splice(o,1);}n.name='cke:li';p['cke:indent']=l;f=0;p['cke:listtype']=h.name;k&&n.addStyle('list-style-type',k,true);}}delete h.name;i['cke:list']=1;},assembleList:function(h){var i=h.children,j,k,l,m,n,o,p,q,r;for(var s=0;s<i.length;s++){j=i[s];if('cke:li'==j.name){j.name='li';k=j;l=k.attributes;m=k.attributes['cke:listtype'];n=parseInt(l['cke:indent'],10)||e&&Math.ceil(l['cke:margin']/e)||1;l.style&&(l.style=CKEDITOR.plugins.pastefromword.filters.stylesFilter([['list-style-type',m=='ol'?'decimal':'disc']])(l.style)||'');if(!p){p=new CKEDITOR.htmlParser.element(m);p.add(k);i[s]=p;}else{if(n>r){p=new CKEDITOR.htmlParser.element(m);p.add(k);o.add(p);}else if(n<r){var t=r-n,u;while(t--&&(u=p.parent))p=u.parent;p.add(k);}else p.add(k);i.splice(s--,1);}o=k;r=n;}else p=null;}e=0;},falsyFilter:function(h){return false;},stylesFilter:function(h,i){return function(j,k){var l=[];j.replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(n,o,p){o=o.toLowerCase();o=='font-family'&&(p=p.replace(/["']/g,''));var q,r,s,t;for(var u=0;u<h.length;u++){if(h[u]){q=h[u][0];r=h[u][1];s=h[u][2];t=h[u][3];if(o.match(q)&&(!r||p.match(r))){o=t||o;i&&(s=s||p);if(typeof s=='function')s=s(p,k,o);if(s&&s.push)o=s[0],s=s[1];if(typeof s=='string')l.push([o,s]);return;}}}!i&&l.push([o,p]);});for(var m=0;m<l.length;m++)l[m]=l[m].join(':');return l.length?l.join(';')+';':false;
+};},elementMigrateFilter:function(h,i){return function(j){var k=i?new CKEDITOR.style(h,i)._.definition:h;j.name=k.element;CKEDITOR.tools.extend(j.attributes,CKEDITOR.tools.clone(k.attributes));j.addStyle(CKEDITOR.style.getStyleText(k));};},styleMigrateFilter:function(h,i){var j=this.elementMigrateFilter;return function(k,l){var m=new CKEDITOR.htmlParser.element(null),n={};n[i]=k;j(h,n)(m);m.children=l.children;l.children=[m];};},bogusAttrFilter:function(h,i){if(i.name.indexOf('cke:')==-1)return false;},applyStyleFilter:null},getRules:function(h){var i=CKEDITOR.dtd,j=CKEDITOR.tools.extend({},i.$block,i.$listItem,i.$tableContent),k=h.config,l=this.filters,m=l.falsyFilter,n=l.stylesFilter,o=l.elementMigrateFilter,p=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),q=this.utils.createListBulletMarker,r=l.flattenList,s=l.assembleList,t=this.utils.isListBulletIndicator,u=this.utils.isContainingOnlySpaces,v=this.utils.resolveList,w=this.utils.convertToPx,x=this.utils.getStyleComponents,y=this.utils.listDtdParents,z=k.pasteFromWordRemoveFontStyles!==false,A=k.pasteFromWordRemoveStyles!==false;return{elementNames:[[/meta|link|script/,'']],root:function(B){B.filterChildren();s(B);},elements:{'^':function(B){var C;if(CKEDITOR.env.gecko&&(C=l.applyStyleFilter))C(B);},$:function(B){var C=B.name||'',D=B.attributes;if(C in j&&D.style)D.style=n([[/^(:?width|height)$/,null,w]])(D.style)||'';if(C.match(/h\d/)){B.filterChildren();if(v(B))return;o(k['format_'+C])(B);}else if(C in i.$inline){B.filterChildren();if(u(B))delete B.name;}else if(C.indexOf(':')!=-1&&C.indexOf('cke')==-1){B.filterChildren();if(C=='v:imagedata'){var E=B.attributes['o:href'];if(E)B.attributes.src=E;B.name='img';return;}delete B.name;}if(C in y){B.filterChildren();s(B);}},style:function(B){if(CKEDITOR.env.gecko){var C=B.onlyChild().value.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/),D=C&&C[1],E={};if(D){D.replace(/[\n\r]/g,'').replace(/(.+?)\{(.+?)\}/g,function(F,G,H){G=G.split(',');var I=G.length,J;for(var K=0;K<I;K++)CKEDITOR.tools.trim(G[K]).replace(/^(\w+)(\.[\w-]+)?$/g,function(L,M,N){M=M||'*';N=N.substring(1,N.length);if(N.match(/MsoNormal/))return;if(!E[M])E[M]={};if(N)E[M][N]=H;else E[M]=H;});});l.applyStyleFilter=function(F){var G=E['*']?'*':F.name,H=F.attributes&&F.attributes['class'],I;if(G in E){I=E[G];if(typeof I=='object')I=I[H];I&&F.addStyle(I,true);}};}}return false;},p:function(B){B.filterChildren();if(v(B))return;if(k.enterMode==CKEDITOR.ENTER_BR){delete B.name;B.add(new CKEDITOR.htmlParser.element('br'));
+}else o(k['format_'+(k.enterMode==CKEDITOR.ENTER_P?'p':'div')])(B);},div:function(B){var C=B.onlyChild();if(C&&C.name=='table'){var D=B.attributes;C.attributes=CKEDITOR.tools.extend(C.attributes,D);D.style&&C.addStyle(D.style);var E=new CKEDITOR.htmlParser.element('div');E.addStyle('clear','both');B.add(E);delete B.name;}},td:function(B){if(B.getAncestor('thead'))B.name='th';},ol:r,ul:r,dl:r,font:function(B){if(!CKEDITOR.env.gecko&&t(B.parent)){delete B.name;return;}B.filterChildren();var C=B.attributes,D=C.style,E=B.parent;if('font'==E.name){CKEDITOR.tools.extend(E.attributes,B.attributes);D&&E.addStyle(D);delete B.name;}else{D=D||'';if(C.color){C.color!='#000000'&&(D+='color:'+C.color+';');delete C.color;}if(C.face){D+='font-family:'+C.face+';';delete C.face;}if(C.size){D+='font-size:'+(C.size>3?'large':C.size<3?'small':'medium')+';';delete C.size;}B.name='span';B.addStyle(D);}},span:function(B){if(!CKEDITOR.env.gecko&&t(B.parent))return false;B.filterChildren();if(u(B)){delete B.name;return null;}if(!CKEDITOR.env.gecko&&t(B)){var C=B.firstChild(function(J){return J.value||J.name=='img';}),D=C&&(C.value||'l.'),E=D.match(/^([^\s]+?)([.)]?)$/);return q(E,D);}var F=B.children,G=B.attributes,H=G&&G.style,I=F&&F[0];if(H)G.style=n([['line-height'],[/^font-family$/,null,!z?p(k.font_style,'family'):null],[/^font-size$/,null,!z?p(k.fontSize_style,'size'):null],[/^color$/,null,!z?p(k.colorButton_foreStyle,'color'):null],[/^background-color$/,null,!z?p(k.colorButton_backStyle,'color'):null]])(H,B)||'';return null;},b:o(k.coreStyles_bold),i:o(k.coreStyles_italic),u:o(k.coreStyles_underline),s:o(k.coreStyles_strike),sup:o(k.coreStyles_superscript),sub:o(k.coreStyles_subscript),a:function(B){var C=B.attributes;if(C&&!C.href&&C.name)delete B.name;},'cke:listbullet':function(B){if(B.getAncestor(/h\d/)&&!k.pasteFromWordNumberedHeadingToList)delete B.name;}},attributeNames:[[/^onmouse(:?out|over)/,''],[/^onload$/,''],[/(?:v|o):\w+/,''],[/^lang/,'']],attributes:{style:n(A?[[/^margin$|^margin-(?!bottom|top)/,null,function(B,C,D){if(C.name in {p:1,div:1}){var E=k.contentsLangDirection=='ltr'?'margin-left':'margin-right';if(D=='margin')B=x(D,B,[E])[E];else if(D!=E)return null;if(B&&!d.test(B))return[E,B];}return null;}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(B,C){if(C.name=='img')return B;}],[/^width|height$/,null,function(B,C){if(C.name in {table:1,td:1,th:1,img:1})return B;}]]:[[/^mso-/],[/-color$/,null,function(B){if(B=='transparent')return false;
+if(CKEDITOR.env.gecko)return B.replace(/-moz-use-text-color/g,'transparent');}],[/^margin$/,d],['text-indent','0cm'],['page-break-before'],['tab-stops'],['display','none'],z?[/font-?/]:null],A),width:function(B,C){if(C.name in i.$tableContent)return false;},border:function(B,C){if(C.name in i.$tableContent)return false;},'class':m,bgcolor:m,valign:A?m:function(B,C){C.addStyle('vertical-align',B);return false;}},comment:!CKEDITOR.env.ie?function(B,C){var D=B.match(/<img.*?>/),E=B.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);if(E){var F=E[1]||D&&'l.',G=F&&F.match(/>([^\s]+?)([.)]?)</);return q(G,F);}if(CKEDITOR.env.gecko&&D){var H=CKEDITOR.htmlParser.fragment.fromHtml(D[0]).children[0],I=C.previous,J=I&&I.value.match(/<v:imagedata[^>]*o:href=['"](.*?)['"]/),K=J&&J[1];K&&(H.attributes.src=K);return H;}return false;}:m};}};var g=function(){this.dataFilter=new CKEDITOR.htmlParser.filter();};g.prototype={toHtml:function(h){var i=CKEDITOR.htmlParser.fragment.fromHtml(h,false),j=new CKEDITOR.htmlParser.basicWriter();i.writeHtml(j,this.dataFilter);return j.getHtml(true);}};CKEDITOR.cleanWord=function(h,i){if(CKEDITOR.env.gecko)h=h.replace(/(<!--\[if[^<]*?\])-->([\S\s]*?)<!--(\[endif\]-->)/gi,'$1$2$3');var j=new g(),k=j.dataFilter;k.addRules(CKEDITOR.plugins.pastefromword.getRules(i));i.fire('beforeCleanWord',{filter:k});try{h=j.toHtml(h,false);}catch(l){alert(i.lang.pastefromword.error);}h=h.replace(/cke:.*?".*?"/g,'');h=h.replace(/style=""/g,'');h=h.replace(/<span>/g,'');return h;};})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js
new file mode 100644
index 000000000..e68c78c73
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){CKEDITOR.dialog.add('pastetext',function(a){return{title:a.lang.pasteText.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?368:350,minHeight:240,onShow:function(){this.getContentElement('general','content').getInputElement().setValue('');},onOk:function(){var b=this.getContentElement('general','content').getInputElement().getValue(),c=this.getParentEditor();setTimeout(function(){c.fire('paste',{text:b});},0);},contents:[{label:a.lang.common.generalTab,id:'general',elements:[{type:'html',id:'pasteMsg',html:'<div style="white-space:normal;width:340px;">'+a.lang.clipboard.pasteMsg+'</div>'},{type:'textarea',id:'content',className:'cke_pastetext',onLoad:function(){var b=this.getDialog().getContentElement('general','pasteMsg').getElement(),c=this.getElement().getElementsByTag('textarea').getItem(0);c.setAttribute('aria-labelledby',b.$.id);c.setStyle('direction',a.config.contentsLangDirection);},focus:function(){this.getElement().focus();}}]}]};});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js
new file mode 100644
index 000000000..37297f25e
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('scaytcheck',function(a){var b=true,c,d=CKEDITOR.document,e=[],f,g=[],h=false,i=['dic_create,dic_restore','dic_rename,dic_delete'],j=['mixedCase','mixedWithDigits','allCaps','ignoreDomainNames'];function k(){return document.forms.optionsbar.options;};function l(){return document.forms.languagesbar.scayt_lang;};function m(x,y){if(!x)return;var z=x.length;if(z==undefined){x.checked=x.value==y.toString();return;}for(var A=0;A<z;A++){x[A].checked=false;if(x[A].value==y.toString())x[A].checked=true;}};var n=[{id:'options',label:a.lang.scayt.optionsTab,elements:[{type:'html',id:'options',html:'<form name="optionsbar"><div class="inner_options">\t<div class="messagebox"></div>\t<div style="display:none;">\t\t<input type="checkbox" name="options" id="allCaps" />\t\t<label for="allCaps" id="label_allCaps"></label>\t</div>\t<div style="display:none;">\t\t<input name="options" type="checkbox" id="ignoreDomainNames" />\t\t<label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>\t</div>\t<div style="display:none;">\t<input name="options" type="checkbox" id="mixedCase" />\t\t<label for="mixedCase" id="label_mixedCase"></label>\t</div>\t<div style="display:none;">\t\t<input name="options" type="checkbox" id="mixedWithDigits" />\t\t<label for="mixedWithDigits" id="label_mixedWithDigits"></label>\t</div></div></form>'}]},{id:'langs',label:a.lang.scayt.languagesTab,elements:[{type:'html',id:'langs',html:'<form name="languagesbar"><div class="inner_langs">\t<div class="messagebox"></div>\t <div style="float:left;width:45%;margin-left:5px;" id="scayt_lcol" ></div> <div style="float:left;width:45%;margin-left:15px;" id="scayt_rcol"></div></div></form>'}]},{id:'dictionaries',label:a.lang.scayt.dictionariesTab,elements:[{type:'html',style:'',id:'dictionaries',html:'<form name="dictionarybar"><div class="inner_dictionary" style="text-align:left; white-space:normal; width:320px; overflow: hidden;">\t<div style="margin:5px auto; width:80%;white-space:normal; overflow:hidden;" id="dic_message"> </div>\t<div style="margin:5px auto; width:80%;white-space:normal;"> <span class="cke_dialog_ui_labeled_label" >Dictionary name</span><br>\t\t<span class="cke_dialog_ui_labeled_content" >\t\t\t<div class="cke_dialog_ui_input_text">\t\t\t\t<input id="dic_name" type="text" class="cke_dialog_ui_input_text"/>\t\t</div></span></div>\t\t<div style="margin:5px auto; width:80%;white-space:normal;">\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_create">\t\t\t\t</a>\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_delete">\t\t\t\t</a>\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_rename">\t\t\t\t</a>\t\t\t<a style="display:none;" class="cke_dialog_ui_button" href="javascript:void(0)" id="dic_restore">\t\t\t\t</a>\t\t</div>\t<div style="margin:5px auto; width:95%;white-space:normal;" id="dic_info"></div></div></form>'}]},{id:'about',label:a.lang.scayt.aboutTab,elements:[{type:'html',id:'about',style:'margin: 5px 5px;',html:'<div id="scayt_about"></div>'}]}],o={title:a.lang.scayt.title,minWidth:360,minHeight:220,onShow:function(){var x=this;
+x.data=a.fire('scaytDialog',{});x.options=x.data.scayt_control.option();x.sLang=x.data.scayt_control.sLang;if(!x.data||!x.data.scayt||!x.data.scayt_control){alert('Error loading application service');x.hide();return;}var y=0;if(b)x.data.scayt.getCaption(a.langCode||'en',function(z){if(y++>0)return;c=z;q.apply(x);r.apply(x);b=false;});else r.apply(x);x.selectPage(x.data.tab);},onOk:function(){var x=this.data.scayt_control;x.option(this.options);var y=this.chosed_lang;x.setLang(y);x.refresh();},onCancel:function(){var x=k();for(f in x)x[f].checked=false;m(l(),'');},contents:g},p=CKEDITOR.plugins.scayt.getScayt(a);e=CKEDITOR.plugins.scayt.uiTabs;for(f in e){if(e[f]==1)g[g.length]=n[f];}if(e[2]==1)h=true;var q=function(){var x=this,y=x.data.scayt.getLangList(),z=['dic_create','dic_delete','dic_rename','dic_restore'],A=j,B;if(h){for(B=0;B<z.length;B++){var C=z[B];d.getById(C).setHtml('<span class="cke_dialog_ui_button">'+c['button_'+C]+'</span>');}d.getById('dic_info').setHtml(c.dic_info);}if(e[0]==1)for(B in A){var D='label_'+A[B],E=d.getById(D);if('undefined'!=typeof E&&'undefined'!=typeof c[D]&&'undefined'!=typeof x.options[A[B]]){E.setHtml(c[D]);var F=E.getParent();F.$.style.display='block';}}var G='<p><img src="'+window.scayt.getAboutInfo().logoURL+'" /></p>'+'<p>'+c.version+window.scayt.getAboutInfo().version.toString()+'</p>'+'<p>'+c.about_throwt_copy+'</p>';d.getById('scayt_about').setHtml(G);var H=function(R,S){var T=d.createElement('label');T.setAttribute('for','cke_option'+R);T.setHtml(S[R]);if(x.sLang==R)x.chosed_lang=R;var U=d.createElement('div'),V=CKEDITOR.dom.element.createFromHtml('<input id="cke_option'+R+'" type="radio" '+(x.sLang==R?'checked="checked"':'')+' value="'+R+'" name="scayt_lang" />');V.on('click',function(){this.$.checked=true;x.chosed_lang=R;});U.append(V);U.append(T);return{lang:S[R],code:R,radio:U};},I=[];if(e[1]==1){for(B in y.rtl)I[I.length]=H(B,y.ltr);for(B in y.ltr)I[I.length]=H(B,y.ltr);I.sort(function(R,S){return S.lang>R.lang?-1:1;});var J=d.getById('scayt_lcol'),K=d.getById('scayt_rcol');for(B=0;B<I.length;B++){var L=B<I.length/2?J:K;L.append(I[B].radio);}}var M={};M.dic_create=function(R,S,T){var U=T[0]+','+T[1],V=c.err_dic_create,W=c.succ_dic_create;window.scayt.createUserDictionary(S,function(X){v(U);u(T[1]);W=W.replace('%s',X.dname);t(W);},function(X){V=V.replace('%s',X.dname);s(V+'( '+(X.message||'')+')');});};M.dic_rename=function(R,S){var T=c.err_dic_rename||'',U=c.succ_dic_rename||'';window.scayt.renameUserDictionary(S,function(V){U=U.replace('%s',V.dname);
+w(S);t(U);},function(V){T=T.replace('%s',V.dname);w(S);s(T+'( '+(V.message||'')+' )');});};M.dic_delete=function(R,S,T){var U=T[0]+','+T[1],V=c.err_dic_delete,W=c.succ_dic_delete;window.scayt.deleteUserDictionary(function(X){W=W.replace('%s',X.dname);v(U);u(T[0]);w('');t(W);},function(X){V=V.replace('%s',X.dname);s(V);});};M.dic_restore=x.dic_restore||(function(R,S,T){var U=T[0]+','+T[1],V=c.err_dic_restore,W=c.succ_dic_restore;window.scayt.restoreUserDictionary(S,function(X){W=W.replace('%s',X.dname);v(U);u(T[1]);t(W);},function(X){V=V.replace('%s',X.dname);s(V);});});function N(R){var S=d.getById('dic_name').getValue();if(!S){s(' Dictionary name should not be empty. ');return false;}try{var T=id=R.data.getTarget().getParent(),U=T.getId();M[U].apply(null,[T,S,i]);}catch(V){s(' Dictionary error. ');}return true;};var O=(i[0]+','+i[1]).split(','),P;for(B=0,P=O.length;B<P;B+=1){var Q=d.getById(O[B]);if(Q)Q.on('click',N,this);}},r=function(){var x=this;if(e[0]==1){var y=k();for(var z=0,A=y.length;z<A;z++){var B=y[z].id,C=d.getById(B);if(C){y[z].checked=false;if(x.options[B]==1)y[z].checked=true;if(b)C.on('click',function(){x.options[this.getId()]=this.$.checked?1:0;});}}}if(e[1]==1){var D=d.getById('cke_option'+x.sLang);m(D.$,x.sLang);}if(h){window.scayt.getNameUserDictionary(function(E){var F=E.dname;v(i[0]+','+i[1]);if(F){d.getById('dic_name').setValue(F);u(i[1]);}else u(i[0]);},function(){d.getById('dic_name').setValue('');});t('');}};function s(x){d.getById('dic_message').setHtml('<span style="color:red;">'+x+'</span>');};function t(x){d.getById('dic_message').setHtml('<span style="color:blue;">'+x+'</span>');};function u(x){x=String(x);var y=x.split(',');for(var z=0,A=y.length;z<A;z+=1)d.getById(y[z]).$.style.display='inline';};function v(x){x=String(x);var y=x.split(',');for(var z=0,A=y.length;z<A;z+=1)d.getById(y[z]).$.style.display='none';};function w(x){d.getById('dic_name').$.value=x;};return o;});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css b/rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css
new file mode 100644
index 000000000..cbfa8441e
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+a{text-decoration:none;padding:2px 4px 4px 6px;display:block;border-width:1px;border-style:solid;margin:0;}a.cke_scayt_toogle:hover,a.cke_scayt_toogle:focus,a.cke_scayt_toogle:active{border-color:#316ac5;background-color:#dff1ff;color:#000;cursor:pointer;margin:0;}a.cke_scayt_toogle{color:#316ac5;border-color:#fff;}.scayt_enabled a.cke_scayt_item{color:#316ac5;border-color:#fff;margin:0;}.scayt_disabled a.cke_scayt_item{color:gray;border-color:#fff;}.scayt_enabled a.cke_scayt_item:hover,.scayt_enabled a.cke_scayt_item:focus,.scayt_enabled a.cke_scayt_item:active{border-color:#316ac5;background-color:#dff1ff;color:#000;cursor:pointer;}.scayt_disabled a.cke_scayt_item:hover,.scayt_disabled a.cke_scayt_item:focus,.scayt_disabled a.cke_scayt_item:active{border-color:gray;background-color:#dff1ff;color:gray;cursor:no-drop;}.cke_scayt_set_on,.cke_scayt_set_off{display:none;}.scayt_enabled .cke_scayt_set_on{display:none;}.scayt_disabled .cke_scayt_set_on{display:inline;}.scayt_disabled .cke_scayt_set_off{display:none;}.scayt_enabled .cke_scayt_set_off{display:inline;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js
new file mode 100644
index 000000000..f61c3b8fb
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('smiley',function(a){var b=a.config,c=a.lang.smiley,d=b.smiley_images,e=b.smiley_columns||8,f,g,h=function(o){var p=o.data.getTarget(),q=p.getName();if(q=='a')p=p.getChild(0);else if(q!='img')return;var r=p.getAttribute('cke_src'),s=p.getAttribute('title'),t=a.document.createElement('img',{attributes:{src:r,_cke_saved_src:r,title:s,alt:s}});a.insertElement(t);g.hide();o.data.preventDefault();},i=CKEDITOR.tools.addFunction(function(o,p){o=new CKEDITOR.dom.event(o);p=new CKEDITOR.dom.element(p);var q,r,s=o.getKeystroke(),t=a.lang.dir=='rtl';switch(s){case 38:if(q=p.getParent().getParent().getPrevious()){r=q.getChild([p.getParent().getIndex(),0]);r.focus();}o.preventDefault();break;case 40:if(q=p.getParent().getParent().getNext()){r=q.getChild([p.getParent().getIndex(),0]);if(r)r.focus();}o.preventDefault();break;case 32:h({data:o});o.preventDefault();break;case t?37:39:case 9:if(q=p.getParent().getNext()){r=q.getChild(0);r.focus();o.preventDefault(true);}else if(q=p.getParent().getParent().getNext()){r=q.getChild([0,0]);if(r)r.focus();o.preventDefault(true);}break;case t?39:37:case CKEDITOR.SHIFT+9:if(q=p.getParent().getPrevious()){r=q.getChild(0);r.focus();o.preventDefault(true);}else if(q=p.getParent().getParent().getPrevious()){r=q.getLast().getChild(0);r.focus();o.preventDefault(true);}break;default:return;}}),j=CKEDITOR.tools.getNextId()+'_smiley_emtions_label',k=['<div><span id="'+j+'" class="cke_voice_label">'+c.options+'</span>','<table role="listbox" aria-labelledby="'+j+'" style="width:100%;height:100%" cellspacing="2" cellpadding="2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style="position:absolute;"':'','><tbody>'],l=d.length;for(f=0;f<l;f++){if(f%e===0)k.push('<tr>');var m='cke_smile_label_'+f+'_'+CKEDITOR.tools.getNextNumber();k.push('<td class="cke_dark_background cke_centered" style="vertical-align: middle;"><a href="javascript:void(0)" role="option"',' aria-posinset="'+(f+1)+'"',' aria-setsize="'+l+'"',' aria-labelledby="'+m+'"',' class="cke_smile cke_hand" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ',i,', event, this );">','<img class="cke_hand" title="',b.smiley_descriptions[f],'" cke_src="',CKEDITOR.tools.htmlEncode(b.smiley_path+d[f]),'" alt="',b.smiley_descriptions[f],'"',' src="',CKEDITOR.tools.htmlEncode(b.smiley_path+d[f]),'"',CKEDITOR.env.ie?" onload=\"this.setAttribute('width', 2); this.removeAttribute('width');\" ":'','><span id="'+m+'" class="cke_voice_label">'+b.smiley_descriptions[f]+'</span>'+'</a>','</td>');
+if(f%e==e-1)k.push('</tr>');}if(f<e-1){for(;f<e-1;f++)k.push('<td></td>');k.push('</tr>');}k.push('</tbody></table></div>');var n={type:'html',html:k.join(''),onLoad:function(o){g=o.sender;},focus:function(){var o=this.getElement().getElementsByTag('a').getItem(0);o.focus();},onClick:h,style:'width: 100%; border-collapse: separate;'};return{title:a.lang.smiley.title,minWidth:270,minHeight:120,contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[n]}],buttons:[CKEDITOR.dialog.cancelButton]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js
new file mode 100644
index 000000000..df8f28877
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('specialchar',function(a){var b,c=a.lang.specialChar,d=function(k){var l=a.getSelection(),m=l.getRanges(true),n,o;a.fire('saveSnapshot');for(var p=m.length-1;p>=0;p--){n=m[p];n.deleteContents();o=CKEDITOR.dom.element.createFromHtml(k);n.insertNode(o);}if(n){n.moveToPosition(o,CKEDITOR.POSITION_AFTER_END);n.select();}a.fire('saveSnapshot');},e=function(k){var l,m;if(k.data)l=k.data.getTarget();else l=new CKEDITOR.dom.element(k);if(l.getName()=='a'&&(m=l.getChild(0).getHtml())){l.removeClass('cke_light_background');b.hide();if(CKEDITOR.env.gecko)d(m);else a.insertHtml(m);}},f=CKEDITOR.tools.addFunction(e),g,h=function(k,l){var m;l=l||k.data.getTarget();if(l.getName()=='span')l=l.getParent();if(l.getName()=='a'&&(m=l.getChild(0).getHtml())){if(g)i(null,g);var n=b.getContentElement('info','htmlPreview').getElement();b.getContentElement('info','charPreview').getElement().setHtml(m);n.setHtml(CKEDITOR.tools.htmlEncode(m));l.getParent().addClass('cke_light_background');g=l;}},i=function(k,l){l=l||k.data.getTarget();if(l.getName()=='span')l=l.getParent();if(l.getName()=='a'){b.getContentElement('info','charPreview').getElement().setHtml('&nbsp;');b.getContentElement('info','htmlPreview').getElement().setHtml('&nbsp;');l.getParent().removeClass('cke_light_background');g=undefined;}},j=CKEDITOR.tools.addFunction(function(k){k=new CKEDITOR.dom.event(k);var l=k.getTarget(),m,n,o=k.getKeystroke(),p=a.lang.dir=='rtl';switch(o){case 38:if(m=l.getParent().getParent().getPrevious()){n=m.getChild([l.getParent().getIndex(),0]);n.focus();i(null,l);h(null,n);}k.preventDefault();break;case 40:if(m=l.getParent().getParent().getNext()){n=m.getChild([l.getParent().getIndex(),0]);if(n&&n.type==1){n.focus();i(null,l);h(null,n);}}k.preventDefault();break;case 32:e({data:k});k.preventDefault();break;case p?37:39:case 9:if(m=l.getParent().getNext()){n=m.getChild(0);if(n.type==1){n.focus();i(null,l);h(null,n);k.preventDefault(true);}else i(null,l);}else if(m=l.getParent().getParent().getNext()){n=m.getChild([0,0]);if(n&&n.type==1){n.focus();i(null,l);h(null,n);k.preventDefault(true);}else i(null,l);}break;case p?39:37:case CKEDITOR.SHIFT+9:if(m=l.getParent().getPrevious()){n=m.getChild(0);n.focus();i(null,l);h(null,n);k.preventDefault(true);}else if(m=l.getParent().getParent().getPrevious()){n=m.getLast().getChild(0);n.focus();i(null,l);h(null,n);k.preventDefault(true);}else i(null,l);break;default:return;}});return{title:c.title,minWidth:430,minHeight:280,buttons:[CKEDITOR.dialog.cancelButton],charColumns:17,chars:['!','&quot;','#','$','%','&amp;',"'",'(',')','*','+','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','&lt;','=','&gt;','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','&euro;(EURO SIGN)','&lsquo;(LEFT SINGLE QUOTATION MARK)','&rsquo;(RIGHT SINGLE QUOTATION MARK)','&ldquo;(LEFT DOUBLE QUOTATION MARK)','&rdquo;(RIGHT DOUBLE QUOTATION MARK)','&ndash;(EN DASH)','&mdash;(EM DASH)','&iexcl;(INVERTED EXCLAMATION MARK)','&cent;(CENT SIGN)','&pound;(POUND SIGN)','&curren;(CURRENCY SIGN)','&yen;(YEN SIGN)','&brvbar;(BROKEN BAR)','&sect;(SECTION SIGN)','&uml;(DIAERESIS)','&copy;(COPYRIGHT SIGN)','&ordf;(FEMININE ORDINAL INDICATOR)','&laquo;(LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)','&not;(NOT SIGN)','&reg;(REGISTERED SIGN)','&macr;(MACRON)','&deg;(DEGREE SIGN)','&plusmn;(PLUS-MINUS SIGN)','&sup2;(SUPERSCRIPT TWO)','&sup3;(SUPERSCRIPT THREE)','&acute;(ACUTE ACCENT)','&micro;(MICRO SIGN)','&para;(PILCROW SIGN)','&middot;(MIDDLE DOT)','&cedil;(CEDILLA)','&sup1;(SUPERSCRIPT ONE)','&ordm;(MASCULINE ORDINAL INDICATOR)','&raquo;(RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)','&frac14;(VULGAR FRACTION ONE QUARTER)','&frac12;(VULGAR FRACTION ONE HALF)','&frac34;(VULGAR FRACTION THREE QUARTERS)','&iquest;(INVERTED QUESTION MARK)','&Agrave;(LATIN CAPITAL LETTER A WITH GRAVE)','&Aacute;(LATIN CAPITAL LETTER A WITH ACUTE)','&Acirc;(LATIN CAPITAL LETTER A WITH CIRCUMFLEX)','&Atilde;(LATIN CAPITAL LETTER A WITH TILDE)','&Auml;(LATIN CAPITAL LETTER A WITH DIAERESIS)','&Aring;(LATIN CAPITAL LETTER A WITH RING ABOVE)','&AElig;(LATIN CAPITAL LETTER AE)','&Ccedil;(LATIN CAPITAL LETTER C WITH CEDILLA)','&Egrave;(LATIN CAPITAL LETTER E WITH GRAVE)','&Eacute;(LATIN CAPITAL LETTER E WITH ACUTE)','&Ecirc;(LATIN CAPITAL LETTER E WITH CIRCUMFLEX)','&Euml;(LATIN CAPITAL LETTER E WITH DIAERESIS)','&Igrave;(LATIN CAPITAL LETTER I WITH GRAVE)','&Iacute;(LATIN CAPITAL LETTER I WITH ACUTE)','&Icirc;(LATIN CAPITAL LETTER I WITH CIRCUMFLEX)','&Iuml;(LATIN CAPITAL LETTER I WITH DIAERESIS)','&ETH;(LATIN CAPITAL LETTER ETH)','&Ntilde;(LATIN CAPITAL LETTER N WITH TILDE)','&Ograve;(LATIN CAPITAL LETTER O WITH GRAVE)','&Oacute;(LATIN CAPITAL LETTER O WITH ACUTE)','&Ocirc;(LATIN CAPITAL LETTER O WITH CIRCUMFLEX)','&Otilde;(LATIN CAPITAL LETTER O WITH TILDE)','&Ouml;(LATIN CAPITAL LETTER O WITH DIAERESIS)','&times;(MULTIPLICATION SIGN)','&Oslash;(LATIN CAPITAL LETTER O WITH STROKE)','&Ugrave;(LATIN CAPITAL LETTER U WITH GRAVE)','&Uacute;(LATIN CAPITAL LETTER U WITH ACUTE)','&Ucirc;(LATIN CAPITAL LETTER U WITH CIRCUMFLEX)','&Uuml;(LATIN CAPITAL LETTER U WITH DIAERESIS)','&Yacute;(LATIN CAPITAL LETTER Y WITH ACUTE)','&THORN;(LATIN CAPITAL LETTER THORN)','&szlig;(LATIN SMALL LETTER SHARP S)','&agrave;(LATIN SMALL LETTER A WITH GRAVE)','&aacute;(LATIN SMALL LETTER A WITH ACUTE)','&acirc;(LATIN SMALL LETTER A WITH CIRCUMFLEX)','&atilde;(LATIN SMALL LETTER A WITH TILDE)','&auml;(LATIN SMALL LETTER A WITH DIAERESIS)','&aring;(LATIN SMALL LETTER A WITH RING ABOVE)','&aelig;(LATIN SMALL LETTER AE)','&ccedil;(LATIN SMALL LETTER C WITH CEDILLA)','&egrave;(LATIN SMALL LETTER E WITH GRAVE)','&eacute;(LATIN SMALL LETTER E WITH ACUTE)','&ecirc;(LATIN SMALL LETTER E WITH CIRCUMFLEX)','&euml;(LATIN SMALL LETTER E WITH DIAERESIS)','&igrave;(LATIN SMALL LETTER I WITH GRAVE)','&iacute;(LATIN SMALL LETTER I WITH ACUTE)','&icirc;(LATIN SMALL LETTER I WITH CIRCUMFLEX)','&iuml;(LATIN SMALL LETTER I WITH DIAERESIS)','&eth;(LATIN SMALL LETTER ETH)','&ntilde;(LATIN SMALL LETTER N WITH TILDE)','&ograve;(LATIN SMALL LETTER O WITH GRAVE)','&oacute;(LATIN SMALL LETTER O WITH ACUTE)','&ocirc;(LATIN SMALL LETTER O WITH CIRCUMFLEX)','&otilde;(LATIN SMALL LETTER O WITH TILDE)','&ouml;(LATIN SMALL LETTER O WITH DIAERESIS)','&divide;(DIVISION SIGN)','&oslash;(LATIN SMALL LETTER O WITH STROKE)','&ugrave;(LATIN SMALL LETTER U WITH GRAVE)','&uacute;(LATIN SMALL LETTER U WITH ACUTE)','&ucirc;(LATIN SMALL LETTER U WITH CIRCUMFLEX)','&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)','&uuml;(LATIN SMALL LETTER U WITH DIAERESIS)','&yacute;(LATIN SMALL LETTER Y WITH ACUTE)','&thorn;(LATIN SMALL LETTER THORN)','&yuml;(LATIN SMALL LETTER Y WITH DIAERESIS)','&OElig;(LATIN CAPITAL LIGATURE OE)','&oelig;(LATIN SMALL LIGATURE OE)','&#372;(LATIN CAPITAL LETTER W WITH CIRCUMFLEX)','&#374(LATIN CAPITAL LETTER Y WITH CIRCUMFLEX)','&#373(LATIN SMALL LETTER W WITH CIRCUMFLEX)','&#375;(LATIN SMALL LETTER Y WITH CIRCUMFLEX)','&sbquo;(SINGLE LOW-9 QUOTATION MARK)','&#8219;(SINGLE HIGH-REVERSED-9 QUOTATION MARK)','&bdquo;(DOUBLE LOW-9 QUOTATION MARK)','&hellip;(HORIZONTAL ELLIPSIS)','&trade;(TRADE MARK SIGN)','&#9658;(BLACK RIGHT-POINTING POINTER)','&bull;(BULLET)','&rarr;(RIGHTWARDS ARROW)','&rArr;(RIGHTWARDS DOUBLE ARROW)','&hArr;(LEFT RIGHT DOUBLE ARROW)','&diams;(BLACK DIAMOND SUIT)','&asymp;(ALMOST EQUAL TO)'],onLoad:function(){var k=this.definition.charColumns,l=this.definition.chars,m=CKEDITOR.tools.getNextId()+'_specialchar_table_label',n=['<table role="listbox" aria-labelledby="'+m+'"'+' style="width: 320px; height: 100%; border-collapse: separate;"'+' align="center" cellspacing="2" cellpadding="2" border="0">'],o=0,p=l.length,q,r;
+while(o<p){n.push('<tr>');for(var s=0;s<k;s++,o++){if(q=l[o]){r='';q=q.replace(/\((.*?)\)/,function(u,v){r=v;return '';});r=r||q;var t='cke_specialchar_label_'+o+'_'+CKEDITOR.tools.getNextNumber();n.push('<td class="cke_dark_background" style="cursor: default" role="presentation"><a href="javascript: void(0);" role="option" aria-posinset="'+(o+1)+'"',' aria-setsize="'+p+'"',' aria-labelledby="'+t+'"',' style="cursor: inherit; display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="',CKEDITOR.tools.htmlEncode(r),'" onkeydown="CKEDITOR.tools.callFunction( '+j+', event, this )"'+' onclick="CKEDITOR.tools.callFunction('+f+', this); return false;"'+' tabindex="-1">'+'<span style="margin: 0 auto;cursor: inherit">'+q+'</span>'+'<span class="cke_voice_label" id="'+t+'">'+r+'</span></a>');}else n.push('<td class="cke_dark_background">&nbsp;');n.push('</td>');}n.push('</tr>');}n.push('</tbody></table>','<span id="'+m+'" class="cke_voice_label">'+c.options+'</span>');this.getContentElement('info','charContainer').getElement().setHtml(n.join(''));},contents:[{id:'info',label:a.lang.common.generalTab,title:a.lang.common.generalTab,padding:0,align:'top',elements:[{type:'hbox',align:'top',widths:['320px','90px'],children:[{type:'html',id:'charContainer',html:'',onMouseover:h,onMouseout:i,focus:function(){var k=this.getElement().getElementsByTag('a').getItem(0);setTimeout(function(){k.focus();h(null,k);},0);},onShow:function(){var k=this.getElement().getChild([0,0,0,0,0]);setTimeout(function(){k.focus();h(null,k);},0);},onLoad:function(k){b=k.sender;}},{type:'hbox',align:'top',widths:['100%'],children:[{type:'vbox',align:'top',children:[{type:'html',html:'<div></div>'},{type:'html',id:'charPreview',className:'cke_dark_background',style:"border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:'<div>&nbsp;</div>'},{type:'html',id:'htmlPreview',className:'cke_dark_background',style:"border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;",html:'<div>&nbsp;</div>'}]}]}]}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js
new file mode 100644
index 000000000..ddead5b65
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.stylesSet.add('default',[{name:'Blue Title',element:'h3',styles:{color:'Blue'}},{name:'Red Title',element:'h3',styles:{color:'Red'}},{name:'Marker: Yellow',element:'span',styles:{'background-color':'Yellow'}},{name:'Marker: Green',element:'span',styles:{'background-color':'Lime'}},{name:'Big',element:'big'},{name:'Small',element:'small'},{name:'Typewriter',element:'tt'},{name:'Computer Code',element:'code'},{name:'Keyboard Phrase',element:'kbd'},{name:'Sample Text',element:'samp'},{name:'Variable',element:'var'},{name:'Deleted Text',element:'del'},{name:'Inserted Text',element:'ins'},{name:'Cited Work',element:'cite'},{name:'Inline Quotation',element:'q'},{name:'Language: RTL',element:'span',attributes:{dir:'rtl'}},{name:'Language: LTR',element:'span',attributes:{dir:'ltr'}},{name:'Image on Left',element:'img',attributes:{style:'padding: 5px; margin-right: 5px',border:'2',align:'left'}},{name:'Image on Right',element:'img',attributes:{style:'padding: 5px; margin-left: 5px',border:'2',align:'right'}},{name:'Borderless Table',element:'table',styles:{'border-style':'hidden','background-color':'#E6E6FA'}},{name:'Square Bulleted List',element:'ul',styles:{'list-style-type':'square'}}]);
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js
new file mode 100644
index 000000000..4e2b338b2
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=/^(\d+(?:\.\d+)?)(px|%)$/,b=/^(\d+(?:\.\d+)?)px$/,c=function(e){var f=this.id;if(!e.info)e.info={};e.info[f]=this.getValue();};function d(e,f){var g=function(i){return new CKEDITOR.dom.element(i,e.document);},h=e.plugins.dialogadvtab;return{title:e.lang.table.title,minWidth:310,minHeight:CKEDITOR.env.ie?310:280,onLoad:function(){var i=this,j=i.getContentElement('advanced','advStyles');if(j)j.on('change',function(k){var l=this.getStyle('width',''),m=i.getContentElement('info','txtWidth'),n=i.getContentElement('info','cmbWidthType'),o=1;if(l){o=l.length<3||l.substr(l.length-1)!='%';l=parseInt(l,10);}m&&m.setValue(l,true);n&&n.setValue(o?'pixels':'percents',true);var p=this.getStyle('height',''),q=i.getContentElement('info','txtHeight');p&&(p=parseInt(p,10));q&&q.setValue(p,true);});},onShow:function(){var q=this;var i=e.getSelection(),j=i.getRanges(),k=null,l=q.getContentElement('info','txtRows'),m=q.getContentElement('info','txtCols'),n=q.getContentElement('info','txtWidth'),o=q.getContentElement('info','txtHeight');if(f=='tableProperties'){if(k=i.getSelectedElement())k=k.getAscendant('table',true);else if(j.length>0){if(CKEDITOR.env.webkit)j[0].shrink(CKEDITOR.NODE_ELEMENT);var p=j[0].getCommonAncestor(true);k=p.getAscendant('table',true);}q._.selectedElement=k;}if(k){q.setupContent(k);l&&l.disable();m&&m.disable();}else{l&&l.enable();m&&m.enable();}n&&n.onChange();o&&o.onChange();},onOk:function(){var D=this;if(D._.selectedElement)var i=e.getSelection(),j=i.createBookmarks();var k=D._.selectedElement||g('table'),l=D,m={};D.commitContent(m,k);if(m.info){var n=m.info;if(!D._.selectedElement){var o=k.append(g('tbody')),p=parseInt(n.txtRows,10)||0,q=parseInt(n.txtCols,10)||0;for(var r=0;r<p;r++){var s=o.append(g('tr'));for(var t=0;t<q;t++){var u=s.append(g('td'));if(!CKEDITOR.env.ie)u.append(g('br'));}}}var v=n.selHeaders;if(!k.$.tHead&&(v=='row'||v=='both')){var w=new CKEDITOR.dom.element(k.$.createTHead());o=k.getElementsByTag('tbody').getItem(0);var x=o.getElementsByTag('tr').getItem(0);for(r=0;r<x.getChildCount();r++){var y=x.getChild(r);if(y.type==CKEDITOR.NODE_ELEMENT&&!y.hasAttribute('_cke_bookmark')){y.renameNode('th');y.setAttribute('scope','col');}}w.append(x.remove());}if(k.$.tHead!==null&&!(v=='row'||v=='both')){w=new CKEDITOR.dom.element(k.$.tHead);o=k.getElementsByTag('tbody').getItem(0);var z=o.getFirst();while(w.getChildCount()>0){x=w.getFirst();for(r=0;r<x.getChildCount();r++){var A=x.getChild(r);if(A.type==CKEDITOR.NODE_ELEMENT){A.renameNode('td');
+A.removeAttribute('scope');}}x.insertBefore(z);}w.remove();}if(!D.hasColumnHeaders&&(v=='col'||v=='both'))for(s=0;s<k.$.rows.length;s++){A=new CKEDITOR.dom.element(k.$.rows[s].cells[0]);A.renameNode('th');A.setAttribute('scope','row');}if(D.hasColumnHeaders&&!(v=='col'||v=='both'))for(r=0;r<k.$.rows.length;r++){s=new CKEDITOR.dom.element(k.$.rows[r]);if(s.getParent().getName()=='tbody'){A=new CKEDITOR.dom.element(s.$.cells[0]);A.renameNode('td');A.removeAttribute('scope');}}var B=[];if(n.txtHeight)k.setStyle('height',CKEDITOR.tools.cssLength(n.txtHeight));else k.removeStyle('height');if(n.txtWidth){var C=n.cmbWidthType||'pixels';k.setStyle('width',n.txtWidth+(C=='pixels'?'px':'%'));}else k.removeStyle('width');if(!k.getAttribute('style'))k.removeAttribute('style');}if(!D._.selectedElement)e.insertElement(k);else i.selectBookmarks(j);return true;},contents:[{id:'info',label:e.lang.table.title,elements:[{type:'hbox',widths:[null,null],styles:['vertical-align:top'],children:[{type:'vbox',padding:0,children:[{type:'text',id:'txtRows','default':3,label:e.lang.table.rows,required:true,style:'width:5em',validate:function(){var i=true,j=this.getValue();i=i&&CKEDITOR.dialog.validate.integer()(j)&&j>0;if(!i){alert(e.lang.table.invalidRows);this.select();}return i;},setup:function(i){this.setValue(i.$.rows.length);},commit:c},{type:'text',id:'txtCols','default':2,label:e.lang.table.columns,required:true,style:'width:5em',validate:function(){var i=true,j=this.getValue();i=i&&CKEDITOR.dialog.validate.integer()(j)&&j>0;if(!i){alert(e.lang.table.invalidCols);this.select();}return i;},setup:function(i){this.setValue(i.$.rows[0].cells.length);},commit:c},{type:'html',html:'&nbsp;'},{type:'select',id:'selHeaders','default':'',label:e.lang.table.headers,items:[[e.lang.table.headersNone,''],[e.lang.table.headersRow,'row'],[e.lang.table.headersColumn,'col'],[e.lang.table.headersBoth,'both']],setup:function(i){var j=this.getDialog();j.hasColumnHeaders=true;for(var k=0;k<i.$.rows.length;k++){if(i.$.rows[k].cells[0].nodeName.toLowerCase()!='th'){j.hasColumnHeaders=false;break;}}if(i.$.tHead!==null)this.setValue(j.hasColumnHeaders?'both':'row');else this.setValue(j.hasColumnHeaders?'col':'');},commit:c},{type:'text',id:'txtBorder','default':1,label:e.lang.table.border,style:'width:3em',validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidBorder),setup:function(i){this.setValue(i.getAttribute('border')||'');},commit:function(i,j){if(this.getValue())j.setAttribute('border',this.getValue());
+else j.removeAttribute('border');}},{id:'cmbAlign',type:'select','default':'',label:e.lang.table.align,items:[[e.lang.common.notSet,''],[e.lang.table.alignLeft,'left'],[e.lang.table.alignCenter,'center'],[e.lang.table.alignRight,'right']],setup:function(i){this.setValue(i.getAttribute('align')||'');},commit:function(i,j){if(this.getValue())j.setAttribute('align',this.getValue());else j.removeAttribute('align');}}]},{type:'vbox',padding:0,children:[{type:'hbox',widths:['5em'],children:[{type:'text',id:'txtWidth',style:'width:5em',label:e.lang.table.width,'default':500,validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidWidth),onLoad:function(){var i=this.getDialog().getContentElement('info','cmbWidthType'),j=i.getElement(),k=this.getInputElement(),l=k.getAttribute('aria-labelledby');k.setAttribute('aria-labelledby',[l,j.$.id].join(' '));},onChange:function(){var i=this.getDialog().getContentElement('advanced','advStyles');if(i){var j=this.getValue();if(j)j+=this.getDialog().getContentElement('info','cmbWidthType').getValue()=='percents'?'%':'px';i.updateStyle('width',j);}},setup:function(i){var j=a.exec(i.$.style.width);if(j)this.setValue(j[1]);else this.setValue('');},commit:c},{id:'cmbWidthType',type:'select',label:e.lang.table.widthUnit,labelStyle:'visibility:hidden','default':'pixels',items:[[e.lang.table.widthPx,'pixels'],[e.lang.table.widthPc,'percents']],setup:function(i){var j=a.exec(i.$.style.width);if(j)this.setValue(j[2]=='px'?'pixels':'percents');},onChange:function(){this.getDialog().getContentElement('info','txtWidth').onChange();},commit:c}]},{type:'hbox',widths:['5em'],children:[{type:'text',id:'txtHeight',style:'width:5em',label:e.lang.table.height,'default':'',validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidHeight),onLoad:function(){var i=this.getDialog().getContentElement('info','htmlHeightType'),j=i.getElement(),k=this.getInputElement(),l=k.getAttribute('aria-labelledby');k.setAttribute('aria-labelledby',[l,j.$.id].join(' '));},onChange:function(){var i=this.getDialog().getContentElement('advanced','advStyles');if(i){var j=this.getValue();i.updateStyle('height',j&&j+'px');}},setup:function(i){var j=b.exec(i.$.style.height);if(j)this.setValue(j[1]);},commit:c},{id:'htmlHeightType',type:'html',html:'<div><br />'+e.lang.table.widthPx+'</div>'}]},{type:'html',html:'&nbsp;'},{type:'text',id:'txtCellSpace',style:'width:3em',label:e.lang.table.cellSpace,'default':1,validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidCellSpacing),setup:function(i){this.setValue(i.getAttribute('cellSpacing')||'');
+},commit:function(i,j){if(this.getValue())j.setAttribute('cellSpacing',this.getValue());else j.removeAttribute('cellSpacing');}},{type:'text',id:'txtCellPad',style:'width:3em',label:e.lang.table.cellPad,'default':1,validate:CKEDITOR.dialog.validate.number(e.lang.table.invalidCellPadding),setup:function(i){this.setValue(i.getAttribute('cellPadding')||'');},commit:function(i,j){if(this.getValue())j.setAttribute('cellPadding',this.getValue());else j.removeAttribute('cellPadding');}}]}]},{type:'html',align:'right',html:''},{type:'vbox',padding:0,children:[{type:'text',id:'txtCaption',label:e.lang.table.caption,setup:function(i){var j=i.getElementsByTag('caption');if(j.count()>0){var k=j.getItem(0);k=k.getChild(0)&&k.getChild(0).getText()||'';k=CKEDITOR.tools.trim(k);this.setValue(k);}},commit:function(i,j){var k=this.getValue(),l=j.getElementsByTag('caption');if(k){if(l.count()>0){l=l.getItem(0);l.setHtml('');}else{l=new CKEDITOR.dom.element('caption',e.document);if(j.getChildCount())l.insertBefore(j.getFirst());else l.appendTo(j);}l.append(new CKEDITOR.dom.text(k,e.document));}else if(l.count()>0)for(var m=l.count()-1;m>=0;m--)l.getItem(m).remove();}},{type:'text',id:'txtSummary',label:e.lang.table.summary,setup:function(i){this.setValue(i.getAttribute('summary')||'');},commit:function(i,j){if(this.getValue())j.setAttribute('summary',this.getValue());else j.removeAttribute('summary');}}]}]},h&&h.createAdvancedTab(e)]};};CKEDITOR.dialog.add('table',function(e){return d(e,'table');});CKEDITOR.dialog.add('tableProperties',function(e){return d(e,'tableProperties');});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js
new file mode 100644
index 000000000..5af17c66c
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.tools.cssLength,b=CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks||CKEDITOR.env.version<7);function c(k){return CKEDITOR.env.ie?k.$.clientWidth:parseInt(k.getComputedStyle('width'),10);};function d(k,l){var m=k.getComputedStyle('border-'+l+'-width'),n={thin:'0px',medium:'1px',thick:'2px'};if(m.indexOf('px')<0)if(m in n&&k.getComputedStyle('border-style')!='none')m=n[m];else m=0;return parseInt(m,10);};function e(k){var l=k.$.rows,m=0,n,o,p;for(var q=0,r=l.length;q<r;q++){p=l[q];n=p.cells.length;if(n>m){m=n;o=p;}}return o;};function f(k){var l=[],m=-1,n=k.getComputedStyle('direction')=='rtl',o=e(k),p=new CKEDITOR.dom.element(k.$.tBodies[0]),q=p.getDocumentPosition();for(var r=0,s=o.cells.length;r<s;r++){var t=new CKEDITOR.dom.element(o.cells[r]),u=o.cells[r+1]&&new CKEDITOR.dom.element(o.cells[r+1]);m+=t.$.colSpan||1;var v,w,x,y,z=t.getDocumentPosition().x;n?w=z+d(t,'left'):v=z+t.$.offsetWidth-d(t,'right');if(u){z=u.getDocumentPosition().x;n?v=z+u.$.offsetWidth-d(u,'right'):w=z+d(u,'left');}else{z=k.getDocumentPosition().x;n?v=z:w=z+k.$.offsetWidth;}x=Math.max(w-v,3);y=Math.max(Math.round(7-x/2),0);l.push({table:k,index:m,x:v,y:q.y,width:x,height:p.$.offsetHeight,padding:y,rtl:n});}return l;};function g(k,l){for(var m=0,n=k.length;m<n;m++){var o=k[m],p=o.padding;if(l>=o.x-p&&l<=o.x+o.width+p)return o;}return null;};function h(k){(k.data||k).preventDefault();};function i(k){var l,m,n,o,p,q,r,s,t,u;function v(){l=null;q=0;o=0;m.removeListener('mouseup',A);n.removeListener('mousedown',z);n.removeListener('mousemove',B);m.getBody().setStyle('cursor','auto');b?n.remove():n.hide();};function w(){var D=l.index,E=CKEDITOR.tools.buildTableMap(l.table),F=[],G=[],H=Number.MAX_VALUE,I=H,J=l.rtl;for(var K=0,L=E.length;K<L;K++){var M=E[K],N=M[D+(J?1:0)],O=M[D+(J?0:1)];N=N&&new CKEDITOR.dom.element(N);O=O&&new CKEDITOR.dom.element(O);if(!N||!O||!N.equals(O)){N&&(H=Math.min(H,c(N)));O&&(I=Math.min(I,c(O)));F.push(N);G.push(O);}}r=F;s=G;t=l.x-H;u=l.x+I;n.setOpacity(0.5);p=parseInt(n.getStyle('left'),10);q=0;o=1;n.on('mousemove',B);m.on('dragstart',h);};function x(){o=0;n.setOpacity(0);q&&y();var D=l.table;setTimeout(function(){D.removeCustomData('_cke_table_pillars');},0);m.removeListener('dragstart',h);};function y(){var D=l.rtl,E=D?s.length:r.length;for(var F=0;F<E;F++){var G=r[F],H=s[F],I=l.table;CKEDITOR.tools.setTimeout(function(J,K,L,M,N,O){J&&J.setStyle('width',a(Math.max(K+O,0)));L&&L.setStyle('width',a(Math.max(M-O,0)));if(N)I.setStyle('width',a(N+O*(D?-1:1)));
+},0,this,[G,G&&c(G),H,H&&c(H),(!G||!H)&&c(I)+d(I,'left')+d(I,'right'),q]);}};function z(D){h(D);w();m.on('mouseup',A,this);};function A(D){D.removeListener();x();};function B(D){C(D.data.$.clientX);};m=k.document;n=CKEDITOR.dom.element.createFromHtml('<div cke_temp=1 contenteditable=false unselectable=on style="position:absolute;cursor:col-resize;filter:alpha(opacity=0);opacity:0;padding:0;background-color:#004;background-image:none;border:0px none;z-index:10"></div>',m);if(!b)m.getDocumentElement().append(n);this.attachTo=function(D){if(o)return;if(b){m.getBody().append(n);q=0;}l=D;n.setStyles({width:a(D.width),height:a(D.height),left:a(D.x),top:a(D.y)});b&&n.setOpacity(0.25);n.on('mousedown',z,this);m.getBody().setStyle('cursor','col-resize');n.show();};var C=this.move=function(D){if(!l)return 0;var E=l.padding;if(!o&&(D<l.x-E||D>l.x+l.width+E)){v();return 0;}var F=D-Math.round(n.$.offsetWidth/2);if(o){if(F==t||F==u)return 1;F=Math.max(F,t);F=Math.min(F,u);q=F-p;}n.setStyle('left',a(F));return 1;};};function j(k){var l=k.data.getTarget();if(k.name=='mouseout'){if(!l.is('table'))return;var m=new CKEDITOR.dom.element(k.data.$.relatedTarget||k.data.$.toElement);while(m&&m.$&&!m.equals(l)&&!m.is('body'))m=m.getParent();if(!m||m.equals(l))return;}l.getAscendant('table',true).removeCustomData('_cke_table_pillars');k.removeListener();};CKEDITOR.plugins.add('tableresize',{requires:['tabletools'],init:function(k){k.on('contentDom',function(){var l;k.document.getBody().on('mousemove',function(m){m=m.data;if(l&&l.move(m.$.clientX)){h(m);return;}var n=m.getTarget(),o,p;if(!n.is('table')&&!n.getAscendant('tbody',true))return;o=n.getAscendant('table',true);if(!(p=o.getCustomData('_cke_table_pillars'))){o.setCustomData('_cke_table_pillars',p=f(o));o.on('mouseout',j);o.on('mousedown',j);}var q=g(p,m.$.clientX);if(q){!l&&(l=new i(k));l.attachTo(q);}});});}});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js
new file mode 100644
index 000000000..225eccc1d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('cellProperties',function(a){var b=a.lang.table,c=b.cell,d=a.lang.common,e=CKEDITOR.dialog.validate,f=/^(\d+(?:\.\d+)?)(px|%)$/,g=/^(\d+(?:\.\d+)?)px$/,h=CKEDITOR.tools.bind,i={type:'html',html:'&nbsp;'};function j(k,l){var m=function(){var q=this;o(q);l(q,q._.parentDialog);q._.parentDialog.changeFocus(true);},n=function(){o(this);this._.parentDialog.changeFocus();},o=function(q){q.removeListener('ok',m);q.removeListener('cancel',n);},p=function(q){q.on('ok',m);q.on('cancel',n);};a.execCommand(k);if(a._.storedDialogs.colordialog)p(a._.storedDialogs.colordialog);else CKEDITOR.on('dialogDefinition',function(q){if(q.data.name!=k)return;var r=q.data.definition;q.removeListener();r.onLoad=CKEDITOR.tools.override(r.onLoad,function(s){return function(){p(this);r.onLoad=s;if(typeof s=='function')s.call(this);};});});};return{title:c.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?550:480,minHeight:CKEDITOR.env.ie?CKEDITOR.env.quirks?180:150:140,contents:[{id:'info',label:c.title,accessKey:'I',elements:[{type:'hbox',widths:['40%','5%','40%'],children:[{type:'vbox',padding:0,children:[{type:'hbox',widths:['70%','30%'],children:[{type:'text',id:'width',label:b.width,widths:['71%','29%'],labelLayout:'horizontal',validate:e.number(c.invalidWidth),onLoad:function(){var k=this.getDialog().getContentElement('info','widthType'),l=k.getElement(),m=this.getInputElement(),n=m.getAttribute('aria-labelledby');m.setAttribute('aria-labelledby',[n,l.$.id].join(' '));},setup:function(k){var l=parseInt(k.getAttribute('width'),10),m=parseInt(k.getStyle('width'),10);!isNaN(l)&&this.setValue(l);!isNaN(m)&&this.setValue(m);},commit:function(k){var l=parseInt(this.getValue(),10),m=this.getDialog().getValueOf('info','widthType');if(!isNaN(l))k.setStyle('width',l+m);else k.removeStyle('width');k.removeAttribute('width');},'default':''},{type:'select',id:'widthType',labelLayout:'horizontal',widths:['0%','100%'],label:a.lang.table.widthUnit,labelStyle:'display:none','default':'px',items:[[b.widthPx,'px'],[b.widthPc,'%']],setup:function(k){var l=f.exec(k.getStyle('width')||k.getAttribute('width'));if(l)this.setValue(l[2]);}}]},{type:'hbox',widths:['70%','30%'],children:[{type:'text',id:'height',label:b.height,'default':'',widths:['71%','29%'],labelLayout:'horizontal',validate:e.number(c.invalidHeight),onLoad:function(){var k=this.getDialog().getContentElement('info','htmlHeightType'),l=k.getElement(),m=this.getInputElement(),n=m.getAttribute('aria-labelledby');m.setAttribute('aria-labelledby',[n,l.$.id].join(' '));
+},setup:function(k){var l=parseInt(k.getAttribute('height'),10),m=parseInt(k.getStyle('height'),10);!isNaN(l)&&this.setValue(l);!isNaN(m)&&this.setValue(m);},commit:function(k){var l=parseInt(this.getValue(),10);if(!isNaN(l))k.setStyle('height',CKEDITOR.tools.cssLength(l));else k.removeStyle('height');k.removeAttribute('height');}},{id:'htmlHeightType',type:'html',html:b.widthPx}]},i,{type:'select',id:'wordWrap',labelLayout:'horizontal',label:c.wordWrap,widths:['50%','50%'],'default':'yes',items:[[c.yes,'yes'],[c.no,'no']],setup:function(k){var l=k.getAttribute('noWrap'),m=k.getStyle('white-space');if(m=='nowrap'||l)this.setValue('no');},commit:function(k){if(this.getValue()=='no')k.setStyle('white-space','nowrap');else k.removeStyle('white-space');k.removeAttribute('noWrap');}},i,{type:'select',id:'hAlign',labelLayout:'horizontal',label:c.hAlign,widths:['50%','50%'],'default':'',items:[[d.notSet,''],[b.alignLeft,'left'],[b.alignCenter,'center'],[b.alignRight,'right']],setup:function(k){var l=k.getAttribute('align'),m=k.getStyle('text-align');this.setValue(m||l||'');},commit:function(k){var l=this.getValue();if(l)k.setStyle('text-align',l);else k.removeStyle('text-align');k.removeAttribute('align');}},{type:'select',id:'vAlign',labelLayout:'horizontal',label:c.vAlign,widths:['50%','50%'],'default':'',items:[[d.notSet,''],[c.alignTop,'top'],[c.alignMiddle,'middle'],[c.alignBottom,'bottom'],[c.alignBaseline,'baseline']],setup:function(k){var l=k.getAttribute('vAlign'),m=k.getStyle('vertical-align');switch(m){case 'top':case 'middle':case 'bottom':case 'baseline':break;default:m='';}this.setValue(m||l||'');},commit:function(k){var l=this.getValue();if(l)k.setStyle('vertical-align',l);else k.removeStyle('vertical-align');k.removeAttribute('vAlign');}}]},i,{type:'vbox',padding:0,children:[{type:'select',id:'cellType',label:c.cellType,labelLayout:'horizontal',widths:['50%','50%'],'default':'td',items:[[c.data,'td'],[c.header,'th']],setup:function(k){this.setValue(k.getName());},commit:function(k){k.renameNode(this.getValue());}},i,{type:'text',id:'rowSpan',label:c.rowSpan,labelLayout:'horizontal',widths:['50%','50%'],'default':'',validate:e.integer(c.invalidRowSpan),setup:function(k){var l=parseInt(k.getAttribute('rowSpan'),10);if(l&&l!=1)this.setValue(l);},commit:function(k){var l=parseInt(this.getValue(),10);if(l&&l!=1)k.setAttribute('rowSpan',this.getValue());else k.removeAttribute('rowSpan');}},{type:'text',id:'colSpan',label:c.colSpan,labelLayout:'horizontal',widths:['50%','50%'],'default':'',validate:e.integer(c.invalidColSpan),setup:function(k){var l=parseInt(k.getAttribute('colSpan'),10);
+if(l&&l!=1)this.setValue(l);},commit:function(k){var l=parseInt(this.getValue(),10);if(l&&l!=1)k.setAttribute('colSpan',this.getValue());else k.removeAttribute('colSpan');}},i,{type:'hbox',padding:0,widths:['80%','20%'],children:[{type:'text',id:'bgColor',label:c.bgColor,labelLayout:'horizontal',widths:['70%','30%'],'default':'',setup:function(k){var l=k.getAttribute('bgColor'),m=k.getStyle('background-color');this.setValue(m||l);},commit:function(k){var l=this.getValue();if(l)k.setStyle('background-color',this.getValue());else k.removeStyle('background-color');k.removeAttribute('bgColor');}},{type:'button',id:'bgColorChoose',label:c.chooseColor,style:'margin-left: 10px',onClick:function(){var k=this;j('colordialog',function(l){k.getDialog().getContentElement('info','bgColor').setValue(l.getContentElement('picker','selectedColor').getValue());});}}]},i,{type:'hbox',padding:0,widths:['80%','20%'],children:[{type:'text',id:'borderColor',label:c.borderColor,labelLayout:'horizontal',widths:['70%','30%'],'default':'',setup:function(k){var l=k.getAttribute('borderColor'),m=k.getStyle('border-color');this.setValue(m||l);},commit:function(k){var l=this.getValue();if(l)k.setStyle('border-color',this.getValue());else k.removeStyle('border-color');k.removeAttribute('borderColor');}},{type:'button',id:'borderColorChoose',label:c.chooseColor,style:'margin-left: 10px',onClick:function(){var k=this;j('colordialog',function(l){k.getDialog().getContentElement('info','borderColor').setValue(l.getContentElement('picker','selectedColor').getValue());});}}]}]}]}]}],onShow:function(){var k=this;k.cells=CKEDITOR.plugins.tabletools.getSelectedCells(k._.editor.getSelection());k.setupContent(k.cells[0]);},onOk:function(){var q=this;var k=q._.editor.getSelection(),l=k.createBookmarks(),m=q.cells;for(var n=0;n<m.length;n++)q.commitContent(m[n]);k.selectBookmarks(l);var o=k.getStartElement(),p=new CKEDITOR.dom.elementPath(o);q._.editor._.selectionPreviousPath=p;q._.editor.fire('selectionChange',{selection:k,path:p,element:o});}};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js
new file mode 100644
index 000000000..e1124a2f4
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+(function(){var a=CKEDITOR.document;CKEDITOR.dialog.add('templates',function(b){function c(i,j){i.setHtml('');for(var k=0;k<j.length;k++){var l=CKEDITOR.getTemplates(j[k]),m=l.imagesPath,n=l.templates,o=n.length;for(var p=0;p<o;p++){var q=n[p],r=d(q,m);r.setAttribute('aria-posinset',p+1);r.setAttribute('aria-setsize',o);i.append(r);}}};function d(i,j){var k=CKEDITOR.dom.element.createFromHtml('<a href="javascript:void(0)" tabIndex="-1" role="option" ><div class="cke_tpl_item"></div></a>'),l='<table style="width:350px;" class="cke_tpl_preview" role="presentation"><tr>';if(i.image&&j)l+='<td class="cke_tpl_preview_img"><img src="'+CKEDITOR.getUrl(j+i.image)+'"'+(CKEDITOR.env.ie6Compat?' onload="this.width=this.width"':'')+' alt="" title=""></td>';l+='<td style="white-space:normal;"><span class="cke_tpl_title">'+i.title+'</span><br/>';if(i.description)l+='<span>'+i.description+'</span>';l+='</td></tr></table>';k.getFirst().setHtml(l);k.on('click',function(){e(i.html);});return k;};function e(i){var j=CKEDITOR.dialog.getCurrent(),k=j.getValueOf('selectTpl','chkInsertOpt');if(k){b.on('contentDom',function(l){l.removeListener();j.hide();var m=new CKEDITOR.dom.range(b.document);m.moveToElementEditStart(b.document.getBody());m.select(true);setTimeout(function(){b.fire('saveSnapshot');},0);});b.fire('saveSnapshot');b.setData(i);}else{b.insertHtml(i);j.hide();}};function f(i){var j=i.data.getTarget(),k=g.equals(j);if(k||g.contains(j)){var l=i.data.getKeystroke(),m=g.getElementsByTag('a'),n;if(m){if(k)n=m.getItem(0);else switch(l){case 40:n=j.getNext();break;case 38:n=j.getPrevious();break;case 13:case 32:j.fire('click');}if(n){n.focus();i.data.preventDefault();}}}};CKEDITOR.skins.load(b,'templates');var g,h='cke_tpl_list_label_'+CKEDITOR.tools.getNextNumber();return{title:b.lang.templates.title,minWidth:CKEDITOR.env.ie?440:400,minHeight:340,contents:[{id:'selectTpl',label:b.lang.templates.title,elements:[{type:'vbox',padding:5,children:[{type:'html',html:'<span>'+b.lang.templates.selectPromptMsg+'</span>'},{id:'templatesList',type:'html',focus:true,html:'<div class="cke_tpl_list" tabIndex="-1" role="listbox" aria-labelledby="'+h+'">'+'<div class="cke_tpl_loading"><span></span></div>'+'</div>'+'<span class="cke_voice_label" id="'+h+'">'+b.lang.templates.options+'</span>'},{id:'chkInsertOpt',type:'checkbox',label:b.lang.templates.insertOption,'default':b.config.templates_replaceContent}]}]}],buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var i=this.getContentElement('selectTpl','templatesList');
+g=i.getElement();CKEDITOR.loadTemplates(b.config.templates_files,function(){var j=b.config.templates.split(',');if(j.length){c(g,j);i.focus();}else g.setHtml('<div class="cke_tpl_empty"><span>'+b.lang.templates.emptyListMsg+'</span>'+'</div>');});this._.element.on('keydown',f);},onHide:function(){this._.element.removeListener('keydown',f);}};});})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js
new file mode 100644
index 000000000..9ed80b0e8
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.addTemplates('default',{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath('templates')+'templates/images/'),templates:[{title:'Image and Title',image:'template1.gif',description:'One main image with a title and text that surround the image.',html:'<h3><img style="margin-right: 10px" height="100" width="100" align="left"/>Type the title here</h3><p>Type the text here</p>'},{title:'Strange Template',image:'template2.gif',description:'A template that defines two colums, each one with a title, and some text.',html:'<table cellspacing="0" cellpadding="0" style="width:100%" border="0"><tr><td style="width:50%"><h3>Title 1</h3></td><td></td><td style="width:50%"><h3>Title 2</h3></td></tr><tr><td>Text 1</td><td></td><td>Text 2</td></tr></table><p>More text goes here.</p>'},{title:'Text and Table',image:'template3.gif',description:'A title with some text and a table.',html:'<div style="width: 80%"><h3>Title goes here</h3><table style="width:150px;float: right" cellspacing="0" cellpadding="0" border="1"><caption style="border:solid 1px black"><strong>Table title</strong></caption></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></table><p>Type the text here</p></div>'}]});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js
new file mode 100644
index 000000000..563e8c90d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('uicolor',function(a){var b,c,d,e=a.getUiColor(),f='cke_uicolor_picker'+CKEDITOR.tools.getNextNumber();function g(j){if(/^#/.test(j))j=window.YAHOO.util.Color.hex2rgb(j.substr(1));c.setValue(j,true);c.refresh(f);};function h(j,k){if(k||b._.contents.tab1.livePeview.getValue())a.setUiColor(j);b._.contents.tab1.configBox.setValue('config.uiColor = "#'+c.get('hex')+'"');};d={id:'yuiColorPicker',type:'html',html:"<div id='"+f+"' class='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",onLoad:function(j){var k=CKEDITOR.getUrl('plugins/uicolor/yui/');c=new window.YAHOO.widget.ColorPicker(f,{showhsvcontrols:true,showhexcontrols:true,images:{PICKER_THUMB:k+'assets/picker_thumb.png',HUE_THUMB:k+'assets/hue_thumb.png'}});if(e)g(e);c.on('rgbChange',function(){b._.contents.tab1.predefined.setValue('');h('#'+c.get('hex'));});var l=new CKEDITOR.dom.nodeList(c.getElementsByTagName('input'));for(var m=0;m<l.count();m++)l.getItem(m).addClass('cke_dialog_ui_input_text');}};var i=true;return{title:a.lang.uicolor.title,minWidth:360,minHeight:320,onLoad:function(){b=this;this.setupContent();if(CKEDITOR.env.ie7Compat)b.parts.contents.setStyle('overflow','hidden');},contents:[{id:'tab1',label:'',title:'',expand:true,padding:0,elements:[d,{id:'tab1',type:'vbox',children:[{id:'livePeview',type:'checkbox',label:a.lang.uicolor.preview,'default':1,onLoad:function(){i=true;},onChange:function(){if(i)return;var j=this.getValue(),k=j?'#'+c.get('hex'):e;h(k,true);}},{type:'hbox',children:[{id:'predefined',type:'select','default':'',label:a.lang.uicolor.predefined,items:[[''],['Light blue','#9AB8F3'],['Sand','#D2B48C'],['Metallic','#949AAA'],['Purple','#C2A3C7'],['Olive','#A2C980'],['Happy green','#9BD446'],['Jezebel Blue','#14B8C4'],['Burn','#FF893A'],['Easy red','#FF6969'],['Pisces 3','#48B4F2'],['Aquarius 5','#487ED4'],['Absinthe','#A8CF76'],['Scrambled Egg','#C7A622'],['Hello monday','#8E8D80'],['Lovely sunshine','#F1E8B1'],['Recycled air','#B3C593'],['Down','#BCBCA4'],['Mark Twain','#CFE91D'],['Specks of dust','#D1B596'],['Lollipop','#F6CE23']],onChange:function(){var j=this.getValue();if(j){g(j);h(j);CKEDITOR.document.getById('predefinedPreview').setStyle('background',j);}else CKEDITOR.document.getById('predefinedPreview').setStyle('background','');},onShow:function(){var j=a.getUiColor();if(j)this.setValue(j);}},{id:'predefinedPreview',type:'html',html:'<div id="cke_uicolor_preview" style="border: 1px solid black; padding: 3px; width: 30px;"><div id="predefinedPreview" style="width: 30px; height: 30px;">&nbsp;</div></div>'}]},{id:'configBox',type:'text',label:a.lang.uicolor.config,onShow:function(){var j=a.getUiColor();
+if(j)this.setValue('config.uiColor = "'+j+'"');}}]}]}],buttons:[CKEDITOR.dialog.okButton]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js
new file mode 100644
index 000000000..e8c8515ae
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.setLang('uicolor','en',{uicolor:{title:'UI Color Picker',preview:'Live preview',config:'Paste this string into your config.js file',predefined:'Predefined color sets'}});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js
new file mode 100644
index 000000000..403ecaac3
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.plugins.add('uicolor',{requires:['dialog'],lang:['en'],init:function(a){if(CKEDITOR.env.ie6Compat)return;a.addCommand('uicolor',new CKEDITOR.dialogCommand('uicolor'));a.ui.addButton('UIColor',{label:a.lang.uicolor.title,command:'uicolor',icon:this.path+'uicolor.gif'});CKEDITOR.dialog.add('uicolor',this.path+'dialogs/uicolor.js');CKEDITOR.scriptLoader.load(CKEDITOR.getUrl('plugins/uicolor/yui/yui.js'));a.element.getDocument().appendStyleSheet(CKEDITOR.getUrl('plugins/uicolor/yui/assets/yui.css'));}});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css
new file mode 100644
index 000000000..c63ce7c0d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.yui-h-slider,.yui-v-slider{position:relative;}.yui-h-slider .yui-slider-thumb,.yui-v-slider .yui-slider-thumb{position:absolute;cursor:default;}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px;}.yui-skin-sam .yui-h-slider .yui-slider-thumb{top:4px;}.yui-skin-sam .yui-v-slider{background:url(bg-v.gif) no-repeat 12px 0;height:228px;width:48px;}.cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}.cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}.cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}.cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}.cke_uicolor_picker .yui-picker{position:relative;}.cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}.cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}.cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html .cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}.cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}.cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}.cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}.cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}.cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}.cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}.cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}.cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}.cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js
new file mode 100644
index 000000000..6ddd12bb1
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js
@@ -0,0 +1,76 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/*jsl:ignoreall*/
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:0},B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}A=B.match(/Caja\/([^\s]*)/);if(A&&A[1]){C.caja=parseFloat(A[1]);}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,F="[object Array]",C="[object Function]",A=Object.prototype,E=["toString","valueOf"],D={isArray:function(G){return A.toString.apply(G)===F;},isBoolean:function(G){return typeof G==="boolean";},isFunction:function(G){return A.toString.apply(G)===C;},isNull:function(G){return G===null;},isNumber:function(G){return typeof G==="number"&&isFinite(G);},isObject:function(G){return(G&&(typeof G==="object"||B.isFunction(G)))||false;},isString:function(G){return typeof G==="string";},isUndefined:function(G){return typeof G==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(I,H){var G,K,J;for(G=0;G<E.length;G=G+1){K=E[G];J=H[K];if(B.isFunction(J)&&J!=A[K]){I[K]=J;}}}:function(){},extend:function(J,K,I){if(!K||!J){throw new Error("extend failed, please check that "+"all dependencies are included.");}var H=function(){},G;H.prototype=K.prototype;J.prototype=new H();J.prototype.constructor=J;J.superclass=K.prototype;if(K.prototype.constructor==A.constructor){K.prototype.constructor=K;}if(I){for(G in I){if(B.hasOwnProperty(I,G)){J.prototype[G]=I[G];}}B._IEEnumFix(J.prototype,I);}},augmentObject:function(K,J){if(!J||!K){throw new Error("Absorb failed, verify dependencies.");}var G=arguments,I,L,H=G[2];if(H&&H!==true){for(I=2;I<G.length;I=I+1){K[G[I]]=J[G[I]];}}else{for(L in J){if(H||!(L in K)){K[L]=J[L];}}B._IEEnumFix(K,J);}},augmentProto:function(J,I){if(!I||!J){throw new Error("Augment failed, verify dependencies.");}var G=[J.prototype,I.prototype],H;for(H=2;H<arguments.length;H=H+1){G.push(arguments[H]);}B.augmentObject.apply(this,G);},dump:function(G,L){var I,K,N=[],O="{...}",H="f(){...}",M=", ",J=" => ";if(!B.isObject(G)){return G+"";}else{if(G instanceof Date||("nodeType" in G&&"tagName" in G)){return G;}else{if(B.isFunction(G)){return H;}}}L=(B.isNumber(L))?L:3;if(B.isArray(G)){N.push("[");for(I=0,K=G.length;I<K;I=I+1){if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}if(N.length>1){N.pop();}N.push("]");}else{N.push("{");for(I in G){if(B.hasOwnProperty(G,I)){N.push(I+J);if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}}if(N.length>1){N.pop();}N.push("}");}return N.join("");},substitute:function(V,H,O){var L,K,J,R,S,U,Q=[],I,M="dump",P=" ",G="{",T="}",N;for(;;){L=V.lastIndexOf(G);if(L<0){break;}K=V.indexOf(T,L);if(L+1>=K){break;}I=V.substring(L+1,K);R=I;U=null;J=R.indexOf(P);if(J>-1){U=R.substring(J+1);R=R.substring(0,J);}S=H[R];if(O){S=O(R,S,U);}if(B.isObject(S)){if(B.isArray(S)){S=B.dump(S,parseInt(U,10));}else{U=U||"";N=U.indexOf(M);if(N>-1){U=U.substring(4);}if(S.toString===A.toString||N>-1){S=B.dump(S,parseInt(U,10));}else{S=S.toString();}}}else{if(!B.isString(S)&&!B.isNumber(S)){S="~-"+Q.length+"-~";Q[Q.length]=I;}}V=V.substring(0,L)+S+V.substring(K+1);}for(L=Q.length-1;L>=0;L=L-1){V=V.replace(new RegExp("~-"+L+"-~"),"{"+Q[L]+"}","g");}return V;},trim:function(G){try{return G.replace(/^\s+|\s+$/g,"");}catch(H){return G;}},merge:function(){var J={},H=arguments,G=H.length,I;for(I=0;I<G;I=I+1){B.augmentObject(J,H[I],true);}return J;},later:function(N,H,O,J,K){N=N||0;H=H||{};var I=O,M=J,L,G;if(B.isString(O)){I=H[O];}if(!I){throw new TypeError("method undefined");}if(!B.isArray(M)){M=[J];}L=function(){I.apply(H,M);};G=(K)?setInterval(L,N):setTimeout(L,N);return{interval:K,cancel:function(){if(this.interval){clearInterval(G);}else{clearTimeout(G);}}};},isValue:function(G){return(B.isObject(G)||B.isString(G)||B.isNumber(G)||B.isBoolean(G));}};B.hasOwnProperty=(A.hasOwnProperty)?function(G,H){return G&&G.hasOwnProperty(H);}:function(G,H){return !B.isUndefined(G[H])&&G.constructor.prototype[H]!==G[H];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.7.0",build:"1796"});(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},get:function(y){var AA,Y,z,x,G;if(y){if(y[l]||y.item){return y;}if(typeof y==="string"){AA=y;y=K.getElementById(y);if(y&&y.id===AA){return y;}else{if(y&&K.all){y=null;Y=K.all[AA];for(x=0,G=Y.length;x<G;++x){if(Y[x].id===AA){return Y[x];}}}}return y;}if(y.DOM_EVENTS){y=y.get("element");}if("length" in y){z=[];for(x=0,G=y.length;x<G;++x){z[z.length]=E.Dom.get(y[x]);}return z;}return y;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];G=S(AF[v],q);x=S(AF[v],R);if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC==c)){if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AB=L.trim(AB);AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom.getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom.getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom.getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom.getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});
+},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom.getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;Y.setAttribute(G,x);},getAttribute:function(Y,G){G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;return Y.getAttribute(G);},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);
+}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.7.0",build:"1796"});YAHOO.util.CustomEvent=function(D,C,B,A){this.type=D;this.scope=C||window;this.silent=B;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(A,B,C){if(!A){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(A,B,C);}this.subscribers.push(new YAHOO.util.Subscriber(A,B,C));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var K=[],E=this.subscribers.length;if(!E&&this.silent){return true;}var I=[].slice.call(arguments,0),G=true,D,J=false;if(!this.silent){}var C=this.subscribers.slice(),A=YAHOO.util.Event.throwErrors;for(D=0;D<E;++D){var M=C[D];if(!M){J=true;}else{if(!this.silent){}var L=M.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var B=null;if(I.length>0){B=I[0];}try{G=M.fn.call(L,B,M.obj);}catch(F){this.lastError=F;if(A){throw F;}}}else{try{G=M.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=H;if(A){throw H;}}}if(false===G){if(!this.silent){}break;}}}return(G!==false);},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var K=YAHOO.env.ua.ie?"focusin":"focus";var L=YAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var M=this;var N=function(){M._tryPreloadAttach();};this._interval=setInterval(N,this.POLL_INTERVAL);}},onAvailable:function(S,O,Q,R,P){var M=(YAHOO.lang.isString(S))?[S]:S;for(var N=0;N<M.length;N=N+1){F.push({id:M[N],fn:O,obj:Q,overrideContext:R,checkReady:P});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(P,M,N,O){this.onAvailable(P,M,N,O,true);},onDOMReady:function(M,N,O){if(this.DOMReady){setTimeout(function(){var P=window;if(O){if(O===true){P=N;}else{P=O;}}M.call(P,"DOMReady",[],N);},0);}else{this.DOMReadyEvent.subscribe(M,N,O);}},_addListener:function(O,M,Y,S,W,b){if(!Y||!Y.call){return false;}if(this._isValidCollection(O)){var Z=true;for(var T=0,V=O.length;T<V;++T){Z=this.on(O[T],M,Y,S,W)&&Z;}return Z;}else{if(YAHOO.lang.isString(O)){var R=this.getEl(O);if(R){O=R;}else{this.onAvailable(O,function(){YAHOO.util.Event.on(O,M,Y,S,W);});return true;}}}if(!O){return false;}if("unload"==M&&S!==this){J[J.length]=[O,M,Y,S,W];return true;}var N=O;if(W){if(W===true){N=S;}else{N=W;}}var P=function(c){return Y.call(N,YAHOO.util.Event.getEvent(c,O),S);};var a=[O,M,Y,P,N,S,W];var U=I.length;I[U]=a;if(this.useLegacyEvent(O,M)){var Q=this.getLegacyIndex(O,M);if(Q==-1||O!=G[Q][0]){Q=G.length;B[O.id+M]=Q;G[Q]=[O,M,O["on"+M]];E[Q]=[];O["on"+M]=function(c){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(c),Q);};}E[Q].push(a);}else{try{this._simpleAdd(O,M,P,b);}catch(X){this.lastError=X;this.removeListener(O,M,Y);return false;}}return true;},addListener:function(N,Q,M,O,P){return this._addListener(N,Q,M,O,P,false);},addFocusListener:function(N,M,O,P){return this._addListener(N,K,M,O,P,true);},removeFocusListener:function(N,M){return this.removeListener(N,K,M);},addBlurListener:function(N,M,O,P){return this._addListener(N,L,M,O,P,true);},removeBlurListener:function(N,M){return this.removeListener(N,L,M);},fireLegacyEvent:function(R,P){var T=true,M,V,U,N,S;V=E[P].slice();for(var O=0,Q=V.length;O<Q;++O){U=V[O];if(U&&U[this.WFN]){N=U[this.ADJ_SCOPE];S=U[this.WFN].call(N,R);T=(T&&S);}}M=G[P];if(M&&M[2]){M[2](R);}return T;},getLegacyIndex:function(N,O){var M=this.generateId(N)+O;if(typeof B[M]=="undefined"){return -1;}else{return B[M];}},useLegacyEvent:function(M,N){return(this.webkit&&this.webkit<419&&("click"==N||"dblclick"==N));},removeListener:function(N,M,V){var Q,T,X;if(typeof N=="string"){N=this.getEl(N);}else{if(this._isValidCollection(N)){var W=true;for(Q=N.length-1;Q>-1;Q--){W=(this.removeListener(N[Q],M,V)&&W);}return W;}}if(!V||!V.call){return this.purgeElement(N,false,M);}if("unload"==M){for(Q=J.length-1;Q>-1;Q--){X=J[Q];if(X&&X[0]==N&&X[1]==M&&X[2]==V){J.splice(Q,1);return true;}}return false;}var R=null;var S=arguments[3];if("undefined"===typeof S){S=this._getCacheIndex(N,M,V);}if(S>=0){R=I[S];}if(!N||!R){return false;}if(this.useLegacyEvent(N,M)){var P=this.getLegacyIndex(N,M);var O=E[P];if(O){for(Q=0,T=O.length;Q<T;++Q){X=O[Q];if(X&&X[this.EL]==N&&X[this.TYPE]==M&&X[this.FN]==V){O.splice(Q,1);break;}}}}else{try{this._simpleRemove(N,M,R[this.WFN],false);}catch(U){this.lastError=U;return false;}}delete I[S][this.WFN];delete I[S][this.FN];
+I.splice(S,1);return true;},getTarget:function(O,N){var M=O.target||O.srcElement;return this.resolveTextNode(M);},resolveTextNode:function(N){try{if(N&&3==N.nodeType){return N.parentNode;}}catch(M){}return N;},getPageX:function(N){var M=N.pageX;if(!M&&0!==M){M=N.clientX||0;if(this.isIE){M+=this._getScrollLeft();}}return M;},getPageY:function(M){var N=M.pageY;if(!N&&0!==N){N=M.clientY||0;if(this.isIE){N+=this._getScrollTop();}}return N;},getXY:function(M){return[this.getPageX(M),this.getPageY(M)];},getRelatedTarget:function(N){var M=N.relatedTarget;if(!M){if(N.type=="mouseout"){M=N.toElement;}else{if(N.type=="mouseover"){M=N.fromElement;}}}return this.resolveTextNode(M);},getTime:function(O){if(!O.time){var N=new Date().getTime();try{O.time=N;}catch(M){this.lastError=M;return N;}}return O.time;},stopEvent:function(M){this.stopPropagation(M);this.preventDefault(M);},stopPropagation:function(M){if(M.stopPropagation){M.stopPropagation();}else{M.cancelBubble=true;}},preventDefault:function(M){if(M.preventDefault){M.preventDefault();}else{M.returnValue=false;}},getEvent:function(O,M){var N=O||window.event;if(!N){var P=this.getEvent.caller;while(P){N=P.arguments[0];if(N&&Event==N.constructor){break;}P=P.caller;}}return N;},getCharCode:function(N){var M=N.keyCode||N.charCode||0;if(YAHOO.env.ua.webkit&&(M in D)){M=D[M];}return M;},_getCacheIndex:function(Q,R,P){for(var O=0,N=I.length;O<N;O=O+1){var M=I[O];if(M&&M[this.FN]==P&&M[this.EL]==Q&&M[this.TYPE]==R){return O;}}return -1;},generateId:function(M){var N=M.id;if(!N){N="yuievtautoid-"+A;++A;M.id=N;}return N;},_isValidCollection:function(N){try{return(N&&typeof N!=="string"&&N.length&&!N.tagName&&!N.alert&&typeof N[0]!=="undefined");}catch(M){return false;}},elCache:{},getEl:function(M){return(typeof M==="string")?document.getElementById(M):M;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(N){if(!H){H=true;var M=YAHOO.util.Event;M._ready();M._tryPreloadAttach();}},_ready:function(N){var M=YAHOO.util.Event;if(!M.DOMReady){M.DOMReady=true;M.DOMReadyEvent.fire();M._simpleRemove(document,"DOMContentLoaded",M._ready);}},_tryPreloadAttach:function(){if(F.length===0){C=0;if(this._interval){clearInterval(this._interval);this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var S=!H;if(!S){S=(C>0&&F.length>0);}var R=[];var T=function(V,W){var U=V;if(W.overrideContext){if(W.overrideContext===true){U=W.obj;}else{U=W.overrideContext;}}W.fn.call(U,W.obj);};var N,M,Q,P,O=[];for(N=0,M=F.length;N<M;N=N+1){Q=F[N];if(Q){P=this.getEl(Q.id);if(P){if(Q.checkReady){if(H||P.nextSibling||!S){O.push(Q);F[N]=null;}}else{T(P,Q);F[N]=null;}}else{R.push(Q);}}}for(N=0,M=O.length;N<M;N=N+1){Q=O[N];T(this.getEl(Q.id),Q);}C--;if(S){for(N=F.length-1;N>-1;N--){Q=F[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterval();}else{if(this._interval){clearInterval(this._interval);this._interval=null;}}this.locked=false;},purgeElement:function(Q,R,T){var O=(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var S=this.getListeners(O,T),P,M;if(S){for(P=S.length-1;P>-1;P--){var N=S[P];this.removeListener(O,N.type,N.fn);}}if(R&&O&&O.childNodes){for(P=0,M=O.childNodes.length;P<M;++P){this.purgeElement(O.childNodes[P],R,T);}}},getListeners:function(O,M){var R=[],N;if(!M){N=[I,J];}else{if(M==="unload"){N=[J];}else{N=[I];}}var T=(YAHOO.lang.isString(O))?this.getEl(O):O;for(var Q=0;Q<N.length;Q=Q+1){var V=N[Q];if(V){for(var S=0,U=V.length;S<U;++S){var P=V[S];if(P&&P[this.EL]===T&&(!M||M===P[this.TYPE])){R.push({type:P[this.TYPE],fn:P[this.FN],obj:P[this.OBJ],adjust:P[this.OVERRIDE],scope:P[this.ADJ_SCOPE],index:S});}}}}return(R.length)?R:null;},_unload:function(T){var N=YAHOO.util.Event,Q,P,O,S,R,U=J.slice(),M;for(Q=0,S=J.length;Q<S;++Q){O=U[Q];if(O){M=window;if(O[N.ADJ_SCOPE]){if(O[N.ADJ_SCOPE]===true){M=O[N.UNLOAD_OBJ];}else{M=O[N.ADJ_SCOPE];}}O[N.FN].call(M,N.getEvent(T,O[N.EL]),O[N.UNLOAD_OBJ]);U[Q]=null;}}O=null;M=null;J=null;if(I){for(P=I.length-1;P>-1;P--){O=I[P];if(O){N.removeListener(O[N.EL],O[N.TYPE],O[N.FN],P);}}O=null;}G=null;N._simpleRemove(window,"unload",N._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var M=document.documentElement,N=document.body;if(M&&(M.scrollTop||M.scrollLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEvent){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detachEvent){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
+/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
+if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);
+}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].overrideContext);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.7.0",build:"1796"});YAHOO.register("yahoo-dom-event", YAHOO, {version: "2.7.0", build: "1796"});
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var A=YAHOO.util.Event,B=YAHOO.util.Dom;return{useShim:false,_shimActive:false,_shimState:false,_debugShim:false,_createShim:function(){var C=document.createElement("div");C.id="yui-ddm-shim";if(document.body.firstChild){document.body.insertBefore(C,document.body.firstChild);}else{document.body.appendChild(C);}C.style.display="none";C.style.backgroundColor="red";C.style.position="absolute";C.style.zIndex="99999";B.setStyle(C,"opacity","0");this._shim=C;A.on(C,"mouseup",this.handleMouseUp,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(window,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shimActive){var C=this._shim;C.style.height=B.getDocumentHeight()+"px";C.style.width=B.getDocumentWidth()+"px";C.style.top="0";C.style.left="0";}},_activateShim:function(){if(this.useShim){if(!this._shim){this._createShim();}this._shimActive=true;var C=this._shim,D="0";if(this._debugShim){D=".5";}B.setStyle(C,"opacity",D);this._sizeShim();C.style.display="block";}},_deactivateShim:function(){this._shim.style.display="none";this._shimActive=false;},_shim:null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,interactionInfo:null,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in this.ids){for(var C in this.ids[F]){var G=this.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true);},_onResize:function(C){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromTimeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();}if(!this.ids[C]){this.ids[C]={};}this.ids[C][D.id]=D;},removeDDFromGroup:function(E,C){if(!this.ids[C]){this.ids[C]={};}var D=this.ids[C];if(D&&D[E.id]){delete D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var C=this.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){this.handleIds[D]={};}this.handleIds[D][C]=C;},isDragDrop:function(C){return(this.getDDById(C))?true:false;},getRelated:function(H,D){var G=[];for(var F in H.groups){for(var E in this.ids[F]){var C=this.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G[G.length]=C;}}}return G;},isLegalTarget:function(G,F){var D=this.getRelated(G,true);for(var E=0,C=D.length;E<C;++E){if(D[E].id==F.id){return true;}}return false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:function(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:function(D){for(var C in this.ids){if(this.ids[C][D]){return this.ids[C][D];}}return null;},handleMouseDown:function(E,D){this.currentTarget=YAHOO.util.Event.getTarget(E);this.dragCurrent=D;var C=D.getEl();this.startX=YAHOO.util.Event.getPageX(E);this.startY=YAHOO.util.Event.getPageY(E);this.deltaX=this.startX-C.offsetLeft;this.deltaY=this.startY-C.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var F=YAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=true;},this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this.dragCurrent.useShim){this._shimState=this.useShim;this.useShim=true;}this._activateShim();clearTimeout(this.clickTimeout);var D=this.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fireEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDrag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=true;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clickTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=false;this.handleMouseMove(C);}this.fromTimeout=false;this.fireEvents(C,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.preventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D){var C=this.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDrag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDrag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp){C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){this.useShim=this._shimState;this._shimState=false;}}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(F){var C=this.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stopEvent(F);return this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragThreshMet){var E=Math.abs(this.startX-YAHOO.util.Event.getPageX(F));var D=Math.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPixelThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("dragEvent",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fireEvents:function(V,L){var a=this.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var N=YAHOO.util.Event.getPageX(V),M=YAHOO.util.Event.getPageY(V),P=new YAHOO.util.Point(N,M),K=a.getTargetCoord(P.x,P.y),F=a.getDragEl(),E=["out","over","drop","enter"],U=new YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=[],D={},Q=[],c={outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var S in this.dragOvers){var d=this.dragOvers[S];if(!this.isTypeOfDD(d)){continue;
+}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=true;delete this.dragOvers[S];}for(var R in a.groups){if("string"!=typeof R){continue;}for(S in this.ids[R]){var G=this.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.isLocked()&&G!=a){if(this.isOverTarget(P,G,this.mode,U)){D[R]=true;if(L){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overEvts.push(G);}this.dragOvers[G.id]=G;}}}}}this.interactionInfo={out:c.outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,draggedRegion:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDropEvent",{e:V});}}for(S=0;S<E.length;S++){var Y=null;if(c[E[S]+"Evts"]){Y=c[E[S]+"Evts"];}if(Y&&Y.length){var H=E[S].charAt(0).toUpperCase()+E[S].substr(1),X="onDrag"+H,J="b4Drag"+H,O="drag"+H+"Event",W="drag"+H;if(this.mode){if(a.events[J]){a[J](V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var Z=0,T=Y.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEvent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},getBestMatch:function(E){var G=null;var D=E.length;if(D==1){G=E[0];}else{for(var F=0;F<D;++F){var C=E[F];if(this.mode==this.INTERSECT&&C.cursorIsOver){G=C;break;}else{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea())){G=C;}}}}return G;},refreshCache:function(D){var F=D||this.ids;for(var C in F){if("string"!=typeof C){continue;}for(var E in this.ids[C]){var G=this.ids[C][E];if(this.isTypeOfDD(G)){var H=this.getLocation(G);if(H){this.locationCache[G.id]=H;}else{delete this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var C=D.offsetParent;if(C){return true;}}}catch(E){}return false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var F=H.getEl(),K,E,D,M,L,N,C,J,G;try{K=YAHOO.util.Dom.getXY(F);}catch(I){}if(!K){return null;}E=K[0];D=E+F.offsetWidth;M=K[1];L=M+F.offsetHeight;N=M-H.padding[0];C=D+H.padding[1];J=L+H.padding[2];G=E-H.padding[3];return new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var G=this.locationCache[C.id];if(!G||!this.useCache){G=this.getLocation(C);this.locationCache[C.id]=G;}if(!G){return false;}C.cursorIsOver=G.contains(K);var J=this.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return C.cursorIsOver;}C.overlap=null;if(!F){var H=J.getTargetCoord(K.x,K.y);var D=J.getDragEl();F=new YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var I=F.intersect(G);if(I){C.overlap=I;return(E)?true:C.cursorIsOver;}else{return false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);this.ids={};},elementCache:{},getElWrapper:function(D){var C=this.elementCache[D];if(!C||!C.el){C=this.elementCache[D]=new this.ElementWrapper(YAHOO.util.Dom.get(D));}return C;},getElement:function(C){return YAHOO.util.Dom.get(C);},getCss:function(D){var C=YAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:function(C){this.el=C||null;this.id=this.el&&C.id;this.css=this.el&&C.style;},getPosX:function(C){return YAHOO.util.Dom.getX(C);},getPosY:function(C){return YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode(C);}else{var F=C.parentNode;var D=C.nextSibling;if(D==E){F.insertBefore(E,C);}else{if(C==E.nextSibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.insertBefore(E,D);}}}},getScroll:function(){var E,C,F=document.documentElement,D=document.body;if(F&&(F.scrollTop||F.scrollLeft)){E=F.scrollTop;C=F.scrollLeft;}else{if(D){E=D.scrollTop;C=D.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){return YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(C,E){var D=YAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C);},_timeoutCount:0,_addListeners:function(){var C=YAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C._timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&document.body){C._timeoutCount+=1;}}}},handleWasClicked:function(C,E){if(this.isHandle(E,C.id)){return true;}else{var D=C.parentNode;while(D){if(this.isHandle(E,D.id)){return true;}else{D=D.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}(function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;YAHOO.util.DragDrop=function(E,C,D){if(E){this.init(E,C,D);}};YAHOO.util.DragDrop.prototype={events:null,on:function(){this.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,deltaX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=B.get(this.id);
+}return this._domRef;},getDragEl:function(){return B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(this._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var E in this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){this.config=D||{};this.events={};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof E!=="string"){this._domRef=E;E=B.generateId(E);}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;A.onAvailable(E,this.handleOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.events={mouseDown:true,b4MouseDown:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endDrag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:true,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:true};if(this.config.events){for(var C in this.config.events){if(this.config.events[C]===false){this.events[C]=false;}}}this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);this.dragOnly=((this.config.dragOnly===true)?true:false);this.useShim=((this.config.useShim===true)?true:false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E];}else{if(!F&&0!==F){this.padding=[E,C,E,C];}else{this.padding=[E,C,F,D];}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.display=="none")){}else{}return;}var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H);},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1];},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function(C){this.dragElId=C;},setHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.handleElId=C;this.DDM.regHandle(this.id,C);},setOuterHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}A.on(C,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(C);this.hasOuterHandles=true;},unreg:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var D=J.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isLocked()){return;}var C=this.b4MouseDown(J),F=true;if(this.events.b4MouseDown){F=this.fireEvent("b4MouseDownEvent",J);}var E=this.onMouseDown(J),H=true;if(this.events.mouseDown){H=this.fireEvent("mouseDownEvent",J);}if((C===false)||(E===false)||(F===false)||(H===false)){return;}this.DDM.refreshCache(this.groups);var G=new YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setStartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}else{}}},clickValidator:function(D){var C=YAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTargetCoord:function(E,D){var C=E-this.deltaX;var F=D-this.deltaY;if(this.constrainX){if(C<this.minX){C=this.minX;}if(C>this.maxX){C=this.maxX;}}if(this.constrainY){if(F<this.minY){F=this.minY;}if(F>this.maxY){F=this.maxY;}}C=this.getTick(C,this.xTicks);F=this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D;},addInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.invalidHandleIds[C]=C;},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}delete this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase();}catch(G){H=F.nodeName;}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D]);}return E;},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftConstraint=parseInt(E,10);this.rightConstraint=parseInt(D,10);this.minX=this.initPageX-this.leftConstraint;this.maxX=this.initPageX+this.rightConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(C,E,D){this.topConstraint=parseInt(C,10);this.bottomConstraint=parseInt(E,10);this.minY=this.initPageY-this.topConstraint;this.maxY=this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,D);
+}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(I,F){if(!F){return I;}else{if(F[0]>=I){return F[0];}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E];}}return F[F.length-1];}}},toString:function(){return("DragDrop "+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider);})();YAHOO.util.DD=function(C,A,B){if(C){this.init(C,A,B);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.deltaX=B;this.deltaY=A;},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);if(!this.deltaSetXY){var H=[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var D=parseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var B=parseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=[D-E.x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}this.cachePosition(E.x,E.y);var A=this;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A;}else{var C=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var L=this.DDM.getClientHeight();var B=this.DDM.getClientWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(A){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4Drag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},toString:function(){return("DD "+this.id);}});YAHOO.util.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this,A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame();},50);return;}var F=this.getDragEl(),E=YAHOO.util.Dom;if(!F){F=document.createElement("div");F.id=this.dragElId;var D=F.style;D.position="absolute";D.visibility="hidden";D.cursor="move";D.border="2px solid #aaa";D.zIndex=999;D.height="25px";D.width="25px";var C=document.createElement("div");E.setStyle(C,"height","100%");E.setStyle(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.setDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var H=YAHOO.util.Dom;var B=this.getEl();var C=this.getDragEl();var G=parseInt(H.getStyle(C,"borderTopWidth"),10);var I=parseInt(H.getStyle(C,"borderRightWidth"),10);var F=parseInt(H.getStyle(C,"borderBottomWidth"),10);var D=parseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=0;}if(isNaN(I)){I=0;}if(isNaN(F)){F=0;}if(isNaN(D)){D=0;}var E=Math.max(0,B.offsetWidth-I-D);var A=Math.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyle(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();var A=YAHOO.util.Event.getPageX(B);var C=YAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:function(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var C=YAHOO.util.Dom;var B=this.getEl();var A=this.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibility","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hidden");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return("DDTarget "+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util.Dom.getXY,A=YAHOO.util.Event,D=Array.prototype.slice;function C(G,E,F,H){C.ANIM_AVAIL=(!YAHOO.lang.isUndefined(YAHOO.util.Anim));if(G){this.init(G,E,true);this.initSlider(H);this.initThumb(F);}}YAHOO.lang.augmentObject(C,{getHorizSlider:function(F,G,I,H,E){return new C(F,F,new YAHOO.widget.SliderThumb(G,F,I,H,0,0,E),"horiz");},getVertSlider:function(G,H,E,I,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,0,0,E,I,F),"vert");},getSliderRegion:function(G,H,J,I,E,K,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,J,I,E,K,F),"region");},SOURCE_UI_EVENT:1,SOURCE_SET_VALUE:2,SOURCE_KEY_EVENT:3,ANIM_AVAIL:false},true);YAHOO.extend(C,YAHOO.util.DragDrop,{_mouseDown:false,dragOnly:true,initSlider:function(E){this.type=E;this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);this.isTarget=false;this.animate=C.ANIM_AVAIL;this.backgroundEnabled=true;this.tickPause=40;this.enableKeys=true;this.keyIncrement=20;this.moveComplete=true;this.animationDuration=0.2;this.SOURCE_UI_EVENT=1;this.SOURCE_SET_VALUE=2;this.valueChangeSource=0;this._silent=false;this.lastOffset=[0,0];},initThumb:function(F){var E=this;this.thumb=F;F.cacheBetweenDrags=true;if(F._isHoriz&&F.xTicks&&F.xTicks.length){this.tickPause=Math.round(360/F.xTicks.length);}else{if(F.yTicks&&F.yTicks.length){this.tickPause=Math.round(360/F.yTicks.length);}}F.onAvailable=function(){return E.setStartSliderState();};F.onMouseDown=function(){E._mouseDown=true;return E.focus();};F.startDrag=function(){E._slideStart();};F.onDrag=function(){E.fireEvents(true);};F.onMouseUp=function(){E.thumbMouseUp();};},onAvailable:function(){this._bindKeyEvents();},_bindKeyEvents:function(){A.on(this.id,"keydown",this.handleKeyDown,this,true);A.on(this.id,"keypress",this.handleKeyPress,this,true);},handleKeyPress:function(F){if(this.enableKeys){var E=A.getCharCode(F);switch(E){case 37:case 38:case 39:case 40:case 36:case 35:A.preventDefault(F);break;default:}}},handleKeyDown:function(J){if(this.enableKeys){var G=A.getCharCode(J),F=this.thumb,H=this.getXValue(),E=this.getYValue(),I=true;switch(G){case 37:H-=this.keyIncrement;break;case 38:E-=this.keyIncrement;break;case 39:H+=this.keyIncrement;break;case 40:E+=this.keyIncrement;break;case 36:H=F.leftConstraint;E=F.topConstraint;break;case 35:H=F.rightConstraint;E=F.bottomConstraint;break;default:I=false;}if(I){if(F._isRegion){this._setRegionValue(C.SOURCE_KEY_EVENT,H,E,true);}else{this._setValue(C.SOURCE_KEY_EVENT,(F._isHoriz?H:E),true);}A.stopEvent(J);}}},setStartSliderState:function(){this.setThumbCenterPoint();this.baselinePos=B(this.getEl());this.thumb.startOffset=this.thumb.getOffsetFromParent(this.baselinePos);if(this.thumb._isRegion){if(this.deferredSetRegionValue){this._setRegionValue.apply(this,this.deferredSetRegionValue);this.deferredSetRegionValue=null;}else{this.setRegionValue(0,0,true,true,true);}}else{if(this.deferredSetValue){this._setValue.apply(this,this.deferredSetValue);this.deferredSetValue=null;}else{this.setValue(0,true,true,true);}}},setThumbCenterPoint:function(){var E=this.thumb.getEl();if(E){this.thumbCenterPoint={x:parseInt(E.offsetWidth/2,10),y:parseInt(E.offsetHeight/2,10)};}},lock:function(){this.thumb.lock();this.locked=true;},unlock:function(){this.thumb.unlock();this.locked=false;},thumbMouseUp:function(){this._mouseDown=false;if(!this.isLocked()&&!this.moveComplete){this.endMove();}},onMouseUp:function(){this._mouseDown=false;if(this.backgroundEnabled&&!this.isLocked()&&!this.moveComplete){this.endMove();}},getThumb:function(){return this.thumb;},focus:function(){this.valueChangeSource=C.SOURCE_UI_EVENT;var E=this.getEl();if(E.focus){try{E.focus();}catch(F){}}this.verifyOffset();return !this.isLocked();},onChange:function(E,F){},onSlideStart:function(){},onSlideEnd:function(){},getValue:function(){return this.thumb.getValue();},getXValue:function(){return this.thumb.getXValue();},getYValue:function(){return this.thumb.getYValue();},setValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setValue.apply(this,E);},_setValue:function(I,L,G,H,E){var F=this.thumb,K,J;if(!F.available){this.deferredSetValue=arguments;return false;}if(this.isLocked()&&!H){return false;}if(isNaN(L)){return false;}if(F._isRegion){return false;}this._silent=E;this.valueChangeSource=I||C.SOURCE_SET_VALUE;F.lastOffset=[L,L];this.verifyOffset(true);this._slideStart();if(F._isHoriz){K=F.initPageX+L+this.thumbCenterPoint.x;this.moveThumb(K,F.initPageY,G);}else{J=F.initPageY+L+this.thumbCenterPoint.y;this.moveThumb(F.initPageX,J,G);}return true;},setRegionValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setRegionValue.apply(this,E);},_setRegionValue:function(F,J,H,I,G,K){var L=this.thumb,E,M;if(!L.available){this.deferredSetRegionValue=arguments;return false;}if(this.isLocked()&&!G){return false;}if(isNaN(J)){return false;}if(!L._isRegion){return false;}this._silent=K;this.valueChangeSource=F||C.SOURCE_SET_VALUE;L.lastOffset=[J,H];this.verifyOffset(true);this._slideStart();E=L.initPageX+J+this.thumbCenterPoint.x;M=L.initPageY+H+this.thumbCenterPoint.y;this.moveThumb(E,M,I);return true;},verifyOffset:function(F){var G=B(this.getEl()),E=this.thumb;if(!this.thumbCenterPoint||!this.thumbCenterPoint.x){this.setThumbCenterPoint();}if(G){if(G[0]!=this.baselinePos[0]||G[1]!=this.baselinePos[1]){this.setInitPosition();this.baselinePos=G;E.initPageX=this.initPageX+E.startOffset[0];E.initPageY=this.initPageY+E.startOffset[1];E.deltaSetXY=null;this.resetThumbConstraints();return false;}}return true;},moveThumb:function(K,J,I,G){var L=this.thumb,M=this,F,E,H;if(!L.available){return;}L.setDelta(this.thumbCenterPoint.x,this.thumbCenterPoint.y);E=L.getTargetCoord(K,J);F=[Math.round(E.x),Math.round(E.y)];if(this.animate&&L._graduated&&!I){this.lock();this.curCoord=B(this.thumb.getEl());this.curCoord=[Math.round(this.curCoord[0]),Math.round(this.curCoord[1])];setTimeout(function(){M.moveOneTick(F);
+},this.tickPause);}else{if(this.animate&&C.ANIM_AVAIL&&!I){this.lock();H=new YAHOO.util.Motion(L.id,{points:{to:F}},this.animationDuration,YAHOO.util.Easing.easeOut);H.onComplete.subscribe(function(){M.unlock();if(!M._mouseDown){M.endMove();}});H.animate();}else{L.setDragElPos(K,J);if(!G&&!this._mouseDown){this.endMove();}}}},_slideStart:function(){if(!this._sliding){if(!this._silent){this.onSlideStart();this.fireEvent("slideStart");}this._sliding=true;}},_slideEnd:function(){if(this._sliding&&this.moveComplete){var E=this._silent;this._sliding=false;this._silent=false;this.moveComplete=false;if(!E){this.onSlideEnd();this.fireEvent("slideEnd");}}},moveOneTick:function(F){var H=this.thumb,G=this,I=null,E,J;if(H._isRegion){I=this._getNextX(this.curCoord,F);E=(I!==null)?I[0]:this.curCoord[0];I=this._getNextY(this.curCoord,F);J=(I!==null)?I[1]:this.curCoord[1];I=E!==this.curCoord[0]||J!==this.curCoord[1]?[E,J]:null;}else{if(H._isHoriz){I=this._getNextX(this.curCoord,F);}else{I=this._getNextY(this.curCoord,F);}}if(I){this.curCoord=I;this.thumb.alignElWithMouse(H.getEl(),I[0]+this.thumbCenterPoint.x,I[1]+this.thumbCenterPoint.y);if(!(I[0]==F[0]&&I[1]==F[1])){setTimeout(function(){G.moveOneTick(F);},this.tickPause);}else{this.unlock();if(!this._mouseDown){this.endMove();}}}else{this.unlock();if(!this._mouseDown){this.endMove();}}},_getNextX:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[0]>F[0]){J=H.tickSize-this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]-J,E[1]);I=[G.x,G.y];}else{if(E[0]<F[0]){J=H.tickSize+this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]+J,E[1]);I=[G.x,G.y];}else{}}return I;},_getNextY:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[1]>F[1]){J=H.tickSize-this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]-J);I=[G.x,G.y];}else{if(E[1]<F[1]){J=H.tickSize+this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]+J);I=[G.x,G.y];}else{}}return I;},b4MouseDown:function(E){if(!this.backgroundEnabled){return false;}this.thumb.autoOffset();this.resetThumbConstraints();},onMouseDown:function(F){if(!this.backgroundEnabled||this.isLocked()){return false;}this._mouseDown=true;var E=A.getPageX(F),G=A.getPageY(F);this.focus();this._slideStart();this.moveThumb(E,G);},onDrag:function(F){if(this.backgroundEnabled&&!this.isLocked()){var E=A.getPageX(F),G=A.getPageY(F);this.moveThumb(E,G,true,true);this.fireEvents();}},endMove:function(){this.unlock();this.fireEvents();this.moveComplete=true;this._slideEnd();},resetThumbConstraints:function(){var E=this.thumb;E.setXConstraint(E.leftConstraint,E.rightConstraint,E.xTickSize);E.setYConstraint(E.topConstraint,E.bottomConstraint,E.xTickSize);},fireEvents:function(G){var F=this.thumb,I,H,E;if(!G){F.cachePosition();}if(!this.isLocked()){if(F._isRegion){I=F.getXValue();H=F.getYValue();if(I!=this.previousX||H!=this.previousY){if(!this._silent){this.onChange(I,H);this.fireEvent("change",{x:I,y:H});}}this.previousX=I;this.previousY=H;}else{E=F.getValue();if(E!=this.previousVal){if(!this._silent){this.onChange(E);this.fireEvent("change",E);}}this.previousVal=E;}}},toString:function(){return("Slider ("+this.type+") "+this.id);}});YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);YAHOO.widget.Slider=C;})();YAHOO.widget.SliderThumb=function(G,B,E,D,A,F,C){if(G){YAHOO.widget.SliderThumb.superclass.constructor.call(this,G,B);this.parentElId=B;}this.isTarget=false;this.tickSize=C;this.maintainOffset=true;this.initSlider(E,D,A,F,C);this.scroll=false;};YAHOO.extend(YAHOO.widget.SliderThumb,YAHOO.util.DD,{startOffset:null,dragOnly:true,_isHoriz:false,_prevVal:0,_graduated:false,getOffsetFromParent0:function(C){var A=YAHOO.util.Dom.getXY(this.getEl()),B=C||YAHOO.util.Dom.getXY(this.parentElId);return[(A[0]-B[0]),(A[1]-B[1])];},getOffsetFromParent:function(H){var A=this.getEl(),E,I,F,B,K,D,C,J,G;if(!this.deltaOffset){I=YAHOO.util.Dom.getXY(A);F=H||YAHOO.util.Dom.getXY(this.parentElId);E=[(I[0]-F[0]),(I[1]-F[1])];B=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);K=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);D=B-E[0];C=K-E[1];if(isNaN(D)||isNaN(C)){}else{this.deltaOffset=[D,C];}}else{J=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);G=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);E=[J+this.deltaOffset[0],G+this.deltaOffset[1]];}return E;},initSlider:function(D,C,A,E,B){this.initLeft=D;this.initRight=C;this.initUp=A;this.initDown=E;this.setXConstraint(D,C,B);this.setYConstraint(A,E,B);if(B&&B>1){this._graduated=true;}this._isHoriz=(D||C);this._isVert=(A||E);this._isRegion=(this._isHoriz&&this._isVert);},clearTicks:function(){YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);this.tickSize=0;this._graduated=false;},getValue:function(){return(this._isHoriz)?this.getXValue():this.getYValue();},getXValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[0])){this.lastOffset=A;return(A[0]-this.startOffset[0]);}else{return(this.lastOffset[0]-this.startOffset[0]);}},getYValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[1])){this.lastOffset=A;return(A[1]-this.startOffset[1]);}else{return(this.lastOffset[1]-this.startOffset[1]);}},toString:function(){return"SliderThumb "+this.id;},onChange:function(A,B){}});(function(){var A=YAHOO.util.Event,B=YAHOO.widget;function C(I,F,H,D){var G=this,J={min:false,max:false},E,K;this.minSlider=I;this.maxSlider=F;this.activeSlider=I;this.isHoriz=I.thumb._isHoriz;E=this.minSlider.thumb.onMouseDown;K=this.maxSlider.thumb.onMouseDown;this.minSlider.thumb.onMouseDown=function(){G.activeSlider=G.minSlider;E.apply(this,arguments);};this.maxSlider.thumb.onMouseDown=function(){G.activeSlider=G.maxSlider;K.apply(this,arguments);};this.minSlider.thumb.onAvailable=function(){I.setStartSliderState();J.min=true;if(J.max){G.fireEvent("ready",G);}};this.maxSlider.thumb.onAvailable=function(){F.setStartSliderState();J.max=true;if(J.min){G.fireEvent("ready",G);}};I.onMouseDown=F.onMouseDown=function(L){return this.backgroundEnabled&&G._handleMouseDown(L);
+};I.onDrag=F.onDrag=function(L){G._handleDrag(L);};I.onMouseUp=F.onMouseUp=function(L){G._handleMouseUp(L);};I._bindKeyEvents=function(){G._bindKeyEvents(this);};F._bindKeyEvents=function(){};I.subscribe("change",this._handleMinChange,I,this);I.subscribe("slideStart",this._handleSlideStart,I,this);I.subscribe("slideEnd",this._handleSlideEnd,I,this);F.subscribe("change",this._handleMaxChange,F,this);F.subscribe("slideStart",this._handleSlideStart,F,this);F.subscribe("slideEnd",this._handleSlideEnd,F,this);this.createEvent("ready",this);this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);D=YAHOO.lang.isArray(D)?D:[0,H];D[0]=Math.min(Math.max(parseInt(D[0],10)|0,0),H);D[1]=Math.max(Math.min(parseInt(D[1],10)|0,H),0);if(D[0]>D[1]){D.splice(0,2,D[1],D[0]);}this.minVal=D[0];this.maxVal=D[1];this.minSlider.setValue(this.minVal,true,true,true);this.maxSlider.setValue(this.maxVal,true,true,true);}C.prototype={minVal:-1,maxVal:-1,minRange:0,_handleSlideStart:function(E,D){this.fireEvent("slideStart",D);},_handleSlideEnd:function(E,D){this.fireEvent("slideEnd",D);},_handleDrag:function(D){B.Slider.prototype.onDrag.call(this.activeSlider,D);},_handleMinChange:function(){this.activeSlider=this.minSlider;this.updateValue();},_handleMaxChange:function(){this.activeSlider=this.maxSlider;this.updateValue();},_bindKeyEvents:function(D){A.on(D.id,"keydown",this._handleKeyDown,this,true);A.on(D.id,"keypress",this._handleKeyPress,this,true);},_handleKeyDown:function(D){this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);},_handleKeyPress:function(D){this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);},setValues:function(H,K,I,E,J){var F=this.minSlider,M=this.maxSlider,D=F.thumb,L=M.thumb,N=this,G={min:false,max:false};if(D._isHoriz){D.setXConstraint(D.leftConstraint,L.rightConstraint,D.tickSize);L.setXConstraint(D.leftConstraint,L.rightConstraint,L.tickSize);}else{D.setYConstraint(D.topConstraint,L.bottomConstraint,D.tickSize);L.setYConstraint(D.topConstraint,L.bottomConstraint,L.tickSize);}this._oneTimeCallback(F,"slideEnd",function(){G.min=true;if(G.max){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});this._oneTimeCallback(M,"slideEnd",function(){G.max=true;if(G.min){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});F.setValue(H,I,E,false);M.setValue(K,I,E,false);},setMinValue:function(F,H,I,E){var G=this.minSlider,D=this;this.activeSlider=G;D=this;this._oneTimeCallback(G,"slideEnd",function(){D.updateValue(E);setTimeout(function(){D._cleanEvent(G,"slideEnd");},0);});G.setValue(F,H,I);},setMaxValue:function(D,H,I,F){var G=this.maxSlider,E=this;this.activeSlider=G;this._oneTimeCallback(G,"slideEnd",function(){E.updateValue(F);setTimeout(function(){E._cleanEvent(G,"slideEnd");},0);});G.setValue(D,H,I);},updateValue:function(J){var E=this.minSlider.getValue(),K=this.maxSlider.getValue(),F=false,D,M,H,I,L,G;if(E!=this.minVal||K!=this.maxVal){F=true;D=this.minSlider.thumb;M=this.maxSlider.thumb;H=this.isHoriz?"x":"y";G=this.minSlider.thumbCenterPoint[H]+this.maxSlider.thumbCenterPoint[H];I=Math.max(K-G-this.minRange,0);L=Math.min(-E-G-this.minRange,0);if(this.isHoriz){I=Math.min(I,M.rightConstraint);D.setXConstraint(D.leftConstraint,I,D.tickSize);M.setXConstraint(L,M.rightConstraint,M.tickSize);}else{I=Math.min(I,M.bottomConstraint);D.setYConstraint(D.leftConstraint,I,D.tickSize);M.setYConstraint(L,M.bottomConstraint,M.tickSize);}}this.minVal=E;this.maxVal=K;if(F&&!J){this.fireEvent("change",this);}},selectActiveSlider:function(H){var E=this.minSlider,D=this.maxSlider,J=E.isLocked()||!E.backgroundEnabled,G=D.isLocked()||!E.backgroundEnabled,F=YAHOO.util.Event,I;if(J||G){this.activeSlider=J?D:E;}else{if(this.isHoriz){I=F.getPageX(H)-E.thumb.initPageX-E.thumbCenterPoint.x;}else{I=F.getPageY(H)-E.thumb.initPageY-E.thumbCenterPoint.y;}this.activeSlider=I*2>D.getValue()+E.getValue()?D:E;}},_handleMouseDown:function(D){if(!D._handled){D._handled=true;this.selectActiveSlider(D);return B.Slider.prototype.onMouseDown.call(this.activeSlider,D);}else{return false;}},_handleMouseUp:function(D){B.Slider.prototype.onMouseUp.apply(this.activeSlider,arguments);},_oneTimeCallback:function(F,D,E){F.subscribe(D,function(){F.unsubscribe(D,arguments.callee);E.apply({},[].slice.apply(arguments));});},_cleanEvent:function(K,E){var J,I,D,G,H,F;if(K.__yui_events&&K.events[E]){for(I=K.__yui_events.length;I>=0;--I){if(K.__yui_events[I].type===E){J=K.__yui_events[I];break;}}if(J){H=J.subscribers;F=[];G=0;for(I=0,D=H.length;I<D;++I){if(H[I]){F[G++]=H[I];}}J.subscribers=F;}}}};YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);B.Slider.getHorizDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,G,0,0,F),E=new B.SliderThumb(K,H,0,G,0,0,F);return new C(new B.Slider(H,H,I,"horiz"),new B.Slider(H,H,E,"horiz"),G,D);};B.Slider.getVertDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,0,0,G,F),E=new B.SliderThumb(K,H,0,0,0,G,F);return new B.DualSlider(new B.Slider(H,H,I,"vert"),new B.Slider(H,H,E,"vert"),G,D);};YAHOO.widget.DualSlider=C;})();YAHOO.register("slider",YAHOO.widget.Slider,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Attribute=function(B,A){if(A){this.owner=A;this.configure(B,true);}};YAHOO.util.Attribute.prototype={name:undefined,value:null,owner:null,readOnly:false,writeOnce:false,_initialConfig:null,_written:false,method:null,setter:null,getter:null,validator:null,getValue:function(){var A=this.value;if(this.getter){A=this.getter.call(this.owner,this.name);}return A;},setValue:function(F,B){var E,A=this.owner,C=this.name;var D={type:C,prevValue:this.getValue(),newValue:F};if(this.readOnly||(this.writeOnce&&this._written)){return false;}if(this.validator&&!this.validator.call(A,F)){return false;}if(!B){E=A.fireBeforeChangeEvent(D);if(E===false){return false;}}if(this.setter){F=this.setter.call(A,F,this.name);if(F===undefined){}}if(this.method){this.method.call(A,F,this.name);}this.value=F;this._written=true;D.type=C;if(!B){this.owner.fireChangeEvent(D);}return true;},configure:function(B,C){B=B||{};if(C){this._written=false;}this._initialConfig=this._initialConfig||{};for(var A in B){if(B.hasOwnProperty(A)){this[A]=B[A];if(C){this._initialConfig[A]=B[A];}}}},resetValue:function(){return this.setValue(this._initialConfig.value);},resetConfig:function(){this.configure(this._initialConfig,true);},refresh:function(A){this.setValue(this.value,A);}};(function(){var A=YAHOO.util.Lang;YAHOO.util.AttributeProvider=function(){};YAHOO.util.AttributeProvider.prototype={_configs:null,get:function(C){this._configs=this._configs||{};var B=this._configs[C];if(!B||!this._configs.hasOwnProperty(C)){return null;}return B.getValue();},set:function(D,E,B){this._configs=this._configs||{};var C=this._configs[D];if(!C){return false;}return C.setValue(E,B);},getAttributeKeys:function(){this._configs=this._configs;var C=[],B;for(B in this._configs){if(A.hasOwnProperty(this._configs,B)&&!A.isUndefined(this._configs[B])){C[C.length]=B;}}return C;},setAttributes:function(D,B){for(var C in D){if(A.hasOwnProperty(D,C)){this.set(C,D[C],B);}}},resetValue:function(C,B){this._configs=this._configs||{};if(this._configs[C]){this.set(C,this._configs[C]._initialConfig.value,B);return true;}return false;},refresh:function(E,C){this._configs=this._configs||{};var F=this._configs;E=((A.isString(E))?[E]:E)||this.getAttributeKeys();for(var D=0,B=E.length;D<B;++D){if(F.hasOwnProperty(E[D])){this._configs[E[D]].refresh(C);}}},register:function(B,C){this.setAttributeConfig(B,C);},getAttributeConfig:function(C){this._configs=this._configs||{};var B=this._configs[C]||{};var D={};for(C in B){if(A.hasOwnProperty(B,C)){D[C]=B[C];}}return D;},setAttributeConfig:function(B,C,D){this._configs=this._configs||{};C=C||{};if(!this._configs[B]){C.name=B;this._configs[B]=this.createAttribute(C);}else{this._configs[B].configure(C,D);}},configureAttribute:function(B,C,D){this.setAttributeConfig(B,C,D);},resetAttributeConfig:function(B){this._configs=this._configs||{};this._configs[B].resetConfig();},subscribe:function(B,C){this._events=this._events||{};if(!(B in this._events)){this._events[B]=this.createEvent(B);}YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){this.subscribe.apply(this,arguments);},addListener:function(){this.subscribe.apply(this,arguments);},fireBeforeChangeEvent:function(C){var B="before";B+=C.type.charAt(0).toUpperCase()+C.type.substr(1)+"Change";C.type=B;return this.fireEvent(C.type,C);},fireChangeEvent:function(B){B.type+="Change";return this.fireEvent(B.type,B);},createAttribute:function(B){return new YAHOO.util.Attribute(B,this);}};YAHOO.augment(YAHOO.util.AttributeProvider,YAHOO.util.EventProvider);})();(function(){var B=YAHOO.util.Dom,C=YAHOO.util.AttributeProvider;var A=function(D,E){this.init.apply(this,arguments);};A.DOM_EVENTS={"click":true,"dblclick":true,"keydown":true,"keypress":true,"keyup":true,"mousedown":true,"mousemove":true,"mouseout":true,"mouseover":true,"mouseup":true,"focus":true,"blur":true,"submit":true,"change":true};A.prototype={DOM_EVENTS:null,DEFAULT_HTML_SETTER:function(F,D){var E=this.get("element");if(E){E[D]=F;}},DEFAULT_HTML_GETTER:function(D){var E=this.get("element"),F;if(E){F=E[D];}return F;},appendChild:function(D){D=D.get?D.get("element"):D;return this.get("element").appendChild(D);},getElementsByTagName:function(D){return this.get("element").getElementsByTagName(D);},hasChildNodes:function(){return this.get("element").hasChildNodes();},insertBefore:function(D,E){D=D.get?D.get("element"):D;E=(E&&E.get)?E.get("element"):E;return this.get("element").insertBefore(D,E);},removeChild:function(D){D=D.get?D.get("element"):D;return this.get("element").removeChild(D);},replaceChild:function(D,E){D=D.get?D.get("element"):D;E=E.get?E.get("element"):E;return this.get("element").replaceChild(D,E);},initAttributes:function(D){},addListener:function(H,G,I,F){var E=this.get("element")||this.get("id");F=F||this;var D=this;if(!this._events[H]){if(E&&this.DOM_EVENTS[H]){YAHOO.util.Event.addListener(E,H,function(J){if(J.srcElement&&!J.target){J.target=J.srcElement;}D.fireEvent(H,J);},I,F);}this.createEvent(H,this);}return YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){return this.addListener.apply(this,arguments);},subscribe:function(){return this.addListener.apply(this,arguments);},removeListener:function(E,D){return this.unsubscribe.apply(this,arguments);},addClass:function(D){B.addClass(this.get("element"),D);},getElementsByClassName:function(E,D){return B.getElementsByClassName(E,D,this.get("element"));},hasClass:function(D){return B.hasClass(this.get("element"),D);},removeClass:function(D){return B.removeClass(this.get("element"),D);},replaceClass:function(E,D){return B.replaceClass(this.get("element"),E,D);},setStyle:function(E,D){return B.setStyle(this.get("element"),E,D);},getStyle:function(D){return B.getStyle(this.get("element"),D);},fireQueue:function(){var E=this._queue;for(var F=0,D=E.length;F<D;++F){this[E[F][0]].apply(this,E[F][1]);}},appendTo:function(E,F){E=(E.get)?E.get("element"):B.get(E);this.fireEvent("beforeAppendTo",{type:"beforeAppendTo",target:E});
+F=(F&&F.get)?F.get("element"):B.get(F);var D=this.get("element");if(!D){return false;}if(!E){return false;}if(D.parent!=E){if(F){E.insertBefore(D,F);}else{E.appendChild(D);}}this.fireEvent("appendTo",{type:"appendTo",target:E});return D;},get:function(D){var F=this._configs||{},E=F.element;if(E&&!F[D]&&!YAHOO.lang.isUndefined(E.value[D])){this._setHTMLAttrConfig(D);}return C.prototype.get.call(this,D);},setAttributes:function(J,G){var E={},H=this._configOrder;for(var I=0,D=H.length;I<D;++I){if(J[H[I]]!==undefined){E[H[I]]=true;this.set(H[I],J[H[I]],G);}}for(var F in J){if(J.hasOwnProperty(F)&&!E[F]){this.set(F,J[F],G);}}},set:function(E,G,D){var F=this.get("element");if(!F){this._queue[this._queue.length]=["set",arguments];if(this._configs[E]){this._configs[E].value=G;}return;}if(!this._configs[E]&&!YAHOO.lang.isUndefined(F[E])){this._setHTMLAttrConfig(E);}return C.prototype.set.apply(this,arguments);},setAttributeConfig:function(D,E,F){this._configOrder.push(D);C.prototype.setAttributeConfig.apply(this,arguments);},createEvent:function(E,D){this._events[E]=true;return C.prototype.createEvent.apply(this,arguments);},init:function(E,D){this._initElement(E,D);},destroy:function(){var D=this.get("element");YAHOO.util.Event.purgeElement(D,true);this.unsubscribeAll();if(D&&D.parentNode){D.parentNode.removeChild(D);}this._queue=[];this._events={};this._configs={};this._configOrder=[];},_initElement:function(F,E){this._queue=this._queue||[];this._events=this._events||{};this._configs=this._configs||{};this._configOrder=[];E=E||{};E.element=E.element||F||null;var H=false;var D=A.DOM_EVENTS;this.DOM_EVENTS=this.DOM_EVENTS||{};for(var G in D){if(D.hasOwnProperty(G)){this.DOM_EVENTS[G]=D[G];}}if(typeof E.element==="string"){this._setHTMLAttrConfig("id",{value:E.element});}if(B.get(E.element)){H=true;this._initHTMLElement(E);this._initContent(E);}YAHOO.util.Event.onAvailable(E.element,function(){if(!H){this._initHTMLElement(E);}this.fireEvent("available",{type:"available",target:B.get(E.element)});},this,true);YAHOO.util.Event.onContentReady(E.element,function(){if(!H){this._initContent(E);}this.fireEvent("contentReady",{type:"contentReady",target:B.get(E.element)});},this,true);},_initHTMLElement:function(D){this.setAttributeConfig("element",{value:B.get(D.element),readOnly:true});},_initContent:function(D){this.initAttributes(D);this.setAttributes(D,true);this.fireQueue();},_setHTMLAttrConfig:function(D,F){var E=this.get("element");F=F||{};F.name=D;F.setter=F.setter||this.DEFAULT_HTML_SETTER;F.getter=F.getter||this.DEFAULT_HTML_GETTER;F.value=F.value||E[D];this._configs[D]=new YAHOO.util.Attribute(F,this);}};YAHOO.augment(A,C);YAHOO.util.Element=A;})();YAHOO.register("element",YAHOO.util.Element,{version:"2.7.0",build:"1796"});/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+YAHOO.util.Color=function(){var A="0",B=YAHOO.lang.isArray,C=YAHOO.lang.isNumber;return{real2dec:function(D){return Math.min(255,Math.round(D*256));},hsv2rgb:function(H,O,M){if(B(H)){return this.hsv2rgb.call(this,H[0],H[1],H[2]);}var D,I,L,G=Math.floor((H/60)%6),J=(H/60)-G,F=M*(1-O),E=M*(1-J*O),N=M*(1-(1-J)*O),K;switch(G){case 0:D=M;I=N;L=F;break;case 1:D=E;I=M;L=F;break;case 2:D=F;I=M;L=N;break;case 3:D=F;I=E;L=M;break;case 4:D=N;I=F;L=M;break;case 5:D=M;I=F;L=E;break;}K=this.real2dec;return[K(D),K(I),K(L)];},rgb2hsv:function(D,H,I){if(B(D)){return this.rgb2hsv.apply(this,D);}D/=255;H/=255;I/=255;var G,L,E=Math.min(Math.min(D,H),I),J=Math.max(Math.max(D,H),I),K=J-E,F;switch(J){case E:G=0;break;case D:G=60*(H-I)/K;if(H<I){G+=360;}break;case H:G=(60*(I-D)/K)+120;break;case I:G=(60*(D-H)/K)+240;break;}L=(J===0)?0:1-(E/J);F=[Math.round(G),L,J];return F;},rgb2hex:function(F,E,D){if(B(F)){return this.rgb2hex.apply(this,F);}var G=this.dec2hex;return G(F)+G(E)+G(D);},dec2hex:function(D){D=parseInt(D,10)|0;D=(D>255||D<0)?0:D;return(A+D.toString(16)).slice(-2).toUpperCase();},hex2dec:function(D){return parseInt(D,16);},hex2rgb:function(D){var E=this.hex2dec;return[E(D.slice(0,2)),E(D.slice(2,4)),E(D.slice(4,6))];},websafe:function(F,E,D){if(B(F)){return this.websafe.apply(this,F);}var G=function(H){if(C(H)){H=Math.min(Math.max(0,H),255);var I,J;for(I=0;I<256;I=I+51){J=I+51;if(H>=I&&H<=J){return(H-I>25)?J:I;}}}return H;};return[G(F),G(E),G(D)];}};}();(function(){var J=0,F=YAHOO.util,C=YAHOO.lang,D=YAHOO.widget.Slider,B=F.Color,E=F.Dom,I=F.Event,A=C.substitute,H="yui-picker";function G(L,K){J=J+1;K=K||{};if(arguments.length===1&&!YAHOO.lang.isString(L)&&!L.nodeName){K=L;L=K.element||null;}if(!L&&!K.element){L=this._createHostElement(K);}G.superclass.constructor.call(this,L,K);this.initPicker();}YAHOO.extend(G,YAHOO.util.Element,{ID:{R:H+"-r",R_HEX:H+"-rhex",G:H+"-g",G_HEX:H+"-ghex",B:H+"-b",B_HEX:H+"-bhex",H:H+"-h",S:H+"-s",V:H+"-v",PICKER_BG:H+"-bg",PICKER_THUMB:H+"-thumb",HUE_BG:H+"-hue-bg",HUE_THUMB:H+"-hue-thumb",HEX:H+"-hex",SWATCH:H+"-swatch",WEBSAFE_SWATCH:H+"-websafe-swatch",CONTROLS:H+"-controls",RGB_CONTROLS:H+"-rgb-controls",HSV_CONTROLS:H+"-hsv-controls",HEX_CONTROLS:H+"-hex-controls",HEX_SUMMARY:H+"-hex-summary",CONTROLS_LABEL:H+"-controls-label"},TXT:{ILLEGAL_HEX:"Illegal hex value entered",SHOW_CONTROLS:"Show color details",HIDE_CONTROLS:"Hide color details",CURRENT_COLOR:"Currently selected color: {rgb}",CLOSEST_WEBSAFE:"Closest websafe color: {rgb}. Click to select.",R:"R",G:"G",B:"B",H:"H",S:"S",V:"V",HEX:"#",DEG:"\u00B0",PERCENT:"%"},IMAGE:{PICKER_THUMB:"../../build/colorpicker/assets/picker_thumb.png",HUE_THUMB:"../../build/colorpicker/assets/hue_thumb.png"},DEFAULT:{PICKER_SIZE:180},OPT:{HUE:"hue",SATURATION:"saturation",VALUE:"value",RED:"red",GREEN:"green",BLUE:"blue",HSV:"hsv",RGB:"rgb",WEBSAFE:"websafe",HEX:"hex",PICKER_SIZE:"pickersize",SHOW_CONTROLS:"showcontrols",SHOW_RGB_CONTROLS:"showrgbcontrols",SHOW_HSV_CONTROLS:"showhsvcontrols",SHOW_HEX_CONTROLS:"showhexcontrols",SHOW_HEX_SUMMARY:"showhexsummary",SHOW_WEBSAFE:"showwebsafe",CONTAINER:"container",IDS:"ids",ELEMENTS:"elements",TXT:"txt",IMAGES:"images",ANIMATE:"animate"},skipAnim:true,_createHostElement:function(){var K=document.createElement("div");if(this.CSS.BASE){K.className=this.CSS.BASE;}return K;},_updateHueSlider:function(){var K=this.get(this.OPT.PICKER_SIZE),L=this.get(this.OPT.HUE);L=K-Math.round(L/360*K);if(L===K){L=0;}this.hueSlider.setValue(L,this.skipAnim);},_updatePickerSlider:function(){var L=this.get(this.OPT.PICKER_SIZE),M=this.get(this.OPT.SATURATION),K=this.get(this.OPT.VALUE);M=Math.round(M*L/100);K=Math.round(L-(K*L/100));this.pickerSlider.setRegionValue(M,K,this.skipAnim);},_updateSliders:function(){this._updateHueSlider();this._updatePickerSlider();},setValue:function(L,K){K=(K)||false;this.set(this.OPT.RGB,L,K);this._updateSliders();},hueSlider:null,pickerSlider:null,_getH:function(){var K=this.get(this.OPT.PICKER_SIZE),L=(K-this.hueSlider.getValue())/K;L=Math.round(L*360);return(L===360)?0:L;},_getS:function(){return this.pickerSlider.getXValue()/this.get(this.OPT.PICKER_SIZE);},_getV:function(){var K=this.get(this.OPT.PICKER_SIZE);return(K-this.pickerSlider.getYValue())/K;},_updateSwatch:function(){var M=this.get(this.OPT.RGB),O=this.get(this.OPT.WEBSAFE),N=this.getElement(this.ID.SWATCH),L=M.join(","),K=this.get(this.OPT.TXT);E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CURRENT_COLOR,{"rgb":"#"+this.get(this.OPT.HEX)});N=this.getElement(this.ID.WEBSAFE_SWATCH);L=O.join(",");E.setStyle(N,"background-color","rgb("+L+")");N.title=A(K.CLOSEST_WEBSAFE,{"rgb":"#"+B.rgb2hex(O)});},_getValuesFromSliders:function(){this.set(this.OPT.RGB,B.hsv2rgb(this._getH(),this._getS(),this._getV()));},_updateFormFields:function(){this.getElement(this.ID.H).value=this.get(this.OPT.HUE);this.getElement(this.ID.S).value=this.get(this.OPT.SATURATION);this.getElement(this.ID.V).value=this.get(this.OPT.VALUE);this.getElement(this.ID.R).value=this.get(this.OPT.RED);this.getElement(this.ID.R_HEX).innerHTML=B.dec2hex(this.get(this.OPT.RED));this.getElement(this.ID.G).value=this.get(this.OPT.GREEN);this.getElement(this.ID.G_HEX).innerHTML=B.dec2hex(this.get(this.OPT.GREEN));this.getElement(this.ID.B).value=this.get(this.OPT.BLUE);this.getElement(this.ID.B_HEX).innerHTML=B.dec2hex(this.get(this.OPT.BLUE));this.getElement(this.ID.HEX).value=this.get(this.OPT.HEX);},_onHueSliderChange:function(N){var L=this._getH(),K=B.hsv2rgb(L,1,1),M="rgb("+K.join(",")+")";this.set(this.OPT.HUE,L,true);E.setStyle(this.getElement(this.ID.PICKER_BG),"background-color",M);if(this.hueSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();}this._updateFormFields();this._updateSwatch();},_onPickerSliderChange:function(M){var L=this._getS(),K=this._getV();this.set(this.OPT.SATURATION,Math.round(L*100),true);this.set(this.OPT.VALUE,Math.round(K*100),true);if(this.pickerSlider.valueChangeSource!==D.SOURCE_SET_VALUE){this._getValuesFromSliders();
+}this._updateFormFields();this._updateSwatch();},_getCommand:function(K){var L=I.getCharCode(K);if(L===38){return 3;}else{if(L===13){return 6;}else{if(L===40){return 4;}else{if(L>=48&&L<=57){return 1;}else{if(L>=97&&L<=102){return 2;}else{if(L>=65&&L<=70){return 2;}else{if("8, 9, 13, 27, 37, 39".indexOf(L)>-1||K.ctrlKey||K.metaKey){return 5;}else{return 0;}}}}}}}},_useFieldValue:function(L,K,N){var M=K.value;if(N!==this.OPT.HEX){M=parseInt(M,10);}if(M!==this.get(N)){this.set(N,M);}},_rgbFieldKeypress:function(M,K,O){var N=this._getCommand(M),L=(M.shiftKey)?10:1;switch(N){case 6:this._useFieldValue.apply(this,arguments);break;case 3:this.set(O,Math.min(this.get(O)+L,255));this._updateFormFields();break;case 4:this.set(O,Math.max(this.get(O)-L,0));this._updateFormFields();break;default:}},_hexFieldKeypress:function(L,K,N){var M=this._getCommand(L);if(M===6){this._useFieldValue.apply(this,arguments);}},_hexOnly:function(L,K){var M=this._getCommand(L);switch(M){case 6:case 5:case 1:break;case 2:if(K!==true){break;}default:I.stopEvent(L);return false;}},_numbersOnly:function(K){return this._hexOnly(K,true);},getElement:function(K){return this.get(this.OPT.ELEMENTS)[this.get(this.OPT.IDS)[K]];},_createElements:function(){var N,M,P,O,L,K=this.get(this.OPT.IDS),Q=this.get(this.OPT.TXT),S=this.get(this.OPT.IMAGES),R=function(U,V){var W=document.createElement(U);if(V){C.augmentObject(W,V,true);}return W;},T=function(U,V){var W=C.merge({autocomplete:"off",value:"0",size:3,maxlength:3},V);W.name=W.id;return new R(U,W);};L=this.get("element");N=new R("div",{id:K[this.ID.PICKER_BG],className:"yui-picker-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.PICKER_THUMB],className:"yui-picker-thumb"});P=new R("img",{src:S.PICKER_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HUE_BG],className:"yui-picker-hue-bg",tabIndex:-1,hideFocus:true});M=new R("div",{id:K[this.ID.HUE_THUMB],className:"yui-picker-hue-thumb"});P=new R("img",{src:S.HUE_THUMB});M.appendChild(P);N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.CONTROLS],className:"yui-picker-controls"});L.appendChild(N);L=N;N=new R("div",{className:"hd"});M=new R("a",{id:K[this.ID.CONTROLS_LABEL],href:"#"});N.appendChild(M);L.appendChild(N);N=new R("div",{className:"bd"});L.appendChild(N);L=N;N=new R("ul",{id:K[this.ID.RGB_CONTROLS],className:"yui-picker-rgb-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.R+" "));O=new T("input",{id:K[this.ID.R],className:"yui-picker-r"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.G+" "));O=new T("input",{id:K[this.ID.G],className:"yui-picker-g"});M.appendChild(O);N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.B+" "));O=new T("input",{id:K[this.ID.B],className:"yui-picker-b"});M.appendChild(O);N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HSV_CONTROLS],className:"yui-picker-hsv-controls"});M=new R("li");M.appendChild(document.createTextNode(Q.H+" "));O=new T("input",{id:K[this.ID.H],className:"yui-picker-h"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.DEG));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.S+" "));O=new T("input",{id:K[this.ID.S],className:"yui-picker-s"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);M=new R("li");M.appendChild(document.createTextNode(Q.V+" "));O=new T("input",{id:K[this.ID.V],className:"yui-picker-v"});M.appendChild(O);M.appendChild(document.createTextNode(" "+Q.PERCENT));N.appendChild(M);L.appendChild(N);N=new R("ul",{id:K[this.ID.HEX_SUMMARY],className:"yui-picker-hex_summary"});M=new R("li",{id:K[this.ID.R_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.G_HEX]});N.appendChild(M);M=new R("li",{id:K[this.ID.B_HEX]});N.appendChild(M);L.appendChild(N);N=new R("div",{id:K[this.ID.HEX_CONTROLS],className:"yui-picker-hex-controls"});N.appendChild(document.createTextNode(Q.HEX+" "));M=new T("input",{id:K[this.ID.HEX],className:"yui-picker-hex",size:6,maxlength:6});N.appendChild(M);L.appendChild(N);L=this.get("element");N=new R("div",{id:K[this.ID.SWATCH],className:"yui-picker-swatch"});L.appendChild(N);N=new R("div",{id:K[this.ID.WEBSAFE_SWATCH],className:"yui-picker-websafe-swatch"});L.appendChild(N);},_attachRGBHSV:function(L,K){I.on(this.getElement(L),"keydown",function(N,M){M._rgbFieldKeypress(N,this,K);},this);I.on(this.getElement(L),"keypress",this._numbersOnly,this,true);I.on(this.getElement(L),"blur",function(N,M){M._useFieldValue(N,this,K);},this);},_updateRGB:function(){var K=[this.get(this.OPT.RED),this.get(this.OPT.GREEN),this.get(this.OPT.BLUE)];this.set(this.OPT.RGB,K);this._updateSliders();},_initElements:function(){var O=this.OPT,N=this.get(O.IDS),L=this.get(O.ELEMENTS),K,M,P;for(K in this.ID){if(C.hasOwnProperty(this.ID,K)){N[this.ID[K]]=N[K];}}M=E.get(N[this.ID.PICKER_BG]);if(!M){this._createElements();}else{}for(K in N){if(C.hasOwnProperty(N,K)){M=E.get(N[K]);P=E.generateId(M);N[K]=P;N[N[K]]=P;L[P]=M;}}},initPicker:function(){this._initSliders();this._bindUI();this.syncUI(true);},_initSliders:function(){var K=this.ID,L=this.get(this.OPT.PICKER_SIZE);this.hueSlider=D.getVertSlider(this.getElement(K.HUE_BG),this.getElement(K.HUE_THUMB),0,L);this.pickerSlider=D.getSliderRegion(this.getElement(K.PICKER_BG),this.getElement(K.PICKER_THUMB),0,L,0,L);this.set(this.OPT.ANIMATE,this.get(this.OPT.ANIMATE));},_bindUI:function(){var K=this.ID,L=this.OPT;this.hueSlider.subscribe("change",this._onHueSliderChange,this,true);this.pickerSlider.subscribe("change",this._onPickerSliderChange,this,true);I.on(this.getElement(K.WEBSAFE_SWATCH),"click",function(M){this.setValue(this.get(L.WEBSAFE));},this,true);I.on(this.getElement(K.CONTROLS_LABEL),"click",function(M){this.set(L.SHOW_CONTROLS,!this.get(L.SHOW_CONTROLS));I.preventDefault(M);},this,true);this._attachRGBHSV(K.R,L.RED);this._attachRGBHSV(K.G,L.GREEN);this._attachRGBHSV(K.B,L.BLUE);this._attachRGBHSV(K.H,L.HUE);
+this._attachRGBHSV(K.S,L.SATURATION);this._attachRGBHSV(K.V,L.VALUE);I.on(this.getElement(K.HEX),"keydown",function(N,M){M._hexFieldKeypress(N,this,L.HEX);},this);I.on(this.getElement(this.ID.HEX),"keypress",this._hexOnly,this,true);I.on(this.getElement(this.ID.HEX),"blur",function(N,M){M._useFieldValue(N,this,L.HEX);},this);},syncUI:function(K){this.skipAnim=K;this._updateRGB();this.skipAnim=false;},_updateRGBFromHSV:function(){var L=[this.get(this.OPT.HUE),this.get(this.OPT.SATURATION)/100,this.get(this.OPT.VALUE)/100],K=B.hsv2rgb(L);this.set(this.OPT.RGB,K);this._updateSliders();},_updateHex:function(){var N=this.get(this.OPT.HEX),K=N.length,O,M,L;if(K===3){O=N.split("");for(M=0;M<K;M=M+1){O[M]=O[M]+O[M];}N=O.join("");}if(N.length!==6){return false;}L=B.hex2rgb(N);this.setValue(L);},_hideShowEl:function(M,K){var L=(C.isString(M)?this.getElement(M):M);E.setStyle(L,"display",(K)?"":"none");},initAttributes:function(K){K=K||{};G.superclass.initAttributes.call(this,K);this.setAttributeConfig(this.OPT.PICKER_SIZE,{value:K.size||this.DEFAULT.PICKER_SIZE});this.setAttributeConfig(this.OPT.HUE,{value:K.hue||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.SATURATION,{value:K.saturation||0,validator:C.isNumber});this.setAttributeConfig(this.OPT.VALUE,{value:C.isNumber(K.value)?K.value:100,validator:C.isNumber});this.setAttributeConfig(this.OPT.RED,{value:C.isNumber(K.red)?K.red:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.GREEN,{value:C.isNumber(K.green)?K.green:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.BLUE,{value:C.isNumber(K.blue)?K.blue:255,validator:C.isNumber});this.setAttributeConfig(this.OPT.HEX,{value:K.hex||"FFFFFF",validator:C.isString});this.setAttributeConfig(this.OPT.RGB,{value:K.rgb||[255,255,255],method:function(O){this.set(this.OPT.RED,O[0],true);this.set(this.OPT.GREEN,O[1],true);this.set(this.OPT.BLUE,O[2],true);var Q=B.websafe(O),P=B.rgb2hex(O),N=B.rgb2hsv(O);this.set(this.OPT.WEBSAFE,Q,true);this.set(this.OPT.HEX,P,true);if(N[1]){this.set(this.OPT.HUE,N[0],true);}this.set(this.OPT.SATURATION,Math.round(N[1]*100),true);this.set(this.OPT.VALUE,Math.round(N[2]*100),true);},readonly:true});this.setAttributeConfig(this.OPT.CONTAINER,{value:null,method:function(N){if(N){N.showEvent.subscribe(function(){this.pickerSlider.focus();},this,true);}}});this.setAttributeConfig(this.OPT.WEBSAFE,{value:K.websafe||[255,255,255]});var M=K.ids||C.merge({},this.ID),L;if(!K.ids&&J>1){for(L in M){if(C.hasOwnProperty(M,L)){M[L]=M[L]+J;}}}this.setAttributeConfig(this.OPT.IDS,{value:M,writeonce:true});this.setAttributeConfig(this.OPT.TXT,{value:K.txt||this.TXT,writeonce:true});this.setAttributeConfig(this.OPT.IMAGES,{value:K.images||this.IMAGE,writeonce:true});this.setAttributeConfig(this.OPT.ELEMENTS,{value:{},readonly:true});this.setAttributeConfig(this.OPT.SHOW_CONTROLS,{value:C.isBoolean(K.showcontrols)?K.showcontrols:true,method:function(N){var O=E.getElementsByClassName("bd","div",this.getElement(this.ID.CONTROLS))[0];this._hideShowEl(O,N);this.getElement(this.ID.CONTROLS_LABEL).innerHTML=(N)?this.get(this.OPT.TXT).HIDE_CONTROLS:this.get(this.OPT.TXT).SHOW_CONTROLS;}});this.setAttributeConfig(this.OPT.SHOW_RGB_CONTROLS,{value:C.isBoolean(K.showrgbcontrols)?K.showrgbcontrols:true,method:function(N){this._hideShowEl(this.ID.RGB_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_HSV_CONTROLS,{value:C.isBoolean(K.showhsvcontrols)?K.showhsvcontrols:false,method:function(N){this._hideShowEl(this.ID.HSV_CONTROLS,N);if(N&&this.get(this.OPT.SHOW_HEX_SUMMARY)){this.set(this.OPT.SHOW_HEX_SUMMARY,false);}}});this.setAttributeConfig(this.OPT.SHOW_HEX_CONTROLS,{value:C.isBoolean(K.showhexcontrols)?K.showhexcontrols:false,method:function(N){this._hideShowEl(this.ID.HEX_CONTROLS,N);}});this.setAttributeConfig(this.OPT.SHOW_WEBSAFE,{value:C.isBoolean(K.showwebsafe)?K.showwebsafe:true,method:function(N){this._hideShowEl(this.ID.WEBSAFE_SWATCH,N);}});this.setAttributeConfig(this.OPT.SHOW_HEX_SUMMARY,{value:C.isBoolean(K.showhexsummary)?K.showhexsummary:true,method:function(N){this._hideShowEl(this.ID.HEX_SUMMARY,N);if(N&&this.get(this.OPT.SHOW_HSV_CONTROLS)){this.set(this.OPT.SHOW_HSV_CONTROLS,false);}}});this.setAttributeConfig(this.OPT.ANIMATE,{value:C.isBoolean(K.animate)?K.animate:true,method:function(N){if(this.pickerSlider){this.pickerSlider.animate=N;this.hueSlider.animate=N;}}});this.on(this.OPT.HUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.SATURATION+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.VALUE+"Change",this._updateRGBFromHSV,this,true);this.on(this.OPT.RED+"Change",this._updateRGB,this,true);this.on(this.OPT.GREEN+"Change",this._updateRGB,this,true);this.on(this.OPT.BLUE+"Change",this._updateRGB,this,true);this.on(this.OPT.HEX+"Change",this._updateHex,this,true);this._initElements();}});YAHOO.widget.ColorPicker=G;})();YAHOO.register("colorpicker",YAHOO.widget.ColorPicker,{version:"2.7.0",build:"1796"});
+
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 2.7.0
+*/
+(function(){var B=YAHOO.util;var A=function(D,C,E,F){if(!D){}this.init(D,C,E,F);};A.NAME="Anim";A.prototype={toString:function(){var C=this.getEl()||{};var D=C.id||C.tagName;return(this.constructor.NAME+": "+D);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(C,E,D){return this.method(this.currentFrame,E,D-E,this.totalFrames);},setAttribute:function(C,F,E){var D=this.getEl();if(this.patterns.noNegatives.test(C)){F=(F>0)?F:0;}if("style" in D){B.Dom.setStyle(D,C,F+E);}else{if(C in D){D[C]=F;}}},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if("style" in E){if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}}else{if(C in E){G=E[C];}}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G<C;++G){E[G]=I[G]+F[D]["by"][G]*1;}}else{E=I+F[D]["by"]*1;}}}this.runtimeAttributes[D].start=I;this.runtimeAttributes[D].end=E;this.runtimeAttributes[D].unit=(H(F[D].unit))?F[D]["unit"]:this.getDefaultUnit(D);return true;},init:function(E,J,I,C){var D=false;var F=null;var H=0;E=B.Dom.get(E);this.attributes=J||{};this.duration=!YAHOO.lang.isUndefined(I)?I:1;this.method=C||B.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=B.AnimMgr.fps;this.setEl=function(M){E=B.Dom.get(M);};this.getEl=function(){return E;};this.isAnimated=function(){return D;};this.getStartTime=function(){return F;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(B.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}B.AnimMgr.registerElement(this);return true;};this.stop=function(M){if(!this.isAnimated()){return false;}if(M){this.currentFrame=this.totalFrames;this._onTween.fire();}B.AnimMgr.stop(this);};var L=function(){this.onStart.fire();this.runtimeAttributes={};for(var M in this.attributes){this.setRuntimeAttribute(M);}D=true;H=0;F=new Date();};var K=function(){var O={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};O.toString=function(){return("duration: "+O.duration+", currentFrame: "+O.currentFrame);};this.onTween.fire(O);var N=this.runtimeAttributes;for(var M in N){this.setAttribute(M,this.doMethod(M,N[M].start,N[M].end),N[M].unit);}H+=1;};var G=function(){var M=(new Date()-F)/1000;var N={duration:M,frames:H,fps:H/M};N.toString=function(){return("duration: "+N.duration+", frames: "+N.frames+", fps: "+N.fps);};D=false;H=0;this.onComplete.fire(N);};this._onStart=new B.CustomEvent("_start",this,true);this.onStart=new B.CustomEvent("start",this);this.onTween=new B.CustomEvent("tween",this);this._onTween=new B.CustomEvent("_tween",this,true);this.onComplete=new B.CustomEvent("complete",this);this._onComplete=new B.CustomEvent("_complete",this,true);this._onStart.subscribe(L);this._onTween.subscribe(K);this._onComplete.subscribe(G);}};B.Anim=A;})();YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F==-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]==H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){var A=function(F,E,G,H){A.superclass.constructor.call(this,F,E,G,H);};A.NAME="ColorAnim";A.DEFAULT_BGCOLOR="#fff";var C=YAHOO.util;YAHOO.extend(A,C.Anim);var D=A.superclass;var B=A.prototype;B.patterns.color=/color$/i;B.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;B.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;B.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;B.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;B.parseColor=function(E){if(E.length==3){return E;}var F=this.patterns.hex.exec(E);if(F&&F.length==4){return[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)];}F=this.patterns.rgb.exec(E);if(F&&F.length==4){return[parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10)];}F=this.patterns.hex3.exec(E);if(F&&F.length==4){return[parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16)];
+}return null;};B.getAttribute=function(E){var G=this.getEl();if(this.patterns.color.test(E)){var I=YAHOO.util.Dom.getStyle(G,E);var H=this;if(this.patterns.transparent.test(I)){var F=YAHOO.util.Dom.getAncestorBy(G,function(J){return !H.patterns.transparent.test(I);});if(F){I=C.Dom.getStyle(F,E);}else{I=A.DEFAULT_BGCOLOR;}}}else{I=D.getAttribute.call(this,E);}return I;};B.doMethod=function(F,J,G){var I;if(this.patterns.color.test(F)){I=[];for(var H=0,E=J.length;H<E;++H){I[H]=D.doMethod.call(this,F,J[H],G[H]);}I="rgb("+Math.floor(I[0])+","+Math.floor(I[1])+","+Math.floor(I[2])+")";}else{I=D.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(F){D.setRuntimeAttribute.call(this,F);if(this.patterns.color.test(F)){var H=this.attributes;var J=this.parseColor(this.runtimeAttributes[F].start);var G=this.parseColor(this.runtimeAttributes[F].end);if(typeof H[F]["to"]==="undefined"&&typeof H[F]["by"]!=="undefined"){G=this.parseColor(H[F].by);for(var I=0,E=J.length;I<E;++I){G[I]=J[I]+G[I];}}this.runtimeAttributes[F].start=J;this.runtimeAttributes[F].end=G;}};C.ColorAnim=A;})();
+/*
+TERMS OF USE - EASING EQUATIONS
+Open source under the BSD License.
+Copyright 2001 Robert Penner All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+YAHOO.util.Easing={easeNone:function(B,A,D,C){return D*B/C+A;},easeIn:function(B,A,D,C){return D*(B/=C)*B+A;},easeOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeBoth:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInStrong:function(B,A,D,C){return D*(B/=C)*B*B*B+A;},easeOutStrong:function(B,A,D,C){return -D*((B=B/C-1)*B*B*B-1)+A;},easeBothStrong:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B*B+A;}return -D/2*((B-=2)*B*B*B-2)+A;},elasticIn:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},elasticOut:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A;},elasticBoth:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},backIn:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},backOut:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},backBoth:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},bounceIn:function(B,A,D,C){return D-YAHOO.util.Easing.bounceOut(C-B,0,D,C)+A;},bounceOut:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}}}return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;},bounceBoth:function(B,A,D,C){if(B<C/2){return YAHOO.util.Easing.bounceIn(B*2,0,D,C)*0.5+A;}return YAHOO.util.Easing.bounceOut(B*2-C,0,D,C)*0.5+D*0.5+A;}};(function(){var A=function(H,G,I,J){if(H){A.superclass.constructor.call(this,H,G,I,J);}};A.NAME="Motion";var E=YAHOO.util;YAHOO.extend(A,E.ColorAnim);var F=A.superclass;var C=A.prototype;C.patterns.points=/^points$/i;C.setAttribute=function(G,I,H){if(this.patterns.points.test(G)){H=H||"px";F.setAttribute.call(this,"left",I[0],H);F.setAttribute.call(this,"top",I[1],H);}else{F.setAttribute.call(this,G,I,H);}};C.getAttribute=function(G){if(this.patterns.points.test(G)){var H=[F.getAttribute.call(this,"left"),F.getAttribute.call(this,"top")];}else{H=F.getAttribute.call(this,G);}return H;};C.doMethod=function(G,K,H){var J=null;if(this.patterns.points.test(G)){var I=this.method(this.currentFrame,0,100,this.totalFrames)/100;J=E.Bezier.getPosition(this.runtimeAttributes[G],I);}else{J=F.doMethod.call(this,G,K,H);}return J;};C.setRuntimeAttribute=function(P){if(this.patterns.points.test(P)){var H=this.getEl();var J=this.attributes;var G;var L=J["points"]["control"]||[];var I;var M,O;if(L.length>0&&!(L[0] instanceof Array)){L=[L];}else{var K=[];for(M=0,O=L.length;M<O;++M){K[M]=L[M];}L=K;}if(E.Dom.getStyle(H,"position")=="static"){E.Dom.setStyle(H,"position","relative");}if(D(J["points"]["from"])){E.Dom.setXY(H,J["points"]["from"]);
+}else{E.Dom.setXY(H,E.Dom.getXY(H));}G=this.getAttribute("points");if(D(J["points"]["to"])){I=B.call(this,J["points"]["to"],G);var N=E.Dom.getXY(this.getEl());for(M=0,O=L.length;M<O;++M){L[M]=B.call(this,L[M],G);}}else{if(D(J["points"]["by"])){I=[G[0]+J["points"]["by"][0],G[1]+J["points"]["by"][1]];for(M=0,O=L.length;M<O;++M){L[M]=[G[0]+L[M][0],G[1]+L[M][1]];}}}this.runtimeAttributes[P]=[G];if(L.length>0){this.runtimeAttributes[P]=this.runtimeAttributes[P].concat(L);}this.runtimeAttributes[P][this.runtimeAttributes[P].length]=I;}else{F.setRuntimeAttribute.call(this,P);}};var B=function(G,I){var H=E.Dom.getXY(this.getEl());G=[G[0]-H[0]+I[0],G[1]-H[1]+I[1]];return G;};var D=function(G){return(typeof G!=="undefined");};E.Motion=A;})();(function(){var D=function(F,E,G,H){if(F){D.superclass.constructor.call(this,F,E,G,H);}};D.NAME="Scroll";var B=YAHOO.util;YAHOO.extend(D,B.ColorAnim);var C=D.superclass;var A=D.prototype;A.doMethod=function(E,H,F){var G=null;if(E=="scroll"){G=[this.method(this.currentFrame,H[0],F[0]-H[0],this.totalFrames),this.method(this.currentFrame,H[1],F[1]-H[1],this.totalFrames)];}else{G=C.doMethod.call(this,E,H,F);}return G;};A.getAttribute=function(E){var G=null;var F=this.getEl();if(E=="scroll"){G=[F.scrollLeft,F.scrollTop];}else{G=C.getAttribute.call(this,E);}return G;};A.setAttribute=function(E,H,G){var F=this.getEl();if(E=="scroll"){F.scrollLeft=H[0];F.scrollTop=H[1];}else{C.setAttribute.call(this,E,H,G);}};B.Scroll=D;})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.7.0",build:"1799"});
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/ciframe.html b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html
index f4c5b23e3..6409ce7ff 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/wsc/ciframe.html
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html
@@ -1,65 +1,49 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<!--
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
--->
-<html>
-<head>
- <title></title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <script type="text/javascript">
-
-function gup( name )
-{
- name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
- var regexS = '[\\?&]' + name + '=([^&#]*)' ;
- var regex = new RegExp( regexS ) ;
- var results = regex.exec( window.location.href ) ;
-
- if( results == null )
- return '' ;
- else
- return results[ 1 ] ;
-}
-
-function sendData2Master()
-{
- var destination = parent.parent ;
- try
- {
- if ( destination.XDTMaster )
- {
- var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;
- window.clearInterval( interval ) ;
- }
- }
- catch (e) {}
-}
-
-function onLoad()
-{
- interval = window.setInterval( sendData2Master, 100 );
-}
-
- </script>
-</head>
-<body onload="onLoad()">
- <p></p>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<!--
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript">
+
+function gup( name )
+{
+ name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+ var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+ var regex = new RegExp( regexS ) ;
+ var results = regex.exec( window.location.href ) ;
+
+ if ( results )
+ return results[ 1 ] ;
+ else
+ return '' ;
+}
+
+var interval;
+
+function sendData2Master()
+{
+ var destination = window.parent.parent ;
+ try
+ {
+ if ( destination.XDTMaster )
+ {
+ var t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;
+ window.clearInterval( interval ) ;
+ }
+ }
+ catch (e) {}
+}
+
+function onLoad()
+{
+ interval = window.setInterval( sendData2Master, 100 );
+}
+
+</script>
+</head>
+<body onload="onLoad()"><p></p></body>
+</html>
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html
new file mode 100644
index 000000000..c7f7ab518
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+-->
+<html>
+<head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script type="text/javascript">
+
+function doLoadScript( url )
+{
+ if ( !url )
+ return false ;
+
+ var s = document.createElement( "script" ) ;
+ s.type = "text/javascript" ;
+ s.src = url ;
+ document.getElementsByTagName( "head" )[ 0 ].appendChild( s ) ;
+
+ return true ;
+}
+
+var opener;
+function tryLoad()
+{
+ opener = window.parent;
+
+ // get access to global parameters
+ var oParams = window.opener.oldFramesetPageParams;
+
+ // make frameset rows string prepare
+ var sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + ",*," + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;
+ document.getElementById( 'itFrameset' ).rows = sFramesetRows ;
+
+ // dynamic including init frames and crossdomain transport code
+ // from config sproxy_js_frameset url
+ var addScriptUrl = oParams.sproxy_js_frameset ;
+ doLoadScript( addScriptUrl ) ;
+}
+
+ </script>
+</head>
+
+<frameset id="itFrameset" onload="tryLoad();" border="0" rows="30,*,*,0">
+ <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="2" src="" name="navbar"></frame>
+ <frame scrolling="auto" framespacing="0" frameborder="0" noresize="noresize" marginheight="0" marginwidth="0" src="" name="mid"></frame>
+ <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="bot"></frame>
+ <frame scrolling="no" framespacing="0" frameborder="0" noresize="noresize" marginheight="1" marginwidth="1" src="" name="spellsuggestall"></frame>
+</frameset>
+</html>
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css
new file mode 100644
index 000000000..345399c6c
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+html,body{background-color:transparent;margin:0;padding:0;}body{padding:10px;}body,td,input,select,textarea{font-size:11px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;}.midtext{padding:0;margin:10px;}.midtext p{padding:0;margin:10px;}.Button{border:#737357 1px solid;color:#3b3b1f;background-color:#c7c78f;}.PopupTabArea{color:#737357;background-color:#e3e3c7;}.PopupTitleBorder{border-bottom:#d5d59d 1px solid;}.PopupTabEmptyArea{padding-left:10px;border-bottom:#d5d59d 1px solid;}.PopupTab,.PopupTabSelected{border-right:#d5d59d 1px solid;border-top:#d5d59d 1px solid;border-left:#d5d59d 1px solid;padding:3px 5px 3px 5px;color:#737357;}.PopupTab{margin-top:1px;border-bottom:#d5d59d 1px solid;cursor:pointer;}.PopupTabSelected{font-weight:bold;cursor:default;padding-top:4px;border-bottom:#f1f1e3 1px solid;background-color:#f1f1e3;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js
new file mode 100644
index 000000000..cb9594e2e
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add('checkspell',function(a){var b=CKEDITOR.tools.getNextNumber(),c='cke_frame_'+b,d='cke_data_'+b,e='cke_error_'+b,f,g=document.location.protocol||'http:',h=a.lang.spellCheck.notAvailable,i='<textarea style="display: none" id="'+d+'"'+' rows="10"'+' cols="40">'+' </textarea><div'+' id="'+e+'"'+' style="display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;">'+'</div><iframe'+' src=""'+' style="width:485px;background-color:#f1f1e3;height:380px"'+' frameborder="0"'+' name="'+c+'"'+' id="'+c+'"'+' allowtransparency="1">'+'</iframe>',j=a.config.wsc_customLoaderScript||g+'//loader.spellchecker.net/sproxy_fck/sproxy.php'+'?plugin=fck2'+'&customerid='+a.config.wsc_customerId+'&cmd=script&doc=wsc&schema=22';if(a.config.wsc_customLoaderScript)h+='<p style="color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px">'+a.lang.spellCheck.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+'</p>';function k(m,n){var o=0;return function(){if(typeof window.doSpell=='function'){if(typeof f!='undefined')window.clearInterval(f);l(m);}else if(o++==180)window._cancelOnError(n);};};window._cancelOnError=function(m){if(typeof window.WSC_Error=='undefined'){CKEDITOR.document.getById(c).setStyle('display','none');var n=CKEDITOR.document.getById(e);n.setStyle('display','block');n.setHtml(m||a.lang.spellCheck.notAvailable);}};function l(m){var n=new window._SP_FCK_LangCompare(),o=CKEDITOR.getUrl(a.plugins.wsc.path+'dialogs/'),p=o+'tmpFrameset.html';window.gFCKPluginName='wsc';n.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:d,lang:a.config.wsc_lang||n.getSPLangCode(a.langCode),intLang:a.config.wsc_uiLang||n.getSPLangCode(a.langCode),winType:c,onCancel:function(){m.hide();},onFinish:function(q){a.focus();m.getParentEditor().setData(q.value);m.hide();},staticFrame:p,framesetPath:p,iframePath:o+'ciframe.html',schemaURI:o+'wsc.css',userDictionaryName:a.config.wsc_userDictionaryName,customDictionaryName:a.config.wsc_customDictionaryIds&&a.config.wsc_customDictionaryIds.split(','),domainName:a.config.wsc_domainName});CKEDITOR.document.getById(e).setStyle('display','none');CKEDITOR.document.getById(c).setStyle('display','block');};return{title:a.config.wsc_dialogTitle||a.lang.spellCheck.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var m=this.getContentElement('general','content').getElement();m.setHtml(i);if(typeof window.doSpell!='function')CKEDITOR.document.getHead().append(CKEDITOR.document.createElement('script',{attributes:{type:'text/javascript',src:j}}));
+var n=a.getData();CKEDITOR.document.getById(d).setValue(n);f=window.setInterval(k(this,h),250);},onHide:function(){window.ooo=undefined;window.int_framsetLoaded=undefined;window.framesetLoaded=undefined;window.is_window_opened=false;},contents:[{id:'general',label:a.config.wsc_dialogTitle||a.lang.spellCheck.title,padding:0,elements:[{type:'html',id:'content',style:'width:485;height:380px',html:'<div></div>'}]}]};});
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css
new file mode 100644
index 000000000..b18eea4d2
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_kama table.cke_dialog.cke_browser_gecko{display:block;}.cke_skin_kama .cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;position:relative;_position:static;}.cke_skin_kama .cke_dialog_tl,.cke_skin_kama .cke_dialog_tr,.cke_skin_kama .cke_dialog_tc,.cke_skin_kama .cke_dialog_bl,.cke_skin_kama .cke_dialog_br,.cke_skin_kama .cke_dialog_bc,.cke_skin_kama .cke_dialog_ml,.cke_skin_kama .cke_dialog_mr{display:none;}.cke_skin_kama .cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_title,.cke_skin_kama .cke_browser_ie6 .cke_dialog_title,.cke_skin_kama .cke_browser_ie7 .cke_dialog_title{margin-bottom:22px;}.cke_skin_kama .cke_browser_iequirks.cke_single_page .cke_dialog_title,.cke_skin_kama .cke_browser_ie6.cke_single_page .cke_dialog_title,.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_title{margin-bottom:10px;}.cke_skin_kama .cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:none;overflow:auto;padding:17px 10px 5px 10px;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px;}.cke_skin_kama .cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:none;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;}.cke_skin_kama .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_kama .cke_dialog_tabs{height:23px;display:inline-block;_display:block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_tabs,.cke_skin_kama .cke_browser_ie6 .cke_dialog_tabs,.cke_skin_kama .cke_browser_ie7 .cke_dialog_tabs{top:33px;}.cke_skin_kama .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_kama a.cke_dialog_tab,.cke_skin_kama a:link.cke_dialog_tab,.cke_skin_kama a:active.cke_dialog_tab,.cke_skin_kama a:hover.cke_dialog_tab,.cke_skin_kama a:visited.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer;}.cke_skin_kama .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_kama .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_kama a:hover.cke_dialog_tab{background-color:#f1f1e3;}.cke_skin_kama .cke_hc a:hover.cke_dialog_tab{padding:2px 6px!important;border-width:3px;}.cke_skin_kama a.cke_dialog_tab_selected,.cke_skin_kama a:link.cke_dialog_tab_selected,.cke_skin_kama a:active.cke_dialog_tab_selected,.cke_skin_kama a:hover.cke_dialog_tab_selected,.cke_skin_kama a:visited.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default;}.cke_skin_kama .cke_hc a.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:link.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:active.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:hover.cke_dialog_tab_selected,.cke_skin_kama .cke_hc a:visited.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px;}.cke_skin_kama .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_kama .cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px;}.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_contents{margin-top:0;position:relative;margin-bottom:-22px;}.cke_skin_kama .cke_dialog_ui_vbox table,.cke_skin_kama .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_kama .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_kama input.cke_dialog_ui_input_text,.cke_skin_kama input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}
+.cke_skin_kama div.cke_dialog_ui_input_text,.cke_skin_kama div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_kama .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px;}.cke_skin_kama .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password{border-width:0;}.cke_skin_kama .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,.cke_skin_kama .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password{border-width:1px;}.cke_skin_kama textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_kama div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_kama div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_kama .cke_dialog_ui_hbox{width:100%;}.cke_skin_kama .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_dialog_ui_hbox_child,.cke_skin_kama .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_kama .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_kama a.cke_dialog_ui_button{border-collapse:separate;cursor:default;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;_background:none;padding:5px 0;text-align:center;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button{padding:0;}.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span{width:70px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span{width:100px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button span{padding:5px 15px;text-align:center;color:#3b3b1f;background:#53D9F0 none;display:inline-block;cursor:default;}.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button span.cke_dialog_ui_button{margin:0;}.cke_skin_kama .cke_browser_webkit a.cke_dialog_ui_button{display:inline-block;padding-top:3px;padding-bottom:2px;margin:2px 0;}.cke_skin_kama a.cke_dialog_ui_button_ok span,.cke_skin_kama a.cke_dialog_ui_button_cancel span{padding-right:20px;padding-left:20px;}.cke_skin_kama a.cke_dialog_ui_button_ok{background-position:0 -1143px;}.cke_skin_kama a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1219px;}.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1219px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span{background-color:#B8E834;margin-right:0;}.cke_skin_kama a.cke_dialog_ui_button_cancel{background-position:0 -1104px;}.cke_skin_kama a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1245px;}.cke_skin_kama .cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1245px;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span{background-color:#F65D20;}.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_cancel span,.cke_skin_kama .cke_browser_iequirks a.cke_dialog_ui_button_ok span,.cke_skin_kama .cke_browser_ie6 a.cke_dialog_ui_button_ok span{background-image:none;}.cke_skin_kama span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px;+margin:2px 0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_kama a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}
+.cke_skin_kama a:hover.cke_dialog_ui_button,.cke_skin_kama a:focus.cke_dialog_ui_button,.cke_skin_kama a:active.cke_dialog_ui_button{background-position:0 -1179px;}.cke_skin_kama .cke_hc a:hover.cke_dialog_ui_button,.cke_skin_kama .cke_hc a:focus.cke_dialog_ui_button,.cke_skin_kama .cke_hc a:active.cke_dialog_ui_button{border-width:2px;}.cke_skin_kama .cke_browser_iequirks a:hover.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a:focus.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_iequirks a:active.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:hover.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:focus.cke_dialog_ui_button span,.cke_skin_kama .cke_browser_ie6 a:active.cke_dialog_ui_button span{background-image:none;background:#F7A922;}.cke_skin_kama .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_kama .cke_dialog_footer_buttons span.cke_dialog_ui_button{margin:7px 0;width:60px;text-align:center;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons a.cke_dialog_ui_button{display:block;padding:0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{padding-bottom:5px;padding-top:6px;margin-bottom:0;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_ok .cke_dialog_ui_button{background-position:right -1214px;}.cke_skin_kama .cke_browser_gecko18 .cke_dialog_footer_buttons .cke_dialog_ui_button_cancel .cke_dialog_ui_button{background-position:right -1242px;}.cke_skin_kama strong{font-weight:bold;}.cke_skin_kama .cke_dialog .cke_dialog_body .cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;_background-image:url(images/sprites_ie6.png);}.cke_skin_kama .cke_dialog_close_button span{display:none;}.cke_skin_kama .cke_dialog_close_button:hover{background-position:0 -1045px;}.cke_skin_kama .cke_ltr .cke_dialog_close_button{right:10px;}.cke_skin_kama .cke_browser_ie8.cke_rtl .cke_dialog_close_button{left:8px;}.cke_skin_kama .cke_rtl .cke_dialog_close_button{left:10px;}.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button{left:16px;top:0;}.cke_skin_kama .cke_browser_ie7.cke_rtl .cke_dialog_close_button{position:absolute;left:10px;top:5px;}.cke_skin_kama .cke_browser_ie7.cke_single_page .cke_dialog_footer{margin-top:22px;}.cke_skin_kama .cke_browser_ie6 .cke_dialog_close_button,.cke_skin_kama .cke_browser_iequirks .cke_dialog_close_button{top:7px;}.cke_skin_kama .cke_browser_ie7.cke_ltr .cke_dialog_close_button{margin-top:0;}.cke_skin_kama .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_kama .cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_kama .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_kama .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_kama .cke_dialog .cke_centered{text-align:center;}.cke_skin_kama .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_kama .cke_dialog a.cke_btn_locked,.cke_skin_kama .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_kama .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_kama .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_kama .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;}.cke_skin_kama .cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:160px;width:230px;padding:2px;background-color:white;}
+.cke_skin_kama .cke_dialog .ImagePreviewBox table td{white-space:normal;}.cke_skin_kama .cke_browser_iequirks .cke_dialog_page_contents{_position:absolute;}.cke_skin_kama .cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_kama .cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_kama .cke_dialog .cke_pastetext{width:346px;height:170px;}.cke_skin_kama .cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none;}.cke_skin_kama .cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black;}.cke_skin_kama .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_kama .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_kama .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_kama .cke_disabled{color:#a0a0a0;}.cke_skin_kama .cke_hc .cke_dialog_title,.cke_skin_kama .cke_hc .cke_dialog_tabs,.cke_skin_kama .cke_hc .cke_dialog_contents,.cke_skin_kama .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_kama .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px;}.cke_skin_kama .cke_dialog_body .cke_label{display:none;}.cke_skin_kama .cke_dialog_body label.cke_required{font-weight:bold;}.cke_skin_kama .cke_hc .cke_dialog_body .cke_label{display:inline;}.cke_skin_kama .cke_hc a.cke_btn_locked,.cke_skin_kama .cke_hc a.cke_btn_unlocked,.cke_skin_kama .cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;}.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_locked,.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_unlocked,.cke_skin_kama .cke_rtl.cke_hc a.cke_btn_reset{float:right;}.cke_skin_kama a.cke_smile img{border:2px solid #eaead1;}.cke_skin_kama a.cke_smile:focus img,.cke_skin_kama a.cke_smile:active img,.cke_skin_kama a.cke_smile:hover img{border-color:#C7C78F;}.cke_skin_kama .cke_hc .cke_dialog_tabs a,.cke_skin_kama .cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css
new file mode 100644
index 000000000..4871e265d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css
@@ -0,0 +1,12 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama *,.cke_skin_kama a:hover,.cke_skin_kama a:link,.cke_skin_kama a:visited,.cke_skin_kama a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;font-size:12px;font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif;}.cke_skin_kama .cke_rtl *,.cke_skin_kama .cke_rtl a:hover,.cke_skin_kama .cke_rtl a:link,.cke_skin_kama .cke_rtl a:visited,.cke_skin_kama .cke_rtl a:active,.cke_rtl .cke_skin_kama *,.cke_rtl .cke_skin_kama a:hover,.cke_rtl .cke_skin_kama a:link,.cke_rtl .cke_skin_kama a:visited,.cke_rtl .cke_skin_kama a:active{text-align:right;}.cke_skin_kama iframe{vertical-align:inherit;}.cke_skin_kama textarea{white-space:pre;}.cke_skin_kama .cke_browser_gecko textarea{cursor:text;}.cke_skin_kama .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_kama input[type="text"],.cke_skin_kama input[type="password"]{cursor:text;}.cke_skin_kama input[type="text"][disabled],.cke_skin_kama input[type="password"][disabled]{cursor:default;}.cke_skin_kama fieldset{padding:10px;border:2px groove #E0DFE3;}.cke_skin_kama{display:block;}span.cke_skin_kama{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #D3D3D3;padding:5px;}.cke_skin_kama span.cke_browser_webkit,.cke_skin_kama span.cke_browser_gecko18{display:block;}.cke_skin_kama .cke_wrapper{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-color:#d3d3d3;background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1950px;display:block;_display:inline-block;padding:5px;}.cke_shared .cke_skin_kama .cke_wrapper{padding-bottom:0;}.cke_skin_kama .cke_browser_ie6 .cke_wrapper,.cke_skin_kama .cke_browser_iequirks .cke_wrapper{background-image:none;}.cke_skin_kama .cke_editor{display:inline-table;width:100%;}.cke_skin_kama .ltr .cke_browser_ie iframe{margin-right:-10px;}.cke_skin_kama .rtl .cke_browser_ie iframe{margin-left:-10px;}.cke_skin_kama .cke_browser_opera .cke_editor.cke_skin_kama .cke_resizer{display:table;}.cke_skin_kama .cke_contents{margin:5px;}.cke_skin_kama .cke_hc .cke_contents{border:1px solid black;}.cke_skin_kama .cke_contents iframe{background-color:#fff;}.cke_skin_kama .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_kama textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre;}.cke_skin_kama .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_kama .cke_resizer{width:12px;height:12px;margin-top:9px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1428px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_kama .cke_rtl .cke_resizer{cursor:sw-resize;background-position:0 -1455px;float:left;}.cke_skin_kama .cke_resizer_horizontal,.cke_skin_kama .cke_rtl .cke_resizer_horizontal{cursor:e-resize;}.cke_skin_kama .cke_resizer_vertical,.cke_skin_kama .cke_rtl .cke_resizer_vertical{cursor:n-resize;}.cke_skin_kama .cke_maximized .cke_resizer{display:none;}.cke_skin_kama .cke_browser_ie6 .cke_contents textarea,.cke_skin_kama .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_kama .cke_browser_ie.cke_browser_quirks .cke_contents iframe{position:absolute;top:0;}.cke_skin_kama .cke_browser_ie6 .cke_editor,.cke_skin_kama .cke_browser_ie7 .cke_editor{display:inline-block;}.cke_skin_kama .cke_browser_ie6 .cke_editor,.cke_shared .cke_skin_kama .cke_browser_ie7 .cke_wrapper{padding-bottom:5px;}.cke_skin_kama .cke_voice_label{display:none;}.cke_skin_kama legend.cke_voice_label{display:none;}.cke_skin_kama .cke_browser_ie legend.cke_voice_label{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_kama .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_kama .cke_contextmenu{margin:0;}
+.cke_skin_kama .cke_panel iframe{width:100%;height:100%;}html.cke_skin_kama_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;}.cke_panel_frame .cke_label{display:none;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_kama .cke_button_textcolor_panel,.cke_skin_kama .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_kama .cke_toolbox{display:none;}}.cke_skin_kama .cke_browser_webkit .cke_toolbox,.cke_skin_kama .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_kama .cke_toolbox{clear:both;padding-bottom:1px;}.cke_skin_kama a.cke_toolbox_collapser,.cke_skin_kama a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -1366px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:1px outset #D3D3D3;margin:11px 0 2px;cursor:pointer;}.cke_skin_kama .cke_rtl a.cke_toolbox_collapser,.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_kama a.cke_toolbox_collapser span{display:none;}.cke_skin_kama .cke_hc a.cke_toolbox_collapser span{font-size:10px;font-weight:bold;font-family:Arial;display:inline;}.cke_skin_kama a.cke_toolbox_collapser_min,.cke_skin_kama a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -1387px;background-repeat:no-repeat;margin:2px 4px;}.cke_skin_kama .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_kama .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -1408px;}.cke_skin_kama .cke_toolbar{display:inline;}.cke_skin_kama .cke_separator{display:none;}.cke_skin_kama .cke_break{font-size:0;clear:left;}.cke_skin_kama .cke_rtl .cke_break{clear:right;}.cke_skin_kama .cke_toolbar_start{display:none;}.cke_skin_kama .cke_toolgroup{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:repeat-x;background-position:0 -500px;float:left;margin-right:6px;margin-bottom:5px;padding:2px;display:inline;}.cke_skin_kama .cke_rtl .cke_toolgroup{float:right;margin-right:0;margin-left:6px;}
+.cke_skin_kama .cke_toolgroup{display:block;height:22px;}.cke_skin_kama .cke_button a,.cke_skin_kama .cke_button a:hover,.cke_skin_kama .cke_button a:focus,.cke_skin_kama .cke_button a:active,.cke_skin_kama .cke_button a.cke_off{border-radius:3px;outline:none;padding:2px 4px;height:18px;display:inline-block;cursor:default;}.cke_skin_kama .cke_button a,.cke_skin_kama .cke_button a.cke_off{filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_kama .cke_hc .cke_button a,.cke_skin_kama .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_kama .cke_button a.cke_on{background-color:#a3d7ff;filter:alpha(opacity=100);opacity:1;padding:2px 4px;}.cke_skin_kama .cke_hc .cke_button a.cke_on{padding:0 2px!important;border-width:3px;}.cke_skin_kama .cke_button a.cke_disabled *,.cke_skin_kama .cke_browser_ie a:hover.cke_button .cke_disabled *{filter:alpha(opacity=30);opacity:.3;}.cke_skin_kama .cke_hc .cke_button a.cke_disabled *,.cke_skin_kama .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *{filter:alpha(opacity=60);opacity:.6;}.cke_skin_kama .cke_button a:hover.cke_on,.cke_skin_kama .cke_button a:focus.cke_on,.cke_skin_kama .cke_button a:active.cke_on,.cke_skin_kama .cke_button a:hover.cke_off,.cke_skin_kama .cke_button a:focus.cke_off,.cke_skin_kama .cke_button a:active.cke_off{filter:alpha(opacity=100);opacity:1;padding:2px 4px;}.cke_skin_kama .cke_button a:hover,.cke_skin_kama .cke_button a:focus,.cke_skin_kama .cke_button a:active{background-color:#dff1ff;}.cke_skin_kama .cke_button a:hover.cke_on,.cke_skin_kama .cke_button a:focus.cke_on,.cke_skin_kama .cke_button a:active.cke_on{background-color:#86caff;}.cke_skin_kama .cke_hc .cke_button a:hover,.cke_skin_kama .cke_hc .cke_button a:focus,.cke_skin_kama .cke_hc .cke_button a:active{padding:0 2px!important;border-width:3px;}.cke_skin_kama .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;float:left;cursor:default;}.cke_skin_kama .cke_rtl .cke_button .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_kama .cke_rtl .cke_button .cke_icon{float:right;}.cke_skin_kama .cke_button .cke_label{cursor:default;display:none;padding-left:3px;line-height:18px;vertical-align:middle;float:left;}.cke_skin_kama .cke_rtl .cke_button .cke_label{padding-left:0;padding-right:3px;float:right;}.cke_skin_kama .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_kama .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_kama .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_kama .cke_button .cke_buttonarrow{display:inline-block;height:17px;width:8px;background-position:2px -1469px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;float:left;cursor:default;}.cke_skin_kama .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -1469px;float:right;}.cke_skin_kama .cke_browser_gecko .cke_toolbar,.cke_skin_kama .cke_browser_gecko .cke_button a,.cke_skin_kama .cke_browser_gecko .cke_button a.cke_off,.cke_skin_kama .cke_browser_gecko .cke_button .cke_icon,.cke_skin_kama .cke_browser_gecko .cke_button .cke_buttonarrow,.cke_skin_kama .cke_browser_gecko .cke_separator,.cke_skin_kama .cke_browser_gecko .cke_toolbar_start{display:block;float:left;}.cke_skin_kama .cke_browser_gecko.cke_hc .cke_button .cke_icon{display:none;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button a,.cke_skin_kama .cke_browser_gecko .cke_rtl.cke_button a.cke_off,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_icon,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_kama .cke_browser_gecko .cke_button .cke_label,.cke_skin_kama .cke_browser_gecko .cke_break{float:left;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_button .cke_label,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_break{float:right;}
+.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_icon,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_label,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_button .cke_buttonarrow{float:none;}.cke_skin_kama .cke_browser_webkit .cke_toolbar{float:left;}.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_toolbar{float:right;}.cke_skin_kama .cke_browser_ie8 .cke_button .cke_label,.cke_skin_kama .cke_browser_opera .cke_button .cke_label,.cke_skin_kama .cke_browser_webkit .cke_button .cke_label{line-height:20px;}.cke_skin_kama .cke_browser_opera.cke_browser_quirks .cke_button .cke_label,.cke_skin_kama .cke_browser_iequirks .cke_button .cke_label{line-height:17px;}.cke_skin_kama .cke_browser_ie .cke_rcombo,.cke_skin_kama .cke_browser_ie .cke_rcombo *{cursor:default;}.cke_skin_kama .cke_browser_ie .cke_toolbox{padding-bottom:5px;_padding-bottom:6px;}.cke_shared .cke_skin_kama .cke_browser_ie .cke_toolbox{padding-bottom:0;}.cke_skin_kama .cke_contextmenu{padding:2px;}.cke_skin_kama .cke_menuitem a{display:block;}.cke_skin_kama .cke_menuitem span{cursor:default;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{background-color:#D3D3D3;display:block;}.cke_hc .cke_menuitem a:hover,.cke_hc .cke_menuitem a:focus,.cke_hc .cke_menuitem a:active{border:2px solid;}.cke_skin_kama .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_kama .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_menuitem .cke_icon_wrapper{background-color:#D3D3D3;border:solid 4px #D3D3D3;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#D3D3D3;border:solid 4px #D3D3D3;}.cke_skin_kama .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;}.cke_skin_kama .cke_frameLoaded .cke_menuitem .cke_label{filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_kama .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{background-color:#D3D3D3;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;}.cke_skin_kama .cke_menuseparator{background-color:#D3D3D3;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_kama .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1411px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_kama .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1390px;background-repeat:no-repeat;}.cke_skin_kama .cke_menuarrow span{display:none;}.cke_hc .cke_skin_kama .cke_menuarrow{width:auto;margin-top:0;}.cke_hc .cke_skin_kama .cke_menuarrow span{display:inline;}.cke_browser_ie.cke_ltr .cke_skin_kama .cke_menuarrow{position:absolute;right:2px;}
+.cke_browser_ie.cke_rtl .cke_skin_kama .cke_menuarrow{position:absolute;left:2px;}.cke_skin_kama .cke_rcombo{display:inline;}.cke_skin_kama .cke_rcombopanel{border:1px solid #8F8F73;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;height:auto;_height:100px;}.cke_skin_kama .cke_rcombo a,.cke_skin_kama .cke_rcombo a:active,.cke_skin_kama .cke_rcombo a:hover{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:repeat-x;background-position:0 -100px;border-bottom:1px solid #DAD9D9;border-right:1px solid #DAD9D9;float:left;padding:2px;height:21px;margin-right:6px;}.cke_skin_kama .cke_rtl .cke_rcombo a,.cke_skin_kama .cke_rtl .cke_rcombo a:active,.cke_skin_kama .cke_rtl .cke_rcombo a:hover{float:right;margin-right:0;margin-left:6px;}.cke_skin_kama .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_kama .cke_rcombo .cke_label{display:none;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity=70);opacity:.70;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_label{margin-right:0;margin-left:5px;}.cke_skin_kama .cke_rcombo .cke_inline_label{line-height:21px;font-style:italic;color:#666;}.cke_skin_kama .cke_hc .cke_rcombo .cke_openbutton{vertical-align:top;}.cke_skin_kama .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_kama .cke_rcombo .cke_text{filter:alpha(opacity=70);opacity:.70;height:21px;line-height:21px;width:60px;text-overflow:ellipsis;overflow:hidden;display:inline-block;margin:0 2px 0 4px;cursor:default;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_text{margin:0 4px 0 2px;}.cke_skin_kama .cke_rcombo .cke_openbutton{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -68px;background-repeat:no-repeat;display:inline-block;width:17px;height:19px;margin:1px 2px;background-repeat:no-repeat;}.cke_skin_kama .cke_rcombo .cke_openbutton span{display:none;}.cke_skin_kama .cke_hc .cke_rcombo .cke_openbutton span{display:inline;}.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_openbutton{margin-bottom:0;}.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_kama .cke_rcombo .cke_off a:active .cke_text,.cke_skin_kama .cke_rcombo .cke_on .cke_text{border-color:#316ac5;filter:alpha(opacity=100);opacity:1;}.cke_skin_kama .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_kama .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_kama .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_text,.cke_skin_kama .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_kama .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_kama .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_openbutton,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_kama .cke_browser_gecko .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_webkit .cke_rcombo .cke_label{float:left;}.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_gecko .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}
+.cke_skin_kama .cke_browser_ie7 .cke_rcombo .cke_text{line-height:18px;}.cke_skin_kama .cke_browser_ie6 .cke_rcombo .cke_text,.cke_skin_kama .cke_browser_iequirks .cke_rcombo .cke_text{height:auto;line-height:17px;}.cke_skin_kama .cke_rtl .cke_rcombo .cke_font .cke_text,.cke_skin_kama .cke_rtl .cke_rcombo .cke_fontSize .cke_text{direction:ltr;}@media print{.cke_path{display:none;}}.cke_skin_kama .cke_path{display:inline-block;float:left;margin-top:5px;}.cke_skin_kama .cke_rtl .cke_path{float:right;}.cke_shared .cke_skin_kama .cke_path{_width:100%;margin:0 0 5px;}.cke_skin_kama .cke_path a,.cke_skin_kama .cke_path .cke_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;}.cke_skin_kama .cke_path .cke_empty{visibility:hidden;}.cke_skin_kama .cke_rtl .cke_path a,.cke_skin_kama .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_kama .cke_path a:hover,.cke_skin_kama .cke_path a:focus,.cke_skin_kama .cke_path a:active{background-color:#dff1ff;padding:1px 4px 0;outline:none;color:#000;}.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_kama .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_kama .cke_path .cke_label{display:none;}.cke_skin_kama .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_kama .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_kama .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_kama .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_kama .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_kama .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_kama .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_kama .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_kama .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_kama .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_kama .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_kama .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_kama .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_kama .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_kama .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_kama .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_kama .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_kama .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_kama .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_kama .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_kama .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_kama .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_kama .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_kama .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_kama .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_kama .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_kama .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_kama .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_kama .cke_button_checkspell .cke_icon,.cke_skin_kama .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_kama .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_kama .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_kama .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_kama .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_kama .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_kama .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_kama .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_kama .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_kama .cke_button_showblocks .cke_icon{background-position:0 -1136px;}
+.cke_skin_kama .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_kama .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_kama .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_kama .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_kama .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_kama .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_kama .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_kama .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_kama .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_kama .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_kama .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_numberedlist .cke_icon{background-position:0 -1217px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_bulletedlist .cke_icon{background-position:0 -1233px;}.cke_skin_kama .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_kama .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_indent .cke_icon{background-position:0 -1265px;}.cke_skin_kama .cke_mixed_dir_content .cke_button_outdent .cke_icon{background-position:0 -1249px;}.cke_skin_kama .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_kama .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_kama .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_kama .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_kama .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_kama .cke_button_creatediv .cke_icon{background-position:0 -1168px;}.cke_skin_kama .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_kama .cke_button_removediv .cke_icon{background-position:0 -1200px;}.cke_skin_kama .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_kama .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_kama .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_kama .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_kama .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_kama .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_kama .cke_button_bidirtl .cke_icon{background-position:0 -1072px;}.cke_skin_kama .cke_button_bidiltr .cke_icon{background-position:0 -1056px;}.cke_skin_kama .cke_button_source .cke_label{display:inline;}.cke_skin_kama .cke_styles_panel{width:150px;height:170px;}.cke_skin_kama .cke_format_panel{width:150px;height:170px;}.cke_skin_kama .cke_font_panel{width:150px;height:170px;}.cke_skin_kama .cke_fontSize_panel{height:170px;}.cke_skin_kama .cke_fontSize .cke_text{width:25px;}.cke_skin_kama .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_kama{visibility:inherit;}html.cke_skin_kama_container{visibility:visible;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons.png
new file mode 100644
index 000000000..a9846c02d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.png
new file mode 100644
index 000000000..0b242b1b9
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.gif
index 8f91b4753..8f91b4753 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.gif
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.png
index 1042a61cf..1042a61cf 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.png
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.rtl.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides_rtl.png
index d7f7b49fc..d7f7b49fc 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/dialog.sides.rtl.png
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides_rtl.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gif
new file mode 100644
index 000000000..54d910741
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.png
new file mode 100644
index 000000000..159811305
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.png
new file mode 100644
index 000000000..0cb4e1c6c
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.png
new file mode 100644
index 000000000..5bb305c8d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.start.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/toolbar_start.gif
index 1774246c2..1774246c2 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/default/images/toolbar.start.gif
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/images/toolbar_start.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js
new file mode 100644
index 000000000..936edc147
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('kama',(function(){var a=[],b='cke_ui_color';if(CKEDITOR.env.ie&&CKEDITOR.env.version<7)a.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:a,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,0,0,0],init:function(c){if(c.config.width&&!isNaN(c.config.width))c.config.width-=12;var d=[],e=/\$color/g,f='/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';if(CKEDITOR.env.webkit){f=f.split('}').slice(0,-1);for(var g=0;g<f.length;g++)f[g]=f[g].split('{');}function h(k){var l=k.getById(b);if(!l){l=k.getHead().append('style');l.setAttribute('id',b);l.setAttribute('type','text/css');}return l;};function i(k,l,m){var n,o,p;for(var q=0;q<k.length;q++){if(CKEDITOR.env.webkit)for(o=0;o<l.length;o++){p=l[o][1];for(n=0;n<m.length;n++)p=p.replace(m[n][0],m[n][1]);k[q].$.sheet.addRule(l[o][0],p);}else{p=l;for(n=0;n<m.length;n++)p=p.replace(m[n][0],m[n][1]);if(CKEDITOR.env.ie)k[q].$.styleSheet.cssText+=p;else k[q].$.innerHTML+=p;}}};var j=/\$color/g;CKEDITOR.tools.extend(c,{uiColor:null,getUiColor:function(){return this.uiColor;
+},setUiColor:function(k){var l,m=h(CKEDITOR.document),n='.cke_editor_'+CKEDITOR.tools.escapeCssSelector(c.name),o=[n+' .cke_wrapper',n+'_dialog .cke_dialog_contents',n+'_dialog a.cke_dialog_tab',n+'_dialog .cke_dialog_footer'].join(','),p='background-color: $color !important;';if(CKEDITOR.env.webkit)l=[[o,p]];else l=o+'{'+p+'}';return(this.setUiColor=function(q){var r=[[j,q]];c.uiColor=q;i([m],l,r);i(d,f,r);})(k);}});c.on('menuShow',function(k){var l=k.data[0],m=l.element.getElementsByTag('iframe').getItem(0).getFrameDocument();if(!m.getById('cke_ui_color')){var n=h(m);d.push(n);var o=c.getUiColor();if(o)i([n],f,[[j,o]]);}});if(c.config.uiColor)c.setUiColor(c.config.uiColor);}};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='kama')return;g.setStyles({width:d+'px',height:e+'px'});setTimeout(function(){var h=f.parts.dialog.getChild([0,0,0]),i=h.getChild(0),j=h.getChild(2);j.setStyle('width',i.$.offsetWidth+'px');j=h.getChild(7);j.setStyle('width',i.$.offsetWidth-28+'px');j=h.getChild(4);j.setStyle('height',i.$.offsetHeight-31-14+'px');j=h.getChild(5);j.setStyle('height',i.$.offsetHeight-31-14+'px');},100);});};})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css
new file mode 100644
index 000000000..1c6b195fb
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_kama .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow-y:auto;overflow-x:hidden;width:100%;height:220px;}.cke_skin_kama .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_kama .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_kama .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_kama .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_kama .cke_tpl_preview span{white-space:normal;}.cke_skin_kama .cke_tpl_title{font-weight:bold;}.cke_skin_kama .cke_tpl_list a:active .cke_tpl_item,.cke_skin_kama .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_kama .cke_tpl_list a:focus .cke_tpl_item{border:#f93 1px solid;background-color:#fffacd;}.cke_skin_kama .cke_tpl_list a:active *,.cke_skin_kama .cke_tpl_list a:hover *,.cke_skin_kama .cke_tpl_list a:focus *{cursor:pointer;}.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:active,.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:hover,.cke_skin_kama .cke_browser_ie6 .cke_tpl_list a:focus{background-position:0 0;}.cke_skin_kama .cke_hc .cke_tpl_list a:active .cke_tpl_item,.cke_skin_kama .cke_hc .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_kama .cke_hc .cke_tpl_list a:focus .cke_tpl_item{border-width:3px;}.cke_skin_kama .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css
new file mode 100644
index 000000000..4ab12b793
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css
@@ -0,0 +1,9 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_office2003 table.cke_dialog.cke_browser_gecko{display:block;}.cke_skin_office2003 .cke_dialog_body{margin-left:16px;margin-right:16px;margin-top:2px;margin-bottom:20px;z-index:1;position:relative;_position:static;}.cke_skin_office2003 .cke_dialog_tl,.cke_skin_office2003 .cke_dialog_tr,.cke_skin_office2003 .cke_dialog_tc,.cke_skin_office2003 .cke_dialog_bl,.cke_skin_office2003 .cke_dialog_br,.cke_skin_office2003 .cke_dialog_bc{background-image:url(images/sprites.png);background-repeat:no-repeat;position:absolute;_background-image:url(images/sprites_ie6.png);_z-index:-1;}.cke_skin_office2003 .cke_dialog_tl{background-position:-16px -16px;height:16px;width:16px;top:0;left:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_tl{background-position:-16px -397px;}.cke_skin_office2003 .cke_dialog_tr{background-position:-16px -76px;height:16px;width:16px;top:0;right:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_tr{background-position:-16px -457px;}.cke_skin_office2003 .cke_dialog_tc{background-position:0 -136px;background-repeat:repeat-x;height:16px;top:0;left:16px;right:16px;}.cke_skin_office2003 .cke_dialog_bl{background-position:-16px -196px;height:51px;width:30px;bottom:0;left:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_bl{background-position:-16px -517px;}.cke_skin_office2003 .cke_dialog_br{background-position:-16px -263px;height:51px;width:30px;bottom:0;right:0;}.cke_skin_office2003 .cke_rtl .cke_dialog_br{background-position:-16px -584px;}.cke_skin_office2003 .cke_dialog_bc{background-position:0 -330px;background-repeat:repeat-x;height:51px;bottom:0;left:30px;right:30px;}.cke_skin_office2003 .cke_dialog_ml,.cke_skin_office2003 .cke_dialog_mr{background-image:url(images/dialog_sides.png);background-repeat:repeat-y;position:absolute;width:16px;top:16px;bottom:51px;_background-image:url(images/dialog_sides.gif);_top:auto;}.cke_skin_office2003 .cke_rtl .cke_dialog_ml,.cke_skin_office2003 .cke_rtl .cke_dialog_mr{background-image:url(images/dialog_sides_rtl.png);_background-image:url(images/dialog_sides.gif);}.cke_skin_office2003 .cke_dialog_ml{background-position:0 0;left:0;}.cke_skin_office2003 .cke_dialog_mr{background-position:-16px 0;right:0;}.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_ml,.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_mr{margin-top:3px;}.cke_skin_office2003 .cke_dialog_title{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -678px;background-repeat:repeat-x;font-weight:bold;font-size:14pt;color:#0E3460;background-color:#8db1ff;padding:3px 10px 26px 10px;cursor:move;position:relative;}.cke_skin_office2003 .cke_browser_ie.cke_rtl .cke_dialog_title{position:static!important;unicode-bidi:bidi-override;}.cke_skin_office2003 .cke_dialog_contents{background-color:#f7f8fd;border:#2b66c9 1px solid;overflow:auto;padding:5px 10px;}.cke_skin_office2003 .cke_dialog_footer{background-color:#8db1ff;text-align:right;}.cke_skin_office2003 .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_office2003 .cke_dialog_tabs{height:23px;background-color:#8db1ff;display:inline-block;margin-left:10px;margin-right:10px;margin-top:-23px;position:absolute;z-index:2;}.cke_skin_office2003 .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_office2003 a.cke_dialog_tab,.cke_skin_office2003 a:link.cke_dialog_tab,.cke_skin_office2003 a:active.cke_dialog_tab,.cke_skin_office2003 a:hover.cke_dialog_tab,.cke_skin_office2003 a:visited.cke_dialog_tab{color:#0E3460;border-left:1px solid #2b66c9;border-right:1px solid #2b66c9;border-top:1px solid #2b66c9;height:14px;padding:4px 5px;display:inline-block;cursor:pointer;}.cke_skin_office2003 .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_office2003 .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_office2003 a:hover.cke_dialog_tab{background-color:#f7f8fd;}
+.cke_skin_office2003 .cke_hc a:hover.cke_dialog_tab{padding:2px 3px!important;border-width:3px;}.cke_skin_office2003 a.cke_dialog_tab_selected,.cke_skin_office2003 a:link.cke_dialog_tab_selected,.cke_skin_office2003 a:active.cke_dialog_tab_selected,.cke_skin_office2003 a:hover.cke_dialog_tab_selected,.cke_skin_office2003 a:visited.cke_dialog_tab_selected{border-bottom:1px solid #f7f8fd;background-color:#f7f8fd;font-weight:bold;cursor:default;}.cke_skin_office2003 .cke_hc a.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:link.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:active.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:hover.cke_dialog_tab_selected,.cke_skin_office2003 .cke_hc a:visited.cke_dialog_tab_selected{padding:2px 3px!important;border-width:3px;}.cke_skin_office2003 .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_office2003 .cke_hc .cke_dialog_tabs a,.cke_skin_office2003 .cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_office2003 .cke_single_page .cke_dialog_title{padding-bottom:3px;}.cke_skin_office2003 .cke_dialog_ui_vbox table,.cke_skin_office2003 .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_office2003 .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_office2003 input.cke_dialog_ui_input_text,.cke_skin_office2003 input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_office2003 div.cke_dialog_ui_input_text,.cke_skin_office2003 div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_office2003 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px;}.cke_skin_office2003 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password{border-width:0;}.cke_skin_office2003 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,.cke_skin_office2003 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password{border-width:1px;}.cke_skin_office2003 textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_office2003 div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_office2003 div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_office2003 .cke_dialog_ui_hbox{width:100%;}.cke_skin_office2003 .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_dialog_ui_hbox_child,.cke_skin_office2003 .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_office2003 .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_office2003 a.cke_dialog_ui_button{border-collapse:separate;cursor:default;}.cke_skin_office2003 span.cke_dialog_ui_button{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -678px;background-repeat:repeat-x;border:#0E3460 1px solid;padding:2px 10px;text-align:center;color:#0E3460;background-color:#8db1ff;display:inline-block;cursor:default;}.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_office2003 a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_office2003 a:focus span.cke_dialog_ui_button,.cke_skin_office2003 a:active span.cke_dialog_ui_button{background-color:#8db1ff;}.cke_skin_office2003 .cke_hc a:focus span.cke_dialog_ui_button,.cke_skin_office2003 .cke_hc a:active span.cke_dialog_ui_button{border-width:2px;}.cke_skin_office2003 .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_office2003 .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_office2003 .cke_dialog_footer_buttons span.cke_dialog_ui_button{width:60px;margin:7px 0;}
+.cke_skin_office2003 strong{font-weight:bold;}.cke_skin_office2003 a.cke_dialog_close_button,.cke_skin_office2003 a:hover.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_ie6 a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_ie6 a:hover.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:-20px -655px;position:absolute;cursor:pointer;text-align:center;height:21px;width:21px;top:4px;_background-image:url(images/sprites_ie6.png);}.cke_skin_office2003 a.cke_dialog_close_button span{display:none;}.cke_skin_office2003 .cke_ltr a.cke_dialog_close_button{right:10px;_right:22px;}.cke_skin_office2003 .cke_rtl a.cke_dialog_close_button,.cke_skin_office2003 .cke_rtl a:hover.cke_dialog_close_button{left:10px;_left:16px;_top:6px;}.cke_skin_office2003 .cke_browser_ie6.cke_rtl a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_ie6.cke_rtl a:hover.cke_dialog_close_button{position:relative;float:left;margin-top:-55px;margin-left:-7px;}.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_iequirks.cke_rtl.cke_single_page a:hover.cke_dialog_close_button{margin-top:-32px;}.cke_skin_office2003 .cke_browser_iequirks.cke_ltr a.cke_dialog_close_button,.cke_skin_office2003 .cke_browser_iequirks.cke_ltr a:hover.cke_dialog_close_button{margin-top:0;}.cke_skin_office2003 .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_office2003 .cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_office2003 .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_office2003 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_office2003 .cke_dialog .cke_centered{text-align:center;}.cke_skin_office2003 .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_office2003 .cke_dialog a.cke_btn_locked,.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_office2003 .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_office2003 .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_office2003 .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;}.cke_skin_office2003 .cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:160px;width:230px;padding:2px;background-color:white;}.cke_skin_office2003 .cke_dialog .ImagePreviewBox table td{white-space:normal;}.cke_skin_office2003 .cke_browser_iequirks .cke_dialog_page_contents{_position:absolute;}.cke_skin_office2003 .cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_office2003 .cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_office2003 .cke_dialog .cke_pastetext{width:346px;height:170px;}.cke_skin_office2003 .cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none;}.cke_skin_office2003 .cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black;}.cke_skin_office2003 .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_office2003 .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_office2003 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_office2003 .cke_disabled{color:#a0a0a0;}.cke_skin_office2003 .cke_hc .cke_dialog_title,.cke_skin_office2003 .cke_hc .cke_dialog_tabs,.cke_skin_office2003 .cke_hc .cke_dialog_contents,.cke_skin_office2003 .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}
+.cke_skin_office2003 .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_office2003 .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px;}.cke_skin_office2003 .cke_dialog_body .cke_label{display:none;}.cke_skin_office2003 .cke_dialog_body label.cke_required{font-weight:bold;}.cke_skin_office2003 .cke_hc .cke_dialog_body .cke_label{display:inline;}.cke_skin_office2003 .cke_hc a.cke_btn_locked,.cke_skin_office2003 .cke_hc a.cke_btn_unlocked,.cke_skin_office2003 .cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;}.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_locked,.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_unlocked,.cke_skin_office2003 .cke_rtl.cke_hc a.cke_btn_reset{float:right;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css
new file mode 100644
index 000000000..5bb165bbd
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css
@@ -0,0 +1,13 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 *,.cke_skin_office2003 a:hover,.cke_skin_office2003 a:link,.cke_skin_office2003 a:visited,.cke_skin_office2003 a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_skin_office2003 .cke_rtl *,.cke_skin_office2003 .cke_rtl a:hover,.cke_skin_office2003 .cke_rtl a:link,.cke_skin_office2003 .cke_rtl a:visited,.cke_skin_office2003 .cke_rtl a:active,.cke_rtl .cke_skin_office2003 *,.cke_rtl .cke_skin_office2003 a:hover,.cke_rtl .cke_skin_office2003 a:link,.cke_rtl .cke_skin_office2003 a:visited,.cke_rtl .cke_skin_office2003 a:active{text-align:right;}.cke_skin_office2003 iframe{vertical-align:inherit;}.cke_skin_office2003 textarea{white-space:pre;}.cke_skin_office2003 .cke_browser_gecko textarea{cursor:text;}.cke_skin_office2003 .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_office2003 input[type="text"],.cke_skin_office2003 input[type="password"]{cursor:text;}.cke_skin_office2003 input[type="text"][disabled],.cke_skin_office2003 input[type="password"][disabled]{cursor:default;}.cke_skin_office2003 fieldset{padding:10px;border:2px groove #E0DFE3;}.cke_skin_office2003 .cke_editor{display:inline-table;width:100%;}.cke_skin_office2003 span.cke_browser_webkit,.cke_skin_office2003 span.cke_browser_gecko18{display:block;}.cke_skin_office2003,.cke_skin_office2003 .cke_wrapper{display:block;}.cke_skin_office2003 .cke_top,.cke_skin_office2003 .cke_bottom,.cke_shared .cke_skin_office2003{background-color:#f7f8fd;}.cke_skin_office2003 .cke_top{border-top:solid 1px #fafaf5;border-left:solid 1px #fafaf5;border-right:solid 1px #696969;border-bottom:solid 2px #696969;}.cke_skin_office2003 .cke_rtl .cke_top{border-left:solid 1px #696969;border-right:solid 1px #fafaf5;}.cke_skin_office2003 .cke_bottom{border-left:solid 1px #696969;border-right:solid 1px #696969;border-bottom:solid 1px #696969;}.cke_skin_office2003 .cke_contents{border:solid 1px #696969;background-color:white;}.cke_skin_office2003 .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_office2003 textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;white-space:pre;background-color:#fff;}.cke_skin_office2003 .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_office2003 .cke_resizer{width:12px;height:12px;margin-top:16px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1088px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_office2003 .cke_rtl .cke_resizer{cursor:sw-resize;background-position:0 -1115px;float:left;}.cke_skin_office2003 .cke_resizer_horizontal,.cke_skin_office2003 .cke_rtl .cke_resizer_horizontal{cursor:e-resize;}.cke_skin_office2003 .cke_resizer_vertical,.cke_skin_office2003 .cke_rtl .cke_resizer_vertical{cursor:n-resize;}.cke_skin_office2003 .cke_maximized .cke_resizer{display:none;}.cke_skin_office2003 .cke_browser_ie6 .cke_contents textarea,.cke_skin_office2003 .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_office2003 .cke_voice_label{display:none;}.cke_skin_office2003 legend.cke_voice_label{display:none;}.cke_skin_office2003 .cke_browser_ie legend.cke_voice_label{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_office2003 .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_office2003 .cke_panel iframe{width:100%;height:100%;}cke_skin_office2003 .cke_panel_frame .cke_label{display:none;}html.cke_skin_office2003_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}
+* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_office2003 .cke_button_textcolor_panel,.cke_skin_office2003 .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_office2003 .cke_toolbox{display:none;}}.cke_skin_office2003 .cke_browser_webkit .cke_toolbox,.cke_skin_office2003 .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_office2003 .cke_toolbox{clear:both;padding-bottom:1px;}.cke_skin_office2003 a.cke_toolbox_collapser,.cke_skin_office2003 a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -1026px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:outset 1px;margin:11px 2px 2px;cursor:pointer;}.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser,.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_office2003 a.cke_toolbox_collapser span{display:none;}.cke_skin_office2003 .cke_hc a.cke_toolbox_collapser span{font-size:10px;font-weight:bold;font-family:Arial;display:inline;}.cke_skin_office2003 a.cke_toolbox_collapser_min,.cke_skin_office2003 a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -1047px;background-repeat:no-repeat;margin:2px;}.cke_skin_office2003 .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_office2003 .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -1068px;}.cke_skin_office2003 .cke_toolbar{background-color:#d6dff7;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -962px;background-repeat:repeat-x;display:inline-block;float:left;!height:28px;!line-height:28px;}.cke_skin_office2003 .cke_rtl .cke_toolbar{float:right;}.cke_skin_office2003 .cke_toolgroup{display:inline-block;float:left;height:28px;}.cke_skin_office2003 .cke_browser_ie .cke_toolgroup{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolgroup{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup{#float:none;}.cke_skin_office2003 .cke_separator{display:inline-block;float:left;border-left:solid 1px #B2CBFF;margin:6px 2px;height:16px;}.cke_skin_office2003 .cke_browser_ie .cke_separator{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_separator{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator{#float:none;}
+.cke_skin_office2003 .cke_break{clear:left;}.cke_skin_office2003 .cke_rtl .cke_break{clear:right;}.cke_skin_office2003 .cke_toolbar_start{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;background-position:-27px -765px;width:10px;height:28px;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_toolbar_start{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolbar_start{background-position:-27px -816px;float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start{#float:none;}.cke_skin_office2003 .cke_toolbar_end{display:inline-block;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;background-position:-29px -861px;width:4px;height:28px;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_toolbar_end{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_toolbar_end{background-position:-29px -907px;float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end{#float:none;}.cke_skin_office2003 .cke_button a,.cke_skin_office2003 .cke_button a:hover,.cke_skin_office2003 .cke_button a:focus,.cke_skin_office2003 .cke_button a:active,.cke_skin_office2003 .cke_button a.cke_off{border:solid 1px transparent;border-radius:3px;outline:none;padding-top:2px;padding-left:4px;padding-right:4px;padding-bottom:2px;margin-top:2px;height:18px;vertical-align:top;_border:none;_margin:3px 1px 1px 1px;cursor:default;display:inline-block;}.cke_skin_office2003 .cke_button a,.cke_skin_office2003 .cke_button a.cke_off{filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_office2003 .cke_hc .cke_button a,.cke_skin_office2003 .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);_border:1px solid transparent;}.cke_skin_office2003 .cke_button a.cke_on{border:solid 1px #316ac5;background-color:#c1d2ee;filter:alpha(opacity=100);opacity:1;_margin:2px 0 0 0;}.cke_skin_office2003 .cke_hc .cke_button a:hover,.cke_skin_office2003 .cke_hc .cke_button a:focus,.cke_skin_office2003 .cke_hc .cke_button a:active{padding:0 2px!important;border-width:3px;}.cke_skin_office2003 .cke_button a.cke_disabled *,.cke_skin_office2003 .cke_browser_ie a:hover.cke_button .cke_disabled *{filter:alpha(opacity=30);opacity:.3;}.cke_skin_office2003 .cke_hc .cke_button a.cke_disabled *,.cke_skin_office2003 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *{filter:alpha(opacity=60);opacity:.6;}.cke_skin_office2003 .cke_button a:hover,.cke_skin_office2003 .cke_button a:focus,.cke_skin_office2003 .cke_button a:active{border:solid 1px #316ac5;background-color:#dff1ff;filter:alpha(opacity=100);opacity:1;vertical-align:top;_margin:2px 0 0 0;padding:2px 4px;}.cke_skin_office2003 .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;cursor:default;}.cke_skin_office2003 .cke_rtl .cke_button .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_office2003 .cke_button .cke_label{display:none;padding-left:3px;cursor:default;vertical-align:middle;_background-image:url(images/sprites_ie6.png);_background-position:0 -970px;_background-repeat:repeat-x;}.cke_skin_office2003 .cke_button a:hover .cke_label{_background-color:#dff1ff;_background-image:none;}.cke_skin_office2003 .cke_button a.cke_on .cke_label{_background-color:#c1d2ee;_background-image:none;}.cke_skin_office2003 .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_office2003 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_office2003 .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_office2003 .cke_button .cke_buttonarrow{display:inline-block;height:18px;width:8px;background-position:2px -1004px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;cursor:default;}.cke_skin_office2003 .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -1004px;}
+.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar,.cke_skin_office2003 .cke_browser_gecko18 .cke_button a,.cke_skin_office2003 .cke_browser_gecko18 .cke_button a.cke_off,.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_buttonarrow,.cke_skin_office2003 .cke_browser_gecko18 .cke_separator,.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_start,.cke_skin_office2003 .cke_browser_gecko18 .cke_toolbar_end{display:block;float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_toolbar_end{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_break{float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl span.cke_inline_label{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_break{float:right;}.cke_skin_office2003 .cke_browser_gecko18 .cke_separator{margin-top:4px;}.cke_skin_office2003 .cke_browser_gecko18 .cke_button .cke_label{padding-top:3px;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolgroup,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_separator,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_start,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_toolbar_end{float:none;}.cke_skin_office2003 .cke_browser_ie8 .cke_toolbar,.cke_skin_office2003 .cke_browser_ie8 .cke_toolgroup{vertical-align:top;}.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,.cke_skin_office2003 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup{vertical-align:baseline;}.cke_skin_office2003 .cke_browser_iequirks .cke_separator{vertical-align:text-bottom;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo,.cke_skin_office2003 .cke_browser_ie .cke_rcombo *{cursor:default;}.cke_skin_office2003 .cke_contextmenu{padding:2px;}.cke_skin_office2003 .cke_menuitem a{display:block;}.cke_skin_office2003 .cke_menuitem span{cursor:default;}.cke_skin_office2003 .cke_menuitem a:hover,.cke_skin_office2003 .cke_menuitem a:focus,.cke_skin_office2003 .cke_menuitem a:active{background-color:#8db1ff;display:block;}.cke_hc .cke_menuitem a:hover,.cke_hc .cke_menuitem a:focus,.cke_hc .cke_menuitem a:active{border:2px solid;}.cke_skin_office2003 .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_office2003 .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_menuitem .cke_icon_wrapper{background-color:#f7f8fd;border:solid 4px #f7f8fd;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_office2003 .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_office2003 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#f7f8fd;border:solid 4px #f7f8fd;}.cke_skin_office2003 .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;}
+.cke_skin_office2003 .cke_frameLoaded .cke_menuitem .cke_label{filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_office2003 .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_office2003 .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_office2003 .cke_menuitem a:hover .cke_label,.cke_skin_office2003 .cke_menuitem a:focus .cke_label,.cke_skin_office2003 .cke_menuitem a:active .cke_label{background-color:#8db1ff;}.cke_skin_office2003 .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_office2003 .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_office2003 .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;}.cke_skin_office2003 .cke_menuseparator{background-color:#f7f8fd;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_office2003 .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -1071px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_office2003 .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-position:0 -1050px;}.cke_skin_office2003 .cke_menuarrow span{display:none;}.cke_hc .cke_skin_office2003 .cke_menuarrow{width:auto;margin-top:0;}.cke_hc .cke_skin_office2003 .cke_menuarrow span{display:inline;}.cke_browser_ie.cke_ltr .cke_skin_office2003 .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_office2003 .cke_menuarrow{position:absolute;left:2px;}.cke_skin_office2003 .cke_rcombo{display:inline-block;margin-left:2px;margin-right:2px;margin-top:2px;vertical-align:top;float:left;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo{#float:none;#display:inline;}.cke_skin_office2003 .cke_rtl .cke_rcombo{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rcombo{#float:none;}.cke_skin_office2003 .cke_rcombopanel{border:1px solid #316ac5;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;}.cke_skin_office2003 .cke_rcombo a{display:inline-block;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_skin_office2003 .cke_rtl .cke_rcombo a{float:right;}.cke_skin_office2003 .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_office2003 .cke_rcombo .cke_label{display:inline-block;float:left;cursor:default;line-height:24px;height:24px;vertical-align:top;padding-left:4px;padding-right:5px;filter:alpha(opacity=70);opacity:.70;_background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);_background-position:0 -962px;_background-repeat:repeat-x;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_label{float:right;padding-right:4px;padding-left:5px;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_office2003 .cke_rcombo .cke_inline_label{color:#fff;}.cke_skin_office2003 .cke_rcombo .cke_text{border:1px solid #8f8f73;background-color:#fff;height:14px;width:60px;padding-top:4px;padding-bottom:4px;padding-left:5px;padding-right:5px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:top;cursor:default;}.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_text{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_text{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_office2003 .cke_browser_iequirks .cke_rcombo .cke_text{height:22px;}.cke_skin_office2003 .cke_rcombo .cke_openbutton{display:inline-block;background-position:5px -1002px;background-image:url(images/sprites.png);background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;border-top:1px solid #8f8f73;border-bottom:1px solid #8f8f73;width:14px;height:22px;}.cke_skin_office2003 .cke_rcombo .cke_openbutton span{display:none;}
+.cke_skin_office2003 .cke_hc .cke_rcombo .cke_openbutton span{display:inline;}.cke_skin_office2003 .cke_ltr .cke_rcombo .cke_openbutton{border-right:1px solid #8f8f73;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_openbutton{border-left:1px solid #8f8f73;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover,.cke_skin_office2003 .cke_rcombo .cke_off a:focus,.cke_skin_office2003 .cke_rcombo .cke_off a:active,.cke_skin_office2003 .cke_rcombo .cke_on a{filter:alpha(opacity=100);opacity:1;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_text,.cke_skin_office2003 .cke_rcombo .cke_on .cke_text{border-color:#316ac5;}.cke_skin_office2003 .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_office2003 .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_office2003 .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text,.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_office2003 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_office2003 .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_office2003 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo a,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label{float:none;}.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_font .cke_text,.cke_skin_office2003 .cke_rtl .cke_rcombo .cke_fontSize .cke_text{direction:ltr;}@media print{.cke_path{display:none;}}.cke_skin_office2003 .cke_path{padding:3px 3px 0 3px;display:inline-block;float:left;}.cke_skin_office2003 .cke_rtl .cke_path{float:right;}.cke_skin_office2003 .cke_path a,.cke_skin_office2003 .cke_path .cke_empty{display:inline-block;float:left;border:solid 1px #f7f8fd;background-color:#f7f8fd;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;cursor:default;}
+.cke_skin_office2003 .cke_path .cke_empty{visibility:hidden;}.cke_skin_office2003 .cke_rtl .cke_path a,.cke_skin_office2003 .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_office2003 .cke_path a:hover,.cke_skin_office2003 .cke_path a:focus,.cke_skin_office2003 .cke_path a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;}.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_office2003 .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_office2003 .cke_path .cke_label{display:none;}.cke_skin_office2003 .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_office2003 .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_office2003 .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_office2003 .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_office2003 .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_office2003 .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_office2003 .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_office2003 .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_office2003 .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_office2003 .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_office2003 .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_office2003 .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_office2003 .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_office2003 .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_office2003 .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_office2003 .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_office2003 .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_office2003 .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_office2003 .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_office2003 .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_office2003 .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_office2003 .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_office2003 .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_office2003 .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_office2003 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_office2003 .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_office2003 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_office2003 .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_office2003 .cke_button_checkspell .cke_icon,.cke_skin_office2003 .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_office2003 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_office2003 .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_office2003 .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_office2003 .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_office2003 .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_office2003 .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_office2003 .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_office2003 .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_office2003 .cke_button_showblocks .cke_icon{background-position:0 -1136px;}.cke_skin_office2003 .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_office2003 .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_office2003 .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_office2003 .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_office2003 .cke_button_undo .cke_icon{background-position:0 -208px;}
+.cke_skin_office2003 .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_office2003 .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_office2003 .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_office2003 .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_office2003 .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_office2003 .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_numberedlist .cke_icon{background-position:0 -1217px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_bulletedlist .cke_icon{background-position:0 -1233px;}.cke_skin_office2003 .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_office2003 .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_indent .cke_icon{background-position:0 -1265px;}.cke_skin_office2003 .cke_mixed_dir_content .cke_button_outdent .cke_icon{background-position:0 -1249px;}.cke_skin_office2003 .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_office2003 .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_office2003 .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_office2003 .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_office2003 .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_office2003 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_office2003 .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_office2003 .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_office2003 .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_office2003 .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_office2003 .cke_button_creatediv .cke_icon{background-position:0 -1168px;}.cke_skin_office2003 .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_office2003 .cke_button_removediv .cke_icon{background-position:0 -1200px;}.cke_skin_office2003 .cke_button_bidirtl .cke_icon{background-position:0 -1072px;}.cke_skin_office2003 .cke_button_bidiltr .cke_icon{background-position:0 -1056px;}.cke_skin_office2003 .cke_button_source .cke_label{display:inline;}.cke_skin_office2003 .cke_styles_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_format_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_font_panel{width:150px;height:170px;}.cke_skin_office2003 .cke_fontSize_panel{height:170px;}.cke_skin_office2003 .cke_fontSize .cke_text{width:20px;}.cke_skin_office2003 .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_office2003{visibility:inherit;}html.cke_skin_office2003_container{visibility:visible;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.png
new file mode 100644
index 000000000..a9846c02d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.png
new file mode 100644
index 000000000..0b242b1b9
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gif
new file mode 100644
index 000000000..5840d0173
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.png
new file mode 100644
index 000000000..7da982187
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.png
new file mode 100644
index 000000000..24fe13aed
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gif
new file mode 100644
index 000000000..54d910741
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.png
new file mode 100644
index 000000000..159811305
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.png
new file mode 100644
index 000000000..a6d3a727b
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.png
new file mode 100644
index 000000000..94073b2a4
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js
new file mode 100644
index 000000000..e80e11245
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('office2003',(function(){var a=[];if(CKEDITOR.env.ie&&CKEDITOR.env.version<7)a.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:a,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,14,18,14]};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='office2003')return;g.setStyles({width:d+'px',height:e+'px'});if(!CKEDITOR.env.ie)return;var h=function(){var i=f.parts.dialog.getChild([0,0,0]),j=i.getChild(0),k=i.getChild(2);k.setStyle('width',j.$.offsetWidth+'px');k=i.getChild(7);k.setStyle('width',j.$.offsetWidth-28+'px');k=i.getChild(4);k.setStyle('height',j.$.offsetHeight-31-14+'px');k=i.getChild(5);k.setStyle('height',j.$.offsetHeight-31-14+'px');};setTimeout(h,100);if(b.editor.lang.dir=='rtl')setTimeout(h,1000);});};})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css
new file mode 100644
index 000000000..73ebf7dfb
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_office2003 .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_office2003 .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_office2003 .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_office2003 .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_office2003 .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_office2003 .cke_tpl_preview span{white-space:normal;}.cke_skin_office2003 .cke_tpl_title{font-weight:bold;}.cke_skin_office2003 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:focus .cke_tpl_item{border:#f93 1px solid!important;background-color:#fffacd!important;}.cke_skin_office2003 .cke_tpl_list a:active *,.cke_skin_office2003 .cke_tpl_list a:hover *,.cke_skin_office2003 .cke_tpl_list a:focus *{cursor:pointer;}.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:active,.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:hover,.cke_skin_office2003 .cke_browser_ie6 .cke_tpl_list a:focus{background-position:0 0;}.cke_skin_office2003 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_office2003 .cke_tpl_list a:focus .cke_tpl_item{border-width:3px;}.cke_skin_office2003 .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css
new file mode 100644
index 000000000..3d41708b8
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+body .cke_dialog{visibility:visible;}.cke_skin_v2 table.cke_dialog.cke_browser_gecko{display:block;}.cke_skin_v2 .cke_dialog_body{margin-left:16px;margin-right:16px;margin-top:2px;margin-bottom:20px;z-index:1;position:relative;_position:static;}.cke_skin_v2 .cke_dialog_tl,.cke_skin_v2 .cke_dialog_tr,.cke_skin_v2 .cke_dialog_tc,.cke_skin_v2 .cke_dialog_bl,.cke_skin_v2 .cke_dialog_br,.cke_skin_v2 .cke_dialog_bc{background-image:url(images/sprites.png);background-repeat:no-repeat;position:absolute;_background-image:url(images/sprites_ie6.png);_z-index:-1;}.cke_skin_v2 .cke_dialog_tl{background-position:-16px -16px;height:16px;width:16px;top:0;left:0;}.cke_skin_v2 .cke_rtl .cke_dialog_tl{background-position:-16px -397px;}.cke_skin_v2 .cke_dialog_tr{background-position:-16px -76px;height:16px;width:16px;top:0;right:0;}.cke_skin_v2 .cke_rtl .cke_dialog_tr{background-position:-16px -457px;}.cke_skin_v2 .cke_dialog_tc{background-position:0 -136px;background-repeat:repeat-x;height:16px;top:0;left:16px;right:16px;}.cke_skin_v2 .cke_dialog_bl{background-position:-16px -196px;height:51px;width:30px;bottom:0;left:0;}.cke_skin_v2 .cke_rtl .cke_dialog_bl{background-position:-16px -517px;}.cke_skin_v2 .cke_dialog_br{background-position:-16px -263px;height:51px;width:30px;bottom:0;right:0;}.cke_skin_v2 .cke_rtl .cke_dialog_br{background-position:-16px -584px;}.cke_skin_v2 .cke_dialog_bc{background-position:0 -330px;background-repeat:repeat-x;height:51px;bottom:0;left:30px;right:30px;}.cke_skin_v2 .cke_dialog_ml,.cke_skin_v2 .cke_dialog_mr{background-image:url(images/dialog_sides.png);background-repeat:repeat-y;position:absolute;width:16px;top:16px;bottom:51px;_background-image:url(images/dialog_sides.gif);_top:auto;}.cke_skin_v2 .cke_rtl .cke_dialog_ml,.cke_skin_v2 .cke_rtl .cke_dialog_mr{background-image:url(images/dialog_sides_rtl.png);_background-image:url(images/dialog_sides.gif);}.cke_skin_v2 .cke_dialog_ml{background-position:0 0;left:0;}.cke_skin_v2 .cke_dialog_mr{background-position:-16px 0;right:0;}.cke_skin_v2 .cke_browser_iequirks .cke_dialog_ml,.cke_skin_v2 .cke_browser_iequirks .cke_dialog_mr{margin-top:3px;}.cke_skin_v2 .cke_dialog_title{font-weight:bold;font-size:14pt;color:#737357;background-color:#e3e3c7;padding:3px 10px 26px 10px;cursor:move;position:relative;}.cke_skin_v2 .cke_browser_ie.cke_rtl .cke_dialog_title{position:static!important;unicode-bidi:bidi-override;}.cke_skin_v2 .cke_dialog_contents{background-color:#f1f1e3;border:#d5d59d 1px solid;overflow:auto;padding:5px 10px;}.cke_skin_v2 .cke_dialog_footer{background-color:#e3e3c7;text-align:right;}.cke_skin_v2 .cke_rtl .cke_dialog_footer{text-align:left;}.cke_skin_v2 .cke_dialog_tabs{height:23px;background-color:#e3e3c7;display:inline-block;margin-left:10px;margin-right:10px;margin-top:-23px;position:absolute;z-index:2;}.cke_skin_v2 .cke_rtl .cke_dialog_tabs{right:10px;}.cke_skin_v2 a.cke_dialog_tab,.cke_skin_v2 a:link.cke_dialog_tab,.cke_skin_v2 a:active.cke_dialog_tab,.cke_skin_v2 a:hover.cke_dialog_tab,.cke_skin_v2 a:visited.cke_dialog_tab{color:#737357;border-left:1px solid #d5d59d;border-right:1px solid #d5d59d;border-top:1px solid #d5d59d;height:14px;padding:4px 5px;display:inline-block;cursor:pointer;}.cke_skin_v2 .cke_browser_gecko18 a.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:link.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:active.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:hover.cke_dialog_tab,.cke_skin_v2 .cke_browser_gecko18 a:visited.cke_dialog_tab{display:inline;position:relative;top:6px;}.cke_skin_v2 a:hover.cke_dialog_tab{background-color:#f1f1e3;}.cke_skin_v2 .cke_hc a:hover.cke_dialog_tab{padding:2px 3px!important;border-width:3px;}.cke_skin_v2 a.cke_dialog_tab_selected,.cke_skin_v2 a:link.cke_dialog_tab_selected,.cke_skin_v2 a:active.cke_dialog_tab_selected,.cke_skin_v2 a:hover.cke_dialog_tab_selected,.cke_skin_v2 a:visited.cke_dialog_tab_selected{border-bottom:1px solid #f1f1e3;background-color:#f1f1e3;font-weight:bold;cursor:default;}.cke_skin_v2 .cke_hc a.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:link.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:active.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:hover.cke_dialog_tab_selected,.cke_skin_v2 .cke_hc a:visited.cke_dialog_tab_selected{padding:2px 3px!important;border-width:3px;}
+.cke_skin_v2 .cke_hc .cke_dialog_tabs a,.cke_skin_v2 .cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white;}.cke_skin_v2 .cke_single_page .cke_dialog_tabs{display:none;}.cke_skin_v2 .cke_single_page .cke_dialog_title{padding-bottom:3px;}.cke_skin_v2 .cke_dialog_ui_vbox table,.cke_skin_v2 .cke_dialog_ui_hbox table{margin:auto;}.cke_skin_v2 .cke_dialog_ui_vbox_child{padding:5px 0;}.cke_skin_v2 input.cke_dialog_ui_input_text,.cke_skin_v2 input.cke_dialog_ui_input_password{background-color:white;border:none;padding:0;width:100%;height:14px;}.cke_skin_v2 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_gecko.cke_hc div.cke_dialog_ui_input_password{border-width:0;}.cke_skin_v2 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_text,.cke_skin_v2 .cke_browser_gecko18.cke_hc div.cke_dialog_ui_input_password{border-width:1px;}.cke_skin_v2 div.cke_dialog_ui_input_text,.cke_skin_v2 div.cke_dialog_ui_input_password{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_v2 .cke_browser_ie.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px;}.cke_skin_v2 textarea.cke_dialog_ui_input_textarea{background-color:white;border:none;padding:0;width:100%;_width:99%;overflow:auto;resize:none;}.cke_skin_v2 div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0;}.cke_skin_v2 div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default;}.cke_skin_v2 .cke_dialog_ui_hbox{width:100%;}.cke_skin_v2 .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_dialog_ui_hbox_child,.cke_skin_v2 .cke_dialog_ui_hbox_last{vertical-align:top;}.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px;}.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_first,.cke_skin_v2 .cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px;}.cke_skin_v2 a.cke_dialog_ui_button{border-collapse:separate;cursor:default;}.cke_skin_v2 span.cke_dialog_ui_button{border:#737357 1px solid;padding:2px 10px;text-align:center;color:#3b3b1f;background-color:#c7c78f;display:inline-block;cursor:default;}.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons span.cke_dialog_ui_button{display:block;}.cke_skin_v2 a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3;}.cke_skin_v2 a:focus span.cke_dialog_ui_button,.cke_skin_v2 a:active span.cke_dialog_ui_button{background-color:#e3e3c7;}.cke_skin_v2 .cke_hc a:focus span.cke_dialog_ui_button,.cke_skin_v2 .cke_hc a:active span.cke_dialog_ui_button{border-width:2px;}.cke_skin_v2 .cke_dialog_footer_buttons{display:inline-table;margin-right:12px;margin-left:12px;width:auto;position:relative;}.cke_skin_v2 .cke_browser_gecko18 .cke_dialog_footer_buttons{display:inline;}.cke_skin_v2 .cke_dialog_footer_buttons span.cke_dialog_ui_button{width:60px;margin:7px 0;}.cke_skin_v2 strong{font-weight:bold;}.cke_skin_v2 a.cke_dialog_close_button,.cke_skin_v2 a:hover.cke_dialog_close_button,.cke_skin_v2 .cke_browser_ie6 a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_ie6 a:hover.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:-16px -651px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 a.cke_dialog_close_button span{display:none;}.cke_skin_v2 a:hover.cke_dialog_close_button{background-position:-16px -687px;}.cke_skin_v2 .cke_ltr a.cke_dialog_close_button,.cke_skin_v2 .cke_ltr a:hover.cke_dialog_close_button{right:10px;_right:22px;}.cke_skin_v2 .cke_rtl a.cke_dialog_close_button,.cke_skin_v2 .cke_rtl a:hover.cke_dialog_close_button{left:10px;_left:16px;_top:7px;}.cke_skin_v2 .cke_browser_ie6.cke_rtl a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_ie6.cke_rtl a:hover.cke_dialog_close_button{position:relative;float:left;margin-top:-55px;margin-left:-7px;}.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_iequirks.cke_rtl.cke_single_page a:hover.cke_dialog_close_button{margin-top:-32px;}
+.cke_skin_v2 .cke_browser_iequirks.cke_ltr a.cke_dialog_close_button,.cke_skin_v2 .cke_browser_iequirks.cke_ltr a:hover.cke_dialog_close_button{margin-top:0;}.cke_skin_v2 .cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white;}.cke_skin_v2 .cke_dialog_ui_input_file{width:100%;height:25px;}.cke_skin_v2 .cke_dialog .cke_dark_background{background-color:#eaead1;}.cke_skin_v2 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_v2 .cke_dialog .cke_centered{text-align:center;}.cke_skin_v2 .cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px;}.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_reset{float:left;}.cke_skin_v2 .cke_dialog a.cke_btn_locked,.cke_skin_v2 .cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px;}.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_locked,.cke_skin_v2 .cke_rtl .cke_dialog a.cke_btn_unlocked{float:right;}.cke_skin_v2 .cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif);}.cke_skin_v2 .cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer;}.cke_skin_v2 .cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:160px;width:230px;padding:2px;background-color:white;}.cke_skin_v2 .cke_dialog .ImagePreviewBox table td{white-space:normal;}.cke_skin_v2 .cke_browser_iequirks .cke_dialog_page_contents{_position:absolute;}.cke_skin_v2 .cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4;}.cke_skin_v2 .cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white;}.cke_skin_v2 .cke_dialog .cke_pastetext{width:346px;height:170px;}.cke_skin_v2 .cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none;}.cke_skin_v2 .cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black;}.cke_skin_v2 .cke_dialog .cke_dark_background{text-align:center;background-color:#eaead1;font-size:14px;}.cke_skin_v2 .cke_dialog .cke_light_background{text-align:center;background-color:#ffffbe;}.cke_skin_v2 .cke_dialog .cke_hand{cursor:pointer;}.cke_skin_v2 .cke_disabled{color:#a0a0a0;}.cke_skin_v2 .cke_hc .cke_dialog_title,.cke_skin_v2 .cke_hc .cke_dialog_tabs,.cke_skin_v2 .cke_hc .cke_dialog_contents,.cke_skin_v2 .cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_title{border-top:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_footer{border-bottom:1px solid;}.cke_skin_v2 .cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px;}.cke_skin_v2 .cke_dialog_body .cke_label{display:none;}.cke_skin_v2 .cke_dialog_body label.cke_required{font-weight:bold;}.cke_skin_v2 .cke_hc .cke_dialog_body .cke_label{display:inline;}.cke_skin_v2 .cke_hc a.cke_btn_locked,.cke_skin_v2 .cke_hc a.cke_btn_unlocked,.cke_skin_v2 .cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;}.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_locked,.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_unlocked,.cke_skin_v2 .cke_rtl.cke_hc a.cke_btn_reset{float:right;}.cke_skin_v2 a.cke_smile img{border:2px solid #eaead1;}.cke_skin_v2 a.cke_smile:focus img,.cke_skin_v2 a.cke_smile:active img,.cke_skin_v2 a.cke_smile:hover img{border-color:#C7C78F;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css
new file mode 100644
index 000000000..0d3c50298
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css
@@ -0,0 +1,12 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 *,.cke_skin_v2 a:hover,.cke_skin_v2 a:link,.cke_skin_v2 a:visited,.cke_skin_v2 a:active{margin:0;padding:0;border:0;background:transparent;text-decoration:none;font:normal normal normal 100% Sans-Serif;width:auto;height:auto;border-collapse:collapse;text-align:left;vertical-align:baseline;white-space:nowrap;cursor:auto;color:#000;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_skin_v2 .cke_rtl *,.cke_skin_v2 .cke_rtl a:hover,.cke_skin_v2 .cke_rtl a:link,.cke_skin_v2 .cke_rtl a:visited,.cke_skin_v2 .cke_rtl a:active,.cke_rtl .cke_skin_v2 *,.cke_rtl .cke_skin_v2 a:hover,.cke_rtl .cke_skin_v2 a:link,.cke_rtl .cke_skin_v2 a:visited,.cke_rtl .cke_skin_v2 a:active{text-align:right;}.cke_skin_v2 iframe{vertical-align:inherit;}.cke_skin_v2 textarea{white-space:pre;}.cke_skin_v2 .cke_browser_gecko textarea{cursor:text;}.cke_skin_v2 .cke_browser_gecko textarea[disabled]{cursor:default;}.cke_skin_v2 input[type="text"],.cke_skin_v2 input[type="password"]{cursor:text;}.cke_skin_v2 input[type="text"][disabled],.cke_skin_v2 input[type="password"][disabled]{cursor:default;}.cke_skin_v2 fieldset{padding:10px;border:2px groove #E0DFE3;}.cke_skin_v2 .cke_editor{display:inline-table;width:100%;}.cke_skin_v2{display:block;}.cke_skin_v2 span.cke_browser_webkit,.cke_skin_v2 span.cke_browser_gecko18{display:block;}.cke_skin_v2 .cke_wrapper{display:block;}.cke_skin_v2 .cke_browser_opera .cke_editor{display:table;}.cke_skin_v2 .cke_top,.cke_skin_v2 .cke_bottom,.cke_shared .cke_skin_v2{background-color:#efefde;}.cke_skin_v2 .cke_top{border-top:solid 1px #fafaf5;border-left:solid 1px #fafaf5;border-right:solid 1px #696969;border-bottom:solid 2px #696969;}.cke_skin_v2 .cke_rtl .cke_top{border-left:solid 1px #696969;border-right:solid 1px #fafaf5;}.cke_skin_v2 .cke_bottom{border-left:solid 1px #696969;border-right:solid 1px #696969;border-bottom:solid 1px #696969;}.cke_skin_v2 .cke_contents{border:solid 1px #696969;background-color:white;}.cke_skin_v2 .cke_focus{outline:auto 5px -webkit-focus-ring-color;}.cke_skin_v2 textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre;}.cke_skin_v2 .cke_browser_iequirks textarea.cke_source{_white-space:normal;}.cke_skin_v2 .cke_resizer{width:12px;height:12px;margin-top:16px;display:block;float:right;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -801px;background-repeat:no-repeat;cursor:se-resize;}.cke_skin_v2 .cke_rtl .cke_resizer{cursor:sw-resize;background-position:0 -828px;float:left;}.cke_skin_v2 .cke_resizer_horizontal,.cke_skin_v2 .cke_rtl .cke_resizer_horizontal{cursor:e-resize;}.cke_skin_v2 .cke_resizer_vertical,.cke_skin_v2 .cke_rtl .cke_resizer_vertical{cursor:n-resize;}.cke_skin_v2 .cke_maximized .cke_resizer{display:none;}.cke_skin_v2 .cke_browser_ie6 .cke_contents textarea,.cke_skin_v2 .cke_browser_ie7 .cke_contents textarea{position:absolute;}.cke_skin_v2 .cke_voice_label{display:none;}.cke_skin_v2 legend.cke_voice_label{display:none;}.cke_skin_v2 .cke_browser_ie legend.cke_voice_label{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_v2 .cke_panel{border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.cke_skin_v2 .cke_panel iframe{width:100%;height:100%;}.cke_skin_v2 .cke_panel_frame .cke_label{display:none;}html.cke_skin_v2_container{overflow:auto;overflow-x:hidden;}body.cke_panel_frame{overflow:auto;}ul.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap;}li.cke_panel_listItem{margin:0;}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;}* html .cke_panel_listItem a{width:100%;color:#000;}*:first-child+html .cke_panel_listItem a{color:#000;}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff;}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff;}
+.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0;}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px;}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px;}.cke_skin_v2 .cke_button_textcolor_panel,.cke_skin_v2 .cke_button_bgcolor_panel{width:150px;height:135px;}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000;}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left;}.cke_rtl span.cke_colorbox{float:right;}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;}.cke_rtl a.cke_colorbox{float:right;}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff;}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer;}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff;}@media print{.cke_skin_v2 .cke_toolbox{display:none;}}.cke_skin_v2 .cke_browser_webkit .cke_toolbox,.cke_skin_v2 .cke_browser_webkit .cke_toolbox>span{white-space:normal;}.cke_skin_v2 .cke_toolbox{clear:both;padding-bottom:1px;}.cke_skin_v2 a.cke_toolbox_collapser,.cke_skin_v2 a:hover.cke_toolbox_collapser{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:3px -739px;background-repeat:no-repeat;width:11px;height:11px;float:right;border:outset 1px;margin:11px 2px 2px;cursor:pointer;}.cke_skin_v2 a.cke_toolbox_collapser span{display:none;}.cke_skin_v2 .cke_hc a.cke_toolbox_collapser span{font-size:10px;font-weight:bold;font-family:Arial;display:inline;}.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser,.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser{float:left;}.cke_skin_v2 a.cke_toolbox_collapser_min,.cke_skin_v2 a:hover.cke_toolbox_collapser_min{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:4px -760px;background-repeat:no-repeat;margin:2px;}.cke_skin_v2 .cke_rtl a.cke_toolbox_collapser_min,.cke_skin_v2 .cke_rtl a:hover.cke_toolbox_collapser_min{background-position:4px -781px;}.cke_skin_v2 .cke_toolbar{padding-top:1px;padding-bottom:1px;display:inline-block;float:left;}.cke_skin_v2 .cke_rtl .cke_toolbar{float:right;}.cke_skin_v2 .cke_toolgroup{display:inline-block;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolgroup{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolgroup{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup{#float:none;}.cke_skin_v2 .cke_separator{display:inline-block;float:left;border-left:solid 1px #999;margin:4px 2px;height:16px;}.cke_skin_v2 .cke_browser_ie .cke_separator{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_separator{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator{#float:none;}.cke_skin_v2 .cke_break{clear:left;}.cke_skin_v2 .cke_rtl .cke_break{clear:right;}.cke_skin_v2 .cke_toolbar_start{display:inline-block;background-image:url(images/toolbar_start.gif);background-repeat:no-repeat;margin:4px 2px 0 2px;width:3px;height:20px;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolbar_start{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start{#float:none;}.cke_skin_v2 .cke_toolbar_end{display:inline-block;float:left;}.cke_skin_v2 .cke_browser_ie .cke_toolbar_end{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_toolbar_end{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end{#float:none;}
+.cke_skin_v2 .cke_button a,.cke_skin_v2 .cke_button a:hover,.cke_skin_v2 .cke_button a:focus,.cke_skin_v2 .cke_button a:active,.cke_skin_v2 .cke_button a.cke_off{border:solid 1px #efefde;display:inline-block;border-radius:3px;outline:none;padding-top:2px;padding-left:4px;padding-right:4px;padding-bottom:2px;height:18px;cursor:default;}.cke_skin_v2 .cke_button a,.cke_skin_v2 .cke_button a.cke_off{background-color:#efefde;filter:alpha(opacity=70);opacity:.70;-moz-border-radius:3px;-webkit-border-radius:3px;}.cke_skin_v2 .cke_hc .cke_button a,.cke_skin_v2 .cke_hc .cke_button a.cke_off{opacity:1.0;filter:alpha(opacity=100);}.cke_skin_v2 .cke_button a.cke_on{border:solid 1px #316ac5;background-color:#a3d7ff;filter:alpha(opacity=100);opacity:1;}.cke_skin_v2 .cke_button a.cke_disabled *,.cke_skin_v2 .cke_browser_ie a:hover.cke_button .cke_disabled *{filter:alpha(opacity=30);opacity:.3;}.cke_skin_v2 .cke_hc .cke_button a.cke_disabled *,.cke_skin_v2 .cke_browser_ie.cke_hc a:hover.cke_button .cke_disabled *{filter:alpha(opacity=60);opacity:.6;}.cke_skin_v2 .cke_button a:hover,.cke_skin_v2 .cke_button a:focus,.cke_skin_v2 .cke_button a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding:2px 4px;}.cke_skin_v2 .cke_hc .cke_button a:hover,.cke_skin_v2 .cke_hc .cke_button a:focus,.cke_skin_v2 .cke_hc .cke_button a:active{padding:0 2px!important;border-width:3px;}.cke_skin_v2 .cke_button .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;display:inline-block;cursor:default;}.cke_skin_v2 .cke_rtl .cke_button .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_v2 .cke_button .cke_label{cursor:default;display:none;padding-left:3px;vertical-align:middle;}.cke_skin_v2 .cke_hc .cke_button .cke_label{padding:0;display:inline-block;}.cke_skin_v2 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_v2 .cke_accessibility{position:absolute;display:block;width:0;height:0;overflow:hidden;}.cke_skin_v2 .cke_button .cke_buttonarrow{display:inline-block;height:17px;width:8px;background-position:2px -717px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;cursor:default;}.cke_skin_v2 .cke_rtl .cke_button .cke_buttonarrow{background-position:0 -717px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);}.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar,.cke_skin_v2 .cke_browser_gecko18 .cke_button a,.cke_skin_v2 .cke_browser_gecko18 .cke_button a.cke_off,.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_icon,.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_buttonarrow,.cke_skin_v2 .cke_browser_gecko18 .cke_separator,.cke_skin_v2 .cke_browser_gecko18 .cke_toolbar_start{display:block;float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_hc .cke_button .cke_icon{display:none;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button a.cke_off,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_icon,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_buttonarrow,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_toolbar_start{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_break{float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl span.cke_inline_label{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_button .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_break{float:right;}.cke_skin_v2 .cke_browser_gecko18 .cke_separator{margin-top:4px;}.cke_skin_v2 .cke_browser_gecko18 .cke_button .cke_label{padding-top:3px;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolgroup,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_separator,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_start,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_toolbar_end{float:none;}.cke_skin_v2 .cke_browser_ie8 .cke_toolbar,.cke_skin_v2 .cke_browser_ie8 .cke_toolgroup{vertical-align:top;}
+.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolbar,.cke_skin_v2 .cke_browser_iequirks.cke_browser_ie8 .cke_toolgroup{vertical-align:baseline;}.cke_skin_v2 .cke_browser_ie .cke_rcombo,.cke_skin_v2 .cke_browser_ie .cke_rcombo *{cursor:default;}.cke_skin_v2 .cke_contextmenu{padding:2px;}.cke_skin_v2 .cke_menuitem a{display:block;}.cke_skin_v2 .cke_menuitem span{cursor:default;}.cke_skin_v2 .cke_menuitem a:hover,.cke_skin_v2 .cke_menuitem a:focus,.cke_skin_v2 .cke_menuitem a:active{background-color:#8f8f73;display:block;}.cke_hc .cke_menuitem a:hover,.cke_hc .cke_menuitem a:focus,.cke_hc .cke_menuitem a:active{border:2px solid;}.cke_skin_v2 .cke_menuitem .cke_icon{background-image:url(icons.png);background-position:100px;background-repeat:no-repeat;background-color:transparent;width:16px;height:16px;float:left;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon{background-image:url(icons_rtl.png);}.cke_skin_v2 .cke_menuitem .cke_disabled .cke_icon{filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_menuitem .cke_icon_wrapper{background-color:#e3e3c7;border:solid 4px #e3e3c7;width:16px;height:16px;float:left;filter:alpha(opacity=70);opacity:.70;clear:both;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_icon_wrapper{float:right;}.cke_skin_v2 .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:active .cke_icon_wrapper{background-color:#9d9d9d;border:solid 4px #9d9d9d;filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_menuitem a:hover.cke_disabled .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:focus.cke_disabled .cke_icon_wrapper,.cke_skin_v2 .cke_menuitem a:active.cke_disabled .cke_icon_wrapper{background-color:#e3e3c7;border:solid 4px #e3e3c7;}.cke_skin_v2 .cke_menuitem .cke_label{display:block;padding-right:3px;padding-top:5px;padding-left:4px;height:19px;margin-left:24px;background-color:#fff;}.cke_skin_v2 .cke_frameLoaded .cke_menuitem .cke_label{filter:alpha(opacity=70);opacity:.70;}.cke_rtl .cke_skin_v2 .cke_menuitem .cke_label{padding-right:0;margin-left:0;padding-left:3px;margin-right:28px;}.cke_skin_v2 .cke_menuitem a.cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.30;}.cke_skin_v2 .cke_menuitem a:hover .cke_label,.cke_skin_v2 .cke_menuitem a:focus .cke_label,.cke_skin_v2 .cke_menuitem a:active .cke_label{background-color:#8f8f73;color:white;}.cke_skin_v2 .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_v2 .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_v2 .cke_menuitem a.cke_disabled:active .cke_label{background-color:transparent;color:black;}.cke_skin_v2 .cke_menuseparator{background-color:#e3e3c7;height:2px;filter:alpha(opacity=70);opacity:.70;_font-size:0;}.cke_skin_v2 .cke_menuarrow{background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-position:0 -784px;background-repeat:no-repeat;height:5px;width:3px;float:right;margin-right:2px;margin-top:3px;}.cke_rtl .cke_skin_v2 .cke_menuarrow{float:left;margin-right:0;margin-left:2px;background-position:0 -763px;}.cke_skin_v2 .cke_menuarrow span{display:none;}.cke_hc .cke_skin_v2 .cke_menuarrow{width:auto;margin-top:0;}.cke_hc .cke_skin_v2 .cke_menuarrow span{display:inline;}.cke_browser_ie.cke_ltr .cke_skin_v2 .cke_menuarrow{position:absolute;right:2px;}.cke_browser_ie.cke_rtl .cke_skin_v2 .cke_menuarrow{position:absolute;left:2px;}.cke_skin_v2 .cke_rcombo{display:inline-block;margin-left:2px;margin-right:2px;margin-top:2px;vertical-align:top;float:left;}.cke_skin_v2 .cke_browser_ie .cke_rcombo{#float:none;#display:inline;}.cke_skin_v2 .cke_rtl .cke_rcombo{float:right;}.cke_skin_v2 .cke_browser_ie .cke_rcombo{#float:none;}.cke_skin_v2 .cke_rcombopanel{border:1px solid #316ac5;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;}.cke_skin_v2 .cke_rcombo a{display:inline-block;float:left;filter:alpha(opacity=70);opacity:.70;}.cke_skin_v2 .cke_rtl .cke_rcombo a{float:right;}.cke_skin_v2 .cke_hc .cke_rcombo a{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_v2 .cke_rcombo .cke_label{display:inline-block;float:left;line-height:24px;height:22px;vertical-align:top;padding-left:4px;padding-right:5px;filter:alpha(opacity=70);opacity:.70;background-color:#f1f1e3;cursor:default;}
+.cke_skin_v2 .cke_rtl .cke_rcombo .cke_label{float:right;padding-right:4px;padding-left:5px;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_label{filter:alpha(opacity=100);opacity:1.0;}.cke_skin_v2 .cke_rcombo .cke_inline_label{color:#fff;}.cke_skin_v2 .cke_rcombo .cke_text{border:1px solid #8f8f73;background-color:#fff;height:12px;width:60px;padding-top:4px;padding-bottom:4px;padding-left:5px;padding-right:5px;text-overflow:ellipsis;overflow:hidden;display:inline-block;vertical-align:top;cursor:default;}.cke_skin_v2 .cke_ltr .cke_rcombo .cke_text{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_text{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_text{height:22px;}.cke_skin_v2 .cke_rcombo .cke_openbutton{display:inline-block;background-position:5px -715px;background-image:url(images/sprites.png);_background-image:url(images/sprites_ie6.png);background-repeat:no-repeat;border-top:1px solid #8f8f73;border-bottom:1px solid #8f8f73;width:14px;height:20px;}.cke_skin_v2 .cke_rcombo .cke_openbutton span{display:none;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_openbutton span{display:inline;}.cke_skin_v2 .cke_ltr .cke_rcombo .cke_openbutton{border-right:1px solid #8f8f73;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_openbutton{border-left:1px solid #8f8f73;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.cke_skin_v2 .cke_rcombo .cke_off a:hover,.cke_skin_v2 .cke_rcombo .cke_off a:focus,.cke_skin_v2 .cke_rcombo .cke_off a:active,.cke_skin_v2 .cke_rcombo .cke_on a{filter:alpha(opacity=100);opacity:1;}.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_text,.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_text,.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_text,.cke_skin_v2 .cke_rcombo .cke_on .cke_text{border-color:#316ac5;}.cke_skin_v2 .cke_rcombo .cke_off a:hover .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_off a:focus .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_off a:active .cke_openbutton,.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton{border-color:#316ac5;background-color:#dff1ff;}.cke_skin_v2 .cke_rcombo .cke_on .cke_text{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}.cke_skin_v2 .cke_rcombo .cke_on .cke_openbutton{-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=30);opacity:.3;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_label{filter:alpha(opacity=70);opacity:.7;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text,.cke_skin_v2 .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=50);opacity:.5;}.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_text,.cke_skin_v2 .cke_hc .cke_rcombo .cke_disabled .cke_openbutton{filter:alpha(opacity=80);opacity:.8;}.cke_skin_v2 .cke_rcombo .cke_disabled .cke_text{color:#fff;}.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_gecko18 .cke_rcombo .cke_openbutton,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_webkit .cke_rcombo .cke_openbutton{display:block;float:left;}.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_gecko18 .cke_rtl .cke_rcombo .cke_openbutton,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_label,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_text,.cke_skin_v2 .cke_browser_webkit .cke_rtl .cke_rcombo .cke_openbutton{float:right;}
+.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo a,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_rcombo .cke_label{float:none;}.cke_skin_v2 .cke_browser_iequirks .cke_rcombo .cke_openbutton{height:22px;}.cke_skin_v2 .cke_rtl .cke_rcombo .cke_font .cke_text,.cke_skin_v2 .cke_rtl .cke_rcombo .cke_fontSize .cke_text{direction:ltr;}@media print{.cke_path{display:none;}}.cke_skin_v2 .cke_path{padding:3px 3px 0 3px;display:inline-block;float:left;}.cke_skin_v2 .cke_rtl .cke_path{float:right;}.cke_skin_v2 .cke_path a,.cke_skin_v2 .cke_path .cke_empty{display:inline-block;float:left;border:solid 1px #efefde;background-color:#efefde;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;margin-bottom:3px;cursor:default;}.cke_skin_v2 .cke_path .cke_empty{visibility:hidden;}.cke_skin_v2 .cke_rtl .cke_path a,.cke_skin_v2 .cke_rtl .cke_path cke_empty{float:right;}.cke_skin_v2 .cke_path a:hover,.cke_skin_v2 .cke_path a:focus,.cke_skin_v2 .cke_path a:active{border:solid 1px #316ac5;background-color:#dff1ff;padding-top:1px;padding-bottom:1px;padding-left:4px;padding-right:4px;outline:none;}.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path a,.cke_skin_v2 .cke_browser_ie .cke_rtl .cke_path .cke_empty{float:none;}.cke_skin_v2 .cke_path .cke_label{display:none;}.cke_skin_v2 .cke_button_source .cke_icon{background-position:0 0;}.cke_skin_v2 .cke_button_newpage .cke_icon{background-position:0 -48px;}.cke_skin_v2 .cke_button_preview .cke_icon{background-position:0 -64px;}.cke_skin_v2 .cke_button_cut .cke_icon{background-position:0 -96px;}.cke_skin_v2 .cke_button_copy .cke_icon{background-position:0 -112px;}.cke_skin_v2 .cke_button_paste .cke_icon{background-position:0 -128px;}.cke_skin_v2 .cke_button_pastetext .cke_icon{background-position:0 -144px;}.cke_skin_v2 .cke_button_find .cke_icon{background-position:0 -240px;}.cke_skin_v2 .cke_button_replace .cke_icon{background-position:0 -256px;}.cke_skin_v2 .cke_button_selectAll .cke_icon{background-position:0 -272px;}.cke_skin_v2 .cke_button_removeFormat .cke_icon{background-position:0 -288px;}.cke_skin_v2 .cke_button_bold .cke_icon{background-position:0 -304px;}.cke_skin_v2 .cke_button_italic .cke_icon{background-position:0 -320px;}.cke_skin_v2 .cke_button_underline .cke_icon{background-position:0 -336px;}.cke_skin_v2 .cke_button_strike .cke_icon{background-position:0 -352px;}.cke_skin_v2 .cke_button_subscript .cke_icon{background-position:0 -368px;}.cke_skin_v2 .cke_button_superscript .cke_icon{background-position:0 -384px;}.cke_skin_v2 .cke_button_table .cke_icon{background-position:0 -608px;}.cke_skin_v2 .cke_button_horizontalrule .cke_icon{background-position:0 -624px;}.cke_skin_v2 .cke_button_smiley .cke_icon{background-position:0 -640px;}.cke_skin_v2 .cke_button_link .cke_icon{background-position:0 -528px;}.cke_skin_v2 .cke_button_unlink .cke_icon{background-position:0 -544px;}.cke_skin_v2 .cke_button_anchor .cke_icon{background-position:0 -560px;}.cke_skin_v2 .cke_button_image .cke_icon{background-position:0 -576px;}.cke_skin_v2 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_v2 .cke_button_specialchar .cke_icon{background-position:0 -656px;}.cke_skin_v2 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_v2 .cke_button_print .cke_icon{background-position:0 -176px;}.cke_skin_v2 .cke_button_checkspell .cke_icon,.cke_skin_v2 .cke_button_scayt .cke_icon{background-position:0 -192px;}.cke_skin_v2 .cke_button_pagebreak .cke_icon{background-position:0 -672px;}.cke_skin_v2 .cke_button_textcolor .cke_icon{background-position:0 -704px;}.cke_skin_v2 .cke_button_bgcolor .cke_icon{background-position:0 -720px;}.cke_skin_v2 .cke_button_form .cke_icon{background-position:0 -752px;}.cke_skin_v2 .cke_button_checkbox .cke_icon{background-position:0 -768px;}.cke_skin_v2 .cke_button_radio .cke_icon{background-position:0 -784px;}.cke_skin_v2 .cke_button_textfield .cke_icon{background-position:0 -800px;}.cke_skin_v2 .cke_button_textarea .cke_icon{background-position:0 -816px;}.cke_skin_v2 .cke_button_showblocks .cke_icon{background-position:0 -1136px;}
+.cke_skin_v2 .cke_button_select .cke_icon{background-position:0 -832px;}.cke_skin_v2 .cke_button_button .cke_icon{background-position:0 -848px;}.cke_skin_v2 .cke_button_imagebutton .cke_icon{background-position:0 -864px;}.cke_skin_v2 .cke_button_hiddenfield .cke_icon{background-position:0 -880px;}.cke_skin_v2 .cke_button_undo .cke_icon{background-position:0 -208px;}.cke_skin_v2 .cke_rtl .cke_button_undo .cke_icon{background-position:0 -224px;}.cke_skin_v2 .cke_button_redo .cke_icon{background-position:0 -224px;}.cke_skin_v2 .cke_rtl .cke_button_redo .cke_icon{background-position:0 -208px;}.cke_skin_v2 .cke_button_templates .cke_icon{background-position:0 -80px;}.cke_skin_v2 .cke_button_numberedlist .cke_icon{background-position:0 -400px;}.cke_skin_v2 .cke_button_bulletedlist .cke_icon{background-position:0 -416px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_numberedlist .cke_icon{background-position:0 -1217px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_bulletedlist .cke_icon{background-position:0 -1233px;}.cke_skin_v2 .cke_button_outdent .cke_icon{background-position:0 -432px;}.cke_skin_v2 .cke_button_indent .cke_icon{background-position:0 -448px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_indent .cke_icon{background-position:0 -1265px;}.cke_skin_v2 .cke_mixed_dir_content .cke_button_outdent .cke_icon{background-position:0 -1249px;}.cke_skin_v2 .cke_button_justifyleft .cke_icon{background-position:0 -464px;}.cke_skin_v2 .cke_button_justifycenter .cke_icon{background-position:0 -480px;}.cke_skin_v2 .cke_button_justifyright .cke_icon{background-position:0 -496px;}.cke_skin_v2 .cke_button_justifyblock .cke_icon{background-position:0 -512px;}.cke_skin_v2 .cke_button_blockquote .cke_icon{background-position:0 -1152px;}.cke_skin_v2 .cke_button_flash .cke_icon{background-position:0 -592px;}.cke_skin_v2 .cke_button_pastefromword .cke_icon{background-position:0 -160px;}.cke_skin_v2 .cke_button_save .cke_icon{background-position:0 -32px;}.cke_skin_v2 .cke_button_about .cke_icon{background-position:0 -736px;}.cke_skin_v2 .cke_button_maximize .cke_icon{background-position:0 -1040px;}.cke_skin_v2 .cke_button_creatediv .cke_icon{background-position:0 -1168px;}.cke_skin_v2 .cke_button_editdiv .cke_icon{background-position:0 -1184px;}.cke_skin_v2 .cke_button_removediv .cke_icon{background-position:0 -1200px;}.cke_skin_v2 .cke_button_bidirtl .cke_icon{background-position:0 -1072px;}.cke_skin_v2 .cke_button_bidiltr .cke_icon{background-position:0 -1056px;}.cke_skin_v2 .cke_button_source .cke_label{display:inline;display:inline-block;}.cke_skin_v2 .cke_styles_panel{width:150px;height:170px;}.cke_skin_v2 .cke_format_panel{width:150px;height:170px;}.cke_skin_v2 .cke_font_panel{width:150px;height:170px;}.cke_skin_v2 .cke_fontSize_panel{height:170px;}.cke_skin_v2 .cke_fontSize .cke_text{width:20px;}.cke_skin_v2 .cke_browser_iequirks .cke_fontSize .cke_text{width:32px;}html .cke_skin_v2{visibility:inherit;}html.cke_skin_v2_container{visibility:visible;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons.png
new file mode 100644
index 000000000..a9846c02d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.png
new file mode 100644
index 000000000..0b242b1b9
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gif
new file mode 100644
index 000000000..8f91b4753
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.png
new file mode 100644
index 000000000..1042a61cf
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.png
new file mode 100644
index 000000000..d7f7b49fc
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gif
new file mode 100644
index 000000000..54d910741
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.png
new file mode 100644
index 000000000..159811305
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.png
new file mode 100644
index 000000000..982717bf3
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.png b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.png
new file mode 100644
index 000000000..4389b65b8
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.png
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.start.gif b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/toolbar_start.gif
index 1774246c2..1774246c2 100644
--- a/rt/share/html/NoAuth/RichText/FCKeditor/editor/skins/silver/images/toolbar.start.gif
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/images/toolbar_start.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js
new file mode 100644
index 000000000..dbc56d52d
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.skins.add('v2',(function(){var a=[];if(CKEDITOR.env.ie&&CKEDITOR.env.version<7)a.push('icons.png','images/sprites_ie6.png','images/dialog_sides.gif');return{preload:a,editor:{css:['editor.css']},dialog:{css:['dialog.css']},templates:{css:['templates.css']},margins:[0,14,18,14]};})());(function(){CKEDITOR.dialog?a():CKEDITOR.on('dialogPluginReady',a);function a(){CKEDITOR.dialog.on('resize',function(b){var c=b.data,d=c.width,e=c.height,f=c.dialog,g=f.parts.contents;if(c.skin!='v2')return;g.setStyles({width:d+'px',height:e+'px'});if(!CKEDITOR.env.ie)return;setTimeout(function(){var h=f.parts.dialog.getChild([0,0,0]),i=h.getChild(0),j=h.getChild(2);j.setStyle('width',i.$.offsetWidth+'px');j=h.getChild(7);j.setStyle('width',i.$.offsetWidth-28+'px');j=h.getChild(4);j.setStyle('height',i.$.offsetHeight-31-14+'px');j=h.getChild(5);j.setStyle('height',i.$.offsetHeight-31-14+'px');},100);});};})();
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css
new file mode 100644
index 000000000..c3abe54df
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css
@@ -0,0 +1,6 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+.cke_skin_v2 .cke_tpl_list{border:#dcdcdc 2px solid;background-color:#fff;overflow:auto;width:100%;height:220px;}.cke_skin_v2 .cke_tpl_item{margin:5px;padding:7px;border:#eee 1px solid;*width:88%;}.cke_skin_v2 .cke_tpl_preview{border-collapse:separate;text-indent:0;width:100%;}.cke_skin_v2 .cke_tpl_preview td{padding:2px;vertical-align:middle;}.cke_skin_v2 .cke_tpl_preview .cke_tpl_preview_img{width:100px;}.cke_skin_v2 .cke_tpl_preview span{white-space:normal;}.cke_skin_v2 .cke_tpl_title{font-weight:bold;}.cke_skin_v2 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:focus .cke_tpl_item{border:#f93 1px solid!important;background-color:#fffacd!important;}.cke_skin_v2 .cke_tpl_list a:active *,.cke_skin_v2 .cke_tpl_list a:hover *,.cke_skin_v2 .cke_tpl_list a:focus *{cursor:pointer;}.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:active,.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:hover,.cke_skin_v2 .cke_browser_ie6 .cke_tpl_list a:focus{background-position:0 0;}.cke_skin_v2 .cke_tpl_list a:active .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:hover .cke_tpl_item,.cke_skin_v2 .cke_tpl_list a:focus .cke_tpl_item{border-width:3px;}.cke_skin_v2 .cke_tpl_empty,.cke_tpl_loading{text-align:center;padding:5px;}
diff --git a/rt/share/html/NoAuth/RichText/ckeditor/themes/default/theme.js b/rt/share/html/NoAuth/RichText/ckeditor/themes/default/theme.js
new file mode 100644
index 000000000..483001b88
--- /dev/null
+++ b/rt/share/html/NoAuth/RichText/ckeditor/themes/default/theme.js
@@ -0,0 +1,8 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.themes.add('default',(function(){function a(b,c){var d,e;e=b.config.sharedSpaces;e=e&&e[c];e=e&&CKEDITOR.document.getById(e);if(e){var f='<span class="cke_shared"><span class="'+b.skinClass+' cke_editor_'+b.name+'">'+'<span class="'+CKEDITOR.env.cssClass+'">'+'<span class="cke_wrapper cke_'+b.lang.dir+'">'+'<span class="cke_editor">'+'<div class="cke_'+c+'">'+'</div></span></span></span></span></span>',g=e.append(CKEDITOR.dom.element.createFromHtml(f,e.getDocument()));if(e.getCustomData('cke_hasshared'))g.hide();else e.setCustomData('cke_hasshared',1);d=g.getChild([0,0,0,0]);b.on('focus',function(){for(var h=0,i,j=e.getChildren();i=j.getItem(h);h++){if(i.type==CKEDITOR.NODE_ELEMENT&&!i.equals(g)&&i.hasClass('cke_shared'))i.hide();}g.show();});b.on('destroy',function(){g.remove();});}return d;};return{build:function(b,c){var d=b.name,e=b.element,f=b.elementMode;if(!e||f==CKEDITOR.ELEMENT_MODE_NONE)return;if(f==CKEDITOR.ELEMENT_MODE_REPLACE)e.hide();var g=b.fire('themeSpace',{space:'top',html:''}).html,h=b.fire('themeSpace',{space:'contents',html:''}).html,i=b.fireOnce('themeSpace',{space:'bottom',html:''}).html,j=h&&b.config.height,k=b.config.tabIndex||b.element.getAttribute('tabindex')||0;if(!h)j='auto';else if(!isNaN(j))j+='px';var l='',m=b.config.width;if(m){if(!isNaN(m))m+='px';l+='width: '+m+';';}var n=g&&a(b,'top'),o=a(b,'bottom');n&&(n.setHtml(g),g='');o&&(o.setHtml(i),i='');var p=CKEDITOR.dom.element.createFromHtml(['<span id="cke_',d,'" onmousedown="return false;" class="',b.skinClass,' cke_editor_',d,'" dir="',b.lang.dir,'" title="',CKEDITOR.env.gecko?' ':'','" lang="',b.langCode,'"'+(CKEDITOR.env.webkit?' tabindex="'+k+'"':'')+' role="application"'+' aria-labelledby="cke_',d,'_arialbl"'+(l?' style="'+l+'"':'')+'>'+'<span id="cke_',d,'_arialbl" class="cke_voice_label">'+b.lang.editor+'</span>'+'<span class="',CKEDITOR.env.cssClass,'" role="presentation"><span class="cke_wrapper cke_',b.lang.dir,'" role="presentation"><table class="cke_editor" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody><tr',g?'':' style="display:none"',' role="presentation"><td id="cke_top_',d,'" class="cke_top" role="presentation">',g,'</td></tr><tr',h?'':' style="display:none"',' role="presentation"><td id="cke_contents_',d,'" class="cke_contents" style="height:',j,'" role="presentation">',h,'</td></tr><tr',i?'':' style="display:none"',' role="presentation"><td id="cke_bottom_',d,'" class="cke_bottom" role="presentation">',i,'</td></tr></tbody></table><style>.',b.skinClass,'{visibility:hidden;}</style></span></span></span>'].join(''));
+p.getChild([1,0,0,0,0]).unselectable();p.getChild([1,0,0,0,2]).unselectable();if(f==CKEDITOR.ELEMENT_MODE_REPLACE)p.insertAfter(e);else e.append(p);b.container=p;p.disableContextMenu();b.fireOnce('themeLoaded');b.fireOnce('uiReady');},buildDialog:function(b){var c=CKEDITOR.tools.getNextNumber(),d=CKEDITOR.dom.element.createFromHtml(['<div class="cke_editor_'+b.name.replace('.','\\.')+'_dialog cke_skin_',b.skinName,'" dir="',b.lang.dir,'" lang="',b.langCode,'" role="dialog" aria-labelledby="%title#"><table class="cke_dialog',' '+CKEDITOR.env.cssClass,' cke_',b.lang.dir,'" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="%body" role="presentation"><div id="%title#" class="%title" role="presentation"></div><a id="%close_button#" class="%close_button" href="javascript:void(0)" title="'+b.lang.common.close+'" role="button"><span class="cke_label">X</span></a>'+'<div id="%tabs#" class="%tabs" role="tablist"></div>'+'<table class="%contents" role="presentation"><tr>'+'<td id="%contents#" class="%contents" role="presentation"></td>'+'</tr></table>'+'<div id="%footer#" class="%footer" role="presentation"></div>'+'</div>'+'<div id="%tl#" class="%tl"></div>'+'<div id="%tc#" class="%tc"></div>'+'<div id="%tr#" class="%tr"></div>'+'<div id="%ml#" class="%ml"></div>'+'<div id="%mr#" class="%mr"></div>'+'<div id="%bl#" class="%bl"></div>'+'<div id="%bc#" class="%bc"></div>'+'<div id="%br#" class="%br"></div>'+'</td></tr>'+'</table>',CKEDITOR.env.ie?'':'<style>.cke_dialog{visibility:hidden;}</style>','</div>'].join('').replace(/#/g,'_'+c).replace(/%/g,'cke_dialog_')),e=d.getChild([0,0,0,0,0]),f=e.getChild(0),g=e.getChild(1);f.unselectable();g.unselectable();return{element:d,parts:{dialog:d.getChild(0),title:f,close:g,tabs:e.getChild(2),contents:e.getChild([3,0,0,0]),footer:e.getChild(4)}};},destroy:function(b){var c=b.container;c.clearCustomData();b.element.clearCustomData();if(c)c.remove();if(b.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE)b.element.show();delete b.element;}};})());CKEDITOR.editor.prototype.getThemeSpace=function(a){var b='cke_'+a,c=this._[b]||(this._[b]=CKEDITOR.document.getById(b+'_'+this.name));return c;};CKEDITOR.editor.prototype.resize=function(a,b,c,d){var e=this.container,f=CKEDITOR.document.getById('cke_contents_'+this.name),g=d?e.getChild(1):e;CKEDITOR.env.webkit&&g.setStyle('display','none');g.setSize('width',a,true);if(CKEDITOR.env.webkit){g.$.offsetWidth;g.setStyle('display','');}var h=c?0:(g.$.offsetHeight||0)-(f.$.clientHeight||0);
+f.setStyle('height',Math.max(b-h,0)+'px');this.fire('resize');};CKEDITOR.editor.prototype.getResizable=function(){return this.container.getChild(1);};
diff --git a/rt/share/html/NoAuth/RichText/dhandler b/rt/share/html/NoAuth/RichText/dhandler
index 6ea0f1237..97fad75bd 100644
--- a/rt/share/html/NoAuth/RichText/dhandler
+++ b/rt/share/html/NoAuth/RichText/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,7 +48,7 @@
<%INIT>
use File::Basename;
my $arg = $m->dhandler_arg;
-my $file = dirname($m->current_comp->source_file) . '/FCKeditor/' . $arg;
+my $file = dirname($m->current_comp->source_file) . '/ckeditor/' . $arg;
return $m->decline unless -f $file && -r _;
my $suffix = $1 if $file =~ /([^.]+)$/;
diff --git a/rt/share/html/NoAuth/css/3.4-compat/transactions.css b/rt/share/html/NoAuth/css/3.4-compat/transactions.css
deleted file mode 100644
index 5dae2ccae..000000000
--- a/rt/share/html/NoAuth/css/3.4-compat/transactions.css
+++ /dev/null
@@ -1,83 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-.ticket-transaction {
- margin: 0;
- border: none;
-}
-
-.ticket-transaction .type {
- width: 1em;
-}
-
-.ticket-transaction.even {
- background: #cecfef;
-}
-
-.ticket-transaction.basics { border-color: #9c3031; }
-.ticket-transaction.basics .type { background: #9c3031; }
-.ticket-summary .ticket-info-basics .titlebox-content { border-left: none; }
-.ticket-summary .ticket-info-basics .titlebox-title { background: #9c3031; }
-
-.ticket-transaction.people { border-color: #31309c; }
-.ticket-transaction.people .type { background: #31309c; }
-.ticket-summary .ticket-info-people .titlebox-content { border-left: none; }
-.ticket-summary .ticket-info-people .titlebox-title { background: #31309c; }
-
-.ticket-transaction.links { border-color: #316531; }
-.ticket-transaction.links .type { background: #316531; }
-.ticket-summary .ticket-info-links .titlebox-content { border-left: none; }
-.ticket-summary .ticket-info-links .titlebox-title { background: #316531; }
-
-.ticket-transaction.dates { border-color: #633063; }
-.ticket-transaction.dates .type { background: #633063; }
-.ticket-summary .ticket-info-dates .titlebox-content { border-left: none; }
-.ticket-summary .ticket-info-dates .titlebox-title { background: #633063; }
-
-.ticket-transaction.message { border-color: #069; }
-.ticket-transaction.message .type { background: #069; }
-
diff --git a/rt/share/html/NoAuth/css/3.5-default/approvals.css b/rt/share/html/NoAuth/css/3.5-default/approvals.css
deleted file mode 100644
index a4411e2bc..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/approvals.css
+++ /dev/null
@@ -1,97 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-.approval {
- margin-bottom: 3em;
- padding: 0 0 1em 0;
- border: 1px solid #069;
-}
-
-.approval .name {
- background: #069;
- color: white;
- font-size: 1.1em;
- padding: 0.2em 0 0.4em 0.2em;
-}
-
-#body .approval .name :link, #body .approval .name :visited {
- color: white;
-}
-
-.approval .originating-ticket {
- margin: 0.5em;
- border: 1px solid #aaa;
-}
-
-.approval .originating-ticket .link {
- display: block;
- background: #aaa;
- padding: 0.2em 0 0.4em 0.2em;
-}
-
-.approval .originating-ticket .info {
- padding: 0.5em;
-}
-
-#body .approval .originating-ticket .link :link,
-#body .approval .originating-ticket .link :visited {
- color: black;
-}
-
-.approval .form {
- margin: 1em 0.5em 0.5em 0.5em;
-}
-
-.approval .form .action, .approval .form .notes {
- float: left;
- margin-left: 1em;
-}
-
-.approval .form .action { padding-top: 1em; }
-
-.approval .form .action label { font-weight: normal; }
-.approval .form .notes label { display: block; }
diff --git a/rt/share/html/NoAuth/css/3.5-default/footer.css b/rt/share/html/NoAuth/css/3.5-default/footer.css
deleted file mode 100644
index d838d0631..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/footer.css
+++ /dev/null
@@ -1,91 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-#footer {
- clear: both;
- font-size: 0.8em;
- margin-top: 5em;
- padding-bottom: 3em;
-}
-
-#footer p { float: left; }
-
-#footer #time {
- color: white;
- background: #069 url(<%RT->Config->Get('WebImagesURL')%>/css/ctr-b2g.gif) no-repeat top right;
- padding: 0.2em 0 0.3em 0;
- margin: 0;
- position: relative;
- z-index: 2;
-}
-
-#footer #time span {
- padding: 0.2em 2em 0.3em 3em;
- background: url(<%RT->Config->Get('WebImagesURL')%>/css/cbr-b2g.gif) no-repeat bottom right;
-}
-
-#footer #bpscredits {
- background: #ccc url(<%RT->Config->Get('WebImagesURL')%>/css/ctr-gray.gif) no-repeat top right;
- padding: 0.2em 0 0.3em 0;
- margin: 0;
- position: relative;
- left: -10px;
- z-index: 1;
-}
-
-#footer #bpscredits span {
- padding: 0.2em 2em 0.3em 3em;
- background: url(<%RT->Config->Get('WebImagesURL')%>/css/cbr-gray.gif) no-repeat bottom right;
-}
-
-#footer #legal {
- float: none;
- color: #888;
- padding: 1em 0 0 2em;
- clear: both;
-}
-
diff --git a/rt/share/html/NoAuth/css/3.5-default/header.css b/rt/share/html/NoAuth/css/3.5-default/header.css
deleted file mode 100644
index 091f8f4fe..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/header.css
+++ /dev/null
@@ -1,152 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-#header {
- clear: both;
- margin: 0 0.75em 0 0.75em;
- padding-top: 1em;
-}
-
-#header h1 {
- margin: 0;
- padding: 0;
- color: #930;
- position: relative;
- font-size: 2em;
- font-weight: bold;
- left: 1.3em;
- top: 0.15em;
- z-index: 3;
- width: 95%;
-}
-
-#header ul {
- margin: 0;
- padding: 0;
- color: #eee;
- float: left;
-}
-
-#header #page-menu {
- position: relative;
- z-index: 2;
- background: #069 url(<%RT->Config->Get('WebImagesURL')%>/css/ct.gif) no-repeat top left;
- min-width: 65%;
-}
-
-%# This is an interesting bit of CSS. expression() is an IE-only extension to
-%# it's CSS implementation. Just in case other browsers might choke on it,
-%# the rule is enclosed in a selector only IE will (wrongly) match to an element.
-%#
-%# The expression() function takes Javascript, and basically what it's doing here
-%# is checking to see if the width of the menu would be greater than 65% of the body
-%# width. If it is, great, leave it alone to automatically resize. If it is not, set
-%# it to 65% of the body width. This amounts to emulating the min-width rule that
-%# compliant browsers understand above.
-* html #header ul#page-menu {
- width: expression(document.body.clientWidth*0.65 < document.getElementById('page-menu').clientWidth ? "auto" : "65%");
- overflow: visible;
-}
-
-#page-menu div {
- position: relative;
- z-index: 3;
-}
-
-#page-menu div { background: url(<%RT->Config->Get('WebImagesURL')%>/css/cb.gif) no-repeat bottom left; }
-#page-menu div div { background: url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-#page-menu div div div {
- background: url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right;
- padding: 0.2em 1em 0.4em 1em;
-}
-
-#page-menu.actions-present div div { background: url(<%RT->Config->Get('WebImagesURL')%>/css/cbr-b2lb.gif) no-repeat bottom right; }
-#page-menu.actions-present div div div { background: url(<%RT->Config->Get('WebImagesURL')%>/css/ctr-b2lb.gif) no-repeat top right; }
-
-#header ul li {
- display: inline;
-}
-
-#header #actions-menu {
- position: relative;
- background: #08c;
-}
-
-#actions-menu div {
- position: relative;
- z-index: 2;
-}
-
-/*#actions-menu div { background: url(<%RT->Config->Get('WebImagesURL')%>/css/cb.gif) no-repeat bottom left; }*/
-#actions-menu div div { background: url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-#actions-menu div div div {
- background: url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right;
- padding: 0.2em 1em 0.4em 1em;
-}
-
-#header :link,
-#header :visited
-{
- color: white;
- text-decoration: none;
-}
-
-#header :link.selected,
-#header :visited.selected,
-#header :link:hover,
-#header :visited:hover
-{
- color: #fc6; /*#ff6;*/
-}
-
-#header :link.selected,
-#header :visited.selected
-{
- font-weight: bold;
- text-decoration: underline;
-}
-
diff --git a/rt/share/html/NoAuth/css/3.5-default/login.css b/rt/share/html/NoAuth/css/3.5-default/login.css
deleted file mode 100644
index df9e1a8cb..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/login.css
+++ /dev/null
@@ -1,85 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-#login-box {
- width: 50%;
- margin: 0 auto 4em auto;
-}
-
-%# More rules only IE will recognize (but are still valid!) to correct for
-%# IE's incorrect handling of auto margins and the W3C defined behavior.
-%# text-align will affect a block element in IE, therefore centering it, like
-%# left and right auto margins *should*
-* html #login-box {
- text-align: center;
-}
-
-%# ... and align the text back the way it should be
-* html #login-box .titlebox {
- text-align: left;
-}
-
-#login-box .input-row {
- padding: 0.5em;
-}
-
-#login-box .input-row .label {
- width: 8em;
- float: left;
- text-align: right;
- padding: 0.2em 1em 0 0;
-}
-
-#login-box .input-row .input {
- float: left;
-}
-
-#login-box .button-row {
- clear: both;
- padding: 0.5em;
- float: right;
-}
diff --git a/rt/share/html/NoAuth/css/3.5-default/nav-left.css b/rt/share/html/NoAuth/css/3.5-default/nav-left.css
deleted file mode 100644
index 2b76c5b0e..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/nav-left.css
+++ /dev/null
@@ -1,86 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-#logo {
- float: right;
- clear: right;
-}
-#nav ul { float: left; }
-#nav ul div { text-align: left; }
-
-#nav li ul {
- right: 2em;
- left: 0;
-}
-
-%# Hide from IE... it can't handle relative positioning with both a
-%# left and right set
-html>body #nav li ul {
- left: 0;
- right: 2em;
-}
-
-#nav ul,
-#nav ul.odd,
-#nav ul .first,
-#nav ul.odd .first
-{
- background-image: none;
-}
-
-#nav ul { background: #069 url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; }
-#nav ul div { background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-#nav ul.odd { background: #08c url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; }
-#nav ul.odd div { background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-
-#nav ul div {
- display: block;
- padding: 0.2em 1em 0.4em 0;
-}
-
-#nav ul { padding: 0; }
-
diff --git a/rt/share/html/NoAuth/css/3.5-default/nav.css b/rt/share/html/NoAuth/css/3.5-default/nav.css
deleted file mode 100644
index dae536f27..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/nav.css
+++ /dev/null
@@ -1,163 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-#nav {
- clear: both;
- font-size: 1.1em;
-}
-
-#nav #system-menu,
-#nav ul
-{
- min-width: 85%;
-}
-
-%# This is an interesting bit of CSS. expression() is an IE-only extension to
-%# it's CSS implementation. Just in case other browsers might choke on it,
-%# the rule is enclosed in a selector only IE will (wrongly) match to an element.
-%#
-%# The expression() function takes Javascript, and basically what it's doing here
-%# is checking to see if the width of the menu would be greater than 85% of the body
-%# width. If it is, great, leave it alone to automatically resize. If it is not, set
-%# it to 85% of the body width. This amounts to emulating the min-width rule that
-%# compliant browsers understand above.
-* html #nav #system-menu {
- width: expression(document.body.clientWidth*0.85 < document.getElementById('page-menu').clientWidth ? "auto" : "85%");
- overflow: visible;
-}
-
-#nav ul {
- float: left;
- clear: left;
-
- color: #eee;
- font-weight: bold;
-
- margin: 0;
- padding: 0;
-
- list-style: none;
-}
-
-#nav li ul {
- margin-top: 0.75em;
-}
-
-/*
-%# We need the extra padding above for browsers where we display the arrows
-%# but those don't work in IE so we don't want as much spacing
-%#
-%# IE wrongly matches the selector below even though there isn't an element
-%# above <html> in the doc tree
-*/
-* html #nav li ul {
- margin-top: 0.25em;
-}
-
-#nav li {
- display: inline;
- margin-bottom: 1em;
- padding: 0.2em 0 0.4em 0;
-}
-
-#nav li.first { padding-left: 1em; }
-
-#nav ul div div.wrapper {
- text-align: left;
- padding: 0.2em 1em 0.4em 0;
-}
-
-/****/
-
-#nav :link,
-#nav :visited
-{
- color: #ececec;
- text-decoration: none;
-}
-
-#nav :link.selected,
-#nav :visited.selected,
-#nav :link:hover,
-#nav :visited:hover
-{
- color: #fc6; /*#ff6;*/
-}
-
-#nav :link.selected,
-#nav :visited.selected
-{
- text-decoration: underline;
-}
-
-html>body #nav :link.selected,
-html>body #nav :visited.selected
-{
- padding-bottom: 0.8em;
- background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/dark-arrow.png) no-repeat bottom center;
-}
-
-html>body #nav :link.selected.odd,
-html>body #nav :visited.selected.odd
-{
- padding-bottom: 0.8em;
- background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/light-arrow.png) no-repeat bottom center;
-}
-
-/*
-#nav ul { background: #069 url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; }
-#nav ul div { background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-#nav ul.odd { background: #08c url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; }
-#nav ul.odd div { background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-*/
-
-
-#nav ul div.wrapper { background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; }
-#nav ul div { background: #069 url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-#nav ul.odd div.wrapper { background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; }
-#nav ul div.odd { background: #08c url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right; }
-
diff --git a/rt/share/html/NoAuth/css/3.5-default/transactions.css b/rt/share/html/NoAuth/css/3.5-default/transactions.css
deleted file mode 100755
index c88b0cf8e..000000000
--- a/rt/share/html/NoAuth/css/3.5-default/transactions.css
+++ /dev/null
@@ -1,146 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-.ticket-transaction {
- border-bottom: 1px solid #ddd;
- border-right: 3px solid #069;
-}
-
-#ticket-history .ticket-transaction {
- border-bottom-color: #ccc;
-}
-
-.ticket-transaction.even {
- background: #eee;
-}
-
-.ticket-transaction .date {
- font-size: 0.9em;
- width: 10em;
-}
-
-.ticket-transaction .description {
- font-weight: bold;
- font-size: 0.9em;
- text-align: left;
-}
-
-.ticket-transaction .actions {
- text-align: right;
- font-weight: bold;
-}
-
-.ticket-transaction .type {
- background: #888;
- width: 1.2em;
- color: white;
- text-align: center;
- font-size: 1em;
-}
-
-#body .ticket-transaction .type :link,
-#body .ticket-transaction .type :visited
-{
- color: white;
- font-weight: normal;
-}
-
-.ticket-transaction.basics { border-color: #b32; }
-.ticket-transaction.basics .type { background: #b32; }
-.ticket-summary .ticket-info-basics .titlebox-content { border-left: 0.5em solid #b32; }
-
-.ticket-transaction.people { border-color: #48c; }
-.ticket-transaction.people .type { background: #48c; }
-.ticket-summary .ticket-info-people .titlebox-content { border-left: 0.5em solid #48c; }
-
-%# light green - #ad8
-.ticket-transaction.links { border-color: #316531; }
-.ticket-transaction.links .type { background: #316531; }
-.ticket-summary .ticket-info-links .titlebox-content { border-left: 0.5em solid #316531; }
-
-%# orange - #d71
-.ticket-transaction.dates { border-color: #633063; }
-.ticket-transaction.dates .type { background: #633063; }
-.ticket-summary .ticket-info-dates .titlebox-content { border-left: 0.5em solid #633063; }
-
-.ticket-transaction.message { border-color: #069; }
-.ticket-transaction.message .type { background: #069; }
-
-.ticket-transaction.other { border-color: #888; }
-
-.ticket-transaction td .message-header-value {
- padding: 0;
-}
-
-.ticket-transaction td .message-header-key {
- padding: 0 1em 0 1.5em;
- font-weight: bold;
-}
-
-.ticket-transaction .downloadattachment {
- float: right;
- font-size: 0.9em;
- text-align: right;
-}
-
-.ticket-transaction .messagebody {
- clear: both;
- padding-left: 3em;
- padding-bottom: 1em;
-}
-
-%# Message stanza colors
-.message-stanza-depth-0 { color: #000; }
-.message-stanza-depth-1 { color: #600; }
-.message-stanza-depth-2 { color: #060; }
-.message-stanza-depth-3 { color: #006; }
-.message-stanza-depth-4 { color: #c00; }
-.message-stanza-depth-5 { color: #0c0; }
-.message-stanza-depth-6 { color: #00c; }
-.message-stanza-depth-7 { color: #f00; }
-.message-stanza-depth-8 { color: #0f0; }
-.message-stanza-depth-9 { color: #00f; }
diff --git a/rt/share/html/NoAuth/css/aileron/InHeader b/rt/share/html/NoAuth/css/aileron/InHeader
new file mode 100644
index 000000000..e6d4cb311
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/InHeader
@@ -0,0 +1,64 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<!--[if lt IE 8]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/aileron/msie.css" type="text/css" media="all" />
+<![endif]-->
+<!--[if lt IE 7]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/aileron/msie6.css" type="text/css" media="all" />
+<![endif]-->
+<script type="text/javascript">
+jQuery(document).ready(function(){
+ jQuery.fn.supersubs.defaults = {
+ maxWidth: 30,
+ extraWidth: 2
+ };
+
+ jQuery("#app-nav.toplevel").addClass('sf-menu sf-js-enabled sf-shadow').supersubs().superfish({ speed: 'fast' });
+ jQuery("#page-menu.toplevel").addClass('sf-menu sf-js-enabled').supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
+});
+</script>
diff --git a/rt/share/html/NoAuth/css/3.5-default/logo.css b/rt/share/html/NoAuth/css/aileron/base.css
index 0b4c492d9..0744f0b2d 100644
--- a/rt/share/html/NoAuth/css/3.5-default/logo.css
+++ b/rt/share/html/NoAuth/css/aileron/base.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,16 +45,18 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#logo {
- float: left;
- clear: left;
+a {
+ color: #000;
+ text-decoration: none;
+}
+
- margin: 0.5em 0 0.5em 10px;
+a:visited {
+ color: #666;
}
-#logo img { border: none; }
-#logo .rtname {
- text-align: center;
- font-weight: bold;
+a:hover {
+ text-decoration: underline;
}
+textarea:focus, input:focus { background-color: #ffd; }
diff --git a/rt/share/html/NoAuth/css/aileron/boxes.css b/rt/share/html/NoAuth/css/aileron/boxes.css
new file mode 100644
index 000000000..ed6623cba
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/boxes.css
@@ -0,0 +1,184 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.titlebox {
+ margin-top: 1em;
+ margin-left: 1em;
+ margin-bottom: 2em;
+}
+
+.titlebox .titlebox-content {
+ border-left: 1px solid #ccc;
+ border-top: 1px solid #ccc;
+ background-color: #efefef;
+ -moz-border-radius: 0.5em;
+ -webkit-border-radius: 0.5em;
+ border-bottom: 2px solid #aaa;
+ border-right: 2px solid #aaa;
+ border-radius: 0.5em;
+ padding: 1.5em 1em 1em 1em;
+}
+
+* html .titlebox {
+ border-top: none;
+ border-left: none;
+}
+
+.titlebox .titlebox {
+
+ margin-top: 1em;
+ margin-right: 0.25em;
+
+}
+
+.titlebox .titlebox .titlebox-content {
+ background-color: white;
+}
+
+
+.titlebox {
+ margin-left: 0em;
+ margin-right: 0em;
+ min-height: 1.25em;
+
+}
+
+
+
+.titlebox .titlebox-title {
+ position: relative;
+ /* This is for [rt3 #19044]. Move it to an IE-specific file if it causes
+ * problems. If we remove CSS3PIE, it can also probably go away, although it
+ * probably won't hurt. */
+ z-index: 1;
+}
+
+.titlebox .titlebox-title a {
+ text-decoration: none;
+ color: black;
+
+}
+
+.titlebox .titlebox-title a:hover {
+ text-decoration: underline;
+
+}
+
+.titlebox.rolled-up .titlebox-title {
+ border-bottom: 1px solid #ccc;
+}
+
+.titlebox.rolled-up .titlebox-title .right {
+ display: none;
+}
+
+.titlebox .titlebox-title .left {
+ font-weight: bold;
+ background: #ccc;
+ margin-left: 1em;
+ padding: 0.25em 0.75em 0.25em 2em;
+ line-height: 1.5em;
+ -webkit-border-top-left-radius: 0.3em;
+ -webkit-border-top-right-radius: 0.3em;
+ -moz-border-radius-topleft: 0.3em;
+ -moz-border-radius-topright: 0.3em;
+ border-radius: 0.3em 0.3em 0 0;
+ border-right: 2px solid #aaa;
+}
+
+.titlebox .titlebox-title .right-empty {
+ display:none;
+}
+
+.titlebox .titlebox-title .right {
+ position: absolute;
+ right: 2px;
+ top: 1.75em;
+ font-size: 0.9em;
+ background: #dedede;
+ border-left: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ padding-right: 0.4em;
+ padding-left: 0.4em;
+ padding-bottom: 0.2em;
+ padding-top: 0.5em;
+ -moz-border-radius-bottomleft: 0.25em;
+ -webkit-border-bottom-left-radius: 0.25em;
+
+
+ -moz-border-radius-topright: 0.25em;
+ -webkit-border-top-right-radius: 0.25em;
+
+ border-radius: 0 0.25em 0 0.25em;
+
+
+}
+
+.titlebox .titlebox-title .right a,
+.titlebox .titlebox-title .right a:visited {
+ color: #000;
+}
+
+.titlebox .titlebox-title .widget a {
+ display: block;
+ margin: 0;
+ width: 20px;
+
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat;
+ background-position: center 0;
+
+ position: absolute;
+ top: 0.5em;
+ left: 1.2em;
+
+ padding: 7px 0 0 0;
+ overflow: hidden;
+}
+
+.titlebox.rolled-up .titlebox-title .widget a {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rolldown-arrow.gif);
+}
diff --git a/rt/share/html/NoAuth/css/3.5-default/body.css b/rt/share/html/NoAuth/css/aileron/forms.css
index b49024d30..25c5d5d92 100755..100644
--- a/rt/share/html/NoAuth/css/3.5-default/body.css
+++ b/rt/share/html/NoAuth/css/aileron/forms.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,37 +45,35 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#body {
- clear: both;
- margin: 0 0.75em 0 2em;
- padding-top: 0.5em;
-}
+/* These override the base titlebox rules in base/forms.css. They try not to
+ duplicate properties. */
-#body h1 {
- border-bottom: 1px dotted #069;
- padding-left: 0.5em;
+div.results .titlebox, div.error div.error {
+ border: none;
+ background: none;
}
-#body h1 { font-size: 1.5em; }
-#body h2 { font-size: 1.3em; }
-#body h3 { font-size: 1.1em; }
-#body h4 { font-size: 1em; }
-#body h5 { font-size: 0.9em; }
-#body h6 { font-size: 0.8em; }
-
-#body h1, #body h2, #body h3, #body h4, #body h5, #body h6 {
- color: #930;
- font-weight: bold;
+div.results .titlebox-content {
+ border: 1px solid #aa9;
+ border-bottom: 2px solid #990;
+ border-right: 2px solid #990;
+ background: #ffc;
}
-#body :link { color: #069; }
-
-#body :link, #body :visited {
- font-weight: bold;
- text-decoration: none;
+div.results .titlebox-title .left {
+ border: solid #aa9;
+ border-width: 1px 1px 0 1px;
}
-#body :link:hover, #body :visited:hover {
- text-decoration: underline;
+div.error .titlebox-title span.left {
+ border: none;
+ border-right: 2px solid #b00;
+ padding-left: 0.75em;
}
+div.error .titlebox-content {
+ border: 1px solid #b00;
+ border-bottom: 2px solid #a00;
+ border-right: 2px solid #a00;
+ background-color: #fcc;
+}
diff --git a/rt/share/html/NoAuth/css/aileron/images/dhandler b/rt/share/html/NoAuth/css/aileron/images/dhandler
new file mode 100644
index 000000000..6ec9dea05
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/images/dhandler
@@ -0,0 +1,8 @@
+<%INIT>
+use File::Basename;
+my $arg = $m->dhandler_arg;
+my $file = dirname($m->current_comp->source_file) . '/source/'. $arg;
+RT::Interface::Web->SendStaticFile( File => $file );
+
+$m->abort;
+</%INIT>
diff --git a/rt/share/html/NoAuth/css/aileron/layout.css b/rt/share/html/NoAuth/css/aileron/layout.css
new file mode 100644
index 000000000..ff39ea3ca
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/layout.css
@@ -0,0 +1,174 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+/* body */
+
+body {
+ padding:0;
+ margin:0;
+ background: #547CCC url(<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/images/background-gradient.png) top left repeat-x ;
+ font-family: arial, helvetica, sans-serif;
+ color: #000000;
+}
+
+div#body {
+ position: relative;
+ padding: 1.8em 1em 1em 1em;
+ -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ margin-left: 1em;
+ margin-top: 3em;
+ margin-right: 0;
+ margin-bottom: 0em;
+ min-height: 10%;
+ background: #fff;
+ border-top: 2px solid #ccc;
+ border-left: 2px solid #ccc;
+ z-index:1;
+ border-radius: 0.5em 0 0 0.5em;
+
+}
+
+div#footer {
+ position: absolute;
+ right: 0;
+ text-align: right;
+ font-size: 0.9em;
+ margin-top: 2em;
+ background: #fff;
+ margin-bottom: 0;
+ padding-left: 3em;
+ padding-right: 1em;
+ border-top: 2px solid #aaa;
+ border-left: 2px solid #aaa;
+ -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+
+ border-radius: 0.5em 0 0.5em 0;
+}
+
+div#footer #time {
+ display: none ;
+}
+
+div#footer #bpscredits {
+ text-align: right;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+ padding-top: 4em;
+}
+
+
+/* logo stuff */
+
+div#logo {
+ position: absolute;
+ right: 2px;
+ top: 0;
+ height: 2.3em;
+}
+
+div#logo a img {
+ border: 0;
+ height: 100% !important;
+ width: auto !important;
+ float: right;
+}
+
+div#logo .rtname {
+ position: relative;
+ font-weight: bold;
+ text-align: center;
+ top: 0.7em;
+ padding-right: 1em;
+ float:left;
+}
+
+
+div#quickbar, div#logo {
+ font-size: 0.9em;
+}
+div#quickbar a, div#logo a {
+ color: #000;
+}
+
+
+div#quickbar {
+ background: #eaeaea;
+ padding-top: 1em;
+ padding-left: 1em;
+ padding-bottom: 0.5em;
+ height: 1em;
+ border-bottom: 1px solid #ccc;
+
+}
+
+div#header h1 {
+ position: absolute;
+ left: 0.5em;
+ right: 20em;
+ top: 1.6em;
+ overflow: hidden;
+ height: 1em;
+ font-size: 1.4em;
+ margin-top: 0.4em;
+ padding: 0.25em;
+ color: #fff;
+}
+
+/* in multi-column layouts, make sure we have an internal gutter */
+
+tr .boxcontainer {
+ padding-right: 1em;
+}
+
+tr .boxcontainer:last-child {
+ padding-right: 0;
+}
diff --git a/rt/share/html/NoAuth/css/3.4-compat/ticket.css b/rt/share/html/NoAuth/css/aileron/login.css
index 8b76b0793..be9f746cf 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/ticket.css
+++ b/rt/share/html/NoAuth/css/aileron/login.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,6 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-.value {
- font-weight: bold;
+#login-box .titlebox-title .left {
+ padding-left: 0.75em;
}
diff --git a/rt/share/html/NoAuth/css/3.5-default/main.css b/rt/share/html/NoAuth/css/aileron/main.css
index 623cc4cb4..4839e878a 100644
--- a/rt/share/html/NoAuth/css/3.5-default/main.css
+++ b/rt/share/html/NoAuth/css/aileron/main.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,21 +47,17 @@
%# END BPS TAGGED BLOCK }}}
% $m->callback(CallbackName => 'Begin');
-@import "misc.css";
-@import "login.css";
-@import "logo.css";
-@import "quickbar.css";
-@import "body.css";
-@import "approvals.css";
-@import "titlebox.css";
-@import "forms.css";
-@import "ticket.css";
-@import "transactions.css";
+@import "../base/main.css";
+
+@import "base.css";
+@import "layout.css";
@import "nav.css";
-@import "header.css";
-@import "footer.css";
+@import "boxes.css";
+@import "forms.css";
+@import "login.css";
+@import "ticket-lists.css";
@import "ticket-search.css";
-@import "local.css";
+@import "ticket.css";
+@import "misc.css";
% $m->callback(CallbackName => 'End');
-
diff --git a/rt/share/html/NoAuth/css/3.5-default/ticket.css b/rt/share/html/NoAuth/css/aileron/misc.css
index 2096a0613..2b6eb64e2 100644
--- a/rt/share/html/NoAuth/css/3.5-default/ticket.css
+++ b/rt/share/html/NoAuth/css/aileron/misc.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,13 +45,14 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-.ticket-info-cfs .label {
- vertical-align: top;
+.comment {
+ padding-left: 0.5em;
+ color: #999;
+
}
-.ticket-info-cfs ul {
- margin: 0;
- padding: 0;
- margin-left: 0.5em;
- list-style: none;
+#comp-Ticket-ShowEmailRecord #body {
+ margin-left: 1em;
+ margin-top: 1em;
+ overflow: auto;
}
diff --git a/rt/share/html/NoAuth/css/3.5-default/forms.css b/rt/share/html/NoAuth/css/aileron/msie.css
index c564e51e9..c5c091da4 100755..100644
--- a/rt/share/html/NoAuth/css/3.5-default/forms.css
+++ b/rt/share/html/NoAuth/css/aileron/msie.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,104 +45,144 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-form input.button {
- border: 3px double #069;
- border-top-color: #08c;
- border-left-color: #08c;
- padding: 0.25em;
- background: white;
- font-weight: bold;
- font-size: 1em;
- margin: 0.5em 0.5em 0 0.5em;
+div#body {
+ top: 3em;
}
-form input.button:active {
- border: 3px double #08c;
- border-top-color: #069;
- border-left-color: #069;
+div#logo .rtname {
+ float: none;
+ right: 12em;
+ position: absolute;
}
-form select {
- border: 1px solid #069;
- padding: 1px;
+div#footer {
+ margin-top: 5em;
}
-form input.field, form input, form textarea {
- border: 1px solid #069;
- padding: 3px;
+
+
+.topaction form * {
+ vertical-align: top;
}
-form input.checkbox, form input.radio {
- border: none;
- padding: 0;
+.topaction form button, .topaction form input {
+ height: 2em;
}
-/* form .entry input, form .value input */
+.topaction form input.field {
+ height: 1.6em;
+}
-.label, form label, .labeltop {
- font-weight: bold;
+.topaction .select-queue {
+ margin-top: 0.2em;
}
-.label-comment {
- font-weight: normal;
- font-size: 0.9em;
+#pick-criteria td.label select {
+ width: 10em;
}
-.labeltop {
- vertical-align: top;
+
+#editquery {
+ margin-top: 0.2em;
+ width: 39%;
+ left: 60%;
+}
+
+div#nav li.first {
+ margin-top: 0.75em;
+ border-top: none;
+}
+div#nav ul ul li.first {
+ border-top: 1px solid #cccccc;
+ margin-top: 0.25em;
}
-.submit {
- font-weight: bold;
- color: #a00;
- font-size: 1.1em;
- padding: 0.3em 1.5em 0 1.5em;
- border-top: 1px solid #930;
- margin: 1.5em 0 2.5em 0;
+div#nav li.last {
+ border-bottom: none;
+ padding-bottom: 0;
+ margin-bottom: 0;
+}
+
+
+.ticket-transaction .type a { font-weight: normal; text-decoration: none; color: #fff; }
+
+
+
+/* IE's box model is wrong */
+.titlebox .titlebox-title .widget a {
+ padding-top: 0;
+ height: 7px;
+ top: 0.75em;
+}
+
+
+
+.titlebox .titlebox-title .right {
+ display: block;
+ margin-top: 0.4em;
+ padding-right: 0.3em;
+
}
-.submit .buttons { float: right; }
-.submit .extra-buttons { float: left; }
-.submit .button { font-size: 0.9em; }
-.submit .submit-clear { display: none; }
-.input-row {
- clear: both;
+.titlebox .titlebox-content {
+ padding-top: 2.2em;
+}
+
+
+.titlebox table.collection-as-table, .titlebox table.queue-summary {
+ width: 95%;
+ padding: 0.5em;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+th.collection-as-table {
padding: 0.25em;
}
-%# ComboBox styles... some properties like height and width must be dynamically
-%# set in the JS (at least for now).
-.combobox {
+table.queue-summary td, td.collection-as-table {
+ padding: 0.25em;
+}
+
+.titlebox-title {
position: relative;
- z-index: 100;
+}
+
+/* nested things. like the ticket dates tab */
+.titlebox .titlebox .titlebox-title .right{
+ top: 0.25em;
+}
+
+.combobox {
+ float: left;
}
.combobox .combo-button {
- margin: 0;
- margin-top: -0.2em;
- margin-left: -0.3em;
- background: ButtonFace;
color: ButtonText;
- border: 2px outset ButtonHighlight;
- cursor: default;
- font-size: 1em;
- z-index: 200;
+ padding: 0;
+}
+
+.combobox .combo-list {
+ margin-top:0.5em;
+ margin-left: -0.2em;
}
-.combobox .combo-text {
- margin: 0;
- padding: 1px;
- z-index: 110;
+#pick-criteria td.label {
+ width: auto;
}
-.combobox .combo-list {
- border: 1px outset;
-
+#pick-criteria td.operator {
+ width: 7.5em;
+}
+
+.plain-text-white-space {
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ white-space: pre; /* IE only hack to re-specify in addition to
+ word-wrap */
}
-.cfinvalidfield {
- font-style: italic;
- color: red;
+#rt-portal .titlebox-content {
+ height: 23em;
}
diff --git a/rt/share/html/NoAuth/css/3.4-compat/quickbar.css b/rt/share/html/NoAuth/css/aileron/msie6.css
index 518380663..6341e88a3 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/quickbar.css
+++ b/rt/share/html/NoAuth/css/aileron/msie6.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,38 +45,42 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#quickbar {
- border: 1px solid transparent;
+div#body {
+ top: 0em;
}
-#quickbar #quick-personal {
- display: inline;
- color: #888;
- padding: 0.5em 1em 0 0;
- float: right;
+.topaction .select-queue {
+ margin-top: 0;
}
-#quickbar #quick-personal span {
- font-weight: bold;
+.titlebox-title .widget {
+ top: -1.25em;
+ left: 0.5em;
+
+}
+.titlebox .titlebox-title .right{
+ position: absolute;
+ top: 1.5em;
}
-#quickbar #quick-personal :link,
-#quickbar #quick-personal :visited
+.titlebox
{
- color: #888;
- font-weight: bold;
+ height: auto !important;
+ height: 1.25em;
}
-#quickbar #quick-personal :link:hover,
-#quickbar #quick-personal :visited:hover
-{
- color: black;
+
+.ticket-transaction .messagebody img {
+ /* ie6 does not support max-width */
+ width: expression(this.width > 401 ? 400 : true);
+}
+
+
+
+.sf-sub-indicator {
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-ffffff.gif) no-repeat -10px -100px;
}
-#quickbar #topactions {
- color: white;
- font-size: 0.9em;
- position: relative;
- right: 1em;
- float: right;
+#page-navigation ul {
+ width: auto;
}
diff --git a/rt/share/html/NoAuth/css/aileron/nav.css b/rt/share/html/NoAuth/css/aileron/nav.css
new file mode 100644
index 000000000..f7c468571
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/nav.css
@@ -0,0 +1,164 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.sf-menu {
+ width: 100%;
+}
+
+.sf-menu li:hover {
+ background-color: #CFDEFF;
+}
+
+.sf-menu li, .sf-menu li li, .sf-menu li li li {
+ background-color: #eaeaea;
+}
+
+.sf-sub-indicator {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+}
+
+.sf-menu li li .sf-sub-indicator {
+ margin-top: -3px;
+}
+
+#page-menu.sf-menu li .sf-sub-indicator {
+ top: 0.7em;
+}
+
+#page-menu.sf-menu li:hover ul, #page-menu.sf-menu li.sfHover ul {
+ top: 2.5em;
+}
+
+#page-menu.sf-menu li ul {
+ border-bottom: 2px solid #ccc;
+}
+
+#main-navigation {
+ position: absolute;
+ top: 1px;
+ left: 0;
+ z-index: 9999;
+ text-color: #000;
+}
+
+#main-navigation .sf-menu a, #main-navigation .sf-menu a:hover {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-color: #fff;
+ color: #000;
+}
+
+#main-navigation a {
+ border-top: none;
+}
+
+#main-navigation li li a {
+ border-top: 1px solid white;
+}
+
+#app-nav.sf-menu > li:first-child > a {
+ border-left: none;
+}
+
+#main-navigation #app-nav > li, #main-navigation #app-nav > li > a {
+ background-color: transparent;
+}
+
+#page-navigation {
+ position: absolute;
+ top: 6em;
+ right: 0em;
+ left: auto;
+ z-index: 9995;
+ font-size: 0.9em;
+}
+
+#page-navigation .sf-menu li, #page-navigation .sf-menu li li, #page-navigation .sf-menu li li li {
+ background-color: #fff;
+}
+
+#page-navigation .sf-menu a:visited, #page-navigation .sf-menu a {
+ border: none;
+ color: #000;
+}
+
+/* to stop a "flash" of an unstyled menu on an older browser, hide the menu until superfish has initialized it */
+#app-nav.toplevel { display: none; }
+#app-nav.toplevel.sf-menu { display:block; }
+#page-menu.toplevel { display: none; }
+#page-menu.toplevel.sf-menu { display:block; }
+
+#topactions {
+ position: absolute;
+ background: transparent;
+ top: 3.2em;
+ right: 0.7em;
+ width: auto;
+ min-width: 42em;
+ font-size: 0.9em;
+ z-index: 99;
+}
+
+#topactions form * {
+ vertical-align: top;
+}
+
+#topactions button, #topactions select, #topactions input{
+ padding-top: 0em;
+ padding-bottom: 0em;
+ width: 8em;
+
+}
+
+#topactions #simple-search .field{
+ margin-left: 1em;
+ color: #787;
+ }
+
+#topactions #simple-search .field:focus {
+ color: #000;
+ }
diff --git a/rt/share/html/NoAuth/css/aileron/ticket-lists.css b/rt/share/html/NoAuth/css/aileron/ticket-lists.css
new file mode 100644
index 000000000..84c9a92de
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/ticket-lists.css
@@ -0,0 +1,236 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+table.queue-summary, table.collection-as-table {
+ margin-top: 0.75em;
+ font-size: 0.9em;
+ border: 1px solid #aaa;
+ border-bottom: 2px solid #999;
+ border-right: 2px solid #999;
+ border-spacing: 0;
+ width: 100%;
+
+}
+
+table.queue-summary tr>*:first-child {
+ padding-left: 1em;
+
+}
+
+
+table.queue-summary tr>*:last-child {
+ padding-right: 1em;
+
+}
+
+table.queue-summary a, table.collection-as-table a {
+ font-weight: bold;
+}
+
+
+table.collection-as-table th.collection-as-table {
+ background: #ddd;
+ font-size: 0.9em;
+ margin-bottom: 0.5em;
+ text-align: left;
+
+}
+
+
+table.queue-summary th.collection-as-table {
+ font-size: 0.9em;
+ margin-bottom: 0.5em;
+ text-align: right;
+
+}
+
+table.queue-summary th.collection-as-table:first-child {
+ text-align: left;
+
+}
+
+
+tr.collection-as-table+tr.collection-as-table th {
+ border-bottom: 2px solid grey;
+
+}
+
+
+
+
+table.queue-summary td {
+ background: #efefef;
+ border-bottom: 1px solid #ccc;
+}
+
+
+
+tr.evenline td {
+ background: #eee;
+}
+
+tr.oddline td {
+ background: #fff;
+
+}
+
+tr.evenline td, tr.oddline td {
+ padding-top: 0.5em;
+}
+
+
+
+tr.evenline+tr.evenline td, tr.oddline+tr.oddline td{
+ padding-top: 0;
+ border: none;
+}
+
+
+
+table.collection-as-table td:first-child,
+table.collection-as-table th:first-child {
+ padding-left: 1em;
+}
+
+table.collection-as-table td:last-child, table.collection-as-table th:last-child {
+ padding-right: 1em;
+}
+
+th.collection-as-table , td.collection-as-table {
+ padding-right: 0.5em;
+}
+
+.pagenum.a:hover, .paging a.nav:hover{
+text-decoration: underline;
+}
+
+
+.pagenum *, .paging a.nav{
+padding: .5em;
+}
+
+.currentpage{
+text-decoration: none;
+font-weight: bold;
+background: #eee;
+}
+
+div.paging{
+text-align: center;
+padding-bottom: 1em;
+}
+
+
+/* full-page ticket lists */
+#body>table.collection-as-table {
+ margin-bottom: 2em;
+
+}
+
+.chart.image {
+ margin-top: -1em;
+ padding-right: 2em;
+ float: left;
+ clear: both;
+}
+
+.chart-wrapper {
+ display: block;
+ width: auto;
+}
+
+.chart-wrapper .collection-as-table {
+ width: auto;
+ font-size: 1em;
+}
+
+.chart-wrapper .collection-as-table th.collection-as-table {
+ text-align: center;
+ padding: 0.5em;
+ padding-right: 1em;
+ padding-left: 1em;
+}
+
+.chart-wrapper .collection-as-table tr.total td {
+ border-top: 1px solid #ccc;
+}
+
+.chart-wrapper .collection-as-table td.value {
+ padding-left: 0.5em;
+}
+
+.chart-wrapper .query {
+ clear: both;
+ text-align: center;
+ font-size: 1.2em;
+ padding: 1em;
+}
+
+.chart-wrapper .collection-as-table .label {
+ font-weight: bold;
+}
+
+
+.chart-wrapper .query .label {
+ font-weight: bold;
+}
+
+.chart-meta {
+ padding-top: 2em;
+ border-top: 1px solid #ccc;
+}
+
+.chart-meta .chart-type {
+ display: inline-block;
+ float: left;
+ padding-right: 2em;
+ clear: both;
+}
+
+.chart-meta .saved-search {
+ display: inline-block;
+}
diff --git a/rt/share/html/NoAuth/css/aileron/ticket-search.css b/rt/share/html/NoAuth/css/aileron/ticket-search.css
new file mode 100644
index 000000000..0e88eb0bf
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/ticket-search.css
@@ -0,0 +1,242 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+#comp-Search-Build #body {
+ position: relative;
+}
+
+#pick-criteria select {
+ width: 8em;
+}
+
+#pick-criteria tr {
+ height: 1.5em;
+}
+
+#pick-criteria td.label {
+ font: message-box;
+ padding-right: 0.5em;
+ width: 11em;
+}
+
+#pick-criteria td.label select {
+ width: 8.5em;
+ text-align: right;
+}
+
+#pick-criteria td.operator {
+ padding-right: 0.5em;
+ text-align: left;
+ vertical-align: bottom;
+ width: 7em;
+}
+
+#pick-criteria td.operator select {
+ text-align: right;
+}
+
+#pick-criteria td.value input,
+#pick-criteria td.value select {
+ width: 11em;
+}
+
+#pick-criteria td.value #ValueOfDate {
+ width: 11em;
+}
+
+
+#pick-criteria td.value #ValueOfTime {
+ width: 4em;
+
+}
+
+#pick-criteria td.value #ValueOfTime-TimeUnits{
+ width: 5.5em;
+}
+
+#pick-criteria td.value {
+ padding-right: 0.5em;
+ text-align: left;
+ font: message-box;
+}
+
+#editquery, #editsearches{
+ position: absolute;
+ margin-top: 0.2em;
+ right: 1em;
+ left: 60%;
+ top: 1em;
+/* margin-top: -1em; */
+}
+
+#editquery {
+ top: 1.3em;
+}
+
+
+#editsearches {
+ top: 24em;
+}
+
+
+#pick-criteria {
+ width: 58%;
+ padding-top: 0em;
+ margin-top: 0em;
+}
+
+#pick-criteria .titlebox-content {
+ overflow-x: auto;
+}
+
+#BuildQuery .submit {
+ width: 58%;
+}
+
+
+#sorting.titlebox {
+ width: 55%;
+ padding-right: 1em;
+}
+
+#display-options .submit {
+ width: 100%;
+}
+
+
+
+.search-result-views {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin-top: -2px;
+ margin-right: 0em;
+ padding: 0.25em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ background-color: #ccc;
+ border-left: 1px solid #999;
+ border-bottom: 1px solid #999;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ border-radius: 0 0 0 0.5em;
+}
+
+
+
+.search-result-views li {
+
+ display: inline;
+}
+
+.search-result-views li:after {
+ content: " \00b7 ";
+}
+
+.search-result-views li:last-child:after {
+ content: "";
+
+}
+
+.edit-saved-searches .label {
+ display: inline-block;
+ width: 10em;
+}
+
+span#display-options {
+ display: block;
+ padding-top: 2em;
+ margin-top: 2em;
+ border-top: 1px solid #ccc;
+ clear: both;
+}
+
+span#display-options .titlebox#sorting {
+ float: left;
+ width: auto;
+ margin-right: 2em;
+ min-width: 35%;
+}
+
+span#display-options .titlebox#columns {
+ float: left;
+}
+
+span#display-options .titlebox#columns table.edit-columns td {
+ padding: 0.5em;
+}
+
+span#display-options .titlebox#columns table.edit-columns div.row {
+ width: 9em;
+}
+span#display-options .titlebox#columns table.edit-columns span.label {
+ width: 2em;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value input,
+span#display-options .titlebox#columns table.edit-columns span.value select {
+ width: 7em;
+ padding: 0;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value {
+ display: inline-block;
+ width:7em;
+}
+
+#BuildQuery #formatbuttons.submit{
+ width: 85%;
+}
+
+.refresh {
+ float: left;
+}
+
+/* Force some widget to fit at max parent box */
+#HomeRefreshInterval, #SavedSearchLoad, #SavedSearchOwner {
+ max-width: 100%;
+}
diff --git a/rt/share/html/NoAuth/css/aileron/ticket.css b/rt/share/html/NoAuth/css/aileron/ticket.css
new file mode 100644
index 000000000..4d069d9f9
--- /dev/null
+++ b/rt/share/html/NoAuth/css/aileron/ticket.css
@@ -0,0 +1,289 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+div#ticket-history div.ticket-transaction {
+ border-top: 1px solid #ccc;
+ padding-bottom: 0.25em;
+ position: relative; /* gives us a container for position: absolute */
+}
+
+div#ticket-history div.odd {
+ background-color: #fff;
+}
+
+div#ticket-history {
+
+ margin-top: 0.75em;
+ border-left: 1px solid #ccc;
+
+ border-right: 2px solid #999;
+ border-bottom: 2px solid #999;
+
+}
+
+.ticket-transaction div.metadata span.actions {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 0em;
+ background: #ccc;
+ text-align: right;
+ border-left: 1px solid #999;
+ border-bottom: 1px solid #999;
+ color: #ccc;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ white-space: nowrap;
+
+ border-radius: 0 0 0 0.5em;
+}
+
+.ticket-transaction div.metadata span.type {
+ text-align: center;
+ float: left;
+ margin: 0.25em 0.70em 0.25em 0.25em;
+ width: 1em;
+ height: 1.25em;
+ padding: 0.75em 0 0 0;
+ border-right: 1px solid #999;
+ border-bottom: 1px solid #999;
+ -moz-border-radius-bottomright: 0.25em;
+ -webkit-border-bottom-right-radius: 0.25em;
+
+ border-radius: 0 0 0.25em 0;
+
+}
+
+div#ticket-history span.type a {
+ color: #fff;
+}
+
+
+div#ticket-history span.date {
+ width: 10em;
+}
+
+
+div#ticket-history span.description {
+ margin-left: 1em;
+ font-weight: bold;
+}
+
+div#ticket-history span.time-taken {
+ margin-left: 1em;
+}
+
+div#ticket-history div.content {
+ padding-right: 1em;
+ padding-bottom: 0.7em;
+ margin-left: 1.5em;
+}
+
+
+.ticket-transaction .messagebody {
+ font-size: 1em;
+ padding-left: 1em;
+ margin-top: 0.5em;
+ padding-top: 0.5em;
+ border-top: 1px solid #ccc;
+ /*overflow: auto; */
+ min-height: 2.5em;
+ /* To avoid overlapping of "downloadattachment" by messagebody */
+ clear: left;
+ word-wrap: break-word;
+}
+
+.ticket-transaction .messagebody img {
+ max-width: 100%;
+}
+
+div#ticket-history div.downloadattachment {
+float: right;
+clear: both;
+font-size: 0.9em;
+text-align: right;
+background: #ddd;
+padding: 0.5em;
+margin-left: 1em;
+
+border: 1px solid #ccc;
+border-right: 2px solid #aaa;
+border-bottom: 2px solid #aaa;
+margin-top: 0.5em;
+-moz-border-radius: 0.5em;
+-webkit-border-radius: 0.5em;
+ border-radius: 0.5em;
+}
+
+div#ticket-history div.downloadattachment .downloadcontenttype{
+color: #666;
+padding-right:0.25em;
+}
+
+
+div#ticket-history .message-header-key {
+ width: 7em;
+ font-weight: bold;
+ color: #666;
+}
+
+
+div#ticket-history .messagebody .messagebody{
+ font-size: 1em;
+ padding: 0;
+ border: 0;
+ margin: 0;
+}
+
+
+
+.ticket-transaction.basics .type { background: #b32; }
+.ticket-transaction.cfs .type { background: #b32; }
+.ticket-transaction.people .type { background: #48c; }
+.ticket-transaction.links .type { background: #316531; }
+.ticket-transaction.dates .type { background: #633063; }
+.ticket-transaction.message .type { background: #069; }
+.ticket-transaction.reminders .type { background: #369; }
+.ticket-transaction.other .type { background: #abc; }
+
+
+/* Color the titlebox tabs */
+.ticket-info-cfs .titlebox-title .left { background-color: #b32; color: #fff;}
+.ticket-info-basics .titlebox-title .left { background-color: #b32; color: #fff;}
+.ticket-info-people .titlebox-title .left { background-color: #48c; color: #fff;}
+.ticket-info-requestor .titlebox-title .left { white-space: nowrap; background-color: #48c; color: #fff;}
+.ticket-info-links .titlebox-title .left { background-color: #316531; color: #fff;}
+.ticket-info-reminders .titlebox-title .left { background-color: #369; color: #fff;}
+.ticket-info-dates .titlebox-title .left { background-color: #633063; color: #fff;}
+.ticket-info-attachments .titlebox-title .left { background-color: #993366; color: #fff;}
+
+/* Use a lighter colored toggle arrow */
+.ticket-info-cfs .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-basics .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-people .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-requestor .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-links .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-reminders .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-dates .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-attachments .titlebox-title .widget a { background-position: center -7px; }
+
+
+.ticket-summary .titlebox-title .left a, .ticket-summary .titlebox-title .left a:visited { color: #fff;}
+
+.unread-messages .titlebox , .unread-messages .titlebox-title .left {
+ border: 1px solid #99a;
+ border-right: 2px solid #aab;
+ border-bottom: 2px solid #aab;
+
+}
+
+
+.unread-messages .titlebox {
+ background-color: #dde;
+}
+
+.unread-messages .titlebox-title .left {
+ background-color: #cce;
+}
+
+.ticket-inactive {
+ text-decoration: line-through;
+ color: #666
+}
+
+table.ticket-summary td.boxcontainer:first-child {
+ width: 50%;
+}
+div.requestor-ticket-links {
+ text-align: left;
+ font-size: 0.8em;
+ padding-top: 0.25em;
+}
+
+.more-about-requestor-extra-field .label {
+ display: inline-block;
+ width: 8em;
+ font-weight: bold;
+ text-align: right;
+}
+
+.more-about-requestor-extra-field .value {
+ display: inline-block;
+}
+
+.ticket-info-requestor .more-about-requestor-extra,
+.ticket-info-requestor .comments-about-user,
+.ticket-info-requestor .more-about-requestor-tickets,
+.ticket-info-requestor .more-about-user-groups
+{
+ margin: 1em 0;
+}
+
+.ticket-info-requestor .comments-about-user .label,
+.ticket-info-requestor .more-about-user-groups .label,
+.ticket-info-requestor .more-about-requestor-tickets .label
+{
+ display: block;
+ font-weight: bold;
+ text-align: left;
+}
+
+.ticket-info-requestor .more-about-user-groups .value ul,
+.ticket-info-requestor .more-about-requestor-tickets ul
+{
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+
+/* textareas get to be bigger when we're in a table */
+tr.edit-custom-field.cftype-Text textarea,
+tr.edit-custom-field.cftype-Freeform input,
+tr.edit-custom-field.cftype-Wikitext textarea
+{
+ width: 100%;
+}
diff --git a/rt/share/html/NoAuth/css/autohandler b/rt/share/html/NoAuth/css/autohandler
index dabe70422..c0834440b 100644
--- a/rt/share/html/NoAuth/css/autohandler
+++ b/rt/share/html/NoAuth/css/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,9 +48,15 @@
<%init>
my $file = $m->base_comp->source_file;
-if ($file =~ /\.(gif|png|jpe?g)$/i) {
+if ($file =~ /\.(?:gif|png|jpe?g)$/i) {
my $relfile = $m->base_comp->path;
RT::Interface::Web->SendStaticFile( File => $file, RelativeFile => $relfile );
+}
+elsif ($file =~ /\.(?:htc)$/i) {
+ RT::Interface::Web::StaticFileHeaders();
+ $r->content_type('text/x-component') ;
+ $m->call_next();
+ return();
} else {
RT::Interface::Web::StaticFileHeaders();
$r->content_type('text/css') ;
diff --git a/rt/share/html/NoAuth/css/ballard/InHeader b/rt/share/html/NoAuth/css/ballard/InHeader
new file mode 100644
index 000000000..e8821128e
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/InHeader
@@ -0,0 +1,54 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<!--[if lt IE 8]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/msie.css" type="text/css" media="all" />
+
+<![endif]-->
+<!--[if lt IE 7]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/msie6.css" type="text/css" media="all" />
+<![endif]-->
diff --git a/rt/share/html/NoAuth/css/ballard/base.css b/rt/share/html/NoAuth/css/ballard/base.css
new file mode 100644
index 000000000..0744f0b2d
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/base.css
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+a {
+ color: #000;
+ text-decoration: none;
+}
+
+
+a:visited {
+ color: #666;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+textarea:focus, input:focus { background-color: #ffd; }
diff --git a/rt/share/html/NoAuth/css/3.5-default/titlebox.css b/rt/share/html/NoAuth/css/ballard/boxes.css
index f2e5a0e09..912ac55f4 100644
--- a/rt/share/html/NoAuth/css/3.5-default/titlebox.css
+++ b/rt/share/html/NoAuth/css/ballard/boxes.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,114 +45,140 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-.titlebox {
- margin-bottom: 1em;
+.titlebox {
+ border-left: 1px solid #ccc;
+ border-top: 1px solid #ccc;
+ background-color: #efefef;
+ padding-top: 1em;
+ margin-top: 1em;
+ margin-left: 1em;
+ -moz-border-radius: 0.5em;
+ -webkit-border-radius: 0.5em;
+ margin-bottom: 2em;
+ border-bottom: 2px solid #aaa;
+ border-right: 2px solid #aaa;
+ padding-right: 1em;
}
-.titlebox .titlebox-content {
- margin-top: -1px;
- padding: 1em 2em 0.5em 2em;
- margin: 0;
- /*margin: 1em 2em 0.5em 2em;*/
+* html .titlebox {
+ border-top: none;
+ border-left: none;
}
-.titlebox th { font-size: 0.8em; }
-
-%# TRS: I wish there was a more elegant way to do this... I essentially need to
-%# select all elements X that do NOT have element Y as a descendant... which I can
-%# fake with the child selector of CSS2, but IE is stupid and does not support that.
-
-% my @pages = qw(index Search-Build User-Prefs Approvals Admin-Users-Modify SelfService SelfService-Closed);
-% $m->callback(pages => \@pages, %ARGS);
-
-% for (@pages)
-% {
-#comp-<%$_%> .titlebox .titlebox-content,
-% }
-.titlebox .titlebox .titlebox-content
-{
- background: #eee;
- border-bottom: 1px solid #ccc;
- border-right: 1px solid #ccc;
- border-left: 0.5em solid #069;
+.titlebox .titlebox {
+
+ background-color: #ffffff;
+ margin-top: 1em;
+ -moz-border-radius: 0.5em;
+ -webkit-border-radius: 0.5em;
+ margin-right: 0.25em;
+
}
-#login-box .titlebox .titlebox-content
-{
- background: none;
- border: none;
+
+.titlebox {
+ margin-left: 0em;
+ margin-right: 0em;
+ min-height: 1.25em;
+
}
+
+
.titlebox .titlebox-title {
- position: relative;
+ position: relative;
+ margin-top: -1.5em;
+ padding-bottom: 0.25em;
+ padding-left: 1em;
+ margin-right: -1em;
+
+}
+
+.titlebox .titlebox-title a {
+ text-decoration: none;
+ color: black;
+
+}
+
+.titlebox .titlebox-title a:hover {
+ text-decoration: underline;
+
+}
+
+.titlebox .titlebox-title .left {
font-weight: bold;
- color: #930;
- font-size: 1.2em;
- padding: 0.2em 0 0.2em 4em;
- border-bottom: 1px solid #069;
+ background: #ccc;
+ margin-left: 0.75em;
+ padding:0.5em;
+ padding-left: 0.75em;
+ padding-right: 0.75em;
+ -moz-border-radius: 0.5em;
+ -webkit-border-radius: 0.5em;
+ border-bottom: 2px solid #aaa;
+ border-right: 2px solid #aaa;
+
+
}
-.titlebox .titlebox-title .right {
- position: absolute;
- top: 0.5em;
- right: 1.5em;
- font-size: 0.9em;
- color: #888;
+.titlebox .titlebox-title .right-empty {
+ display:none;
}
-.titlebox .titlebox-title .right .selected { color: #930; }
+.titlebox .titlebox-title .right {
+ position: absolute;
+ right: 0;
+ top: 0.5em;
+ font-size: 0.9em;
+ background: #dedede;
+ border-left: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ padding-right: 0.4em;
+ padding-left: 0.4em;
+ padding-bottom: 0.2em;
+ padding-top: 0.5em;
+ -moz-border-radius-bottomleft: 0.25em;
+ -webkit-border-bottom-left-radius: 0.25em;
+
+
+ -moz-border-radius-topright: 0.25em;
+ -webkit-border-top-right-radius: 0.25em;
-#body .titlebox .titlebox-title .right :link,
-#body .titlebox .titlebox-title .right :visited {
- color: #888;
}
-#body .titlebox .titlebox-title .right :link:hover,
-#body .titlebox .titlebox-title .right :visited:hover {
- color: #930;
+.titlebox .titlebox-title .right a,
+.titlebox .titlebox-title .right a:visited {
+ color: #000;
+}
+
+.titlebox .titlebox-content {
+ padding-top: 0.5em;
+ padding-left: 1em;
+ padding-bottom: 1em;
+
}
.titlebox .titlebox-title .widget a {
display: block;
margin: 0;
- margin-top: 0.5em;
+ margin-top: 0.6em;
width: 20px;
- background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat center center;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat center 0;
position: absolute;
- top: -0.75em;
+ top: -1em;
left: 0.15em;
float: left;
- padding: 11px 0 0 0;
+ padding: 7px 0 0 0;
+ overflow: hidden;
}
-
* html .titlebox .titlebox-title .widget a {
- background-position: center 0.3em;
top: 0em;
left: -1.5em;
}
.titlebox.rolled-up .titlebox-title .widget a {
- background-image: url(<%RT->Config->Get('WebImagesURL')%>/css/rolldown-arrow.gif);
-}
-
-#body .titlebox .titlebox-title :link,
-#body .titlebox .titlebox-title :visited
-{
- color: #930;
- text-decoration: none;
-}
-
-#body .titlebox .titlebox-title :link:hover,
-#body .titlebox .titlebox-title :visited:hover
-{
- text-decoration: underline;
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rolldown-arrow.gif);
}
-
-.titlebox .titlebox-title .left {
- position: relative;
-}
-
diff --git a/rt/share/html/NoAuth/css/ballard/images/dhandler b/rt/share/html/NoAuth/css/ballard/images/dhandler
new file mode 100644
index 000000000..6ec9dea05
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/images/dhandler
@@ -0,0 +1,8 @@
+<%INIT>
+use File::Basename;
+my $arg = $m->dhandler_arg;
+my $file = dirname($m->current_comp->source_file) . '/source/'. $arg;
+RT::Interface::Web->SendStaticFile( File => $file );
+
+$m->abort;
+</%INIT>
diff --git a/rt/share/html/NoAuth/css/ballard/layout.css b/rt/share/html/NoAuth/css/ballard/layout.css
new file mode 100644
index 000000000..8dc0cc162
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/layout.css
@@ -0,0 +1,173 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+/* body */
+
+body {
+ padding:0;
+ margin:0;
+ background: #547CCC url(<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/images/background-gradient.png) top left repeat-x ;
+ font-family: arial, helvetica, sans-serif;
+ color: #000000;
+}
+
+div#body {
+ position: relative;
+ padding: 1.8em 1em 1em 1em;
+ -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ margin-left: 10em;
+ margin-top: 3em;
+ margin-right: 0;
+ margin-bottom: 0em;
+ min-height: 10%;
+ background: #fff;
+ border-top: 2px solid #ccc;
+ border-left: 2px solid #ccc;
+ z-index:1;
+
+
+}
+
+div#footer {
+ position: absolute;
+ right: 0;
+ text-align: right;
+ font-size: 0.9em;
+ margin-top: 2em;
+ background: #fff;
+ margin-bottom: 0;
+ padding-left: 3em;
+ padding-right: 1em;
+ border-top: 2px solid #aaa;
+ border-left: 2px solid #aaa;
+ -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+}
+
+div#footer #time {
+ display: none ;
+}
+
+div#footer #bpscredits {
+ text-align: right;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+ padding-top: 4em;
+}
+
+
+/* logo stuff */
+
+div#logo {
+ position: absolute;
+ right: 2px;
+ top: 0;
+ height: 2.3em;
+}
+
+div#logo a img {
+ border: 0;
+ height: 100% !important;
+ width: auto !important;
+ float: right;
+}
+
+div#logo .rtname {
+ position: relative;
+ font-weight: bold;
+ text-align: center;
+ top: 0.7em;
+ padding-right: 1em;
+ float:left;
+}
+
+
+div#quickbar, div#logo {
+ font-size: 0.9em;
+}
+div#quickbar a, div#logo a {
+ color: #000;
+}
+
+
+div#quickbar {
+ background: #eaeaea;
+ padding-top: 1em;
+ padding-left: 1em;
+ padding-bottom: 0.5em;
+ height: 1em;
+ border-bottom: 1px solid #ccc;
+
+}
+
+div#header h1 {
+ position: absolute;
+ left: 0.5em;
+ right: 20em;
+ top: 1.6em;
+ overflow: hidden;
+ height: 1em;
+ font-size: 1.4em;
+ margin-top: 0.4em;
+ padding: 0.25em;
+ color: #fff;
+}
+
+/* in multi-column layouts, make sure we have an internal gutter */
+
+tr .boxcontainer {
+ padding-right: 1em;
+}
+
+tr .boxcontainer:last-child {
+ padding-right: 0;
+}
+
diff --git a/rt/share/html/NoAuth/css/ballard/main.css b/rt/share/html/NoAuth/css/ballard/main.css
new file mode 100644
index 000000000..b184894d3
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/main.css
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% $m->callback(CallbackName => 'Begin');
+
+@import "../base/main.css";
+
+@import "base.css";
+@import "layout.css";
+@import "nav.css";
+@import "boxes.css";
+@import "ticket-lists.css";
+@import "ticket-search.css";
+@import "ticket.css";
+@import "misc.css";
+
+% $m->callback(CallbackName => 'End');
+
diff --git a/rt/share/html/NoAuth/css/ballard/misc.css b/rt/share/html/NoAuth/css/ballard/misc.css
new file mode 100644
index 000000000..655c40031
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/misc.css
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.comment {
+ padding-left: 0.5em;
+ color: #999;
+
+}
+
+#comp-Ticket-ShowEmailRecord #body {
+ margin-left: 1em;
+ margin-top: 1em;
+ overflow: auto;
+}
diff --git a/rt/share/html/NoAuth/css/ballard/msie.css b/rt/share/html/NoAuth/css/ballard/msie.css
new file mode 100644
index 000000000..ca2676f2c
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/msie.css
@@ -0,0 +1,242 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+div#body {
+ left: 0.25em;
+ height: 100%;
+ top: 1em;
+
+}
+
+
+#footer {
+ padding: 1em;
+}
+
+
+div#header h1 {
+ position: absolute;
+ left: 7.25em;
+ overflow: hidden;
+ height: 1em;
+ font-size: 1.4em;
+ margin-top: 0.4em;
+ right: 23.5em;
+ padding: 0.25em;
+}
+
+
+#topactions {
+ top: 4.1em;
+ width: auto;
+}
+.topaction form * {
+ vertical-align: top;
+}
+
+.topaction form button, .topaction form input {
+ height: 2em;
+}
+
+.topaction form input.field {
+ height: 1.6em;
+}
+
+.topaction .select-queue {
+ margin-top: 0.2em;
+}
+
+div#page-navigation {
+ position: absolute;
+ top: 6.2em;
+ height: 1.8em;
+ background: #fff;
+ border-top: 2px solid #ccc;
+}
+
+
+
+div#page-navigation ul#page-menu {
+ margin-top: -2.5em;
+ margin-left: 4em;
+ background: none;
+ border: none;
+}
+
+
+div#quickbar { height: 1.2em;
+
+
+}
+
+#pick-criteria td.label select {
+ width: 10em;
+}
+
+
+#editquery {
+ margin-top: 0.2em;
+ width: 39%;
+ left: 60%;
+}
+
+div#nav li.first {
+ margin-top: 0.75em;
+ border-top: none;
+}
+div#nav ul ul li.first {
+ border-top: 1px solid #cccccc;
+ margin-top: 0.25em;
+}
+
+div#nav li.last {
+ border-bottom: none;
+ padding-bottom: 0;
+ margin-bottom: 0;
+}
+
+
+.ticket-transaction .type a { font-weight: normal; text-decoration: none; color: #fff; }
+
+
+.titlebox {
+ border-top: none;
+ border-left: none;
+}
+
+.titlebox .titlebox-title .left {
+ padding: 0.25em;
+ padding-left: 0.5em;
+}
+
+.titlebox {
+}
+
+.titlebox .titlebox-title .right {
+ border-right: 2px solid #aaa;
+
+}
+
+
+.titlebox .titlebox-content {
+ padding-top: 2.2em;
+}
+
+.titlebox table.collection-as-table, .titlebox table.queue-summary {
+ width: 95%;
+ padding: 0.5em;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+th.collection-as-table {
+ padding: 0.25em;
+}
+
+table.queue-summary td, td.collection-as-table {
+ padding: 0.25em;
+}
+
+ .titlebox-title {
+ position: relative;
+}
+
+.titlebox-title .widget {
+ position: absolute;
+ top: -0.25em;
+ left: -0.25em;
+
+}
+.titlebox-title .left {
+ position: absolute;
+ top: -0.75em;
+ left: 0.5em;
+}
+
+
+.titlebox .titlebox-title .right{
+ top: 0.2em;
+ right: -0.2em;
+}
+
+/* nested things. like the ticket dates tab */
+.titlebox .titlebox .titlebox-title .right{
+ top: 0.25em;
+}
+
+.combobox {
+ float: left;
+}
+
+.combobox .combo-button {
+ color: ButtonText;
+ padding: 0;
+}
+
+.combobox .combo-list {
+ margin-top:0.5em;
+ margin-left: -0.2em;
+}
+
+#pick-criteria td.label {
+ width: auto;
+}
+
+#pick-criteria td.operator {
+ width: 7.5em;
+}
+
+.plain-text-white-space {
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ white-space: pre; /* IE only hack to re-specify in addition to
+ word-wrap */
+}
+
+#rt-portal .titlebox-content {
+ height: 23em;
+}
+
diff --git a/rt/share/html/NoAuth/css/3.4-compat/header.css b/rt/share/html/NoAuth/css/ballard/msie6.css
index dbc310ec2..e5aef5118 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/header.css
+++ b/rt/share/html/NoAuth/css/ballard/msie6.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,44 +45,44 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#header #page-menu {
- display: none;
+.topaction .select-queue {
+ margin-top: 0;
}
-#header {
- background: #4282b5;
- margin-top: 0;
- padding-bottom: 0.2em;
- float: left;
- width: 82%;
+div#page-navigation ul#page-menu {
+ margin-top: -3.2em;
}
-#header h1 {
- background: #4282b5;
- color: white;
- font-size: 1.7em;
- margin: 0;
- padding: 0;
+.titlebox-title .widget {
+ top: -1em;
+ left: 0.5em;
+
+}
+.titlebox .titlebox-title .right{
+ position: absolute;
+ top: 0.25em;
+ right: 1em;
}
-#header #actions-menu {
- display: block;
- margin: 0 1em 0 0;
- padding: 0;
- color: white;
- text-align: right;
- font-size: 1.2em;
+/* nested things. like the ticket dates tab */
+.titlebox .titlebox .titlebox-title .right{
+ right: 1.3em;
}
-#header #actions-menu li {
- display: inline;
+#login-box .titlebox .titlebox-title .right {
+ margin-top: -0.1em;
+ right: 0em;
}
-#header #actions-menu :link, #header #actions-menu :visited {
- color: white;
- text-decoration: none;
+.titlebox
+{
+ height: auto !important;
+ height: 1.25em;
}
-#header #actions-menu :link:hover, #header #actions-menu :visited:hover {
- text-decoration: underline;
+
+.ticket-transaction .messagebody img {
+ /* ie6 does not support max-width */
+ width: expression(this.width > 401 ? 400 : true);
}
+
diff --git a/rt/share/html/NoAuth/css/ballard/nav.css b/rt/share/html/NoAuth/css/ballard/nav.css
new file mode 100644
index 000000000..196f0e6c0
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/nav.css
@@ -0,0 +1,189 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+#main-navigation {
+ background-color: #fff;
+ -moz-border-radius-bottomright: 0.5em;
+ -webkit-border-bottom-right-radius: 0.5em;
+ -moz-border-radius-topright: 0.5em;
+ -webkit-border-top-right-radius: 0.5em;
+ width: 10em;
+ font-size: 0.85em;
+ position: absolute;
+ top: 6.2em;
+ left: 0em;
+ z-index: 9997;
+ background-color: none;
+ padding-top: 1em;
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+}
+
+#main-navigation ul {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ padding-left: 8px; /* not em, since our font size reduces */
+ border-left: 1px solid #ccc;
+ margin-top: 0.2em;
+ padding-top: 0.2em;
+
+ margin-bottom: 0.2em;
+ padding-bottom: 0.2em;
+}
+
+#main-navigation {
+ text-color: #000;
+}
+
+#main-navigation li ul {
+ font-size: 0.9em;
+}
+
+#main-navigation li ul ul {
+ font-size: 1em;
+}
+
+#main-navigation li:first-child {
+}
+
+#main-navigation li:last-child {
+ border-bottom: none;
+}
+
+
+#main-navigation a,
+#main-navigation a:visited {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ color: #000;
+ border: none;
+}
+
+#main-navigation li {
+}
+
+
+#main-navigation ul a,
+#main-navigation ul a:visited {
+ color: #000;
+}
+
+
+#main-navigation li li, #main-navigation li li li {
+ border-left: none;
+ background-color: #fff;
+ text-color: #547CCC;
+}
+
+#page-navigation {
+ position: absolute;
+ top: 6em;
+ right: 0em;
+ z-index: 9995;
+ font-size: 0.9em;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ padding: 0;
+ padding-top: 0.5em;
+ padding-right: 0.5em;
+ width: 60%;
+ text-align: right;
+}
+
+#page-navigation ul {
+ list-style-type: none;
+ padding: 0;
+ padding-left: 0.3em;
+ display: inline;
+}
+
+#page-navigation li {
+ display: inline;
+ padding: 0.3em;
+}
+#page-navigation li.has-children>a {
+ display: none;
+}
+
+#page-navigation {
+ margin: 0;
+}
+
+#topactions {
+ position: absolute;
+ background: transparent;
+ top: 3.2em;
+ right: 0.7em;
+ width: auto;
+ min-width: 42em;
+ font-size: 0.9em;
+ z-index: 99;
+}
+
+#topactions form * {
+ vertical-align: top;
+}
+
+#topactions button, #topactions select, #topactions input{
+ padding-top: 0em;
+ padding-bottom: 0em;
+ width: 8em;
+
+}
+
+#topactions #simple-search .field{
+ margin-left: 1em;
+ color: #787;
+ }
+
+#topactions #simple-search .field:focus {
+ color: #000;
+ }
+
diff --git a/rt/share/html/NoAuth/css/ballard/ticket-lists.css b/rt/share/html/NoAuth/css/ballard/ticket-lists.css
new file mode 100644
index 000000000..9da15dae3
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/ticket-lists.css
@@ -0,0 +1,236 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+table.queue-summary, table.collection-as-table {
+ margin-top: 0.75em;
+ font-size: 0.9em;
+ border: 1px solid #aaa;
+ border-bottom: 2px solid #999;
+ border-right: 2px solid #999;
+ border-spacing: 0;
+ width: 100%;
+
+}
+
+table.queue-summary tr>*:first-child {
+ padding-left: 1em;
+
+}
+
+
+table.queue-summary tr>*:last-child {
+ padding-right: 1em;
+
+}
+
+table.queue-summary a, table.collection-as-table a {
+ font-weight: bold;
+}
+
+
+table.collection-as-table th.collection-as-table {
+ background: #ddd;
+ font-size: 0.9em;
+ margin-bottom: 0.5em;
+ text-align: left;
+
+}
+
+
+table.queue-summary th.collection-as-table {
+ font-size: 0.9em;
+ margin-bottom: 0.5em;
+ text-align: right;
+
+}
+
+table.queue-summary th.collection-as-table:first-child {
+ text-align: left;
+
+}
+
+
+tr.collection-as-table+tr.collection-as-table th {
+ border-bottom: 2px solid grey;
+
+}
+
+
+
+
+table.queue-summary td {
+ background: #efefef;
+ border-bottom: 1px solid #ccc;
+}
+
+
+
+tr.evenline td {
+ background: #eee;
+}
+
+tr.oddline td {
+ background: #fff;
+
+}
+
+tr.evenline td, tr.oddline td {
+ padding-top: 0.5em;
+}
+
+
+
+tr.evenline+tr.evenline td, tr.oddline+tr.oddline td{
+ padding-top: 0;
+ border: none;
+}
+
+
+
+table.collection-as-table td:first-child,
+table.collection-as-table th:first-child {
+ padding-left: 1em;
+}
+
+table.collection-as-table td:last-child, table.collection-as-table th:last-child {
+ padding-right: 1em;
+}
+
+th.collection-as-table , td.collection-as-table {
+ padding-right: 0.5em;
+}
+
+.pagenum.a:hover, .paging a.nav:hover{
+text-decoration: underline;
+}
+
+
+.pagenum *, .paging a.nav{
+padding: .5em;
+}
+
+.currentpage{
+text-decoration: none;
+font-weight: bold;
+background: #eee;
+}
+
+div.paging{
+text-align: center;
+padding-bottom: 1em;
+}
+
+
+/* full-page ticket lists */
+#body>table.collection-as-table {
+ margin-bottom: 2em;
+
+}
+
+.chart.image {
+ margin-top: -1em;
+ padding-right: 2em;
+ float: left;
+ clear: both;
+}
+
+.chart-wrapper {
+ display: block;
+ width: auto;
+}
+
+.chart-wrapper .collection-as-table {
+ width: auto;
+ font-size: 1em;
+}
+
+.chart-wrapper .collection-as-table th.collection-as-table {
+ text-align: center;
+ padding: 0.5em;
+ padding-right: 1em;
+ padding-left: 1em;
+}
+
+.chart-wrapper .collection-as-table tr.total td {
+ border-top: 1px solid #ccc;
+}
+
+.chart-wrapper .collection-as-table td.value {
+ padding-left: 0.5em;
+}
+
+.chart-wrapper .query {
+ clear: both;
+ text-align: center;
+ font-size: 1.2em;
+ padding: 1em;
+}
+
+.chart-wrapper .collection-as-table .label {
+ font-weight: bold;
+}
+
+
+.chart-wrapper .query .label {
+ font-weight: bold;
+}
+
+.chart-meta {
+ padding-top: 2em;
+ border-top: 1px solid #ccc;
+}
+
+.chart-meta .chart-type {
+ display: inline-block;
+ float: left;
+ padding-right: 2em;
+ clear: both;
+}
+
+.chart-meta .saved-search {
+ display: inline-block;
+}
diff --git a/rt/share/html/NoAuth/css/ballard/ticket-search.css b/rt/share/html/NoAuth/css/ballard/ticket-search.css
new file mode 100644
index 000000000..19ee847ff
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/ticket-search.css
@@ -0,0 +1,243 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+#comp-Search-Build #body {
+ position: relative;
+}
+
+#pick-criteria select {
+ width: 8em;
+}
+
+#pick-criteria tr {
+ height: 1.5em;
+}
+
+#pick-criteria td.label {
+ font: message-box;
+ padding-right: 0.5em;
+ width: 11em;
+}
+
+#pick-criteria td.label select {
+ width: 8.5em;
+ text-align: right;
+}
+
+#pick-criteria td.operator {
+ padding-right: 0.5em;
+ text-align: left;
+ vertical-align: bottom;
+ width: 7em;
+}
+
+#pick-criteria td.operator select {
+ text-align: right;
+}
+
+#pick-criteria td.value input,
+#pick-criteria td.value select {
+ width: 11em;
+}
+
+#pick-criteria td.value #ValueOfDate {
+ width: 11em;
+}
+
+
+#pick-criteria td.value #ValueOfTime {
+ width: 4em;
+
+}
+
+#pick-criteria td.value #ValueOfTime-TimeUnits{
+ width: 5.5em;
+}
+
+#pick-criteria td.value {
+ padding-right: 0.5em;
+ text-align: left;
+ font: message-box;
+}
+
+#editquery, #editsearches{
+ position: absolute;
+ margin-top: 0.2em;
+ right: 1em;
+ left: 60%;
+ top: 1em;
+/* margin-top: -1em; */
+}
+
+#editquery {
+ top: 1.3em;
+}
+
+
+#editsearches {
+ top: 24em;
+}
+
+
+#pick-criteria {
+ width: 58%;
+ padding-top: 0em;
+ margin-top: 0em;
+}
+
+#pick-criteria .titlebox-content {
+ overflow-x: auto;
+}
+
+#BuildQuery .submit {
+ width: 58%;
+}
+
+
+#sorting.titlebox {
+ width: 55%;
+ padding-right: 1em;
+}
+
+#display-options .submit {
+ width: 100%;
+}
+
+
+
+.search-result-views {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin-top: -2px;
+ margin-right: 0em;
+ padding: 0.25em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ background-color: #ccc;
+ border-left: 1px solid #999;
+ border-bottom: 1px solid #999;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+}
+
+
+
+.search-result-views li {
+
+ display: inline;
+}
+
+.search-result-views li:after {
+ content: " \00b7 ";
+}
+
+.search-result-views li:last-child:after {
+ content: "";
+
+}
+
+.edit-saved-searches .label {
+ display: inline-block;
+ width: 10em;
+ font-weight: bold;
+}
+
+span#display-options {
+ display: block;
+ padding-top: 2em;
+ margin-top: 2em;
+ border-top: 1px solid #ccc;
+ clear: both;
+}
+
+span#display-options .titlebox#sorting {
+ float: left;
+ width: auto;
+ margin-right: 2em;
+ min-width: 35%;
+}
+
+span#display-options .titlebox#columns {
+ float: left;
+}
+
+span#display-options .titlebox#columns table.edit-columns td {
+ padding: 0.5em;
+}
+
+span#display-options .titlebox#columns table.edit-columns div.row {
+ width: 9em;
+}
+span#display-options .titlebox#columns table.edit-columns span.label {
+ width: 2em;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value input,
+span#display-options .titlebox#columns table.edit-columns span.value select {
+ width: 7em;
+ padding: 0;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value {
+ display: inline-block;
+ width:7em;
+}
+
+#BuildQuery #formatbuttons.submit{
+ width: 85%;
+}
+
+.refresh {
+ float: left;
+}
+
+/* Force some widget to fit at max parent box */
+#HomeRefreshInterval, #SavedSearchLoad, #SavedSearchOwner {
+ max-width: 100%;
+}
+
diff --git a/rt/share/html/NoAuth/css/ballard/ticket.css b/rt/share/html/NoAuth/css/ballard/ticket.css
new file mode 100644
index 000000000..06b6678c9
--- /dev/null
+++ b/rt/share/html/NoAuth/css/ballard/ticket.css
@@ -0,0 +1,275 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+div#ticket-history div.ticket-transaction {
+ border-top: 1px solid #ccc;
+ padding-bottom: 0.25em;
+ position: relative; /* gives us a container for position: absolute */
+}
+
+div#ticket-history div.odd {
+ background-color: #fff;
+}
+
+div#ticket-history {
+
+ margin-top: 0.75em;
+ border-left: 1px solid #ccc;
+
+ border-right: 2px solid #999;
+ border-bottom: 2px solid #999;
+
+}
+
+.ticket-transaction div.metadata span.actions {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 0em;
+ background: #ccc;
+ text-align: right;
+ border-left: 1px solid #999;
+ border-bottom: 1px solid #999;
+ color: #ccc;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ white-space: nowrap;
+}
+
+.ticket-transaction div.metadata span.type {
+ text-align: center;
+ float: left;
+ margin: 0.25em 0.70em 0.25em 0.25em;
+ width: 1em;
+ height: 1.25em;
+ padding: 0.75em 0 0 0;
+ border-right: 1px solid #999;
+ border-bottom: 1px solid #999;
+ -moz-border-radius: 0.25em;
+ -webkit-border-bottom-right-radius: 0.25em;
+}
+
+div#ticket-history span.type a {
+ color: #fff;
+}
+
+
+div#ticket-history span.date {
+ width: 10em;
+}
+
+
+div#ticket-history span.description {
+ margin-left: 1em;
+ font-weight: bold;
+}
+
+div#ticket-history span.time-taken {
+ margin-left: 1em;
+}
+
+div#ticket-history div.content {
+ padding-right: 1em;
+ padding-bottom: 0.7em;
+ margin-left: 1.5em;
+}
+
+.ticket-transaction .messagebody {
+ font-size: 1em;
+ padding-left: 1em;
+ margin-top: 0.5em;
+ padding-top: 0.5em;
+ border-top: 1px solid #ccc;
+ /*overflow: auto; */
+ min-height: 2.5em;
+ /* To avoid overlapping of "downloadattachment" by messagebody */
+ clear: left;
+ word-wrap: break-word;
+}
+
+.ticket-transaction .messagebody img {
+ max-width: 100%;
+}
+
+div#ticket-history div.downloadattachment {
+float: right;
+clear: both;
+font-size: 0.9em;
+text-align: right;
+background: #ddd;
+padding: 0.5em;
+margin-left: 1em;
+
+border: 1px solid #ccc;
+border-right: 2px solid #aaa;
+border-bottom: 2px solid #aaa;
+margin-top: 0.5em;
+-moz-border-radius: 0.5em;
+-webkit-border-radius: 0.5em;
+
+}
+
+div#ticket-history div.downloadattachment .downloadcontenttype{
+color: #666;
+padding-right:0.25em;
+}
+
+
+div#ticket-history .message-header-key {
+ width: 7em;
+ font-weight: bold;
+ color: #666;
+}
+
+
+div#ticket-history .messagebody .messagebody{
+ font-size: 1em;
+ padding: 0;
+ border: 0;
+ margin: 0;
+}
+
+
+
+.ticket-transaction.basics .type { background: #b32; }
+.ticket-transaction.cfs .type { background: #b32; }
+.ticket-transaction.people .type { background: #48c; }
+.ticket-transaction.links .type { background: #316531; }
+.ticket-transaction.dates .type { background: #633063; }
+.ticket-transaction.message .type { background: #069; }
+.ticket-transaction.reminders .type { background: #369; }
+.ticket-transaction.other .type { background: #abc; }
+
+
+
+
+.ticket-info-cfs .titlebox-title .left { background-color: #b32; color: #fff;}
+.ticket-info-basics .titlebox-title .left { background-color: #b32; color: #fff;}
+.ticket-info-people .titlebox-title .left { background-color: #48c; color: #fff;}
+.ticket-info-requestor .titlebox-title .left { white-space: nowrap; background-color: #48c; color: #fff;}
+.ticket-info-links .titlebox-title .left { background-color: #316531; color: #fff;}
+.ticket-info-reminders .titlebox-title .left { background-color: #369; color: #fff;}
+.ticket-info-dates .titlebox-title .left { background-color: #633063; color: #fff;}
+.ticket-info-attachments .titlebox-title .left { background-color: #993366; color: #fff;}
+
+
+.ticket-summary .titlebox-title .left a, .ticket-summary .titlebox-title .left a:visited { color: #fff;}
+
+.unread-messages .titlebox , .unread-messages .titlebox-title .left {
+ border: 1px solid #99a;
+ border-right: 2px solid #aab;
+ border-bottom: 2px solid #aab;
+
+}
+
+
+.unread-messages .titlebox {
+ background-color: #dde;
+}
+
+.unread-messages .titlebox-title .left {
+ background-color: #cce;
+}
+
+.ticket-inactive {
+ text-decoration: line-through;
+ color: #666
+}
+
+table.ticket-summary td.boxcontainer:first-child {
+ width: 50%;
+}
+
+div.requestor-ticket-links {
+ text-align: left;
+ font-size: 0.8em;
+ padding-top: 0.25em;
+}
+
+.more-about-requestor-extra-field .label {
+ display: inline-block;
+ width: 8em;
+ font-weight: bold;
+ text-align: right;
+}
+
+.more-about-requestor-extra-field .value {
+ display: inline-block;
+}
+
+.ticket-info-requestor .more-about-requestor-extra,
+.ticket-info-requestor .comments-about-user,
+.ticket-info-requestor .more-about-requestor-tickets,
+.ticket-info-requestor .more-about-user-groups
+{
+ margin: 1em 0;
+}
+
+.ticket-info-requestor .comments-about-user .label,
+.ticket-info-requestor .more-about-user-groups .label,
+.ticket-info-requestor .more-about-requestor-tickets .label
+{
+ display: block;
+ font-weight: bold;
+ text-align: left;
+}
+
+.ticket-info-requestor .more-about-user-groups .value ul,
+.ticket-info-requestor .more-about-requestor-tickets ul
+{
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+
+/* textareas get to be bigger when we're in a table */
+tr.edit-custom-field.cftype-Text textarea,
+tr.edit-custom-field.cftype-Freeform input,
+tr.edit-custom-field.cftype-Wikitext textarea
+{
+ width: 100%;
+}
diff --git a/rt/share/html/NoAuth/css/base/admin.css b/rt/share/html/NoAuth/css/base/admin.css
new file mode 100644
index 000000000..5f5d6fc24
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/admin.css
@@ -0,0 +1,97 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+ul.list-menu .menu-item {
+ font-size: 1.25em;
+}
+ul.list-menu {
+ list-style: none;
+ width: 35%;
+}
+ul.list-menu > li {
+ margin-bottom: 1em;
+}
+ul.list-menu .description {
+ font-style: italic;
+ display: block;
+ padding: 0.2em 0 0 1em;
+}
+
+ul.list-menu ul {
+ list-style: none;
+ padding: 0.25em 0 0 1em;
+}
+ul.list-menu ul li {
+ display: inline;
+ margin-right: 0.5em;
+}
+
+#rt-portal .titlebox iframe {
+ height: 100%;
+ width: 100%;
+ border: 0;
+}
+
+#rt-portal .titlebox {
+ position: absolute;
+ top: 1em;
+ right: 1em;
+ bottom: 3em;
+ width: 55%;
+ padding-bottom: 1em;
+}
+
+#rt-portal .titlebox-content {
+ height: 100%;
+ padding: 0;
+}
+
+#rt-portal .titlebox.rolled-up {
+ bottom: auto;
+ padding-bottom: 0;
+}
+
diff --git a/rt/share/html/NoAuth/css/base/articles.css b/rt/share/html/NoAuth/css/base/articles.css
new file mode 100644
index 000000000..7c538b240
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/articles.css
@@ -0,0 +1,54 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+#comp-Articles-Article-Search .label h2 {
+ text-align: left;
+}
+
+.articles-select-article select {
+ max-width: 20em;
+}
diff --git a/rt/share/html/NoAuth/css/web2/collection.css b/rt/share/html/NoAuth/css/base/collection.css
index 484943d62..595faeeda 100644
--- a/rt/share/html/NoAuth/css/web2/collection.css
+++ b/rt/share/html/NoAuth/css/base/collection.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,4 +48,3 @@
table.collection td:first-child, table.collection th:first-child {
padding-left: 1em;
}
-
diff --git a/rt/share/html/NoAuth/css/3.4-compat/forms.css b/rt/share/html/NoAuth/css/base/farbtastic.css
index 8eda905e8..8d9e8e08e 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/forms.css
+++ b/rt/share/html/NoAuth/css/base/farbtastic.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,66 +45,54 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-form .label, form label {
- font-weight: bold;
+/**
+ * Farbtastic Color Picker 1.2
+ * © 2008 Steven Wittens
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+.farbtastic {
+ position: relative;
}
-
-.submit {
- background: #069;
-%# These borders are needed so the container actually surrounds the floats inside it
- border-top: 1px solid white;
- border-bottom: 1px solid white;
- color: #ffdb00;
- font-weight: bold;
-}
-
-.submit .buttons { float: right; }
-.submit .extra-buttons { float: left; }
-.submit .button { font-size: 0.9em; }
-
-.submit .submit-clear { clear: right; }
-
-.input-row {
- clear: both;
- padding: 0.25em;
-}
-
-%# ComboBox styles... some properties like height and width must be dynamically
-%# set in the JS (at least for now).
-.combobox {
- position: relative;
- border: 2px inset ButtonHighlight;
- padding-left: 0.5em;
- padding-bottom: 0.1em;
+.farbtastic * {
+ position: absolute;
+ cursor: crosshair;
}
-
-.combobox .combo-button {
- padding: 0 2px 0 2px;
- margin: 0;
- background: ButtonFace;
- color: ButtonText;
- border: 2px outset ButtonHighlight;
- cursor: default;
- font-size: 8pt;
+.farbtastic, .farbtastic .wheel {
+ width: 195px;
+ height: 195px;
}
-
-.combobox .combo-text {
- border: none;
- margin: 0;
- padding: 0;
+.farbtastic .color, .farbtastic .overlay {
+ top: 47px;
+ left: 47px;
+ width: 101px;
+ height: 101px;
}
-
-.combobox .combo-list {
- z-index: 200;
+.farbtastic .wheel {
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/farbtastic/wheel.png) no-repeat;
+ width: 195px;
+ height: 195px;
}
-
-#quickbar #topactions form {
- display: inline;
- margin-left: 2em;
+.farbtastic .overlay {
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/farbtastic/mask.png) no-repeat;
}
-
-.cfinvalidfield {
- font-style: italic;
- color: red;
+.farbtastic .marker {
+ width: 17px;
+ height: 17px;
+ margin: -8px 0 0 -8px;
+ overflow: hidden;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/farbtastic/marker.png) no-repeat;
}
diff --git a/rt/share/html/NoAuth/css/web2/forms.css b/rt/share/html/NoAuth/css/base/forms.css
index 2d3435619..eab97b19b 100755..100644
--- a/rt/share/html/NoAuth/css/web2/forms.css
+++ b/rt/share/html/NoAuth/css/base/forms.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -79,7 +79,7 @@ div.button-row {
}
-input[type=reset], input[type=submit], input[class=button] {
+input[type=reset], input[type=submit], input[class=button], button {
color: #fff;
background: #3858a3;
padding: 0.25em;
@@ -140,13 +140,17 @@ div.results .titlebox-content {
font-size: 0.8em;
padding-right: .5em;
-}
+}
.cflabel {
text-align: right;
font-size: 0.8em;
padding-right: .5em;
- width: 25%;
+ width: 12em;
+}
+
+td.cflabel {
+ width: auto;
}
.labeltop, .label, .value {
@@ -163,6 +167,7 @@ div.submit {
div.submit .extra-buttons {
text-align: left;
+ float: left;
}
@@ -171,7 +176,7 @@ div.widget {
clear: both;
}
-div.widget .label {
+div.widget .label {
text-align: right;
display: block;
width: 15em;
@@ -207,7 +212,7 @@ div.widget .hints {
}
/* this style replaces the default down-triangle with one that looks more like
- * native widget sets. It does not work in IE as it's an :after pseudo element
+ * native widget sets. It does not work in IE as it's an :after pseudo element
* with a "content" value. but that's ok because IE can't display unicode 25be
* anyway */
@@ -241,3 +246,25 @@ div.widget .hints {
color: red;
}
+form div.submit div.buttons {
+ min-height: 2.8em;
+}
+
+form div.submit div.buttons div.back {
+ position: relative;
+ float: left;
+ width: 50%;
+ text-align: left;
+}
+
+form div.submit div.buttons div.next {
+ position: relative;
+ float: right;
+ width: 50%;
+}
+
+/* query builder */
+
+#formatbuttons {
+ clear: both;
+}
diff --git a/rt/share/html/NoAuth/css/base/history-folding.css b/rt/share/html/NoAuth/css/base/history-folding.css
new file mode 100644
index 000000000..542591ca8
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/history-folding.css
@@ -0,0 +1,91 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.message-stanza-folder {
+ color: #500050;
+ font-size: 0.9em;
+ padding: 0.2em;
+ cursor: pointer;
+}
+
+.message-stanza-folder.open {
+ color: #ccc;
+}
+
+.message-stanza-folder:before, .message-stanza-folder:after {
+ content: " - ";
+}
+
+.message-stanza.closed {
+ display: none;
+}
+
+/* Message quoting */
+
+.message-stanza {
+ color: #000;
+}
+
+.message-stanza .message-stanza{
+ color: #500050;
+}
+
+.message-stanza .message-stanza .message-stanza{
+ color: #1a1aa6;
+}
+
+.message-stanza .message-stanza .message-stanza .message-stanza {
+ color: #006633;
+}
+
+.message-stanza .message-stanza .message-stanza .message-stanza .message-stanza {
+ color: #003366;
+}
+
+.message-stanza .message-stanza .message-stanza .message-stanza .message-stanza .message-stanza {
+ color: #993366;
+}
diff --git a/rt/share/html/NoAuth/css/base/jquery-ui.css b/rt/share/html/NoAuth/css/base/jquery-ui.css
new file mode 100644
index 000000000..820996ea8
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/jquery-ui.css
@@ -0,0 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+@import "jquery-ui.custom.modified.css";
+@import "ui.timepickr.css";
+@import "ui.timepickr.custom.css";
diff --git a/rt/share/html/NoAuth/css/base/jquery-ui.custom.modified.css b/rt/share/html/NoAuth/css/base/jquery-ui.custom.modified.css
new file mode 100644
index 000000000..7a323229a
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/jquery-ui.custom.modified.css
@@ -0,0 +1,454 @@
+/*
+ * jQuery UI CSS Framework 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial,Helvetica,sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0.3em&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Arial,Helvetica,sans-serif; font-size: 1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,Helvetica,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 0.3em; -webkit-border-top-left-radius: 0.3em; border-top-left-radius: 0.3em; }
+.ui-corner-tr { -moz-border-radius-topright: 0.3em; -webkit-border-top-right-radius: 0.3em; border-top-right-radius: 0.3em; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 0.3em; -webkit-border-bottom-left-radius: 0.3em; border-bottom-left-radius: 0.3em; }
+.ui-corner-br { -moz-border-radius-bottomright: 0.3em; -webkit-border-bottom-right-radius: 0.3em; border-bottom-right-radius: 0.3em; }
+.ui-corner-top { -moz-border-radius-topleft: 0.3em; -webkit-border-top-left-radius: 0.3em; border-top-left-radius: 0.3em; -moz-border-radius-topright: 0.3em; -webkit-border-top-right-radius: 0.3em; border-top-right-radius: 0.3em; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 0.3em; -webkit-border-bottom-left-radius: 0.3em; border-bottom-left-radius: 0.3em; -moz-border-radius-bottomright: 0.3em; -webkit-border-bottom-right-radius: 0.3em; border-bottom-right-radius: 0.3em; }
+.ui-corner-right { -moz-border-radius-topright: 0.3em; -webkit-border-top-right-radius: 0.3em; border-top-right-radius: 0.3em; -moz-border-radius-bottomright: 0.3em; -webkit-border-bottom-right-radius: 0.3em; border-bottom-right-radius: 0.3em; }
+.ui-corner-left { -moz-border-radius-topleft: 0.3em; -webkit-border-top-left-radius: 0.3em; border-top-left-radius: 0.3em; -moz-border-radius-bottomleft: 0.3em; -webkit-border-bottom-left-radius: 0.3em; border-bottom-left-radius: 0.3em; }
+.ui-corner-all { -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
+
+/*
+ * jQuery UI Accordion 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }/*
+ * jQuery UI Autocomplete 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+ list-style:none;
+ padding: 2px;
+ margin: 0;
+ display:block;
+ float: left;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+ margin:0;
+ padding: 0;
+ zoom: 1;
+ float: left;
+ clear: left;
+ width: 100%;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration:none;
+ display:block;
+ padding:.2em .4em;
+ line-height:1.5;
+ zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+/*
+ * jQuery UI Tabs 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.7
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+#ui-datepicker-div { display: none;}
+.ui-datepicker { width: 17em; padding: .2em .2em 0; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+ display: none; /*sorry for IE5*/
+ display/**/: block; /*sorry for IE5*/
+ position: absolute; /*must have*/
+ z-index: -1; /*must have*/
+ filter: mask(); /*must have*/
+ top: -4px; /*must have*/
+ left: -4px; /*must have*/
+ width: 200px; /*must have*/
+ height: 200px; /*must have*/
+}
diff --git a/rt/share/html/NoAuth/css/web2/login.css b/rt/share/html/NoAuth/css/base/login.css
index f58de3dbe..bd05a2845 100644
--- a/rt/share/html/NoAuth/css/web2/login.css
+++ b/rt/share/html/NoAuth/css/base/login.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@
#login-box {
width: 30em;
-
+
margin-right:auto;margin-left:auto;
padding-top: 2em;
padding-bottom: 2em;
@@ -84,3 +84,19 @@ margin-right:auto;margin-left:auto;
#login-box .button-row {
margin-top: 0.5em;
}
+
+#quick-personal {
+ position: absolute;
+ z-index: 9999;
+ left: 0;
+ /* This avoids a very weird bug in Chrome where opening a select causes a
+ * hover event at (0,0), which will be over top of the menu sometimes */
+ top: 1px;
+}
+
+#quick-personal #not-logged-in {
+ display: block;
+ padding-top: 0.5em;
+ padding-left: 1em;
+}
+
diff --git a/rt/share/html/NoAuth/css/3.4-compat/main.css b/rt/share/html/NoAuth/css/base/main.css
index 6478d2d89..9f77c8aee 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/main.css
+++ b/rt/share/html/NoAuth/css/base/main.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,29 +47,27 @@
%# END BPS TAGGED BLOCK }}}
% $m->callback(CallbackName => 'Begin');
-%# Import the 3.5 styles we want to build off of...
-@import "../3.5-default/logo.css";
-@import "../3.5-default/misc.css";
-@import "../3.5-default/transactions.css";
-@import "../3.5-default/approvals.css";
-@import "../3.5-default/login.css";
-@import "../3.5-default/quickbar.css";
-@import "../3.5-default/ticket.css";
-
-% $m->callback(CallbackName => 'Post3.5');
-
-%# ...and then import the 3.4 compat styles afterwards so they can cascade
-@import "nav.css";
-@import "footer.css";
-@import "body.css";
-@import "titlebox.css";
-@import "header.css";
+@import "yui-fonts.css";
+@import "jquery-ui.css";
+@import "superfish.css";
+@import "superfish-navbar.css";
+@import "superfish-vertical.css";
+@import "tablesorter.css";
+@import "farbtastic.css";
+@import "collection.css";
@import "forms.css";
-@import "transactions.css";
+@import "misc.css";
+@import "nav.css";
+@import "ticket-form.css";
+@import "rights-editor.css";
+@import "theme-editor.css";
@import "ticket.css";
+@import "admin.css";
+@import "articles.css";
+@import "portlets.css";
+@import "tools.css";
@import "login.css";
-@import "quickbar.css";
-@import "misc.css";
+@import "history-folding.css";
% $m->callback(CallbackName => 'End');
diff --git a/rt/share/html/NoAuth/css/base/misc.css b/rt/share/html/NoAuth/css/base/misc.css
index ede9daeb2..dd932091f 100644
--- a/rt/share/html/NoAuth/css/base/misc.css
+++ b/rt/share/html/NoAuth/css/base/misc.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,30 +47,6 @@
%# END BPS TAGGED BLOCK }}}
.hide, .hidden { display: none !important; }
-div.autocomplete {
- position: absolute;
- background-color: white;
- border: 1px solid #888;
- margin: 0px;
- padding: 0px;
-}
-div.autocomplete ul {
- list-style-type: none;
- margin: 0px;
- padding: 0px;
-}
-div.autocomplete ul li.selected {
- background-color: #0088cc;
- color: #eee;
-}
-div.autocomplete ul li {
- list-style-type: none;
- display: block;
- margin: 0;
- padding: 2px;
-}
-
-
.clear { clear: both; }
* html .clearfix {
@@ -98,3 +74,37 @@ hr.clear {
border: none;
font-size: 1px;
}
+
+
+/* Custom fields */
+
+/* Only apply these when we're not rendering in a table, hence the leading div. */
+div.edit-custom-field {
+ width: 48%;
+ float: left;
+ margin: 0.5em;
+}
+
+div.edit-custom-field .cflabel {
+ float: left;
+ padding-right: 0.5em;
+}
+
+.cflabel .name { font-weight: bold; }
+.cflabel .type { font-style: italic; }
+
+fieldset.cfedit {
+ border: none;
+ padding: 0;
+ margin: 0;
+}
+
+.query-stacktrace-toggle {
+ float: right;
+}
+
+/* jQuery UI overrides */
+.ui-widget {
+ font-family: arial,helvetica,sans-serif !important;
+}
+
diff --git a/rt/share/html/NoAuth/css/web2/admin.css b/rt/share/html/NoAuth/css/base/nav.css
index d421f66de..da6a6f823 100644
--- a/rt/share/html/NoAuth/css/web2/admin.css
+++ b/rt/share/html/NoAuth/css/base/nav.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,16 +45,20 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-ul.list-menu .menu-item {
- font-size: 1.25em;
+.sf-menu li.active > .menu-item {
+ font-weight: bold;
}
-ul.list-menu {
- list-style: none;
+#topactions input[type="submit"], #topactions input.button {
+ width: auto;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
}
-ul.list-menu .description {
- display: block;
- padding: 0.5em;
- font-style: italic;
- padding-left: 1em;
+
+#topactions form {
+ display: block;
+ float: right;
+ margin-left: 1em;
+ text-align: right;
}
+
diff --git a/rt/share/html/NoAuth/css/web2/portlets.css b/rt/share/html/NoAuth/css/base/portlets.css
index f295171a7..d11143c02 100644
--- a/rt/share/html/NoAuth/css/web2/portlets.css
+++ b/rt/share/html/NoAuth/css/base/portlets.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -61,11 +61,4 @@ table.dashboard {
.quick-create input[type="text"], .quick-create textarea {
width: 100%;
-}
-
-.reminders blockquote {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- margin-left: 1em;
- margin-right: 1em;
}
diff --git a/rt/share/html/NoAuth/css/base/rights-editor.css b/rt/share/html/NoAuth/css/base/rights-editor.css
new file mode 100644
index 000000000..5443b0a19
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/rights-editor.css
@@ -0,0 +1,177 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+/* Styles for putting jQuery UI tabs on the left */
+.rights-editor {
+ border: none;
+ background: transparent;
+ width: 100%;
+ font-size: 110%;
+}
+
+/* Position and style the left tabs */
+.rights-editor > .ui-tabs-nav {
+ float: left;
+ background: transparent;
+ border: none;
+ color: black;
+ width: 25%;
+}
+
+.rights-editor > .ui-tabs-nav li {
+ float: none;
+ display: block;
+ border: none;
+ background: transparent;
+}
+
+.rights-editor > .ui-tabs-nav li a {
+ float: none;
+ display: block;
+ padding: 0 0 0.2em 1em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.rights-editor .ui-tabs-nav li.category {
+ text-transform: uppercase;
+}
+
+li.category ~ li.category {
+ margin-top: 1em;
+}
+
+.rights-editor li.addprincipal .warning {
+ color: #a00;
+ display: none;
+}
+
+/* Position the outer-most panel */
+.rights-editor > .ui-tabs-panel {
+ position: static;
+ float: left;
+ width: 72%;
+}
+
+.rights-editor .ui-tabs-panel {
+ padding: 2px;
+}
+
+.rights-editor .ui-tabs-panel h3 {
+ color: black;
+ margin-top: 0;
+ line-height: 0.8em;
+}
+
+.rights-editor .ui-tabs-panel h3 .subgroups {
+ color: #444;
+ font-size: 80%;
+}
+
+.category-tabs {
+ width: 100%;
+ border: none;
+ background: none;
+}
+
+.category-tabs .ui-tabs-nav {
+ border: none;
+ background: none;
+}
+
+.category-tabs .ui-tabs-panel {
+ background: none;
+ border: 1px solid #aaa;
+}
+
+.rights-editor li.ui-tabs-selected {
+ background: white !important;
+ color: #222 !important;
+ border-color: #aaa !important;
+ font-weight: bold;
+}
+
+.rights-editor .ui-state-active a,
+.rights-editor .ui-state-hover a {
+ color: #222 !important;
+}
+
+.rights-editor .category-tabs li.ui-state-hover {
+ background: #f6f6f6;
+ border-color: #aaa !important;
+}
+
+.rights-editor .separator {
+ display: none;
+}
+
+.rights-editor ul.rights-list {
+ list-style: none;
+}
+
+.rights-editor ul.rights-list li {
+ padding: 0.2em 0;
+}
+
+.rights-editor ul.rights-list li:nth-child(even) {
+ background: #f4f4f4;
+}
+
+.rights-editor ul.rights-list li label {
+ cursor: pointer;
+}
+
+.rights-editor .rightname {
+ color: #888;
+ font-size: 0.9em;
+
+ position: absolute;
+ right: 1em;
+ margin-top: 0.3em;
+
+ text-align: right;
+}
diff --git a/rt/share/html/NoAuth/css/base/superfish-navbar.css b/rt/share/html/NoAuth/css/base/superfish-navbar.css
new file mode 100644
index 000000000..9a3f24cd9
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/superfish-navbar.css
@@ -0,0 +1,93 @@
+
+/*** adding the class sf-navbar in addition to sf-menu creates an all-horizontal nav-bar menu ***/
+.sf-navbar {
+ background: #BDD2FF;
+ height: 2em;
+ padding-bottom: 2em;
+ position: relative;
+}
+.sf-navbar li {
+ background: #AABDE6;
+ position: static;
+}
+.sf-navbar a {
+ border-top: none;
+}
+.sf-navbar li ul {
+ width: 44em; /*IE6 soils itself without this*/
+}
+.sf-navbar li li {
+ background: #BDD2FF;
+ position: relative;
+}
+.sf-navbar li li ul {
+ width: 13em;
+}
+.sf-navbar li li li {
+ width: 100%;
+}
+.sf-navbar ul li {
+ width: auto;
+ float: left;
+}
+.sf-navbar a, .sf-navbar a:visited {
+ border: none;
+}
+.sf-navbar li.current {
+ background: #BDD2FF;
+}
+.sf-navbar li:hover,
+.sf-navbar li.sfHover,
+.sf-navbar li li.current,
+.sf-navbar a:focus, .sf-navbar a:hover, .sf-navbar a:active {
+ background: #BDD2FF;
+}
+.sf-navbar ul li:hover,
+.sf-navbar ul li.sfHover,
+ul.sf-navbar ul li:hover li,
+ul.sf-navbar ul li.sfHover li,
+.sf-navbar ul a:focus, .sf-navbar ul a:hover, .sf-navbar ul a:active {
+ background: #D1DFFF;
+}
+ul.sf-navbar li li li:hover,
+ul.sf-navbar li li li.sfHover,
+.sf-navbar li li.current li.current,
+.sf-navbar ul li li a:focus, .sf-navbar ul li li a:hover, .sf-navbar ul li li a:active {
+ background: #E6EEFF;
+}
+ul.sf-navbar .current ul,
+ul.sf-navbar ul li:hover ul,
+ul.sf-navbar ul li.sfHover ul {
+ left: 0;
+ top: 2em; /* match top ul list item height */
+}
+ul.sf-navbar .current ul ul {
+ top: -999em;
+}
+
+.sf-navbar li li.current > a {
+ font-weight: bold;
+}
+
+/*** point all arrows down ***/
+/* point right for anchors in subs */
+.sf-navbar ul .sf-sub-indicator { background-position: -10px -100px; }
+.sf-navbar ul a > .sf-sub-indicator { background-position: 0 -100px; }
+/* apply hovers to modern browsers */
+.sf-navbar ul a:focus > .sf-sub-indicator,
+.sf-navbar ul a:hover > .sf-sub-indicator,
+.sf-navbar ul a:active > .sf-sub-indicator,
+.sf-navbar ul li:hover > a > .sf-sub-indicator,
+.sf-navbar ul li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px -100px; /* arrow hovers for modern browsers*/
+}
+
+/*** remove shadow on first submenu ***/
+.sf-navbar > li > ul {
+ background: transparent;
+ padding: 0;
+ -moz-border-radius-bottomleft: 0;
+ -moz-border-radius-topright: 0;
+ -webkit-border-top-right-radius: 0;
+ -webkit-border-bottom-left-radius: 0;
+}
diff --git a/rt/share/html/NoAuth/css/base/superfish-vertical.css b/rt/share/html/NoAuth/css/base/superfish-vertical.css
new file mode 100644
index 000000000..8025b7859
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/superfish-vertical.css
@@ -0,0 +1,23 @@
+/*** adding sf-vertical in addition to sf-menu creates a vertical menu ***/
+.sf-vertical, .sf-vertical li {
+ width: 10em;
+}
+/* this lacks ul at the start of the selector, so the styles from the main CSS file override it where needed */
+.sf-vertical li:hover ul,
+.sf-vertical li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+
+/*** alter arrow directions ***/
+.sf-vertical .sf-sub-indicator { background-position: -10px 0; } /* IE6 gets solid image only */
+.sf-vertical a > .sf-sub-indicator { background-position: 0 0; } /* use translucent arrow for modern browsers*/
+
+/* hover arrow direction for modern browsers*/
+.sf-vertical a:focus > .sf-sub-indicator,
+.sf-vertical a:hover > .sf-sub-indicator,
+.sf-vertical a:active > .sf-sub-indicator,
+.sf-vertical li:hover > a > .sf-sub-indicator,
+.sf-vertical li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px 0; /* arrow hovers for modern browsers*/
+} \ No newline at end of file
diff --git a/rt/share/html/NoAuth/css/base/superfish.css b/rt/share/html/NoAuth/css/base/superfish.css
new file mode 100644
index 000000000..31198e423
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/superfish.css
@@ -0,0 +1,136 @@
+
+/*** ESSENTIAL STYLES ***/
+.sf-menu, .sf-menu * {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.sf-menu {
+ line-height: 1.0;
+}
+.sf-menu ul {
+ position: absolute;
+ top: -999em;
+ width: 10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+ width: 100%;
+}
+.sf-menu li:hover {
+ visibility: inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+ float: left;
+ position: relative;
+}
+.sf-menu a {
+ display: block;
+ position: relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+ left: 0;
+ top: 2em; /* match top ul list item height */
+ z-index: 99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+
+/*** DEMO SKIN ***/
+.sf-menu {
+ float: left;
+ margin-bottom: 1em;
+}
+.sf-menu a {
+ border-left: 1px solid #fff;
+ border-top: 1px solid #CFDEFF;
+ padding: .75em 1em;
+ text-decoration:none;
+}
+.sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/
+ color: #13a;
+}
+.sf-menu li {
+ background: #BDD2FF;
+}
+.sf-menu li li {
+ background: #AABDE6;
+}
+.sf-menu li li li {
+ background: #9AAEDB;
+}
+.sf-menu li:hover, .sf-menu li.sfHover,
+.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
+ background: #CFDEFF;
+ outline: 0;
+}
+
+/*** arrows **/
+.sf-menu a.sf-with-ul {
+ padding-right: 2.25em;
+ min-width: 1px; /* trigger IE7 hasLayout so spans position accurately */
+}
+.sf-sub-indicator {
+ position: absolute;
+ display: block;
+ right: .75em;
+ top: 1.05em; /* IE6 only */
+ width: 10px;
+ height: 10px;
+ text-indent: -999em;
+ overflow: hidden;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-ffffff.png) no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
+}
+a > .sf-sub-indicator { /* give all except IE6 the correct values */
+ top: .8em;
+ background-position: 0 -100px; /* use translucent arrow for modern browsers*/
+}
+/* apply hovers to modern browsers */
+a:focus > .sf-sub-indicator,
+a:hover > .sf-sub-indicator,
+a:active > .sf-sub-indicator,
+li:hover > a > .sf-sub-indicator,
+li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px -100px; /* arrow hovers for modern browsers*/
+}
+
+/* point right for anchors in subs */
+.sf-menu ul .sf-sub-indicator { background-position: -10px 0; }
+.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; }
+/* apply hovers to modern browsers */
+.sf-menu ul a:focus > .sf-sub-indicator,
+.sf-menu ul a:hover > .sf-sub-indicator,
+.sf-menu ul a:active > .sf-sub-indicator,
+.sf-menu ul li:hover > a > .sf-sub-indicator,
+.sf-menu ul li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px 0; /* arrow hovers for modern browsers*/
+}
+
+/*** shadows for all but IE6 ***/
+.sf-shadow ul {
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/shadow.png) no-repeat bottom right;
+ padding: 0 8px 9px 0;
+ -moz-border-radius-bottomleft: 17px;
+ -moz-border-radius-topright: 17px;
+ -webkit-border-top-right-radius: 17px;
+ -webkit-border-bottom-left-radius: 17px;
+}
+.sf-shadow ul.sf-shadow-off {
+ background: transparent;
+}
diff --git a/rt/share/html/NoAuth/css/base/tablesorter.css b/rt/share/html/NoAuth/css/base/tablesorter.css
new file mode 100644
index 000000000..34d8c9c15
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/tablesorter.css
@@ -0,0 +1,52 @@
+/*
+ *
+ * TableSorter 2.0 - Client-side table sorting with ease!
+ * @requires jQuery v1.2.3
+ *
+ * Copyright (c) 2007 Christian Bach
+ * Examples and docs at: http://tablesorter.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/* tables */
+table.tablesorter {
+ background-color: #CDCDCD;
+ margin:10px 0pt 15px;
+ font-size: 8pt;
+ width: 100%;
+ text-align: left;
+}
+table.tablesorter thead tr th, table.tablesorter tfoot tr th {
+ background-color: #e6EEEE;
+ border: 1px solid #FFF;
+ font-size: 8pt;
+ padding: 4px;
+}
+table.tablesorter thead tr .header {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/tablesorter/bg.gif);
+ background-repeat: no-repeat;
+ background-position: center right;
+ cursor: pointer;
+ padding-right: 20px;
+}
+table.tablesorter tbody td {
+ color: #3D3D3D;
+ padding: 4px;
+ background-color: #FFF;
+ vertical-align: top;
+}
+table.tablesorter tbody tr.odd td {
+ background-color:#F0F0F6;
+}
+table.tablesorter thead tr .headerSortUp {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/tablesorter/asc.gif);
+}
+table.tablesorter thead tr .headerSortDown {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/tablesorter/desc.gif);
+}
+table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
+background-color: #8dbdd8;
+}
diff --git a/rt/share/html/NoAuth/css/3.5-default/quickbar.css b/rt/share/html/NoAuth/css/base/theme-editor.css
index 965ea3097..0c798ff93 100644
--- a/rt/share/html/NoAuth/css/3.5-default/quickbar.css
+++ b/rt/share/html/NoAuth/css/base/theme-editor.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,54 +45,67 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#quickbar #quick-personal {
- display: inline;
- color: #888;
- padding: 0.5em 1em 0 0;
- float: right;
+#upload-logo h2, #pick-section h2 {
+ margin: 0 0 0.5em 0;
}
-#quickbar #quick-personal span {
- font-weight: bold;
+#custom-css h2 {
+ margin: 0;
}
-#quickbar #quick-personal :link,
-#quickbar #quick-personal :visited
-{
- color: #888;
+#upload-logo label {
font-weight: bold;
}
-#quickbar #quick-personal :link:hover,
-#quickbar #quick-personal :visited:hover
-{
- color: black;
+#logo-theme-editor a img {
+ border: none;
}
-#quickbar #topactions {
- float: right;
- clear: right;
+#simple-customize {
+ float: left;
+ width: 48%;
+}
+
+#custom-css {
+ float: left;
+ width: 48%;
+}
+
+#custom-css textarea {
+ width: 100%;
+}
- font-size: 0.9em;
- padding: 1em;
+#customize-theme ol li {
+ font-size: 1.2em;
+ font-weight: bold;
}
-#quickbar #topactions form {
- display: inline;
- margin-left: 1em;
+#customize-theme ol li .description,
+#customize-theme ol li label
+{
+ font-weight: normal;
}
-#quickbar #topactions form .button {
- padding: 0 2px 0 2px;
+#customize-theme #section {
font-size: 1em;
- margin: 0;
}
-#quickbar #topactions form .field {
- padding: 1px;
- font-size: 0.9em;
+.color-template {
+ height: 2em;
+ margin: 0 0 0.5em 0;
+}
+
+.primary-colors, #color-picker {
+ margin-top: 0.5em;
}
-#quickbar #topactions form input.field {
- padding: 3px;
+.primary-colors {
+ float: left;
+ width: 20%;
}
+
+#color-picker {
+ float: right;
+ width: 78%;
+}
+
diff --git a/rt/share/html/NoAuth/css/3.4-compat/nav.css b/rt/share/html/NoAuth/css/base/ticket-form.css
index d91022be1..daab263b1 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/nav.css
+++ b/rt/share/html/NoAuth/css/base/ticket-form.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,62 +45,85 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#nav {
- clear: left;
- float: left;
- width: 18%;
- font-size: 1.4em;
- color: #eee;
- margin: 0;
- background: #4282b5 url(<%RT->Config->Get('WebImagesURL')%>/css/cbr.gif) no-repeat bottom right;
+.ticket-info-basics input[name="Subject"] {
+ width: 20em;
}
-#nav #system-menu {
- padding: 0 0.2em 0.2em 0.2em;
- margin-top: 0;
-/* background: transparent url(<%RT->Config->Get('WebImagesURL')%>/css/ctr.gif) no-repeat top right; */
+#ticket-create-metadata .cflabel .name,
+#ticket-update-metadata .cflabel .name {
+ font-weight: normal;
}
-#nav ul {
- list-style: none;
- padding-left: 0.5em;
- margin-left: 0;
+#ticket-create-message .messagedetails,
+#ticket-update-message .messagedetails
+{
+ margin-bottom: 0.5em;
}
-#nav ul .bullet, #nav ul .separator {
- display: none;
+#ticket-create-message .messagedetails input[type="text"],
+#ticket-update-message .messagedetails input[type="text"] {
+ width: 90%;
}
-#nav ul li {
- padding: 0.4em 0 0.4em 0.2em;
- border-bottom: 1px solid white;
+#ticket-create-message #SubmitTicket,
+#ticket-update-message #SubmitTicket {
+ padding-bottom: 2em;
}
-#nav li ul {
- font-size: 0.9em;
+.ticket-info-squelch ul, #previewscrips ul {
+ list-style: none;
}
-#nav li ul li {
- border-bottom: none;
- padding: 0.2em 0 0 0;
+iframe.richtext-editor {
+ background-color: white !important;
}
-#nav :link, #nav :visited {
- text-decoration: none;
- color: #eee;
+.messagebox-container.action-response textarea,
+.messagebox-container.action-response iframe
+{
+ background-color: #fcc !important;
+}
+
+/*
+% if ( RT->Config->Get("UseSideBySideLayout", $session{'CurrentUser'}) ) {
+*/
+
+#ticket-create-metadata,
+#ticket-update-metadata {
+ float: right;
+ width: 40%;
+ clear: right;
}
-#nav :link:hover,
-#nav :visited:hover,
-#nav :link.selected,
-#nav :visited.selected
-{
- color: #ff6;
+#ticket-create-message,
+#ticket-update-message {
+ float: left;
+ width: 58%;
+ clear: left;
}
-#nav :link.selected,
-#nav :visited.selected
-{
- text-decoration: underline;
- font-weight: bold;
+@media (max-width: 950px) {
+ /* Revert to a single column when we're less than 1000px wide */
+ #ticket-create-metadata,
+ #ticket-update-metadata,
+ #ticket-create-message,
+ #ticket-update-message
+ {
+ float: none;
+ width: auto;
+ clear: both;
+ }
+}
+
+#comp-Ticket-Update #body {
+ padding-top: 3em;
+}
+
+#ticket-create-message .button[name="AddMoreAttach"],
+#ticket-update-message .button[name="AddMoreAttach"] {
+ float: right;
}
+
+/*
+% }
+*/
diff --git a/rt/share/html/NoAuth/css/base/ticket.css b/rt/share/html/NoAuth/css/base/ticket.css
new file mode 100644
index 000000000..f6d7233c1
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/ticket.css
@@ -0,0 +1,146 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+#requestor-accordion .ui-accordion-content {
+ padding: 0 0 0 20px;
+ margin: -0.5em 0 0.5em 0;
+ border: none;
+ background: none;
+ color: black !important;
+}
+
+#requestor-accordion {
+ margin: 0.5em 0 0 0;
+}
+
+#requestor-accordion h3 .ui-icon {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png);
+ left: 0;
+}
+
+#requestor-accordion h3 {
+ padding: 0;
+ background: none !important;
+}
+
+#requestor-accordion h3, #requestor-accordion h3 a {
+ color: black !important;
+ border: none !important;
+ margin: 0;
+}
+
+#requestor-accordion h3 a {
+ font-size: 90%;
+ padding: 0 0 0.25em 20px;
+}
+
+#requestor-accordion h3 a:hover,
+#requestor-accordion h3.ui-state-active a {
+ text-decoration: underline;
+}
+
+#requestor-accordion a.modify-user {
+ font-size: 80%;
+ color: black !important;
+}
+
+/* More about requestor ticket lists */
+
+.more-about-requestor-tickets {
+ background: none;
+ border: none;
+ font-family: arial,helvetica,sans-serif !important;
+ padding: 0 !important;
+}
+
+.more-about-requestor-tickets .ui-tabs-nav {
+ background: none;
+ border: none;
+ font-size: 80%;
+ padding: 0;
+ margin: 0;
+}
+
+.more-about-requestor-tickets .ui-tabs-nav li {
+ border: none !important;
+ background: none !important;
+ padding-right: 1em;
+}
+
+.more-about-requestor-tickets .ui-tabs-nav a {
+ padding: 0 !important;
+ margin: 0 !important;
+ color: black !important;
+}
+
+.more-about-requestor-tickets .ui-tabs-nav a:hover,
+.more-about-requestor-tickets .ui-tabs-nav .ui-tabs-selected a {
+ text-decoration: underline;
+}
+
+.more-about-requestor-tickets .ui-tabs-panel {
+ border: none;
+ padding: 0;
+ margin: 0;
+ color: black !important;
+}
+
+.more-about-requestor-tickets .ui-tabs-panel a {
+ color: black !important;
+}
+
+
+.plain-text-white-space {
+ white-space: pre-wrap;
+ font-family: monospace;
+}
+
+.plain-text-white-space br {
+ display: none;
+}
+
+
diff --git a/rt/share/html/NoAuth/css/web2/tools.css b/rt/share/html/NoAuth/css/base/tools.css
index 69126b11b..dec0054b0 100644
--- a/rt/share/html/NoAuth/css/web2/tools.css
+++ b/rt/share/html/NoAuth/css/base/tools.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,12 +45,10 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-table.myday td {
+table.myday td {
padding: 1em;
}
ol.dashboard-queries {
padding-left: 1.5em;
}
-
-
diff --git a/rt/share/html/NoAuth/css/base/ui.timepickr.css b/rt/share/html/NoAuth/css/base/ui.timepickr.css
new file mode 100644
index 000000000..e2dacf7a9
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/ui.timepickr.css
@@ -0,0 +1,56 @@
+/*
+ jQuery ui.timepickr
+ http://code.google.com/p/jquery-utils/
+
+ copyright Maxime Haineault <haineault@gmail.com>
+ http://haineault.com
+
+ MIT License (http://www.opensource.org/licenses/mit-license.php
+*/
+.ui-timepickr {
+ position:absolute;
+ width:480px;
+}
+
+.ui-timepickr-row {
+ margin:0;
+ padding:0;
+ margin-top:2px;
+ display:none;
+ position:relative;
+}
+
+.ui-timepickr-button {
+ float:left;
+ margin:0;
+ padding:0;
+ list-style:none;
+ list-style-type:none;
+}
+
+.ui-timepickr-button span {
+ font-size:.7em;
+ padding:4px 6px 4px 6px;
+ margin-left:2px;
+ text-align:center;
+ cursor:pointer;
+ display:block;
+ text-align:center;
+
+
+ /* system theme (default) */
+ border-width:1px;
+ border-style:solid;
+ /*border-color:ThreeDLightShadow ThreeDShadow ThreeDShadow ThreeDLightShadow;
+ color:ButtonText;
+ background:ButtonFace;*/
+}
+
+.ui-timepickr-button span.ui-state-hover {
+ /*color:HighlightText;
+ background:Highlight;*/
+}
+
+.ui-state-hover span {
+ /*background:#c30;*/
+}
diff --git a/rt/share/html/NoAuth/css/base/ui.timepickr.custom.css b/rt/share/html/NoAuth/css/base/ui.timepickr.custom.css
new file mode 100644
index 000000000..ad2aa66ce
--- /dev/null
+++ b/rt/share/html/NoAuth/css/base/ui.timepickr.custom.css
@@ -0,0 +1,54 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.ui-timepickr {
+ font-size: 1.1em;
+}
+
+.ui-timepickr-button span {
+ background: white;
+}
diff --git a/rt/share/html/NoAuth/css/web2/yui-fonts.css b/rt/share/html/NoAuth/css/base/yui-fonts.css
index fdae8d98f..fdae8d98f 100644
--- a/rt/share/html/NoAuth/css/web2/yui-fonts.css
+++ b/rt/share/html/NoAuth/css/base/yui-fonts.css
diff --git a/rt/share/html/NoAuth/css/calendar.css b/rt/share/html/NoAuth/css/calendar.css
index c6b584e96..93edccf4c 100644
--- a/rt/share/html/NoAuth/css/calendar.css
+++ b/rt/share/html/NoAuth/css/calendar.css
@@ -1,8 +1,8 @@
-.tooltip{position:relative;z-index:1;}
-.tooltip:hover{z-index:5;color:#000;}
-.tooltip span.tip{display: none; text-align:left;}
+.rtxcalendar .tooltip{position:relative;z-index:1;}
+.rtxcalendar .tooltip:hover{z-index:5;color:#000;}
+.rtxcalendar .tooltip span.tip{display: none; text-align:left;}
-div.tooltip:hover span.tip{
+.rtxcalendar div.tooltip:hover span.tip{
display:block;
position:absolute;
top:12px; left:24px; width:350px;
@@ -13,7 +13,7 @@ font-size: 0.8em;
color:#505050;
}
-.calendardate {
+.rtxcalendar .date {
text-align: right;
background-color: #f8f8ff;
width:100%;
diff --git a/rt/share/html/NoAuth/css/dhandler b/rt/share/html/NoAuth/css/dhandler
index 2472a9ff7..8e887b9a2 100644
--- a/rt/share/html/NoAuth/css/dhandler
+++ b/rt/share/html/NoAuth/css/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,28 +50,15 @@ my $squisher;
</%ONCE>
<%INIT>
my $arg = $m->dhandler_arg;
-my $path;
-if ( $arg =~ m{^(.*)-squished(\.[^\.]+)$} ) {
- $path = $m->current_comp->dir_path .'/'. $1 . $2;
+if ( $arg =~ m{(.*)-squished-[0-9a-f]{32}\.css$} ) {
+ my $style = $1;
+ my $squished = RT::Interface::Web::SquishedCSS( $style );
+ # Don't send Last-Modified since we don't handle If-Modified-Since
+ #$r->header_out( 'Last-Modified' => $squished->ModifiedTimeString );
+ $m->out( $squished->Content );
}
else {
return $m->decline;
}
-$squisher = new RT::CSS::Squish unless $squisher;
-$squisher->{'mason'} = $m;
-
-$m->out( $squisher->concatenate( $path ) );
-
-package RT::CSS::Squish;
-use CSS::Squish '0.06';
-use base qw(CSS::Squish);
-sub file_handle {
- my $self = shift;
- my $file = shift;
- my $content = $self->{'mason'}->scomp($file) || '';
- open( my $fh, '<', \$content ) or die "$!";
- return $fh;
-}
-
</%INIT>
diff --git a/rt/share/html/Dashboards/Elements/DashboardsForObjects b/rt/share/html/NoAuth/css/freeside3/InHeader
index c676dfb1b..aff24d8a6 100644
--- a/rt/share/html/Dashboards/Elements/DashboardsForObjects
+++ b/rt/share/html/NoAuth/css/freeside3/InHeader
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,37 +45,23 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%args>
-$Objects => undef
-$dashboards => {}
-$flatten => 0
-</%args>
-<%init>
-# Returns a hash of dashboards associated with @Objects
-if (!defined($Objects)) {
- @$Objects = RT::Dashboard->new($session{CurrentUser})->_PrivacyObjects;
-}
-
-for my $object (@$Objects) {
- my $new_dashboards = $m->comp("/Dashboards/Elements/DashboardsForObject", Object => $object);
-
- push @{ $dashboards->{$_} }, @{ $new_dashboards->{$_} || [] }
- for qw/personal system/;
-
- push @{ $dashboards->{group}{$_} }, @{ $new_dashboards->{group}{$_} }
- for keys %{ $new_dashboards->{group} || {} };
-}
-
-if ($flatten) {
- my @dashboards;
- push @dashboards, @{ $dashboards->{personal} || [] };
- push @dashboards, map { @{ $_ || [] } } values %{ $dashboards->{group} };
- push @dashboards, @{ $dashboards->{system} || [] };
-
- return \@dashboards;
-}
-
-return $dashboards;
-</%init>
-
+<!--[if (lt IE 9)&(gt IE 6)]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/aileron/msie-pie.css" type="text/css" media="all" />
+<![endif]-->
+<!--[if lt IE 8]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/aileron/msie.css" type="text/css" media="all" />
+<![endif]-->
+<!--[if lt IE 7]>
+<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/aileron/msie6.css" type="text/css" media="all" />
+<![endif]-->
+<script type="text/javascript">
+jQuery(document).ready(function(){
+ jQuery.fn.supersubs.defaults = {
+ maxWidth: 30,
+ extraWidth: 2
+ };
+ jQuery("#app-nav.toplevel").addClass('sf-menu sf-js-enabled sf-shadow').supersubs().superfish({ speed: 'fast' });
+ jQuery("#page-menu.toplevel").addClass('sf-menu sf-js-enabled').supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
+});
+</script>
diff --git a/rt/share/html/NoAuth/css/freeside3/base.css b/rt/share/html/NoAuth/css/freeside3/base.css
new file mode 100644
index 000000000..0744f0b2d
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/base.css
@@ -0,0 +1,62 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+a {
+ color: #000;
+ text-decoration: none;
+}
+
+
+a:visited {
+ color: #666;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+textarea:focus, input:focus { background-color: #ffd; }
diff --git a/rt/share/html/NoAuth/css/freeside3/boxes.css b/rt/share/html/NoAuth/css/freeside3/boxes.css
new file mode 100644
index 000000000..f90ac9f77
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/boxes.css
@@ -0,0 +1,180 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.titlebox {
+ margin-top: 1em;
+ margin-left: 1em;
+ margin-bottom: 2em;
+}
+
+.titlebox .titlebox-content {
+ border-left: 1px solid #ccc;
+ border-top: 1px solid #ccc;
+ background-color: #efefef;
+ -moz-border-radius: 0.5em;
+ -webkit-border-radius: 0.5em;
+ border-bottom: 2px solid #aaa;
+ border-right: 2px solid #aaa;
+ border-radius: 0.5em;
+ padding: 1.5em 1em 1em 1em;
+}
+
+* html .titlebox {
+ border-top: none;
+ border-left: none;
+}
+
+.titlebox .titlebox {
+
+ margin-top: 1em;
+ margin-right: 0.25em;
+
+}
+
+.titlebox .titlebox .titlebox-content {
+ background-color: white;
+}
+
+
+.titlebox {
+ margin-left: 0em;
+ margin-right: 0em;
+ min-height: 1.25em;
+
+}
+
+
+
+.titlebox .titlebox-title {
+ position: relative;
+}
+
+.titlebox .titlebox-title a {
+ text-decoration: none;
+ color: black;
+
+}
+
+.titlebox .titlebox-title a:hover {
+ text-decoration: underline;
+
+}
+
+.titlebox.rolled-up .titlebox-title {
+ border-bottom: 1px solid #ccc;
+}
+
+.titlebox.rolled-up .titlebox-title .right {
+ display: none;
+}
+
+.titlebox .titlebox-title .left {
+ font-weight: bold;
+ background: #ccc;
+ margin-left: 1em;
+ padding: 0.25em 0.75em 0.25em 2em;
+ line-height: 1.5em;
+ -webkit-border-top-left-radius: 0.3em;
+ -webkit-border-top-right-radius: 0.3em;
+ -moz-border-radius-topleft: 0.3em;
+ -moz-border-radius-topright: 0.3em;
+ border-radius: 0.3em 0.3em 0 0;
+ border-right: 2px solid #aaa;
+}
+
+.titlebox .titlebox-title .right-empty {
+ display:none;
+}
+
+.titlebox .titlebox-title .right {
+ position: absolute;
+ right: 2px;
+ top: 1.75em;
+ font-size: 0.9em;
+ background: #dedede;
+ border-left: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ padding-right: 0.4em;
+ padding-left: 0.4em;
+ padding-bottom: 0.2em;
+ padding-top: 0.5em;
+ -moz-border-radius-bottomleft: 0.25em;
+ -webkit-border-bottom-left-radius: 0.25em;
+
+
+ -moz-border-radius-topright: 0.25em;
+ -webkit-border-top-right-radius: 0.25em;
+
+ border-radius: 0 0.25em 0 0.25em;
+
+
+}
+
+.titlebox .titlebox-title .right a,
+.titlebox .titlebox-title .right a:visited {
+ color: #000;
+}
+
+.titlebox .titlebox-title .widget a {
+ display: block;
+ margin: 0;
+ width: 20px;
+
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat;
+ background-position: center 0;
+
+ position: absolute;
+ top: 0.5em;
+ left: 1.2em;
+
+ padding: 7px 0 0 0;
+ overflow: hidden;
+}
+
+.titlebox.rolled-up .titlebox-title .widget a {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rolldown-arrow.gif);
+}
diff --git a/rt/share/html/NoAuth/css/freeside3/forms.css b/rt/share/html/NoAuth/css/freeside3/forms.css
new file mode 100644
index 000000000..25c5d5d92
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/forms.css
@@ -0,0 +1,79 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+/* These override the base titlebox rules in base/forms.css. They try not to
+ duplicate properties. */
+
+div.results .titlebox, div.error div.error {
+ border: none;
+ background: none;
+}
+
+div.results .titlebox-content {
+ border: 1px solid #aa9;
+ border-bottom: 2px solid #990;
+ border-right: 2px solid #990;
+ background: #ffc;
+}
+
+div.results .titlebox-title .left {
+ border: solid #aa9;
+ border-width: 1px 1px 0 1px;
+}
+
+div.error .titlebox-title span.left {
+ border: none;
+ border-right: 2px solid #b00;
+ padding-left: 0.75em;
+}
+
+div.error .titlebox-content {
+ border: 1px solid #b00;
+ border-bottom: 2px solid #a00;
+ border-right: 2px solid #a00;
+ background-color: #fcc;
+}
diff --git a/rt/share/html/NoAuth/css/freeside3/images/dhandler b/rt/share/html/NoAuth/css/freeside3/images/dhandler
new file mode 100644
index 000000000..6ec9dea05
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/images/dhandler
@@ -0,0 +1,8 @@
+<%INIT>
+use File::Basename;
+my $arg = $m->dhandler_arg;
+my $file = dirname($m->current_comp->source_file) . '/source/'. $arg;
+RT::Interface::Web->SendStaticFile( File => $file );
+
+$m->abort;
+</%INIT>
diff --git a/rt/share/html/NoAuth/css/freeside3/layout.css b/rt/share/html/NoAuth/css/freeside3/layout.css
new file mode 100644
index 000000000..c21d9c914
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/layout.css
@@ -0,0 +1,181 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+/* body */
+
+body {
+ padding:0;
+ margin:0;
+ background: #f8f8f8;
+ font-family: arial, helvetica, sans-serif;
+ color: #000000;
+}
+
+div#body {
+ position: relative;
+/* padding: 1.8em 1em 1em 1em;
+*/
+ padding: 0.5em;
+/* -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ margin-left: 1em;
+ margin-top: 1em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+*/
+ min-height: 10%;
+/*
+ background: #fff;
+ border-top: 2px solid #ccc;
+ border-left: 2px solid #ccc;
+*/
+ z-index:1;
+/*
+ border-radius: 0.5em 0 0 0.5em;
+*/
+
+}
+
+div#footer {
+ position: absolute;
+ right: 0;
+ text-align: right;
+ font-size: 0.9em;
+ margin-top: 2em;
+ background: #fff;
+ margin-bottom: 0;
+ padding-left: 3em;
+ padding-right: 1em;
+ border-top: 2px solid #aaa;
+ border-left: 2px solid #aaa;
+ -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+
+ border-radius: 0.5em 0 0.5em 0;
+}
+
+div#footer #time {
+ display: none ;
+}
+
+div#footer #bpscredits {
+ text-align: right;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+ padding-top: 4em;
+}
+
+
+/* logo stuff */
+
+div#logo {
+ position: absolute;
+ right: 2px;
+ top: 0;
+ height: 2.3em;
+}
+
+div#logo a img {
+ border: 0;
+ height: 100% !important;
+ width: auto !important;
+ float: right;
+}
+
+div#logo .rtname {
+ position: relative;
+ font-weight: bold;
+ text-align: center;
+ top: 0.7em;
+ padding-right: 1em;
+ float:left;
+}
+
+
+div#quickbar, div#logo {
+ font-size: 0.9em;
+}
+div#quickbar a, div#logo a {
+ color: #000;
+}
+
+
+div#quickbar {
+ background: #eaeaea;
+ padding-top: 1em;
+ padding-left: 1em;
+ padding-bottom: 0.5em;
+ height: 1em;
+ border-bottom: 1px solid #ccc;
+
+}
+
+div#header h1 {
+ position: absolute;
+ left: 0.5em;
+ right: 20em;
+ top: 1.6em;
+ overflow: hidden;
+ height: 1em;
+ font-size: 1.4em;
+ margin-top: 0.4em;
+ padding: 0.25em;
+ color: #fff;
+}
+
+/* in multi-column layouts, make sure we have an internal gutter */
+
+tr .boxcontainer {
+ padding-right: 1em;
+}
+
+tr .boxcontainer:last-child {
+ padding-right: 0;
+}
diff --git a/rt/share/html/NoAuth/css/3.4-compat/login.css b/rt/share/html/NoAuth/css/freeside3/login.css
index 25bb4ca5f..be9f746cf 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/login.css
+++ b/rt/share/html/NoAuth/css/freeside3/login.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,10 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#body.login-body {
- width: 98%;
-}
-
-#login-box {
- width: 30em;
+#login-box .titlebox-title .left {
+ padding-left: 0.75em;
}
diff --git a/rt/share/html/NoAuth/css/freeside3/main.css b/rt/share/html/NoAuth/css/freeside3/main.css
new file mode 100644
index 000000000..4839e878a
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/main.css
@@ -0,0 +1,63 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% $m->callback(CallbackName => 'Begin');
+
+@import "../base/main.css";
+
+@import "base.css";
+@import "layout.css";
+@import "nav.css";
+@import "boxes.css";
+@import "forms.css";
+@import "login.css";
+@import "ticket-lists.css";
+@import "ticket-search.css";
+@import "ticket.css";
+@import "misc.css";
+
+% $m->callback(CallbackName => 'End');
diff --git a/rt/share/html/NoAuth/css/freeside3/misc.css b/rt/share/html/NoAuth/css/freeside3/misc.css
new file mode 100644
index 000000000..2b6eb64e2
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/misc.css
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.comment {
+ padding-left: 0.5em;
+ color: #999;
+
+}
+
+#comp-Ticket-ShowEmailRecord #body {
+ margin-left: 1em;
+ margin-top: 1em;
+ overflow: auto;
+}
diff --git a/rt/share/html/NoAuth/css/freeside3/msie-pie.css b/rt/share/html/NoAuth/css/freeside3/msie-pie.css
new file mode 100644
index 000000000..baa9ebed3
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/msie-pie.css
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.search-result-views,
+.ticket-transaction div.metadata span.actions,
+div#ticket-history div.downloadattachment,
+.ticket-transaction div.metadata span.type,
+.titlebox,
+.titlebox .titlebox-title .right,
+.titlebox .titlebox-title .left,
+div#footer,
+div#body {
+ behavior: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/PIE.htc);
+}
diff --git a/rt/share/html/NoAuth/css/3.4-compat/titlebox.css b/rt/share/html/NoAuth/css/freeside3/msie.css
index b8fe8f8a0..c5c091da4 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/titlebox.css
+++ b/rt/share/html/NoAuth/css/freeside3/msie.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,55 +45,144 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-.titlebox {
- margin: 0.5em 0;
+div#body {
+ top: 3em;
}
+div#logo .rtname {
+ float: none;
+ right: 12em;
+ position: absolute;
+}
+
+div#footer {
+ margin-top: 5em;
+}
+
+
+
+.topaction form * {
+ vertical-align: top;
+}
+
+.topaction form button, .topaction form input {
+ height: 2em;
+}
+
+.topaction form input.field {
+ height: 1.6em;
+}
+
+.topaction .select-queue {
+ margin-top: 0.2em;
+}
+
+#pick-criteria td.label select {
+ width: 10em;
+}
+
+
+#editquery {
+ margin-top: 0.2em;
+ width: 39%;
+ left: 60%;
+}
+
+div#nav li.first {
+ margin-top: 0.75em;
+ border-top: none;
+}
+div#nav ul ul li.first {
+ border-top: 1px solid #cccccc;
+ margin-top: 0.25em;
+}
+
+div#nav li.last {
+ border-bottom: none;
+ padding-bottom: 0;
+ margin-bottom: 0;
+}
+
+
+.ticket-transaction .type a { font-weight: normal; text-decoration: none; color: #fff; }
+
+
+
+/* IE's box model is wrong */
+.titlebox .titlebox-title .widget a {
+ padding-top: 0;
+ height: 7px;
+ top: 0.75em;
+}
+
+
+
+.titlebox .titlebox-title .right {
+ display: block;
+ margin-top: 0.4em;
+ padding-right: 0.3em;
+
+}
+
+
.titlebox .titlebox-content {
- padding: 0.05em;
+ padding-top: 2.2em;
}
-.titlebox .titlebox-title {
- background: #069;
- padding: 0.2em 0.5em;
- color: white;
- border-top: 1px solid black;
- border-bottom: 1px solid black;
- font-weight: bold;
+
+.titlebox table.collection-as-table, .titlebox table.queue-summary {
+ width: 95%;
+ padding: 0.5em;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+th.collection-as-table {
+ padding: 0.25em;
+}
+
+table.queue-summary td, td.collection-as-table {
+ padding: 0.25em;
+}
+
+.titlebox-title {
position: relative;
}
-.titlebox .titlebox-title .right {
- position: absolute;
- right: 1.5em;
- font-size: 0.9em;
+/* nested things. like the ticket dates tab */
+.titlebox .titlebox .titlebox-title .right{
+ top: 0.25em;
}
-#body .titlebox .titlebox-title :link, #body .titlebox .titlebox-title :visited {
- color: white;
+.combobox {
+ float: left;
}
-#body .titlebox .titlebox-title .widget :link, #body .titlebox .titlebox-title .widget :visited {
- color: black;
+.combobox .combo-button {
+ color: ButtonText;
+ padding: 0;
}
-%# TRS: I wish there was a more elegant way to do this... I essentially need to
-%# select all elements X that do NOT have element Y as a descendant... which I can
-%# fake with the child selector of CSS2, but IE is stupid and does not support that.
+.combobox .combo-list {
+ margin-top:0.5em;
+ margin-left: -0.2em;
+}
-% for (qw(index
-% Search-Build
-% User-Prefs
-% Approvals
-% Admin-Users-Modify
-% SelfService
-% SelfService-Closed
-% Ticket-ModifyAll
-% ))
-% {
-#comp-<%$_%> .titlebox .titlebox-content,
-% }
-.titlebox .titlebox .titlebox-content
-{
- background: #cecfce;
+#pick-criteria td.label {
+ width: auto;
}
+
+#pick-criteria td.operator {
+ width: 7.5em;
+}
+
+.plain-text-white-space {
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ white-space: pre; /* IE only hack to re-specify in addition to
+ word-wrap */
+}
+
+#rt-portal .titlebox-content {
+ height: 23em;
+}
+
diff --git a/rt/share/html/NoAuth/css/freeside3/msie6.css b/rt/share/html/NoAuth/css/freeside3/msie6.css
new file mode 100644
index 000000000..6341e88a3
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/msie6.css
@@ -0,0 +1,86 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+div#body {
+ top: 0em;
+}
+
+.topaction .select-queue {
+ margin-top: 0;
+}
+
+.titlebox-title .widget {
+ top: -1.25em;
+ left: 0.5em;
+
+}
+.titlebox .titlebox-title .right{
+ position: absolute;
+ top: 1.5em;
+}
+
+.titlebox
+{
+ height: auto !important;
+ height: 1.25em;
+}
+
+
+.ticket-transaction .messagebody img {
+ /* ie6 does not support max-width */
+ width: expression(this.width > 401 ? 400 : true);
+}
+
+
+
+.sf-sub-indicator {
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-ffffff.gif) no-repeat -10px -100px;
+}
+
+#page-navigation ul {
+ width: auto;
+}
diff --git a/rt/share/html/NoAuth/css/freeside3/nav.css b/rt/share/html/NoAuth/css/freeside3/nav.css
new file mode 100644
index 000000000..5c49cb33b
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/nav.css
@@ -0,0 +1,171 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+.sf-menu {
+ width: 100%;
+}
+
+.sf-menu li:hover {
+ background-color: #CFDEFF;
+}
+
+.sf-menu li, .sf-menu li li, .sf-menu li li li {
+ background-color: #eaeaea;
+}
+
+.sf-sub-indicator {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+}
+
+.sf-menu li li .sf-sub-indicator {
+ margin-top: -3px;
+}
+
+#page-menu.sf-menu li .sf-sub-indicator {
+ top: 0.7em;
+}
+
+#page-menu.sf-menu li:hover ul, #page-menu.sf-menu li.sfHover ul {
+ top: 2.5em;
+}
+
+#page-menu.sf-menu li ul {
+ border-bottom: 2px solid #ccc;
+}
+
+#main-navigation {
+ position: absolute;
+ top: 1px;
+ left: 0;
+ z-index: 9999;
+ text-color: #000;
+}
+
+#main-navigation .sf-menu a, #main-navigation .sf-menu a:hover {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-color: #fff;
+ color: #000;
+background-color: #000000;
+}
+
+#main-navigation a {
+ border-top: none;
+}
+
+#main-navigation li li a {
+ border-top: 1px solid white;
+}
+
+#app-nav.sf-menu > li:first-child > a {
+ border-left: none;
+}
+
+#main-navigation #app-nav > li, #main-navigation #app-nav > li > a {
+ background-color: transparent;
+}
+
+#page-navigation {
+ position: absolute;
+ /*top: 6em;*/
+ top: 13em;
+ right: 0em;
+ left: auto;
+ font-size: 0.9em;
+ z-index: 9995;
+}
+
+#page-navigation .sf-menu li, #page-navigation .sf-menu li li, #page-navigation .sf-menu li li li {
+ /*background-color: #fff; */
+ background-color: #f8f8f8;
+}
+
+#page-navigation .sf-menu a:visited, #page-navigation .sf-menu a {
+/* border: none; */
+ color: #000;
+}
+
+/* to stop a "flash" of an unstyled menu on an older browser, hide the menu until superfish has initialized it */
+#app-nav.toplevel { display: none; }
+#app-nav.toplevel.sf-menu { display:block; }
+#page-menu.toplevel { display: none; }
+#page-menu.toplevel.sf-menu { display:block; }
+
+/* ## new ticket via customer, and we already have a ticket search box
+
+#topactions {
+ position: absolute;
+ background: transparent;
+ top: 3.2em;
+ right: 0.7em;
+ width: auto;
+ min-width: 42em;
+ font-size: 0.9em;
+ z-index: 99;
+}
+
+#topactions form * {
+ vertical-align: top;
+}
+
+#topactions button, #topactions select, #topactions input{
+ padding-top: 0em;
+ padding-bottom: 0em;
+ width: 8em;
+
+}
+
+#topactions #simple-search .field{
+ margin-left: 1em;
+ color: #787;
+ }
+
+#topactions #simple-search .field:focus {
+ color: #000;
+ }
+
+*/
diff --git a/rt/share/html/NoAuth/css/freeside3/ticket-lists.css b/rt/share/html/NoAuth/css/freeside3/ticket-lists.css
new file mode 100644
index 000000000..84c9a92de
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/ticket-lists.css
@@ -0,0 +1,236 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+table.queue-summary, table.collection-as-table {
+ margin-top: 0.75em;
+ font-size: 0.9em;
+ border: 1px solid #aaa;
+ border-bottom: 2px solid #999;
+ border-right: 2px solid #999;
+ border-spacing: 0;
+ width: 100%;
+
+}
+
+table.queue-summary tr>*:first-child {
+ padding-left: 1em;
+
+}
+
+
+table.queue-summary tr>*:last-child {
+ padding-right: 1em;
+
+}
+
+table.queue-summary a, table.collection-as-table a {
+ font-weight: bold;
+}
+
+
+table.collection-as-table th.collection-as-table {
+ background: #ddd;
+ font-size: 0.9em;
+ margin-bottom: 0.5em;
+ text-align: left;
+
+}
+
+
+table.queue-summary th.collection-as-table {
+ font-size: 0.9em;
+ margin-bottom: 0.5em;
+ text-align: right;
+
+}
+
+table.queue-summary th.collection-as-table:first-child {
+ text-align: left;
+
+}
+
+
+tr.collection-as-table+tr.collection-as-table th {
+ border-bottom: 2px solid grey;
+
+}
+
+
+
+
+table.queue-summary td {
+ background: #efefef;
+ border-bottom: 1px solid #ccc;
+}
+
+
+
+tr.evenline td {
+ background: #eee;
+}
+
+tr.oddline td {
+ background: #fff;
+
+}
+
+tr.evenline td, tr.oddline td {
+ padding-top: 0.5em;
+}
+
+
+
+tr.evenline+tr.evenline td, tr.oddline+tr.oddline td{
+ padding-top: 0;
+ border: none;
+}
+
+
+
+table.collection-as-table td:first-child,
+table.collection-as-table th:first-child {
+ padding-left: 1em;
+}
+
+table.collection-as-table td:last-child, table.collection-as-table th:last-child {
+ padding-right: 1em;
+}
+
+th.collection-as-table , td.collection-as-table {
+ padding-right: 0.5em;
+}
+
+.pagenum.a:hover, .paging a.nav:hover{
+text-decoration: underline;
+}
+
+
+.pagenum *, .paging a.nav{
+padding: .5em;
+}
+
+.currentpage{
+text-decoration: none;
+font-weight: bold;
+background: #eee;
+}
+
+div.paging{
+text-align: center;
+padding-bottom: 1em;
+}
+
+
+/* full-page ticket lists */
+#body>table.collection-as-table {
+ margin-bottom: 2em;
+
+}
+
+.chart.image {
+ margin-top: -1em;
+ padding-right: 2em;
+ float: left;
+ clear: both;
+}
+
+.chart-wrapper {
+ display: block;
+ width: auto;
+}
+
+.chart-wrapper .collection-as-table {
+ width: auto;
+ font-size: 1em;
+}
+
+.chart-wrapper .collection-as-table th.collection-as-table {
+ text-align: center;
+ padding: 0.5em;
+ padding-right: 1em;
+ padding-left: 1em;
+}
+
+.chart-wrapper .collection-as-table tr.total td {
+ border-top: 1px solid #ccc;
+}
+
+.chart-wrapper .collection-as-table td.value {
+ padding-left: 0.5em;
+}
+
+.chart-wrapper .query {
+ clear: both;
+ text-align: center;
+ font-size: 1.2em;
+ padding: 1em;
+}
+
+.chart-wrapper .collection-as-table .label {
+ font-weight: bold;
+}
+
+
+.chart-wrapper .query .label {
+ font-weight: bold;
+}
+
+.chart-meta {
+ padding-top: 2em;
+ border-top: 1px solid #ccc;
+}
+
+.chart-meta .chart-type {
+ display: inline-block;
+ float: left;
+ padding-right: 2em;
+ clear: both;
+}
+
+.chart-meta .saved-search {
+ display: inline-block;
+}
diff --git a/rt/share/html/NoAuth/css/freeside3/ticket-search.css b/rt/share/html/NoAuth/css/freeside3/ticket-search.css
new file mode 100644
index 000000000..0e88eb0bf
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/ticket-search.css
@@ -0,0 +1,242 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+#comp-Search-Build #body {
+ position: relative;
+}
+
+#pick-criteria select {
+ width: 8em;
+}
+
+#pick-criteria tr {
+ height: 1.5em;
+}
+
+#pick-criteria td.label {
+ font: message-box;
+ padding-right: 0.5em;
+ width: 11em;
+}
+
+#pick-criteria td.label select {
+ width: 8.5em;
+ text-align: right;
+}
+
+#pick-criteria td.operator {
+ padding-right: 0.5em;
+ text-align: left;
+ vertical-align: bottom;
+ width: 7em;
+}
+
+#pick-criteria td.operator select {
+ text-align: right;
+}
+
+#pick-criteria td.value input,
+#pick-criteria td.value select {
+ width: 11em;
+}
+
+#pick-criteria td.value #ValueOfDate {
+ width: 11em;
+}
+
+
+#pick-criteria td.value #ValueOfTime {
+ width: 4em;
+
+}
+
+#pick-criteria td.value #ValueOfTime-TimeUnits{
+ width: 5.5em;
+}
+
+#pick-criteria td.value {
+ padding-right: 0.5em;
+ text-align: left;
+ font: message-box;
+}
+
+#editquery, #editsearches{
+ position: absolute;
+ margin-top: 0.2em;
+ right: 1em;
+ left: 60%;
+ top: 1em;
+/* margin-top: -1em; */
+}
+
+#editquery {
+ top: 1.3em;
+}
+
+
+#editsearches {
+ top: 24em;
+}
+
+
+#pick-criteria {
+ width: 58%;
+ padding-top: 0em;
+ margin-top: 0em;
+}
+
+#pick-criteria .titlebox-content {
+ overflow-x: auto;
+}
+
+#BuildQuery .submit {
+ width: 58%;
+}
+
+
+#sorting.titlebox {
+ width: 55%;
+ padding-right: 1em;
+}
+
+#display-options .submit {
+ width: 100%;
+}
+
+
+
+.search-result-views {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin-top: -2px;
+ margin-right: 0em;
+ padding: 0.25em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ background-color: #ccc;
+ border-left: 1px solid #999;
+ border-bottom: 1px solid #999;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ border-radius: 0 0 0 0.5em;
+}
+
+
+
+.search-result-views li {
+
+ display: inline;
+}
+
+.search-result-views li:after {
+ content: " \00b7 ";
+}
+
+.search-result-views li:last-child:after {
+ content: "";
+
+}
+
+.edit-saved-searches .label {
+ display: inline-block;
+ width: 10em;
+}
+
+span#display-options {
+ display: block;
+ padding-top: 2em;
+ margin-top: 2em;
+ border-top: 1px solid #ccc;
+ clear: both;
+}
+
+span#display-options .titlebox#sorting {
+ float: left;
+ width: auto;
+ margin-right: 2em;
+ min-width: 35%;
+}
+
+span#display-options .titlebox#columns {
+ float: left;
+}
+
+span#display-options .titlebox#columns table.edit-columns td {
+ padding: 0.5em;
+}
+
+span#display-options .titlebox#columns table.edit-columns div.row {
+ width: 9em;
+}
+span#display-options .titlebox#columns table.edit-columns span.label {
+ width: 2em;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value input,
+span#display-options .titlebox#columns table.edit-columns span.value select {
+ width: 7em;
+ padding: 0;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value {
+ display: inline-block;
+ width:7em;
+}
+
+#BuildQuery #formatbuttons.submit{
+ width: 85%;
+}
+
+.refresh {
+ float: left;
+}
+
+/* Force some widget to fit at max parent box */
+#HomeRefreshInterval, #SavedSearchLoad, #SavedSearchOwner {
+ max-width: 100%;
+}
diff --git a/rt/share/html/NoAuth/css/freeside3/ticket.css b/rt/share/html/NoAuth/css/freeside3/ticket.css
new file mode 100644
index 000000000..4d069d9f9
--- /dev/null
+++ b/rt/share/html/NoAuth/css/freeside3/ticket.css
@@ -0,0 +1,289 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+div#ticket-history div.ticket-transaction {
+ border-top: 1px solid #ccc;
+ padding-bottom: 0.25em;
+ position: relative; /* gives us a container for position: absolute */
+}
+
+div#ticket-history div.odd {
+ background-color: #fff;
+}
+
+div#ticket-history {
+
+ margin-top: 0.75em;
+ border-left: 1px solid #ccc;
+
+ border-right: 2px solid #999;
+ border-bottom: 2px solid #999;
+
+}
+
+.ticket-transaction div.metadata span.actions {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 0em;
+ background: #ccc;
+ text-align: right;
+ border-left: 1px solid #999;
+ border-bottom: 1px solid #999;
+ color: #ccc;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ white-space: nowrap;
+
+ border-radius: 0 0 0 0.5em;
+}
+
+.ticket-transaction div.metadata span.type {
+ text-align: center;
+ float: left;
+ margin: 0.25em 0.70em 0.25em 0.25em;
+ width: 1em;
+ height: 1.25em;
+ padding: 0.75em 0 0 0;
+ border-right: 1px solid #999;
+ border-bottom: 1px solid #999;
+ -moz-border-radius-bottomright: 0.25em;
+ -webkit-border-bottom-right-radius: 0.25em;
+
+ border-radius: 0 0 0.25em 0;
+
+}
+
+div#ticket-history span.type a {
+ color: #fff;
+}
+
+
+div#ticket-history span.date {
+ width: 10em;
+}
+
+
+div#ticket-history span.description {
+ margin-left: 1em;
+ font-weight: bold;
+}
+
+div#ticket-history span.time-taken {
+ margin-left: 1em;
+}
+
+div#ticket-history div.content {
+ padding-right: 1em;
+ padding-bottom: 0.7em;
+ margin-left: 1.5em;
+}
+
+
+.ticket-transaction .messagebody {
+ font-size: 1em;
+ padding-left: 1em;
+ margin-top: 0.5em;
+ padding-top: 0.5em;
+ border-top: 1px solid #ccc;
+ /*overflow: auto; */
+ min-height: 2.5em;
+ /* To avoid overlapping of "downloadattachment" by messagebody */
+ clear: left;
+ word-wrap: break-word;
+}
+
+.ticket-transaction .messagebody img {
+ max-width: 100%;
+}
+
+div#ticket-history div.downloadattachment {
+float: right;
+clear: both;
+font-size: 0.9em;
+text-align: right;
+background: #ddd;
+padding: 0.5em;
+margin-left: 1em;
+
+border: 1px solid #ccc;
+border-right: 2px solid #aaa;
+border-bottom: 2px solid #aaa;
+margin-top: 0.5em;
+-moz-border-radius: 0.5em;
+-webkit-border-radius: 0.5em;
+ border-radius: 0.5em;
+}
+
+div#ticket-history div.downloadattachment .downloadcontenttype{
+color: #666;
+padding-right:0.25em;
+}
+
+
+div#ticket-history .message-header-key {
+ width: 7em;
+ font-weight: bold;
+ color: #666;
+}
+
+
+div#ticket-history .messagebody .messagebody{
+ font-size: 1em;
+ padding: 0;
+ border: 0;
+ margin: 0;
+}
+
+
+
+.ticket-transaction.basics .type { background: #b32; }
+.ticket-transaction.cfs .type { background: #b32; }
+.ticket-transaction.people .type { background: #48c; }
+.ticket-transaction.links .type { background: #316531; }
+.ticket-transaction.dates .type { background: #633063; }
+.ticket-transaction.message .type { background: #069; }
+.ticket-transaction.reminders .type { background: #369; }
+.ticket-transaction.other .type { background: #abc; }
+
+
+/* Color the titlebox tabs */
+.ticket-info-cfs .titlebox-title .left { background-color: #b32; color: #fff;}
+.ticket-info-basics .titlebox-title .left { background-color: #b32; color: #fff;}
+.ticket-info-people .titlebox-title .left { background-color: #48c; color: #fff;}
+.ticket-info-requestor .titlebox-title .left { white-space: nowrap; background-color: #48c; color: #fff;}
+.ticket-info-links .titlebox-title .left { background-color: #316531; color: #fff;}
+.ticket-info-reminders .titlebox-title .left { background-color: #369; color: #fff;}
+.ticket-info-dates .titlebox-title .left { background-color: #633063; color: #fff;}
+.ticket-info-attachments .titlebox-title .left { background-color: #993366; color: #fff;}
+
+/* Use a lighter colored toggle arrow */
+.ticket-info-cfs .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-basics .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-people .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-requestor .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-links .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-reminders .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-dates .titlebox-title .widget a { background-position: center -7px; }
+.ticket-info-attachments .titlebox-title .widget a { background-position: center -7px; }
+
+
+.ticket-summary .titlebox-title .left a, .ticket-summary .titlebox-title .left a:visited { color: #fff;}
+
+.unread-messages .titlebox , .unread-messages .titlebox-title .left {
+ border: 1px solid #99a;
+ border-right: 2px solid #aab;
+ border-bottom: 2px solid #aab;
+
+}
+
+
+.unread-messages .titlebox {
+ background-color: #dde;
+}
+
+.unread-messages .titlebox-title .left {
+ background-color: #cce;
+}
+
+.ticket-inactive {
+ text-decoration: line-through;
+ color: #666
+}
+
+table.ticket-summary td.boxcontainer:first-child {
+ width: 50%;
+}
+div.requestor-ticket-links {
+ text-align: left;
+ font-size: 0.8em;
+ padding-top: 0.25em;
+}
+
+.more-about-requestor-extra-field .label {
+ display: inline-block;
+ width: 8em;
+ font-weight: bold;
+ text-align: right;
+}
+
+.more-about-requestor-extra-field .value {
+ display: inline-block;
+}
+
+.ticket-info-requestor .more-about-requestor-extra,
+.ticket-info-requestor .comments-about-user,
+.ticket-info-requestor .more-about-requestor-tickets,
+.ticket-info-requestor .more-about-user-groups
+{
+ margin: 1em 0;
+}
+
+.ticket-info-requestor .comments-about-user .label,
+.ticket-info-requestor .more-about-user-groups .label,
+.ticket-info-requestor .more-about-requestor-tickets .label
+{
+ display: block;
+ font-weight: bold;
+ text-align: left;
+}
+
+.ticket-info-requestor .more-about-user-groups .value ul,
+.ticket-info-requestor .more-about-requestor-tickets ul
+{
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+
+/* textareas get to be bigger when we're in a table */
+tr.edit-custom-field.cftype-Text textarea,
+tr.edit-custom-field.cftype-Freeform input,
+tr.edit-custom-field.cftype-Wikitext textarea
+{
+ width: 100%;
+}
diff --git a/rt/share/html/NoAuth/css/images/arrow.down.black.png b/rt/share/html/NoAuth/css/images/arrow.down.black.png
new file mode 100644
index 000000000..92a8b518d
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/arrow.down.black.png
Binary files differ
diff --git a/rt/share/html/NoAuth/css/images/arrows-ffffff.gif b/rt/share/html/NoAuth/css/images/arrows-ffffff.gif
new file mode 100644
index 000000000..d65e9bd7a
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/arrows-ffffff.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/css/images/arrows-ffffff.png b/rt/share/html/NoAuth/css/images/arrows-ffffff.png
new file mode 100644
index 000000000..995df5206
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/arrows-ffffff.png
Binary files differ
diff --git a/rt/share/html/NoAuth/css/images/arrows-grey.gif b/rt/share/html/NoAuth/css/images/arrows-grey.gif
new file mode 100644
index 000000000..c4de160d8
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/arrows-grey.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/css/images/arrows-grey.png b/rt/share/html/NoAuth/css/images/arrows-grey.png
new file mode 100644
index 000000000..02441fa84
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/arrows-grey.png
Binary files differ
diff --git a/rt/share/html/NoAuth/css/images/shadow.gif b/rt/share/html/NoAuth/css/images/shadow.gif
new file mode 100644
index 000000000..c304b51eb
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/shadow.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/css/images/shadow.png b/rt/share/html/NoAuth/css/images/shadow.png
new file mode 100644
index 000000000..c04d21b76
--- /dev/null
+++ b/rt/share/html/NoAuth/css/images/shadow.png
Binary files differ
diff --git a/rt/share/html/NoAuth/css/print.css b/rt/share/html/NoAuth/css/print.css
index b11bc2e9a..391fa936e 100644
--- a/rt/share/html/NoAuth/css/print.css
+++ b/rt/share/html/NoAuth/css/print.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,27 +48,32 @@
* {
float: none;
position: static;
+ background: transparent !important;
+ overflow: visible !important;
}
body {
- margin: 1em;
+ margin: 0;
+ padding: 0;
font-size: 10pt;
+ background: white !important;
}
div#body {
margin: 0;
- margin-top: 1em;
+ margin-top: 0;
+ padding: 0;
border-style: none;
}
div#header h1 {
- margin-bottom: 2em;
- position: relative;
- margin-top: 2em;
- height: 0;
+ margin-bottom: 1em;
+ position: static;
+ height: auto;
width: auto;
- left: 0;
overflow: visible;
+ color: black !important;
+ padding: 0 !important;
}
#header {
@@ -77,12 +82,12 @@ div#header h1 {
#quickbar,
#nav,
-#header #page-menu,
-#header #actions-menu,
-#header #page-navigation,
-.titlebox .titlebox-title .widget,
+#page-menu,
+#main-navigation,
+#page-navigation,
+.titlebox-title .widget,
.ticket-info-links .titlebox-title .right,
-.ticket-info-links .titlebox-content .labeltop .create,
+.ticket-info-links .titlebox-content .create,
.history .titlebox .titlebox-title .right,
.ticket-transaction .metadata .actions,
.ticket-transaction .content .downloadattachment,
@@ -90,14 +95,126 @@ div#header h1 {
.search-result-actions,
#comp-Search-Chart #body div,
#comp-Search-Chart #body form,
-#footer
+#footer,
+#topactions,
+#logo,
+form,
+div.summary + br
{
-display: none;
+ display: none;
+}
+
+/* Hide "Click to load" and "Loading" message. Loaded history is #id > .history */
+#deferred_ticket_history > .titlebox, #delayed_ticket_history > .titlebox {
+ display: none;
}
a:link, a:visited {
- background: transparent;
font-weight: bold !important;
+}
+
+div.ticket-transaction .metadata .type {
+ display: none;
+}
+
+div.titlebox-title .left {
+ border: 0 !important;
+ color: black !important;
+ margin: 0 !important;
+ padding-left: 0 !important;
+}
+
+.titlebox.rolled-up .titlebox-title .left:after {
+ content: " (<&|/l&>collapsed</&>)";
+ font-weight: normal;
+}
+
+div.titlebox-content {
+ border: 0 !important;
+ padding-top: 0.5em !important;
+}
+
+/* outer Ticket Metadata titlebox gets no padding, but inside ones do below */
+.summary .titlebox-content {
+ padding: 0 !important;
+}
+
+div.summary .ticket-summary div.titlebox-content {
+ padding: 0.5em 1em 1em 1em !important;
+}
+
+div.titlebox-title .left * {
+ color: black !important;
+}
+
+div.messagebody a[href]:after {
text-decoration: underline !important;
+ content: " (" attr(href) ") ";
+}
+
+.messagebody {
+ orphans: 2;
+ widows: 2;
+}
+
+div.titlebox-title {
+ page-break-after: avoid;
+ border: 0 !important;
+}
+
+#ticket-history, div.ticket-transaction {
+ border: 0 !important;
+}
+
+div.ticket-transaction {
+ page-break-inside: avoid;
+}
+
+/* hide "Ticket metadata" */
+div.summary > div > div.titlebox > div.titlebox-title {
+ display: none !important;
+}
+
+.value {
+ font-weight: bold !important;
+}
+
+.label, .label a, .labeltop, .labeltop a {
+ font-weight: normal !important;
+}
+
+div.titlebox {
+ margin-bottom: 0;
+}
+
+/* for web2 and ballard*/
+
+div.titlebox {
+ border: 0 !important;
+}
+
+div.history .titlebox-title {
+ padding: 0 !important;
+ margin: 0 !important;
+}
+
+/* for web2 */
+
+#page-action-menu {
+ display: none;
+}
+
+/* form elements */
+input, select, option {
+ background: white !important;
+ border: 1px solid #666 !important;
+}
+
+option {
+ border: none !important;
+}
+
+option[selected] {
+ font-weight: bold !important;
}
diff --git a/rt/share/html/NoAuth/css/web2/InHeader b/rt/share/html/NoAuth/css/web2/InHeader
index a480fc6f0..a083eec21 100644
--- a/rt/share/html/NoAuth/css/web2/InHeader
+++ b/rt/share/html/NoAuth/css/web2/InHeader
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,3 +52,24 @@
<!--[if lt IE 7]>
<link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/msie6.css" type="text/css" media="all" />
<![endif]-->
+<script type="text/javascript">
+jQuery(document).ready(function(){
+ jQuery("#quick-personal").append('<ul id="prefs-menu"></ul>');
+ jQuery("#li-preferences").detach().appendTo("#prefs-menu");
+ jQuery("#li-tools-config").detach().appendTo("#app-nav");
+ jQuery("#li-search-simple").detach().insertBefore("#li-search");
+ jQuery("#li-tools-approval").detach().appendTo("#app-nav");
+
+ jQuery("#li-page-bookmark").detach().appendTo("#li-page-actions>ul");
+ jQuery("#li-page-actions>ul").attr("id","page-action-menu").detach().insertAfter("#topactions");
+
+ jQuery.fn.supersubs.defaults = {
+ maxWidth: 30,
+ extraWidth: 2
+ };
+
+ jQuery("#page-menu.toplevel").addClass("sf-menu sf-js-enabled").supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
+ jQuery("#app-nav.toplevel").addClass("sf-menu sf-vertical sf-js-enabled").supersubs().superfish({ speed: 'fast' }).supposition();
+ jQuery("#prefs-menu").addClass("sf-menu sf-js-enabled").supersubs().superfish().supposition({ speed: 'fast' });
+});
+</script>
diff --git a/rt/share/html/NoAuth/css/web2/base.css b/rt/share/html/NoAuth/css/web2/base.css
index aefe56f24..0744f0b2d 100644
--- a/rt/share/html/NoAuth/css/web2/base.css
+++ b/rt/share/html/NoAuth/css/web2/base.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -51,9 +51,8 @@ a {
}
-div#body a:visited {
+a:visited {
color: #666;
-
}
a:hover {
diff --git a/rt/share/html/NoAuth/css/web2/boxes.css b/rt/share/html/NoAuth/css/web2/boxes.css
index 20be288fe..3c87c8d48 100644
--- a/rt/share/html/NoAuth/css/web2/boxes.css
+++ b/rt/share/html/NoAuth/css/web2/boxes.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -58,6 +58,10 @@
border-bottom: 2px solid #aaa;
border-right: 2px solid #aaa;
padding-right: 1em;
+
+
+ border-radius: 0.5em;
+
}
* html .titlebox {
@@ -69,8 +73,6 @@
background-color: #ffffff;
margin-top: 1em;
- -moz-border-radius: 0.5em;
- -webkit-border-radius: 0.5em;
margin-right: 0.25em;
}
@@ -105,10 +107,6 @@
}
-.titlebox .titlebox-title a:visited {
- color: #fff;
-}
-
.titlebox .titlebox-title .left {
font-weight: bold;
background: #ccc;
@@ -121,6 +119,8 @@
border-bottom: 2px solid #aaa;
border-right: 2px solid #aaa;
+ border-radius: 0.5em;
+
}
@@ -147,9 +147,13 @@
-moz-border-radius-topright: 0.25em;
-webkit-border-top-right-radius: 0.25em;
+ border-radius: 0 0.25em 0 0.25em;
+
+
}
-.titlebox .titlebox-title .right a {
+.titlebox .titlebox-title .right a,
+.titlebox .titlebox-title .right a:visited {
color: #000;
}
@@ -163,22 +167,21 @@
.titlebox .titlebox-title .widget a {
display: block;
margin: 0;
- margin-top: 0.5em;
+ margin-top: 0.6em;
width: 20px;
- background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat center center;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat center 0;
position: absolute;
top: -1em;
left: 0.15em;
float: left;
- padding: 11px 0 0 0;
+ padding: 7px 0 0 0;
overflow: hidden;
}
* html .titlebox .titlebox-title .widget a {
- background-position: center 0.3em;
top: 0em;
left: -1.5em;
}
diff --git a/rt/share/html/NoAuth/css/web2/layout.css b/rt/share/html/NoAuth/css/web2/layout.css
index b2d10702a..72a74e9b4 100644
--- a/rt/share/html/NoAuth/css/web2/layout.css
+++ b/rt/share/html/NoAuth/css/web2/layout.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,142 +48,92 @@
/* body */
body {
-
-
padding:0;
margin:0;
-
background: #547CCC url(<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/images/background-gradient.png) top left repeat-x ;
font-family: arial, helvetica, sans-serif;
-
color: #000000;
}
div#body {
position: relative;
- padding: 1em;
- padding-top: 1.8em;
- -moz-border-radius: 0.5em;
- -webkit-border-radius: 0.5em;
- margin-left: 10.5em;
- margin-top: 5.2em;
- margin-right: 1em;
+ padding: 1.8em 1em 1em 1em;
+ -moz-border-radius-topleft: 0.5em;
+ -webkit-border-top-left-radius: 0.5em;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ margin-left: 10em;
+ margin-top: 5.8em;
+ margin-right: 0;
margin-bottom: 0em;
min-height: 10%;
background: #fff;
border-top: 2px solid #ccc;
border-left: 2px solid #ccc;
z-index:1;
-
-
-}
-
-#topactions {
- position: absolute;
- background: transparent;
- top: 3.8em;
- right: 1em;
- width: auto;
- min-width: 42em;
- font-size: 0.9em;
- z-index: 99;
-}
-
-#topactions form * {
- vertical-align: top;
-}
-
-#topactions button, #topactions select, #topactions input{
- padding-top: 0em;
- padding-bottom: 0em;
- width: 8em;
+ border-radius: 0.5em 0 0 0.5em;
}
-#topactions form {
- display: block;
-
-}
-
-#topactions #CreateTicketInQueue {
- text-align: right;
-
-}
-#topactions #simple-search {
- float: right;
-}
-
-#topactions #simple-search .field{
- margin-left: 1em;
- color: #787;
- }
-
-#topactions #simple-search .field:focus {
- color: #000;
- }
-
-#topactions #GotoTicket {
- text-align: right;
-
+div#body.login-body {
+ top: -2.5em;
+ margin-right: 10em;
}
div#footer {
position: absolute;
right: 0;
- text-align: right;
+ text-align: right;
font-size: 0.9em;
margin-top: 2em;
background: #fff;
margin-bottom: 0;
padding-left: 3em;
padding-right: 1em;
-
-
-
-
-
border-top: 2px solid #aaa;
border-left: 2px solid #aaa;
-
-
-
-moz-border-radius-topleft: 0.5em;
-webkit-border-top-left-radius: 0.5em;
-moz-border-radius-bottomleft: 0.5em;
-webkit-border-bottom-left-radius: 0.5em;
+
+ border-radius: 0.5em 0 0.5em 0;
}
div#footer #time {
-display: none ;
+ display: none ;
}
div#footer #bpscredits {
text-align: right;
- background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images//bplogo.gif) no-repeat top right;
+ background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
padding-top: 4em;
-}
+}
/* logo stuff */
div#logo {
-}
-
-
-div#logo a {
- display: none;
position: absolute;
- left: 0;
- bottom: 0;
+ right: 2px;
+ top: 0;
+ height: 2.3em;
}
+
div#logo a img {
border: 0;
+ height: 100% !important;
+ width: auto !important;
+ float: right;
}
+
div#logo .rtname {
- position: absolute;
+ position: relative;
font-weight: bold;
- top: 1em;
- left: 1em;
+ text-align: center;
+ top: 0.7em;
+ padding-right: 1em;
+ float:left;
}
@@ -204,16 +154,42 @@ div#quickbar {
border-bottom: 1px solid #ccc;
}
-div#quick-personal {
- float: right;
- margin-right: 1em;
+
+#prefs-menu.sf-menu li li {
+ background: #eaeaea;
}
+#prefs-menu.sf-menu #li-preferences {
+ background: none;
+}
+
+#prefs-menu.sf-menu li:hover,
+#prefs-menu.sf-menu li.sfHover,
+#prefs-menu.sf-menu #li-preferences.sfHover,
+#prefs-menu.sf-menu #li-preferences:hover,
+#prefs-menu.sf-menu a:focus,
+#prefs-menu.sf-menu a:hover,
+#prefs-menu.sf-menu a:active,
+{
+ background-color: #CFDEFF;
+ text-color: #000;
+ color: #000;
+ border: none;
+}
+
+#prefs-menu .sfHover a,
+#prefs-menu .sfHover a:visited {
+ color: #000;
+ border: none;
+}
+
+
div#header h1 {
position: absolute;
- left: 7.25em;
+ left: 7em;
right: 20em;
+ top: 1.4em;
overflow: hidden;
height: 1em;
font-size: 1.4em;
diff --git a/rt/share/html/NoAuth/css/web2/main.css b/rt/share/html/NoAuth/css/web2/main.css
index 477478ce7..b184894d3 100644
--- a/rt/share/html/NoAuth/css/web2/main.css
+++ b/rt/share/html/NoAuth/css/web2/main.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,22 +47,15 @@
%# END BPS TAGGED BLOCK }}}
% $m->callback(CallbackName => 'Begin');
-@import "yui-fonts.css";
-@import "base.css";
+@import "../base/main.css";
+@import "base.css";
@import "layout.css";
@import "nav.css";
-@import "forms.css";
@import "boxes.css";
-
-@import "login.css";
@import "ticket-lists.css";
@import "ticket-search.css";
-@import "portlets.css";
@import "ticket.css";
-@import "tools.css";
-@import "admin.css";
-@import "collection.css";
@import "misc.css";
% $m->callback(CallbackName => 'End');
diff --git a/rt/share/html/NoAuth/css/web2/misc.css b/rt/share/html/NoAuth/css/web2/misc.css
index 3243fc55e..655c40031 100644
--- a/rt/share/html/NoAuth/css/web2/misc.css
+++ b/rt/share/html/NoAuth/css/web2/misc.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,34 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-@import "../base/misc.css";
-
-#body.calpopup {
- margin-left: 1em;
- margin-top: 1em;
-}
-
-#body.calpopup a.today {
- font-size: 1em;
- font-weight: bold;
-}
-
-#body.calpopup a {
- font-size: 0.8em;
-}
-
-.calendar {
- text-align: center;
- margin: 0 0 0 0;
-}
-
-.calendar td, .calendar th { padding: 0.1em 0.1em 0.1em 0.1em; }
-
-.calendar caption .month {
- padding: 0 0.25em 0 0.25em;
- font-size: 1.5em;
-}
-
.comment {
padding-left: 0.5em;
color: #999;
diff --git a/rt/share/html/NoAuth/css/web2/msie.css b/rt/share/html/NoAuth/css/web2/msie.css
index 023657525..81b31e4f6 100644
--- a/rt/share/html/NoAuth/css/web2/msie.css
+++ b/rt/share/html/NoAuth/css/web2/msie.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,10 +48,12 @@
div#body {
left: 0.25em;
height: 100%;
- top: 1em;
-
+ top: 6em;
}
+#main-navigation {
+ padding-bottom: 1em;
+}
#footer {
padding: 1em;
@@ -71,9 +73,10 @@ div#header h1 {
#topactions {
- top: 4.1em;
+ top: 3.5em;
width: auto;
}
+
.topaction form * {
vertical-align: top;
}
@@ -90,14 +93,6 @@ div#header h1 {
margin-top: 0.2em;
}
-div#page-navigation ul#actions-menu {
- margin-top: -2.9em;
- margin-right: -0.2em;
- border-top: 1px solid #ccc;
- border-right: none;
-}
-
-
div#page-navigation {
position: absolute;
top: 6.2em;
@@ -109,8 +104,6 @@ div#page-navigation {
div#page-navigation ul#page-menu {
- margin-top: -2.5em;
- margin-left: 4em;
background: none;
border: none;
}
@@ -166,6 +159,9 @@ div#nav li.last {
.titlebox .titlebox-title .right {
border-right: 2px solid #aaa;
+ display: block;
+ margin-top: 0.1em;
+ right: -0.2em;
}
@@ -174,7 +170,8 @@ div#nav li.last {
padding-top: 2.2em;
}
-.titlebox table.ticket-list, .titlebox table.queue-summary {
+
+.titlebox table.collection-as-table, .titlebox table.queue-summary {
width: 95%;
padding: 0.5em;
margin-left: auto;
@@ -205,12 +202,6 @@ table.queue-summary td, td.collection-as-table {
left: 0.5em;
}
-
-.titlebox .titlebox-title .right{
- top: 0.2em;
- right: -0.2em;
-}
-
/* nested things. like the ticket dates tab */
.titlebox .titlebox .titlebox-title .right{
top: 0.25em;
@@ -244,3 +235,16 @@ table.queue-summary td, td.collection-as-table {
word-wrap */
}
+div#logo .rtname {
+ float: right;
+ padding-right: 1em;
+}
+
+#page-action-menu {
+ top: 9.5em;
+}
+
+#rt-portal .titlebox-content {
+ height: 23em;
+}
+
diff --git a/rt/share/html/NoAuth/css/web2/msie6.css b/rt/share/html/NoAuth/css/web2/msie6.css
index 420ed88f0..25ef8584d 100644
--- a/rt/share/html/NoAuth/css/web2/msie6.css
+++ b/rt/share/html/NoAuth/css/web2/msie6.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,8 +49,8 @@
margin-top: 0;
}
-div#page-navigation ul#page-menu {
- margin-top: -3.2em;
+div#page-navigation {
+ width: 100%;
}
.titlebox-title .widget {
@@ -86,3 +86,11 @@ div#page-navigation ul#page-menu {
width: expression(this.width > 401 ? 400 : true);
}
+#prefs-menu .sf-sub-indicator {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.gif);
+}
+
+#app-nav .sf-sub-indicator {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.gif);
+}
+
diff --git a/rt/share/html/NoAuth/css/web2/nav.css b/rt/share/html/NoAuth/css/web2/nav.css
index bbde2d447..be63c5984 100644
--- a/rt/share/html/NoAuth/css/web2/nav.css
+++ b/rt/share/html/NoAuth/css/web2/nav.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,157 +45,247 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-div#nav {
- position: absolute;
- left: 0;
- font-size: 0.9em;
- top: 3.2em;
- width: 10.5em;
- background: #fff;
- -moz-border-radius-bottomright: 0.5em;
- -webkit-border-bottom-right-radius: 0.5em;
- border-left: 1px solid #999;
-border-top: 1px solid #999;
-
- -moz-border-radius-topright: 0.5em;
- -webkit-border-top-right-radius: 0.5em;
- z-index: 99;
+#main-navigation {
+ background-color: #fff;
+ -moz-border-radius-bottomright: 0.5em;
+ -moz-border-radius-topright: 0.5em;
+ -webkit-border-top-right-radius: 0.5em;
+ -webkit-border-bottom-right-radius: 0.5em;
+ border-radius: 0 0.5em 0.5em 0;
+ width: 10em;
+ font-size: 0.85em;
+ position: absolute;
+ top: 3.4em;
+ left: 0em;
+ z-index: 9997;
+ padding-top: 1em;
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+}
+
+.sf-sub-indicator {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+ margin-top: -3px;
+}
+#app-nav.sf-vertical li:hover ul,
+#app-nav.sf-vertical li.sfHover ul {
+ top: -1px;
+}
+#prefs-menu > li, #prefs-menu > li > a {
+ background-color: transparent;
}
-div#nav ul {
- padding-left: 0.75em;
- margin-left: 0;
- padding-right: 0.75em;
- list-style-type: none;
+#prefs-menu.sf-menu a,
+#prefs-menu .sf-menu a
+{
+ border: none;
}
-div#nav li:first-child {
- border-top: 1px solid #ccc;
- padding-top: 0.25em;
+#prefs-menu.sf-menu li li li {
+ border-left: 1px solid #ccc;
+}
+#prefs-menu.sf-menu li:hover ul,
+#prefs-menu.sf-menu li.sfHover ul {
+ top: 2.4em; /* match the height of the top level li */
}
-div#nav li {
- padding: 0.125em;
- padding-bottom: 0.25em;
- margin-bottom: 0.25em;
- border-bottom: 1px solid #ccc;
- padding-left: 0.5em;
- margin-right: 0.25em;
- margin-left: 0em;
+#prefs-menu.sf-menu li li:hover ul,
+#prefs-menu.sf-menu li li.sfHover ul {
+ top: 0;
}
-div#nav li li:first-child {
- margin-top: 0.25em;
+#prefs-menu .sf-sub-indicator {
+ background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+ margin-top: 0;
}
-div#nav li li {
- margin-left: -0.5em;
- padding-left: 0.25em;
- margin-right: -0.5em;
+
+#main-navigation ul li {
}
-div#nav li li:last-child {
- margin-bottom: 0;
- padding-bottom: 0;
+
+#main-navigation .sf-menu {
+ text-color: #000;
+}
+
+#main-navigation .sf-menu li {
+ background: none;
+}
+
+#main-navigation .sf-menu li:first-child {
+ border-top: 1px solid #ccc;
+}
+
+#main-navigation .sf-menu a,
+#main-navigation .sf-menu a:visited {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ color: #000;
border: none;
}
-div#nav .bullet {
- display: none;
+#main-navigation .sf-menu li {
+ border-bottom: 1px solid #ccc;
+
}
-div#nav .separator {
-display: none;
+
+#main-navigation .sf-menu ul a,
+#main-navigation .sf-menu ul a:visited {
+ color: #000;
}
-div#nav a, div#page-navigation a{
- text-decoration: none;
- font-weight: normal;
- color: #000;
+#main-navigation .sf-menu li li, #main-navigation .sf-menu li li li {
+ border-left: none;
+ background-color: #fff;
+ text-color: #547CCC;
+}
+
+#main-navigation .sf-menu li:hover, #main-navigation .sf-menu li.sfHover, #main-navigation .sf-menu a:focus, #main-navigation .sf-menu a:hover, #main-navigation .sf-menu a:active {
+ background-color: #CFDEFF;
+ text-color: #000;
+ color: #000;
}
-div#nav a:hover, div#page-navigation a:hover {
- text-decoration: underline;
+#main-navigation .sfHover a,
+#main-navigation .sfHover a:visited {
+ color: #000;
}
+/* to stop a "flash" of an unstyled menu on an older browser, hide the menu until superfish has initialized it */
+#app-nav.toplevel { display: none; }
+#app-nav.toplevel.sf-menu { display:block; }
+#page-menu.toplevel { display: none; }
+#page-menu.toplevel.sf-menu { display:block; }
+
+
+
+#page-navigation {
+ position: absolute;
+ top: 5.7em;
+ left: 10em;
+ right: 0em;
+ height: 2.1em;
+ z-index: 9995;
+ font-size: 0.9em;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ border-right: none;
+ border-radius: 0 0 0 0.5em;
+}
+#page-navigation .sf-menu {
+ margin: 0;
+}
-div#nav a.selected, div#page-navigation a.selected {
- font-weight: bold;
+#page-navigation .sf-menu li, #page-navigation .sf-menu li li, #page-navigation .sf-menu li li li {
+ background: none;
+ height: 2em;
+ padding-top: 0.25em;
+ padding-bottom: 0;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ display: inline-block;
}
-div#nav a.selected:after {
-/* content: " > " */
+#page-navigation .sf-menu ul {
+ background: white;
+ border-bottom: 2px solid #ccc;
}
-div#page-navigation {
- background: white;
- position: relative;
- width:100%;
- z-index: 10;
+#page-navigation .sf-menu li:hover, #page-navigation .sf-menu li.sfHover, #page-navigation .sf-menu a:focus, #page-navigation .sf-menu a:hover, #page-navigation .sf-menu a:active {
+ background: none;
}
+#page-navigation .sf-menu a:visited, #page-navigation .sf-menu a {
+ border: none;
+ color: #000;
+}
-div#page-navigation ul#page-menu {
- display: block;
- position: absolute;
- left: 8em;
- font-size: 0.9em;
- top: 2.3em;
- /* if bigger than 0.87em, firefox/opera will show the 2nd line a bit, ugly */
- height: 0.87em;
- background-color: white;
- right: 0em;
- padding-top:0.3em;
- padding-bottom:0.5em;
- border-top: 1px solid #aaa;
- overflow: auto;
+#page-navigation .sf-menu a {
+ padding: 0.25em;
}
-/* ie hack */
-* html div#page-navigation ul#page-menu {
- left: 6.5em;
- top: 3.2em;
- padding-left: 2em;
- width: 88%;
+#page-navigation .sf-menu a.sf-with-ul {
+ /* allow space for the submenu indicator */
+ padding-right: 2em;
}
+#page-menu.sf-menu li .sf-sub-indicator {
+ top: 0.7em;
+}
-div#page-navigation ul#actions-menu {
- position: absolute;
- right: 1em;
- top: 5.2em;
- margin-top: 0em;
- padding: 0.25em;
- padding-left: 0.5em;
- padding-right: 0.5em;
- background: #dedede;
- border-left: 1px solid #aaa;
- border-bottom: 2px solid #aaa;
- -moz-border-radius-bottomleft: 0.5em;
- -webkit-border-bottom-left-radius: 0.5em;
- -moz-border-radius-topright: 0.25em;
- -webkit-border-top-right-radius: 0.25em;
+#page-actions {
+ display: none;
+}
+#page-action-menu {
+ position: absolute;
+ display: block;
+ top: 8.2em;
+ right: 0em;
+ left: auto;
+ z-index: 9995;
+ font-size: 0.9em;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ -moz-border-radius-bottomleft: 0.5em;
+ -webkit-border-bottom-left-radius: 0.5em;
+ border-right: none;
+ border-top: none;
+ list-style-type: none;
+ padding: 0.5em;
+}
+#page-action-menu li {
+ display: inline;
}
+#page-action-menu a, #page-action-menu a:visited {
+ border: none;
+ padding: 0.25em;
+ color: #000;
+}
-div#page-navigation ul li{
- display: inline;
+#topactions {
+ position: absolute;
+ background: transparent;
+ top: 3.2em;
+ right: 0.7em;
+ width: auto;
+ min-width: 42em;
+ font-size: 0.9em;
+ z-index: 99;
+}
+#topactions form * {
+ vertical-align: top;
}
+#topactions button, #topactions select, #topactions input{
+ padding-top: 0em;
+ padding-bottom: 0em;
+ width: 8em;
-ul.page-navigation ul.page-menu {
- float: right;
}
+#topactions #simple-search .field{
+ margin-left: 1em;
+ color: #787;
+ }
+
+#topactions #simple-search .field:focus {
+ color: #000;
+ }
+
+
diff --git a/rt/share/html/NoAuth/css/web2/ticket-lists.css b/rt/share/html/NoAuth/css/web2/ticket-lists.css
index a53f388fb..9da15dae3 100644
--- a/rt/share/html/NoAuth/css/web2/ticket-lists.css
+++ b/rt/share/html/NoAuth/css/web2/ticket-lists.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,13 +45,14 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-table.ticket-list, table.queue-summary, table.collection {
+table.queue-summary, table.collection-as-table {
margin-top: 0.75em;
font-size: 0.9em;
border: 1px solid #aaa;
border-bottom: 2px solid #999;
border-right: 2px solid #999;
-
+ border-spacing: 0;
+ width: 100%;
}
@@ -66,12 +67,12 @@ table.queue-summary tr>*:last-child {
}
-table.ticket-list a, table.queue-summary a, table.collection a {
+table.queue-summary a, table.collection-as-table a {
font-weight: bold;
}
-table.ticket-list th.collection-as-table, table.collection th.collection-as-table {
+table.collection-as-table th.collection-as-table {
background: #ddd;
font-size: 0.9em;
margin-bottom: 0.5em;
@@ -130,11 +131,12 @@ tr.evenline+tr.evenline td, tr.oddline+tr.oddline td{
-table.ticket-list td:first-child, table.ticket-list th:first-child {
+table.collection-as-table td:first-child,
+table.collection-as-table th:first-child {
padding-left: 1em;
}
-table.ticket-list td:last-child, table.ticket-list th:last-child {
+table.collection-as-table td:last-child, table.collection-as-table th:last-child {
padding-right: 1em;
}
@@ -164,9 +166,71 @@ padding-bottom: 1em;
/* full-page ticket lists */
-#body>table.ticket-list {
+#body>table.collection-as-table {
margin-bottom: 2em;
}
+.chart.image {
+ margin-top: -1em;
+ padding-right: 2em;
+ float: left;
+ clear: both;
+}
+
+.chart-wrapper {
+ display: block;
+ width: auto;
+}
+
+.chart-wrapper .collection-as-table {
+ width: auto;
+ font-size: 1em;
+}
+
+.chart-wrapper .collection-as-table th.collection-as-table {
+ text-align: center;
+ padding: 0.5em;
+ padding-right: 1em;
+ padding-left: 1em;
+}
+
+.chart-wrapper .collection-as-table tr.total td {
+ border-top: 1px solid #ccc;
+}
+
+.chart-wrapper .collection-as-table td.value {
+ padding-left: 0.5em;
+}
+
+.chart-wrapper .query {
+ clear: both;
+ text-align: center;
+ font-size: 1.2em;
+ padding: 1em;
+}
+
+.chart-wrapper .collection-as-table .label {
+ font-weight: bold;
+}
+
+
+.chart-wrapper .query .label {
+ font-weight: bold;
+}
+
+.chart-meta {
+ padding-top: 2em;
+ border-top: 1px solid #ccc;
+}
+
+.chart-meta .chart-type {
+ display: inline-block;
+ float: left;
+ padding-right: 2em;
+ clear: both;
+}
+.chart-meta .saved-search {
+ display: inline-block;
+}
diff --git a/rt/share/html/NoAuth/css/web2/ticket-search.css b/rt/share/html/NoAuth/css/web2/ticket-search.css
index 49dc9ae37..f5267fa32 100644
--- a/rt/share/html/NoAuth/css/web2/ticket-search.css
+++ b/rt/share/html/NoAuth/css/web2/ticket-search.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -63,11 +63,8 @@
width: 11em;
}
-#pick-criteria td.label * {
- width: 8.5em;
-}
-
#pick-criteria td.label select {
+ width: 8.5em;
text-align: right;
}
@@ -84,11 +81,11 @@
#pick-criteria td.value input,
#pick-criteria td.value select {
- width: 10em;
+ width: 11em;
}
#pick-criteria td.value #ValueOfDate {
- width: 6em;
+ width: 11em;
}
@@ -136,7 +133,7 @@
overflow-x: auto;
}
-#comp-Search-Build .submit {
+#BuildQuery .submit {
width: 58%;
}
@@ -146,9 +143,6 @@
padding-right: 1em;
}
-#comp-Search-Build #columns {
-}
-
#display-options .submit {
width: 100%;
}
@@ -169,6 +163,7 @@
border-bottom: 1px solid #999;
-moz-border-radius-bottomleft: 0.5em;
-webkit-border-bottom-left-radius: 0.5em;
+ border-radius: 0 0 0 0.5em;
}
@@ -187,6 +182,56 @@
}
+.edit-saved-searches .label {
+ display: inline-block;
+ width: 10em;
+ font-weight: bold;
+}
+
+span#display-options {
+ display: block;
+ padding-top: 2em;
+ margin-top: 2em;
+ border-top: 1px solid #ccc;
+ clear: both;
+}
+
+span#display-options .titlebox#sorting {
+ float: left;
+ width: auto;
+ margin-right: 2em;
+ min-width: 35%;
+}
+
+span#display-options .titlebox#columns {
+ float: left;
+}
+
+span#display-options .titlebox#columns table.edit-columns td {
+ padding: 0.5em;
+}
+
+span#display-options .titlebox#columns table.edit-columns div.row {
+ width: 9em;
+}
+span#display-options .titlebox#columns table.edit-columns span.label {
+ width: 2em;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value input,
+span#display-options .titlebox#columns table.edit-columns span.value select {
+ width: 7em;
+ padding: 0;
+}
+
+span#display-options .titlebox#columns table.edit-columns span.value {
+ display: inline-block;
+ width:7em;
+}
+
+#BuildQuery #formatbuttons.submit{
+ width: 85%;
+}
.refresh {
float: left;
diff --git a/rt/share/html/NoAuth/css/web2/ticket.css b/rt/share/html/NoAuth/css/web2/ticket.css
index 6dbaed3f7..7d08166bc 100644
--- a/rt/share/html/NoAuth/css/web2/ticket.css
+++ b/rt/share/html/NoAuth/css/web2/ticket.css
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,7 +48,7 @@
div#ticket-history div.ticket-transaction {
border-top: 1px solid #ccc;
padding-bottom: 0.25em;
-
+ position: relative; /* gives us a container for position: absolute */
}
div#ticket-history div.odd {
@@ -67,7 +67,8 @@ div#ticket-history {
.ticket-transaction div.metadata span.actions {
position: absolute;
- right: 2.3em;
+ top: 0;
+ right: 0;
padding: 0em;
background: #ccc;
text-align: right;
@@ -77,6 +78,8 @@ div#ticket-history {
-moz-border-radius-bottomleft: 0.5em;
-webkit-border-bottom-left-radius: 0.5em;
white-space: nowrap;
+
+ border-radius: 0 0 0 0.5em;
}
.ticket-transaction div.metadata span.type {
@@ -88,8 +91,11 @@ div#ticket-history {
padding: 0.75em 0 0 0;
border-right: 1px solid #999;
border-bottom: 1px solid #999;
- -moz-border-radius: 0.25em;
+ -moz-border-radius-bottomright: 0.25em;
-webkit-border-bottom-right-radius: 0.25em;
+
+ border-radius: 0 0 0.25em 0;
+
}
div#ticket-history span.type a {
@@ -114,15 +120,9 @@ div#ticket-history span.time-taken {
div#ticket-history div.content {
padding-right: 1em;
padding-bottom: 0.7em;
- font-size: 1.1em;
margin-left: 1.5em;
}
-.plain-text-white-space {
- white-space: pre-wrap;
- font-family: monospace;
-}
-
.ticket-transaction .messagebody {
font-size: 1em;
padding-left: 1em;
@@ -133,6 +133,7 @@ div#ticket-history div.content {
min-height: 2.5em;
/* To avoid overlapping of "downloadattachment" by messagebody */
clear: left;
+ word-wrap: break-word;
}
.ticket-transaction .messagebody img {
@@ -154,7 +155,7 @@ border-bottom: 2px solid #aaa;
margin-top: 0.5em;
-moz-border-radius: 0.5em;
-webkit-border-radius: 0.5em;
-
+ border-radius: 0.5em;
}
div#ticket-history div.downloadattachment .downloadcontenttype{
@@ -201,7 +202,7 @@ div#ticket-history .messagebody .messagebody{
.ticket-info-attachments .titlebox-title .left { background-color: #993366; color: #fff;}
-.ticket-summary .titlebox-title a, div#body .ticket-summary .titlebox-title a:visited { color: #fff;}
+.ticket-summary .titlebox-title .left a, .ticket-summary .titlebox-title .left a:visited { color: #fff;}
.unread-messages .titlebox , .unread-messages .titlebox-title .left {
border: 1px solid #99a;
@@ -228,3 +229,52 @@ table.ticket-summary td.boxcontainer:first-child {
width: 50%;
}
+div.requestor-ticket-links {
+ text-align: left;
+ font-size: 0.8em;
+ padding-top: 0.25em;
+}
+
+.more-about-requestor-extra-field .label {
+ display: inline-block;
+ width: 8em;
+ font-weight: bold;
+ text-align: right;
+}
+
+.more-about-requestor-extra-field .value {
+ display: inline-block;
+}
+
+.ticket-info-requestor .more-about-requestor-extra,
+.ticket-info-requestor .comments-about-user,
+.ticket-info-requestor .more-about-requestor-tickets,
+.ticket-info-requestor .more-about-user-groups
+{
+ margin: 1em 0;
+}
+
+.ticket-info-requestor .comments-about-user .label,
+.ticket-info-requestor .more-about-user-groups .label,
+.ticket-info-requestor .more-about-requestor-tickets .label
+{
+ display: block;
+ font-weight: bold;
+ text-align: left;
+}
+
+.ticket-info-requestor .more-about-user-groups .value ul,
+.ticket-info-requestor .more-about-requestor-tickets ul
+{
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+
+/* textareas get to be bigger when we're in a table */
+tr.edit-custom-field.cftype-Text textarea,
+tr.edit-custom-field.cftype-Freeform input,
+tr.edit-custom-field.cftype-Wikitext textarea
+{
+ width: 100%;
+}
diff --git a/rt/share/html/NoAuth/iCal/dhandler b/rt/share/html/NoAuth/iCal/dhandler
index afc6a838d..c86f4cf7b 100644
--- a/rt/share/html/NoAuth/iCal/dhandler
+++ b/rt/share/html/NoAuth/iCal/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -65,7 +65,7 @@ $_ =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei for $name, $search;
# convert to perl strings
$_ = Encode::decode_utf8( $_ ) for $name, $search;
-my $user = RT::User->new( $RT::SystemUser );
+my $user = RT::User->new( RT->SystemUser );
$user->Load( $name );
$notfound->() unless $user->id;
diff --git a/rt/share/html/NoAuth/images/css/rollup-arrow.gif b/rt/share/html/NoAuth/images/css/rollup-arrow.gif
index f009ff4c6..2daaa5553 100644
--- a/rt/share/html/NoAuth/images/css/rollup-arrow.gif
+++ b/rt/share/html/NoAuth/images/css/rollup-arrow.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/images/farbtastic/marker.png b/rt/share/html/NoAuth/images/farbtastic/marker.png
new file mode 100755
index 000000000..3929bbb51
--- /dev/null
+++ b/rt/share/html/NoAuth/images/farbtastic/marker.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/farbtastic/mask.png b/rt/share/html/NoAuth/images/farbtastic/mask.png
new file mode 100644
index 000000000..b0a4d406f
--- /dev/null
+++ b/rt/share/html/NoAuth/images/farbtastic/mask.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/farbtastic/wheel.png b/rt/share/html/NoAuth/images/farbtastic/wheel.png
new file mode 100644
index 000000000..97b343d98
--- /dev/null
+++ b/rt/share/html/NoAuth/images/farbtastic/wheel.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gif b/rt/share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gif
new file mode 100755
index 000000000..085ccaeca
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100755
index 000000000..29460f0ef
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100755
index 000000000..64ece5707
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 000000000..5b5dab2ab
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.png
new file mode 100755
index 000000000..abdc01082
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 000000000..ac8b229af
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100755
index 000000000..9b383f4d2
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100755
index 000000000..a23baad25
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 000000000..ad3d6346e
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755
index 000000000..42ccba269
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 000000000..5a46b47cb
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 000000000..86c2baa65
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 000000000..4443fdc1a
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100755
index 000000000..39d5824d6
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100755
index 000000000..f1273672d
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 000000000..7c9fa6c6e
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100755
index 000000000..359397acf
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png
new file mode 100755
index 000000000..b273ff111
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.png
new file mode 100755
index 000000000..a641a371a
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png
new file mode 100644
index 000000000..09d1cdc85
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png
new file mode 100644
index 000000000..336103880
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png
new file mode 100644
index 000000000..59bd45b90
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png
new file mode 100644
index 000000000..b680b5cf8
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 000000000..2ab019b73
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.png
new file mode 100755
index 000000000..85e63e9f6
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.png
new file mode 100755
index 000000000..e117effa3
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.png b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.png
new file mode 100755
index 000000000..42f8f992c
--- /dev/null
+++ b/rt/share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.png
Binary files differ
diff --git a/rt/share/html/NoAuth/images/tablesorter/asc.gif b/rt/share/html/NoAuth/images/tablesorter/asc.gif
new file mode 100644
index 000000000..74157867f
--- /dev/null
+++ b/rt/share/html/NoAuth/images/tablesorter/asc.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/images/tablesorter/bg.gif b/rt/share/html/NoAuth/images/tablesorter/bg.gif
new file mode 100644
index 000000000..fac668fcf
--- /dev/null
+++ b/rt/share/html/NoAuth/images/tablesorter/bg.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/images/tablesorter/desc.gif b/rt/share/html/NoAuth/images/tablesorter/desc.gif
new file mode 100644
index 000000000..3b30b3c58
--- /dev/null
+++ b/rt/share/html/NoAuth/images/tablesorter/desc.gif
Binary files differ
diff --git a/rt/share/html/NoAuth/js/IE7/IE7.js b/rt/share/html/NoAuth/js/IE7/IE7.js
deleted file mode 100644
index 9f2b47f3f..000000000
--- a/rt/share/html/NoAuth/js/IE7/IE7.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* IE7/IE8.js - copyright 2004-2008, Dean Edwards */
-(function(){IE7={toString:function(){return"IE7 version 2.0 (beta3)"}};var k=IE7.appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1];if(/ie7_off/.test(top.location.search)||k<5)return;var Q=bG();var C=document.compatMode!="CSS1Compat";var bm=document.documentElement,v,s;var bA="!";var G=":link{ie7-link:link}:visited{ie7-link:visited}";var cj=/^[\w\.]+[^:]*$/;function W(a,b){if(cj.test(a))a=(b||"")+a;return a};function bn(a,b){a=W(a,b);return a.slice(0,a.lastIndexOf("/")+1)};var bB=document.scripts[document.scripts.length-1];var ck=bn(bB.src);try{var H=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}var X={};function cl(a,b){try{a=W(a,b);if(!X[a]){H.open("GET",a,false);H.send();if(H.status==0||H.status==200){X[a]=H.responseText}}}catch(e){}finally{return X[a]||""}};if(k<5.5){undefined=Q();bA="HTML:!";var cm=/(g|gi)$/;var cn=String.prototype.replace;String.prototype.replace=function(a,b){if(typeof b=="function"){if(a&&a.constructor==RegExp){var c=a;var d=c.global;if(d==null)d=cm.test(c);if(d)c=new RegExp(c.source)}else{c=new RegExp(bb(a))}var f,g=this,h="";while(g&&(f=c.exec(g))){h+=g.slice(0,f.index)+b.apply(this,f);g=g.slice(f.index+f[0].length);if(!d)break}return h+g}return cn.apply(this,arguments)};Array.prototype.pop=function(){if(this.length){var a=this[this.length-1];this.length--;return a}return undefined};Array.prototype.push=function(){for(var a=0;a<arguments.length;a++){this[this.length]=arguments[a]}return this.length};var co=this;Function.prototype.apply=function(a,b){if(a===undefined)a=co;else if(a==null)a=window;else if(typeof a=="string")a=new String(a);else if(typeof a=="number")a=new Number(a);else if(typeof a=="boolean")a=new Boolean(a);if(arguments.length==1)b=[];else if(b[0]&&b[0].writeln)b[0]=b[0].documentElement.document||b[0];var c="#ie7_apply",d;a[c]=this;switch(b.length){case 0:d=a[c]();break;case 1:d=a[c](b[0]);break;case 2:d=a[c](b[0],b[1]);break;case 3:d=a[c](b[0],b[1],b[2]);break;case 4:d=a[c](b[0],b[1],b[2],b[3]);break;case 5:d=a[c](b[0],b[1],b[2],b[3],b[4]);break;default:var f=[],g=b.length-1;do f[g]="a["+g+"]";while(g--);eval("r=o[$]("+f+")")}if(typeof a.valueOf=="function"){delete a[c]}else{a[c]=undefined;if(d&&d.writeln)d=d.documentElement.document||d}return d};Function.prototype.call=function(a){return this.apply(a,bC.apply(arguments,[1]))};G+="address,blockquote,body,dd,div,dt,fieldset,form,"+"frame,frameset,h1,h2,h3,h4,h5,h6,iframe,noframes,object,p,"+"hr,applet,center,dir,menu,pre,dl,li,ol,ul{display:block}"}var bC=Array.prototype.slice;var cJ=/%([1-9])/g;var cp=/^\s\s*/;var cq=/\s\s*$/;var cr=/([\/()[\]{}|*+-.,^$?\\])/g;var bD=/\bbase\b/;var bE=["constructor","toString"];var Y;function z(){};z.extend=function(a,b){Y=true;var c=new this;ba(c,a);Y=false;var d=c.constructor;function f(){if(!Y)d.apply(this,arguments)};c.constructor=f;f.extend=arguments.callee;ba(f,b);f.prototype=c;return f};z.prototype.extend=function(a){return ba(this,a)};var bo="#";var Z="~";var cs=/\\./g;var ct=/\(\?[:=!]|\[[^\]]+\]/g;var cu=/\(/g;var D=z.extend({constructor:function(a){this[Z]=[];this.merge(a)},exec:function(g){var h=this,p=this[Z];return String(g).replace(new RegExp(this,this.ignoreCase?"gi":"g"),function(){var a,b=1,c=0;while((a=h[bo+p[c++]])){var d=b+a.length+1;if(arguments[b]){var f=a.replacement;switch(typeof f){case"function":return f.apply(h,bC.call(arguments,b,d));case"number":return arguments[b+f];default:return f}}b=d}})},add:function(a,b){if(a instanceof RegExp){a=a.source}if(!this[bo+a])this[Z].push(String(a));this[bo+a]=new D.Item(a,b)},merge:function(a){for(var b in a)this.add(b,a[b])},toString:function(){return"("+this[Z].join(")|(")+")"}},{IGNORE:"$0",Item:z.extend({constructor:function(a,b){a=a instanceof RegExp?a.source:String(a);if(typeof b=="number")b=String(b);else if(b==null)b="";if(typeof b=="string"&&/\$(\d+)/.test(b)){if(/^\$\d+$/.test(b)){b=parseInt(b.slice(1))}else{var c=/'/.test(b.replace(/\\./g,""))?'"':"'";b=b.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\$(\d+)/g,c+"+(arguments[$1]||"+c+c+")+"+c);b=new Function("return "+c+b.replace(/(['"])\1\+(.*)\+\1\1$/,"$1")+c)}}this.length=D.count(a);this.replacement=b;this.toString=bG(a)}}),count:function(a){a=String(a).replace(cs,"").replace(ct,"");return I(a,cu).length}});function ba(a,b){if(a&&b){var c=(typeof b=="function"?Function:Object).prototype;var d=bE.length,f;if(Y)while(f=bE[--d]){var g=b[f];if(g!=c[f]){if(bD.test(g)){bF(a,f,g)}else{a[f]=g}}}for(f in b)if(c[f]===undefined){var g=b[f];if(a[f]&&typeof g=="function"&&bD.test(g)){bF(a,f,g)}else{a[f]=g}}}return a};function bF(c,d,f){var g=c[d];c[d]=function(){var a=this.base;this.base=g;var b=f.apply(this,arguments);this.base=a;return b}};function cv(a,b){if(!b)b=a;var c={};for(var d in a)c[d]=b[d];return c};function i(c){var d=arguments;var f=new RegExp("%([1-"+arguments.length+"])","g");return String(c).replace(f,function(a,b){return b<d.length?d[b]:a})};function I(a,b){return String(a).match(b)||[]};function bb(a){return String(a).replace(cr,"\\$1")};function cK(a){return String(a).replace(cp,"").replace(cq,"")};function bG(a){return function(){return a}};var bH=D.extend({ignoreCase:true});var cw=/\x01(\d+)/g,cx=/'/g,cy=/^\x01/,cz=/\\([\da-fA-F]{1,4})/g;var bp=[];var cA=new bH({"<!\\-\\-|\\-\\->":"","\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/":"","@(namespace|import)[^;\\n]+[;\\n]":"","'(\\\\.|[^'\\\\])*'":bJ,'"(\\\\.|[^"\\\\])*"':bJ,"\\s+":" "});function cB(a){return cA.exec(a)};function bI(c){return c.replace(cw,function(a,b){return bp[b-1]})};function bJ(c){return"\x01"+bp.push(c.replace(cz,function(a,b){return eval("'\\u"+"0000".slice(b.length)+b+"'")}).slice(1,-1).replace(cx,"\\'"))};function cC(a){return cy.test(a)?bp[a.slice(1)-1]:a};var cD=new D({Width:"Height",width:"height",Left:"Top",left:"top",Right:"Bottom",right:"bottom",onX:"onY"});function A(a){return cD.exec(a)};var bK=[];function bq(a){cF(a);w(window,"onresize",a)};function w(a,b,c){a.attachEvent(b,c);bK.push(arguments)};function cE(a,b,c){try{a.detachEvent(b,c)}catch(ignore){}};w(window,"onunload",function(){var a;while(a=bK.pop()){cE(a[0],a[1],a[2])}});function R(a,b,c){if(!a.elements)a.elements={};if(c)a.elements[b.uniqueID]=b;else delete a.elements[b.uniqueID];return c};w(window,"onbeforeprint",function(){if(!IE7.CSS.print)new bw("print");IE7.CSS.print.recalc()});var bL=/^\d+(px)?$/i;var J=/^\d+%$/;var E=function(a,b){if(bL.test(b))return parseInt(b);var c=a.style.left;var d=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;a.style.left=b||0;b=a.style.pixelLeft;a.style.left=c;a.runtimeStyle.left=d;return b};var br="ie7-";var bM=z.extend({constructor:function(){this.fixes=[];this.recalcs=[]},init:Q});var bs=[];function cF(a){bs.push(a)};IE7.recalc=function(){IE7.HTML.recalc();IE7.CSS.recalc();for(var a=0;a<bs.length;a++)bs[a]()};function bc(a){return a.currentStyle["ie7-position"]=="fixed"};function bt(a,b){return a.currentStyle[br+b]||a.currentStyle[b]};function K(a,b,c){if(a.currentStyle[br+b]==null){a.runtimeStyle[br+b]=a.currentStyle[b]}a.runtimeStyle[b]=c};function bN(a){var b=document.createElement(a||"object");b.style.cssText="position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";b.ie7_anon=true;return b};function B(a,b,c){if(!be[a]){F=[];var d="";var f=T.escape(a).split(",");for(var g=0;g<f.length;g++){o=m=x=0;S=f.length>1?2:0;var h=T.exec(f[g])||"if(0){";if(o){h+=i("if(e%1.nodeName!='!'){",m)}var p=S>1?bV:"";h+=i(p+bW,m);h+=Array(I(h,/\{/g).length+1).join("}");d+=h}eval(i(bX,F)+T.unescape(d)+"return s?null:r}");be[a]=_h}return be[a](b||document,c)};var bd=k<6;var bO=/^(href|src)$/;var bu={"class":"className","for":"htmlFor"};IE7._5=1;IE7._e=function(a,b){var c=a.all[b]||null;if(!c||c.id==b)return c;for(var d=0;d<c.length;d++){if(c[d].id==b)return c[d]}return null};IE7._f=function(a,b){if(b=="src"&&a.pngSrc)return a.pngSrc;var c=bd?(a.attributes[b]||a.attributes[bu[b.toLowerCase()]]):a.getAttributeNode(b);if(c&&(c.specified||b=="value")){if(bO.test(b)){return a.getAttribute(b,2)}else if(b=="class"){return a.className.replace(/\sie7_\w+/g,"")}else if(b=="style"){return a.style.cssText}else{return c.nodeValue}}return null};var bP="colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";ba(bu,cv(bP.toLowerCase().split(","),bP.split(",")));IE7._a=function(a){while(a&&(a=a.nextSibling)&&(a.nodeType!=1||a.nodeName=="!"))continue;return a};IE7._b=function(a){while(a&&(a=a.previousSibling)&&(a.nodeType!=1||a.nodeName=="!"))continue;return a};var cG=/([\s>+~,]|[^(]\+|^)([#.:\[])/g,cH=/(^|,)([^\s>+~])/g,cI=/\s*([\s>+~(),]|^|$)\s*/g,bQ=/\s\*\s/g;var bR=D.extend({constructor:function(a){this.base(a);this.sorter=new D;this.sorter.add(/:not\([^)]*\)/,D.IGNORE);this.sorter.add(/([ >](\*|[\w-]+))([^: >+~]*)(:\w+-child(\([^)]+\))?)([^: >+~]*)/,"$1$3$6$4")},ignoreCase:true,escape:function(a){return this.optimise(this.format(a))},format:function(a){return a.replace(cI,"$1").replace(cH,"$1 $2").replace(cG,"$1*$2")},optimise:function(a){return this.sorter.exec(a.replace(bQ,">* "))},unescape:function(a){return bI(a)}});var bS={"":"%1!=null","=":"%1=='%2'","~=":/(^| )%1( |$)/,"|=":/^%1(-|$)/,"^=":/^%1/,"$=":/%1$/,"*=":/%1/};var bT={"first-child":"!IE7._b(e%1)","link":"e%1.currentStyle['ie7-link']=='link'","visited":"e%1.currentStyle['ie7-link']=='visited'"};var bv="var p%2=0,i%2,e%2,n%2=e%1.";var bU="e%1.sourceIndex";var bV="var g="+bU+";if(!p[g]){p[g]=1;";var bW="r[r.length]=e%1;if(s)return e%1;";var bX="var _h=function(e0,s){IE7._5++;var r=[],p={},reg=[%1],d=document;";var F;var m;var o;var x;var S;var be={};var T=new bR({" (\\*|[\\w-]+)#([\\w-]+)":function(a,b,c){o=false;var d="var e%2=IE7._e(d,'%4');if(e%2&&";if(b!="*")d+="e%2.nodeName=='%3'&&";d+="(e%1==d||e%1.contains(e%2))){";if(x)d+=i("i%1=n%1.length;",x);return i(d,m++,m,b.toUpperCase(),c)}," (\\*|[\\w-]+)":function(a,b){S++;o=b=="*";var c=bv;c+=(o&&bd)?"all":"getElementsByTagName('%3')";c+=";for(i%2=0;(e%2=n%2[i%2]);i%2++){";return i(c,m++,x=m,b.toUpperCase())},">(\\*|[\\w-]+)":function(a,b){var c=x;o=b=="*";var d=bv;d+=c?"children":"childNodes";if(!o&&c)d+=".tags('%3')";d+=";for(i%2=0;(e%2=n%2[i%2]);i%2++){";if(o){d+="if(e%2.nodeType==1){";o=bd}else{if(!c)d+="if(e%2.nodeName=='%3'){"}return i(d,m++,x=m,b.toUpperCase())},"\\+(\\*|[\\w-]+)":function(a,b){var c="";if(o)c+="if(e%1.nodeName!='!'){";o=false;c+="e%1=IE7._a(e%1);if(e%1";if(b!="*")c+="&&e%1.nodeName=='%2'";c+="){";return i(c,m,b.toUpperCase())},"~(\\*|[\\w-]+)":function(a,b){var c="";if(o)c+="if(e%1.nodeName!='!'){";o=false;S=2;c+="while(e%1=e%1.nextSibling){if(e%1.ie7_adjacent==IE7._5)break;if(";if(b=="*"){c+="e%1.nodeType==1";if(bd)c+="&&e%1.nodeName!='!'"}else c+="e%1.nodeName=='%2'";c+="){e%1.ie7_adjacent=IE7._5;";return i(c,m,b.toUpperCase())},"#([\\w-]+)":function(a,b){o=false;var c="if(e%1.id=='%2'){";if(x)c+=i("i%1=n%1.length;",x);return i(c,m,b)},"\\.([\\w-]+)":function(a,b){o=false;F.push(new RegExp("(^|\\s)"+bb(b)+"(\\s|$)"));return i("if(e%1.className&&reg[%2].test(e%1.className)){",m,F.length-1)},"\\[([\\w-]+)\\s*([^=]?=)?\\s*([^\\]]*)\\]":function(a,b,c,d){var f=bu[b]||b;if(c){var g="e%1.getAttribute('%2',2)";if(!bO.test(b)){g="e%1.%3||"+g}b=i("("+g+")",m,b,f)}else{b=i("IE7._f(e%1,'%2')",m,b)}var h=bS[c||""]||"0";if(h&&h.source){F.push(new RegExp(i(h.source,bb(T.unescape(d)))));h="reg[%2].test(%1)";d=F.length-1}return"if("+i(h,b,d)+"){"},":+([\\w-]+)(\\(([^)]+)\\))?":function(a,b,c,d){b=bT[b];return"if("+(b?i(b,m,d||""):"0")+"){"}});var bY=/a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i;var bZ=/\s*\{\s*/,ca=/\s*\}\s*/,cb=/\s*\,\s*/;var cc=/(.*)(:first-(line|letter))/;var y=document.styleSheets;IE7.CSS=new(bM.extend({parser:new bH,screen:"",print:"",styles:[],rules:[],pseudoClasses:k<7?"first\\-child":"",dynamicPseudoClasses:{toString:function(){var a=[];for(var b in this)a.push(b);return a.join("|")}},init:function(){var a="^\x01$";var b="\\[class=?[^\\]]*\\]";var c=[];if(this.pseudoClasses)c.push(this.pseudoClasses);var d=this.dynamicPseudoClasses.toString();if(d)c.push(d);c=c.join("|");var f=k<7?["[>+~[(]|([:.])\\w+\\1"]:[b];if(c)f.push(":("+c+")");this.UNKNOWN=new RegExp(f.join("|")||a,"i");var g=k<7?["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"]:[b];var h=g.concat();if(c)h.push(":("+c+")");n.COMPLEX=new RegExp(h.join("|")||a,"ig");if(this.pseudoClasses)g.push(":("+this.pseudoClasses+")");L.COMPLEX=new RegExp(g.join("|")||a,"i");L.MATCH=new RegExp(d?"(.*):("+d+")(.*)":a,"i");this.createStyleSheet();this.refresh()},addEventHandler:function(){w.apply(null,arguments)},addFix:function(a,b){this.parser.add(a,b)},addRecalc:function(c,d,f,g){d=new RegExp("([{;\\s])"+c+"\\s*:\\s*"+d+"[^;}]*");var h=this.recalcs.length;if(g)g=c+":"+g;this.addFix(d,function(a,b){return(g?b+g:a)+";ie7-"+a.slice(1)+";ie7_recalc"+h+":1"});this.recalcs.push(arguments);return h},apply:function(){this.getInlineStyles();new bw("screen");this.trash()},createStyleSheet:function(){this.styleSheet=document.createStyleSheet();this.styleSheet.ie7=true;this.styleSheet.owningElement.ie7=true;this.styleSheet.cssText=G},getInlineStyles:function(){var a=document.getElementsByTagName("style"),b;for(var c=a.length-1;(b=a[c]);c--){if(!b.disabled&&!b.ie7){this.styles.push(b.innerHTML)}}},getText:function(a,b){try{var c=a.cssText}catch(e){c=""}if(H)c=cl(a.href,b)||c;return c},recalc:function(){this.screen.recalc();var a=/ie7_recalc\d+/g;var b=G.match(/[{,]/g).length;var c=b+(this.screen.cssText.match(/\{/g)||"").length;var d=this.styleSheet.rules,f;var g,h,p,t,q,j,u,l;for(q=b;q<c;q++){f=d[q];var r=f.style.cssText;if(f&&(g=r.match(a))){p=B(f.selectorText);if(p.length)for(j=0;j<g.length;j++){l=g[j];h=IE7.CSS.recalcs[l.slice(10)][2];for(u=0;(t=p[u]);u++){if(t.currentStyle[l])h(t,r)}}}}},refresh:function(){this.styleSheet.cssText=G+this.screen+this.print},trash:function(){for(var a=0;a<y.length;a++){if(!y[a].ie7){try{var b=y[a].cssText}catch(e){b=""}if(b)y[a].cssText=""}}}}));var bw=z.extend({constructor:function(a){this.media=a;this.load();IE7.CSS[a]=this;IE7.CSS.refresh()},createRule:function(a,b){if(IE7.CSS.UNKNOWN.test(a)){var c;if(bf&&(c=a.match(bf.MATCH))){return new bf(c[1],c[2],b)}else if(c=a.match(L.MATCH)){if(!bY.test(c[0])||L.COMPLEX.test(c[0])){return new L(a,c[1],c[2],c[3],b)}}else return new n(a,b)}return a+" {"+b+"}"},getText:function(){var h=[].concat(IE7.CSS.styles);var p=/@media\s+([^{]*)\{([^@]+\})\s*\}/gi;var t=/\ball\b|^$/i,q=/\bscreen\b/i,j=/\bprint\b/i;function u(a,b){l.value=b;return a.replace(p,l)};function l(a,b,c){b=r(b);switch(b){case"screen":case"print":if(b!=l.value)return"";case"all":return c}return""};function r(a){if(t.test(a))return"all";else if(q.test(a))return(j.test(a))?"all":"screen";else if(j.test(a))return"print"};var N=this;function O(a,b,c,d){var f="";if(!d){c=r(a.media);d=0}if(c=="all"||c==N.media){if(d<3){for(var g=0;g<a.imports.length;g++){f+=O(a.imports[g],bn(a.href,b),c,d+1)}}f+=cB(a.href?cg(a,b):h.pop()||"");f=u(f,N.media)}return f};var bl={};function cg(a,b){var c=W(a.href,b);if(bl[c])return"";bl[c]=(a.disabled)?"":ci(IE7.CSS.getText(a,b),bn(a.href,b));return bl[c]};var ch=/(url\s*\(\s*['"]?)([\w\.]+[^:\)]*['"]?\))/gi;function ci(a,b){return a.replace(ch,"$1"+b.slice(0,b.lastIndexOf("/")+1)+"$2")};for(var P=0;P<y.length;P++){if(!y[P].disabled&&!y[P].ie7){this.cssText+=O(y[P])}}},load:function(){this.cssText="";this.getText();this.parse();this.cssText=bI(this.cssText);X={}},parse:function(){this.cssText=IE7.CSS.parser.exec(this.cssText);var a=IE7.CSS.rules.length;var b=this.cssText.split(ca),c;var d,f,g,h;for(g=0;g<b.length;g++){c=b[g].split(bZ);d=c[0].split(cb);f=c[1];for(h=0;h<d.length;h++){d[h]=f?this.createRule(d[h],f):""}b[g]=d.join("\n")}this.cssText=b.join("\n");this.rules=IE7.CSS.rules.slice(a)},recalc:function(){var a,b;for(b=0;(a=this.rules[b]);b++)a.recalc()},toString:function(){return"@media "+this.media+"{"+this.cssText+"}"}});var bf;var n=IE7.Rule=z.extend({constructor:function(a,b){this.id=IE7.CSS.rules.length;this.className=n.PREFIX+this.id;a=a.match(cc)||a||"*";this.selector=a[1]||a;this.selectorText=this.parse(this.selector)+(a[2]||"");this.cssText=b;this.MATCH=new RegExp("\\s"+this.className+"(\\s|$)","g");IE7.CSS.rules.push(this);this.init()},init:Q,add:function(a){a.className+=" "+this.className},recalc:function(){var a=B(this.selector);for(var b=0;b<a.length;b++)this.add(a[b])},parse:function(a){var b=a.replace(n.CHILD," ").replace(n.COMPLEX,"");if(k<7)b=b.replace(n.MULTI,"");var c=I(b,n.TAGS).length-I(a,n.TAGS).length;var d=I(b,n.CLASSES).length-I(a,n.CLASSES).length+1;while(d>0&&n.CLASS.test(b)){b=b.replace(n.CLASS,"");d--}while(c>0&&n.TAG.test(b)){b=b.replace(n.TAG,"$1*");c--}b+="."+this.className;d=Math.min(d,2);c=Math.min(c,2);var f=-10*d-c;if(f>0){b=b+","+n.MAP[f]+" "+b}return b},remove:function(a){a.className=a.className.replace(this.MATCH,"$1")},toString:function(){return i("%1 {%2}",this.selectorText,this.cssText)}},{CHILD:/>/g,CLASS:/\.[\w-]+/,CLASSES:/[.:\[]/g,MULTI:/(\.[\w-]+)+/g,PREFIX:"ie7_class",TAG:/^\w+|([\s>+~])\w+/,TAGS:/^\w|[\s>+~]\w/g,MAP:{1:"html",2:"html body",10:".ie7_html",11:"html.ie7_html",12:"html.ie7_html body",20:".ie7_html .ie7_body",21:"html.ie7_html .ie7_body",22:"html.ie7_html body.ie7_body"}});var L=n.extend({constructor:function(a,b,c,d,f){this.attach=b||"*";this.dynamicPseudoClass=IE7.CSS.dynamicPseudoClasses[c];this.target=d;this.base(a,f)},recalc:function(){var a=B(this.attach),b;for(var c=0;b=a[c];c++){var d=this.target?B(this.target,b):[b];if(d.length)this.dynamicPseudoClass.apply(b,d,this)}}});var cd=z.extend({constructor:function(a,b){this.name=a;this.apply=b;this.instances={};IE7.CSS.dynamicPseudoClasses[a]=this},register:function(a){var b=a[2];a.id=b.id+a[0].uniqueID;if(!this.instances[a.id]){var c=a[1],d;for(d=0;d<c.length;d++)b.add(c[d]);this.instances[a.id]=a}},unregister:function(a){if(this.instances[a.id]){var b=a[2];var c=a[1],d;for(d=0;d<c.length;d++)b.remove(c[d]);delete this.instances[a.id]}}});if(k<7){var U=new cd("hover",function(a){var b=arguments;IE7.CSS.addEventHandler(a,k<5.5?"onmouseover":"onmouseenter",function(){U.register(b)});IE7.CSS.addEventHandler(a,k<5.5?"onmouseout":"onmouseleave",function(){U.unregister(b)})});w(document,"onmouseup",function(){var a=U.instances;for(var b in a)if(!a[b][0].contains(event.srcElement))U.unregister(a[b])})}IE7.CSS.addRecalc("[\\w-]+","inherit",function(c,d){var f=d.match(/[\w-]+\s*:\s*inherit/g);for(var g=0;g<f.length;g++){var h=f[g].replace(/ie7\-|\s*:\s*inherit/g,"").replace(/\-([a-z])/g,function(a,b){return b.toUpperCase()});c.runtimeStyle[h]=c.parentElement.currentStyle[h]}});IE7.HTML=new(bM.extend({fixed:{},init:Q,addFix:function(){this.fixes.push(arguments)},apply:function(){for(var a=0;a<this.fixes.length;a++){var b=B(this.fixes[a][0]);var c=this.fixes[a][1];for(var d=0;d<b.length;d++)c(b[d])}},addRecalc:function(){this.recalcs.push(arguments)},recalc:function(){for(var a=0;a<this.recalcs.length;a++){var b=B(this.recalcs[a][0]);var c=this.recalcs[a][1],d;var f=Math.pow(2,a);for(var g=0;(d=b[g]);g++){var h=d.uniqueID;if((this.fixed[h]&f)==0){d=c(d)||d;this.fixed[h]|=f}}}}}));if(k<7){document.createElement("abbr");IE7.HTML.addRecalc("label",function(a){if(!a.htmlFor){var b=B("input,textarea",a,true);if(b){w(a,"onclick",function(){b.click()})}}})}var V="[.\\d]";new function(_){var layout=IE7.Layout=this;G+="*{boxSizing:content-box}";IE7.hasLayout=k<5.5?function(a){return a.clientWidth}:function(a){return a.currentStyle.hasLayout};layout.boxSizing=function(a){if(!IE7.hasLayout(a)){a.style.height="0cm";if(a.currentStyle.verticalAlign=="auto")a.runtimeStyle.verticalAlign="top";collapseMargins(a)}};function collapseMargins(a){if(a!=s&&a.currentStyle.position!="absolute"){collapseMargin(a,"marginTop");collapseMargin(a,"marginBottom")}};function collapseMargin(a,b){if(!a.runtimeStyle[b]){var c=a.parentElement;if(c&&IE7.hasLayout(c)&&!IE7[b=="marginTop"?"_b":"_a"](a))return;var d=B(">*:"+(b=="marginTop"?"first":"last")+"-child",a,true);if(d&&d.currentStyle.styleFloat=="none"&&IE7.hasLayout(d)){collapseMargin(d,b);margin=_9(a,a.currentStyle[b]);childMargin=_9(d,d.currentStyle[b]);if(margin<0||childMargin<0){a.runtimeStyle[b]=margin+childMargin}else{a.runtimeStyle[b]=Math.max(childMargin,margin)}d.runtimeStyle[b]="0px"}}};function _9(a,b){return b=="auto"?0:E(a,b)};var UNIT=/^[.\d][\w%]*$/,AUTO=/^(auto|0cm)$/;var applyWidth,applyHeight;IE7.Layout.borderBox=function(a){applyWidth(a);applyHeight(a)};var fixWidth=function(g){applyWidth=function(a){if(!J.test(a.currentStyle.width))h(a);collapseMargins(a)};function h(a,b){if(!a.runtimeStyle.fixedWidth){if(!b)b=a.currentStyle.width;a.runtimeStyle.fixedWidth=(UNIT.test(b))?Math.max(0,q(a,b)):b;K(a,"width",a.runtimeStyle.fixedWidth)}};function p(a){if(!bc(a)){var b=a.offsetParent;while(b&&!IE7.hasLayout(b))b=b.offsetParent}return(b||s).clientWidth};function t(a,b){if(J.test(b))return parseInt(parseFloat(b)/100*p(a));return E(a,b)};var q=function(a,b){var c=a.currentStyle["box-sizing"]=="border-box";var d=0;if(C&&!c)d+=j(a)+u(a,"padding");else if(!C&&c)d-=j(a)+u(a,"padding");return t(a,b)+d};function j(a){return a.offsetWidth-a.clientWidth};function u(a,b){return t(a,a.currentStyle[b+"Left"])+t(a,a.currentStyle[b+"Right"])};G+="*{minWidth:none;maxWidth:none;min-width:none;max-width:none}";layout.minWidth=function(a){if(a.currentStyle["min-width"]!=null){a.style.minWidth=a.currentStyle["min-width"]}if(R(arguments.callee,a,a.currentStyle.minWidth!="none")){layout.boxSizing(a);h(a);l(a)}};eval("IE7.Layout.maxWidth="+String(layout.minWidth).replace(/min/g,"max"));function l(a){var b=a.getBoundingClientRect();var c=b.right-b.left;if(a.currentStyle.minWidth!="none"&&c<=q(a,a.currentStyle.minWidth)){a.runtimeStyle.width=a.currentStyle.minWidth}else if(a.currentStyle.maxWidth!="none"&&c>=q(a,a.currentStyle.maxWidth)){a.runtimeStyle.width=a.currentStyle.maxWidth}else{a.runtimeStyle.width=a.runtimeStyle.fixedWidth}};function r(a){if(R(r,a,/^(fixed|absolute)$/.test(a.currentStyle.position)&&bt(a,"left")!="auto"&&bt(a,"right")!="auto"&&AUTO.test(bt(a,"width")))){N(a);IE7.Layout.boxSizing(a)}};IE7.Layout.fixRight=r;function N(a){var b=t(a,a.runtimeStyle._c||a.currentStyle.left);var c=p(a)-t(a,a.currentStyle.right)-b-u(a,"margin");if(parseInt(a.runtimeStyle.width)==c)return;a.runtimeStyle.width="";if(bc(a)||g||a.offsetWidth<c){if(!C)c-=j(a)+u(a,"padding");if(c<0)c=0;a.runtimeStyle.fixedWidth=c;K(a,"width",c)}};var O=0;bq(function(){if(!s)return;var a,b=(O<s.clientWidth);O=s.clientWidth;var c=layout.minWidth.elements;for(a in c){var d=c[a];var f=(parseInt(d.runtimeStyle.width)==q(d,d.currentStyle.minWidth));if(b&&f)d.runtimeStyle.width="";if(b==f)l(d)}var c=layout.maxWidth.elements;for(a in c){var d=c[a];var f=(parseInt(d.runtimeStyle.width)==q(d,d.currentStyle.maxWidth));if(!b&&f)d.runtimeStyle.width="";if(b!=f)l(d)}for(a in r.elements)N(r.elements[a])});if(C){IE7.CSS.addRecalc("width",V,applyWidth)}if(k<7){IE7.CSS.addRecalc("min-width",V,layout.minWidth);IE7.CSS.addRecalc("max-width",V,layout.maxWidth);IE7.CSS.addRecalc("right",V,r)}};eval("var fixHeight="+A(fixWidth));fixWidth();fixHeight(true)};var bg=W("blank.gif",ck);var bh="DXImageTransform.Microsoft.AlphaImageLoader";var bx="progid:"+bh+"(src='%1',sizingMethod='%2')";var bi;var M=[];function by(a){if(bi.test(a.src)){var b=new Image(a.width,a.height);b.onload=function(){a.width=b.width;a.height=b.height;b=null};b.src=a.src;a.pngSrc=a.src;bz(a)}};if(k>=5.5&&k<7){IE7.CSS.addFix(/background(-image)?\s*:\s*([^};]*)?url\(([^\)]+)\)([^;}]*)?/,function(a,b,c,d,f){d=cC(d);return bi.test(d)?"filter:"+i(bx,d,"crop")+";zoom:1;background"+(b||"")+":"+(c||"")+"none"+(f||""):a});IE7.HTML.addRecalc("img,input",function(a){if(a.tagName=="INPUT"&&a.type!="image")return;by(a);w(a,"onpropertychange",function(){if(!bj&&event.propertyName=="src"&&a.src.indexOf(bg)==-1)by(a)})});var bj=false;w(window,"onbeforeprint",function(){bj=true;for(var a=0;a<M.length;a++)ce(M[a])});w(window,"onafterprint",function(){for(var a=0;a<M.length;a++)bz(M[a]);bj=false})}function bz(a,b){var c=a.filters[bh];if(c){c.src=a.src;c.enabled=true}else{a.runtimeStyle.filter=i(bx,a.src,b||"scale");M.push(a)}a.src=bg};function ce(a){a.src=a.pngSrc;a.filters[bh].enabled=false};new function(_){if(k>=7)return;IE7.CSS.addRecalc("position","fixed",_6,"absolute");IE7.CSS.addRecalc("background(-attachment)?","[^};]*fixed",_2);var $viewport=C?"body":"documentElement";function _3(){if(v.currentStyle.backgroundAttachment!="fixed"){if(v.currentStyle.backgroundImage=="none"){v.runtimeStyle.backgroundRepeat="no-repeat";v.runtimeStyle.backgroundImage="url("+bg+")"}v.runtimeStyle.backgroundAttachment="fixed"}_3=Q};var _0=bN("img");function _1(a){return a?bc(a)||_1(a.parentElement):false};function _d(a,b,c){setTimeout("document.all."+a.uniqueID+".runtimeStyle.setExpression('"+b+"','"+c+"')",0)};function _2(a){if(R(_2,a,a.currentStyle.backgroundAttachment=="fixed"&&!a.contains(v))){_3();bgLeft(a);bgTop(a);_8(a)}};function _8(a){_0.src=a.currentStyle.backgroundImage.slice(5,-2);var b=a.canHaveChildren?a:a.parentElement;b.appendChild(_0);setOffsetLeft(a);setOffsetTop(a);b.removeChild(_0)};function bgLeft(a){a.style.backgroundPositionX=a.currentStyle.backgroundPositionX;if(!_1(a)){_d(a,"backgroundPositionX","(parseInt(runtimeStyle.offsetLeft)+document."+$viewport+".scrollLeft)||0")}};eval(A(bgLeft));function setOffsetLeft(a){var b=_1(a)?"backgroundPositionX":"offsetLeft";a.runtimeStyle[b]=getOffsetLeft(a,a.style.backgroundPositionX)-a.getBoundingClientRect().left-a.clientLeft+2};eval(A(setOffsetLeft));function getOffsetLeft(a,b){switch(b){case"left":case"top":return 0;case"right":case"bottom":return s.clientWidth-_0.offsetWidth;case"center":return(s.clientWidth-_0.offsetWidth)/2;default:if(J.test(b)){return parseInt((s.clientWidth-_0.offsetWidth)*parseFloat(b)/100)}_0.style.left=b;return _0.offsetLeft}};eval(A(getOffsetLeft));function _6(a){if(R(_6,a,bc(a))){K(a,"position","absolute");K(a,"left",a.currentStyle.left);K(a,"top",a.currentStyle.top);_3();IE7.Layout.fixRight(a);_4(a)}};function _4(a,b){positionTop(a,b);positionLeft(a,b,true);if(!a.runtimeStyle.autoLeft&&a.currentStyle.marginLeft=="auto"&&a.currentStyle.right!="auto"){var c=s.clientWidth-getPixelWidth(a,a.currentStyle.right)-getPixelWidth(a,a.runtimeStyle._c)-a.clientWidth;if(a.currentStyle.marginRight=="auto")c=parseInt(c/2);if(_1(a.offsetParent))a.runtimeStyle.pixelLeft+=c;else a.runtimeStyle.shiftLeft=c}clipWidth(a);clipHeight(a)};function clipWidth(a){var b=a.runtimeStyle.fixWidth;a.runtimeStyle.borderRightWidth="";a.runtimeStyle.width=b?getPixelWidth(a,b):"";if(a.currentStyle.width!="auto"){var c=a.getBoundingClientRect();var d=a.offsetWidth-s.clientWidth+c.left-2;if(d>=0){a.runtimeStyle.borderRightWidth="0px";d=Math.max(E(a,a.currentStyle.width)-d,0);K(a,"width",d);return d}}};eval(A(clipWidth));function positionLeft(a,b){if(!b&&J.test(a.currentStyle.width)){a.runtimeStyle.fixWidth=a.currentStyle.width}if(a.runtimeStyle.fixWidth){a.runtimeStyle.width=getPixelWidth(a,a.runtimeStyle.fixWidth)}a.runtimeStyle.shiftLeft=0;a.runtimeStyle._c=a.currentStyle.left;a.runtimeStyle.autoLeft=a.currentStyle.right!="auto"&&a.currentStyle.left=="auto";a.runtimeStyle.left="";a.runtimeStyle.screenLeft=getScreenLeft(a);a.runtimeStyle.pixelLeft=a.runtimeStyle.screenLeft;if(!b&&!_1(a.offsetParent)){_d(a,"pixelLeft","runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document."+$viewport+".scrollLeft")}};eval(A(positionLeft));function getScreenLeft(a){var b=a.offsetLeft,c=1;if(a.runtimeStyle.autoLeft){b=s.clientWidth-a.offsetWidth-getPixelWidth(a,a.currentStyle.right)}if(a.currentStyle.marginLeft!="auto"){b-=getPixelWidth(a,a.currentStyle.marginLeft)}while(a=a.offsetParent){if(a.currentStyle.position!="static")c=-1;b+=a.offsetLeft*c}return b};eval(A(getScreenLeft));function getPixelWidth(a,b){return J.test(b)?parseInt(parseFloat(b)/100*s.clientWidth):E(a,b)};eval(A(getPixelWidth));function _g(){var a=_2.elements;for(var b in a)_8(a[b]);a=_6.elements;for(b in a){_4(a[b],true);_4(a[b],true)}_7=0};var _7;bq(function(){if(!_7)_7=setTimeout(_g,0)})};var bk={backgroundColor:"transparent",backgroundImage:"none",backgroundPositionX:null,backgroundPositionY:null,backgroundRepeat:null,borderTopWidth:0,borderRightWidth:0,borderBottomWidth:0,borderLeftStyle:"none",borderTopStyle:"none",borderRightStyle:"none",borderBottomStyle:"none",borderLeftWidth:0,height:null,marginTop:0,marginBottom:0,marginRight:0,marginLeft:0,width:"100%"};IE7.CSS.addRecalc("overflow","visible",function(a){if(a.parentNode.ie7_wrapped)return;if(IE7.Layout&&a.currentStyle["max-height"]!="auto"){IE7.Layout.maxHeight(a)}if(a.currentStyle.marginLeft=="auto")a.style.marginLeft=0;if(a.currentStyle.marginRight=="auto")a.style.marginRight=0;var b=document.createElement(bA);b.ie7_wrapped=a;for(var c in bk){b.style[c]=a.currentStyle[c];if(bk[c]!=null){a.runtimeStyle[c]=bk[c]}}b.style.display="block";b.style.position="relative";a.runtimeStyle.position="absolute";a.parentNode.insertBefore(b,a);b.appendChild(a)});function cf(){var f="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var g=0;g<f.length;g++){f[f[g]]=f[g-1]||"0.67em"}IE7.CSS.addFix(/(font(-size)?\s*:\s*)([\w.-]+)/,function(a,b,c,d){return b+(f[d]||d)});if(k<6){var h=/^\-/,p=/(em|ex)$/i;var t=/em$/i,q=/ex$/i;E=function(a,b){if(bL.test(b))return parseInt(b)||0;var c=h.test(b)?-1:1;if(p.test(b))c*=u(a);j.style.width=(c<0)?b.slice(1):b;v.appendChild(j);b=c*j.offsetWidth;j.removeNode();return parseInt(b)};var j=bN();function u(a){var b=1;j.style.fontFamily=a.currentStyle.fontFamily;j.style.lineHeight=a.currentStyle.lineHeight;while(a!=v){var c=a.currentStyle["ie7-font-size"];if(c){if(t.test(c))b*=parseFloat(c);else if(J.test(c))b*=(parseFloat(c)/100);else if(q.test(c))b*=(parseFloat(c)/2);else{j.style.fontSize=c;return 1}}a=a.parentElement}return b};IE7.CSS.addFix(/cursor\s*:\s*pointer/,"cursor:hand");IE7.CSS.addFix(/display\s*:\s*list-item/,"display:block")}function l(a){if(k<5.5)IE7.Layout.boxSizing(a.parentElement);var b=a.parentElement;var c=b.offsetWidth-a.offsetWidth-r(b);var d=(a.currentStyle["ie7-margin"]&&a.currentStyle.marginRight=="auto")||a.currentStyle["ie7-margin-right"]=="auto";switch(b.currentStyle.textAlign){case"right":c=d?parseInt(c/2):0;a.runtimeStyle.marginRight=c+"px";break;case"center":if(d)c=0;default:if(d)c/=2;a.runtimeStyle.marginLeft=parseInt(c)+"px"}};function r(a){return E(a,a.currentStyle.paddingLeft)+E(a,a.currentStyle.paddingRight)};IE7.CSS.addRecalc("margin(-left|-right)?","[^};]*auto",function(a){if(R(l,a,a.parentElement&&a.currentStyle.display=="block"&&a.currentStyle.marginLeft=="auto"&&a.currentStyle.position!="absolute")){l(a)}});bq(function(){for(var a in l.elements){var b=l.elements[a];b.runtimeStyle.marginLeft=b.runtimeStyle.marginRight="";l(b)}})};IE7.loaded=true;(function(){try{bm.doScroll("left")}catch(e){setTimeout(arguments.callee,1);return}try{eval(bB.innerHTML)}catch(e){}bi=new RegExp(bb(typeof IE7_PNG_SUFFIX=="string"?IE7_PNG_SUFFIX:"-trans.png")+"$","i");v=document.body;s=C?v:bm;v.className+=" ie7_body";bm.className+=" ie7_html";if(C)cf();IE7.CSS.init();IE7.HTML.init();IE7.HTML.apply();IE7.CSS.apply();IE7.recalc()})()})(); \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/IE7/IE8.js b/rt/share/html/NoAuth/js/IE7/IE8.js
deleted file mode 100644
index efa77585b..000000000
--- a/rt/share/html/NoAuth/js/IE7/IE8.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* IE7/IE8.js - copyright 2004-2008, Dean Edwards */
-(function(){IE7={toString:function(){return"IE7 version 2.0 (beta3)"}};var m=IE7.appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1];if(/ie7_off/.test(top.location.search)||m<5)return;var U=bT();var G=document.compatMode!="CSS1Compat";var bx=document.documentElement,w,t;var bN="!";var J=":link{ie7-link:link}:visited{ie7-link:visited}";var cB=/^[\w\.]+[^:]*$/;function bc(a,b){if(cB.test(a))a=(b||"")+a;return a};function by(a,b){a=bc(a,b);return a.slice(0,a.lastIndexOf("/")+1)};var bO=document.scripts[document.scripts.length-1];var cC=by(bO.src);try{var K=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}var bd={};function cD(a,b){try{a=bc(a,b);if(!bd[a]){K.open("GET",a,false);K.send();if(K.status==0||K.status==200){bd[a]=K.responseText}}}catch(e){}finally{return bd[a]||""}};if(m<5.5){undefined=U();bN="HTML:!";var cE=/(g|gi)$/;var cF=String.prototype.replace;String.prototype.replace=function(a,b){if(typeof b=="function"){if(a&&a.constructor==RegExp){var c=a;var d=c.global;if(d==null)d=cE.test(c);if(d)c=new RegExp(c.source)}else{c=new RegExp(W(a))}var f,g=this,h="";while(g&&(f=c.exec(g))){h+=g.slice(0,f.index)+b.apply(this,f);g=g.slice(f.index+f[0].length);if(!d)break}return h+g}return cF.apply(this,arguments)};Array.prototype.pop=function(){if(this.length){var a=this[this.length-1];this.length--;return a}return undefined};Array.prototype.push=function(){for(var a=0;a<arguments.length;a++){this[this.length]=arguments[a]}return this.length};var cG=this;Function.prototype.apply=function(a,b){if(a===undefined)a=cG;else if(a==null)a=window;else if(typeof a=="string")a=new String(a);else if(typeof a=="number")a=new Number(a);else if(typeof a=="boolean")a=new Boolean(a);if(arguments.length==1)b=[];else if(b[0]&&b[0].writeln)b[0]=b[0].documentElement.document||b[0];var c="#ie7_apply",d;a[c]=this;switch(b.length){case 0:d=a[c]();break;case 1:d=a[c](b[0]);break;case 2:d=a[c](b[0],b[1]);break;case 3:d=a[c](b[0],b[1],b[2]);break;case 4:d=a[c](b[0],b[1],b[2],b[3]);break;case 5:d=a[c](b[0],b[1],b[2],b[3],b[4]);break;default:var f=[],g=b.length-1;do f[g]="a["+g+"]";while(g--);eval("r=o[$]("+f+")")}if(typeof a.valueOf=="function"){delete a[c]}else{a[c]=undefined;if(d&&d.writeln)d=d.documentElement.document||d}return d};Function.prototype.call=function(a){return this.apply(a,bP.apply(arguments,[1]))};J+="address,blockquote,body,dd,div,dt,fieldset,form,"+"frame,frameset,h1,h2,h3,h4,h5,h6,iframe,noframes,object,p,"+"hr,applet,center,dir,menu,pre,dl,li,ol,ul{display:block}"}var bP=Array.prototype.slice;var cZ=/%([1-9])/g;var cH=/^\s\s*/;var cI=/\s\s*$/;var cJ=/([\/()[\]{}|*+-.,^$?\\])/g;var bQ=/\bbase\b/;var bR=["constructor","toString"];var be;function B(){};B.extend=function(a,b){be=true;var c=new this;bf(c,a);be=false;var d=c.constructor;function f(){if(!be)d.apply(this,arguments)};c.constructor=f;f.extend=arguments.callee;bf(f,b);f.prototype=c;return f};B.prototype.extend=function(a){return bf(this,a)};var bz="#";var V="~";var cK=/\\./g;var cL=/\(\?[:=!]|\[[^\]]+\]/g;var cM=/\(/g;var H=B.extend({constructor:function(a){this[V]=[];this.merge(a)},exec:function(g){var h=this,j=this[V];return String(g).replace(new RegExp(this,this.ignoreCase?"gi":"g"),function(){var a,b=1,c=0;while((a=h[bz+j[c++]])){var d=b+a.length+1;if(arguments[b]){var f=a.replacement;switch(typeof f){case"function":return f.apply(h,bP.call(arguments,b,d));case"number":return arguments[b+f];default:return f}}b=d}})},add:function(a,b){if(a instanceof RegExp){a=a.source}if(!this[bz+a])this[V].push(String(a));this[bz+a]=new H.Item(a,b)},merge:function(a){for(var b in a)this.add(b,a[b])},toString:function(){return"("+this[V].join(")|(")+")"}},{IGNORE:"$0",Item:B.extend({constructor:function(a,b){a=a instanceof RegExp?a.source:String(a);if(typeof b=="number")b=String(b);else if(b==null)b="";if(typeof b=="string"&&/\$(\d+)/.test(b)){if(/^\$\d+$/.test(b)){b=parseInt(b.slice(1))}else{var c=/'/.test(b.replace(/\\./g,""))?'"':"'";b=b.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\$(\d+)/g,c+"+(arguments[$1]||"+c+c+")+"+c);b=new Function("return "+c+b.replace(/(['"])\1\+(.*)\+\1\1$/,"$1")+c)}}this.length=H.count(a);this.replacement=b;this.toString=bT(a)}}),count:function(a){a=String(a).replace(cK,"").replace(cL,"");return L(a,cM).length}});function bf(a,b){if(a&&b){var c=(typeof b=="function"?Function:Object).prototype;var d=bR.length,f;if(be)while(f=bR[--d]){var g=b[f];if(g!=c[f]){if(bQ.test(g)){bS(a,f,g)}else{a[f]=g}}}for(f in b)if(c[f]===undefined){var g=b[f];if(a[f]&&typeof g=="function"&&bQ.test(g)){bS(a,f,g)}else{a[f]=g}}}return a};function bS(c,d,f){var g=c[d];c[d]=function(){var a=this.base;this.base=g;var b=f.apply(this,arguments);this.base=a;return b}};function cN(a,b){if(!b)b=a;var c={};for(var d in a)c[d]=b[d];return c};function i(c){var d=arguments;var f=new RegExp("%([1-"+arguments.length+"])","g");return String(c).replace(f,function(a,b){return b<d.length?d[b]:a})};function L(a,b){return String(a).match(b)||[]};function W(a){return String(a).replace(cJ,"\\$1")};function da(a){return String(a).replace(cH,"").replace(cI,"")};function bT(a){return function(){return a}};var bU=H.extend({ignoreCase:true});var cO=/\x01(\d+)/g,cP=/'/g,cQ=/^\x01/,cR=/\\([\da-fA-F]{1,4})/g;var bA=[];var bV=new bU({"<!\\-\\-|\\-\\->":"","\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/":"","@(namespace|import)[^;\\n]+[;\\n]":"","'(\\\\.|[^'\\\\])*'":bW,'"(\\\\.|[^"\\\\])*"':bW,"\\s+":" "});function cS(a){return bV.exec(a)};function bg(c){return c.replace(cO,function(a,b){return bA[b-1]})};function bW(c){return"\x01"+bA.push(c.replace(cR,function(a,b){return eval("'\\u"+"0000".slice(b.length)+b+"'")}).slice(1,-1).replace(cP,"\\'"))};function bB(a){return cQ.test(a)?bA[a.slice(1)-1]:a};var cT=new H({Width:"Height",width:"height",Left:"Top",left:"top",Right:"Bottom",right:"bottom",onX:"onY"});function C(a){return cT.exec(a)};var bX=[];function bC(a){cV(a);v(window,"onresize",a)};function v(a,b,c){a.attachEvent(b,c);bX.push(arguments)};function cU(a,b,c){try{a.detachEvent(b,c)}catch(ignore){}};v(window,"onunload",function(){var a;while(a=bX.pop()){cU(a[0],a[1],a[2])}});function X(a,b,c){if(!a.elements)a.elements={};if(c)a.elements[b.uniqueID]=b;else delete a.elements[b.uniqueID];return c};v(window,"onbeforeprint",function(){if(!IE7.CSS.print)new bJ("print");IE7.CSS.print.recalc()});var bY=/^\d+(px)?$/i;var M=/^\d+%$/;var D=function(a,b){if(bY.test(b))return parseInt(b);var c=a.style.left;var d=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;a.style.left=b||0;b=a.style.pixelLeft;a.style.left=c;a.runtimeStyle.left=d;return b};var bD="ie7-";var bZ=B.extend({constructor:function(){this.fixes=[];this.recalcs=[]},init:U});var bE=[];function cV(a){bE.push(a)};IE7.recalc=function(){IE7.HTML.recalc();IE7.CSS.recalc();for(var a=0;a<bE.length;a++)bE[a]()};function bh(a){return a.currentStyle["ie7-position"]=="fixed"};function bF(a,b){return a.currentStyle[bD+b]||a.currentStyle[b]};function N(a,b,c){if(a.currentStyle[bD+b]==null){a.runtimeStyle[bD+b]=a.currentStyle[b]}a.runtimeStyle[b]=c};function ca(a){var b=document.createElement(a||"object");b.style.cssText="position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";b.ie7_anon=true;return b};function x(a,b,c){if(!bj[a]){I=[];var d="";var f=E.escape(a).split(",");for(var g=0;g<f.length;g++){p=l=y=0;Y=f.length>1?2:0;var h=E.exec(f[g])||"if(0){";if(p){h+=i("if(e%1.nodeName!='!'){",l)}var j=Y>1?ch:"";h+=i(j+ci,l);h+=Array(L(h,/\{/g).length+1).join("}");d+=h}eval(i(cj,I)+E.unescape(d)+"return s?null:r}");bj[a]=_k}return bj[a](b||document,c)};var bi=m<6;var cb=/^(href|src)$/;var bG={"class":"className","for":"htmlFor"};IE7._1=1;IE7._e=function(a,b){var c=a.all[b]||null;if(!c||c.id==b)return c;for(var d=0;d<c.length;d++){if(c[d].id==b)return c[d]}return null};IE7._f=function(a,b){if(b=="src"&&a.pngSrc)return a.pngSrc;var c=bi?(a.attributes[b]||a.attributes[bG[b.toLowerCase()]]):a.getAttributeNode(b);if(c&&(c.specified||b=="value")){if(cb.test(b)){return a.getAttribute(b,2)}else if(b=="class"){return a.className.replace(/\sie7_\w+/g,"")}else if(b=="style"){return a.style.cssText}else{return c.nodeValue}}return null};var cc="colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";bf(bG,cN(cc.toLowerCase().split(","),cc.split(",")));IE7._3=function(a){while(a&&(a=a.nextSibling)&&(a.nodeType!=1||a.nodeName=="!"))continue;return a};IE7._4=function(a){while(a&&(a=a.previousSibling)&&(a.nodeType!=1||a.nodeName=="!"))continue;return a};var cW=/([\s>+~,]|[^(]\+|^)([#.:\[])/g,cX=/(^|,)([^\s>+~])/g,cY=/\s*([\s>+~(),]|^|$)\s*/g,cd=/\s\*\s/g;var ce=H.extend({constructor:function(a){this.base(a);this.sorter=new H;this.sorter.add(/:not\([^)]*\)/,H.IGNORE);this.sorter.add(/([ >](\*|[\w-]+))([^: >+~]*)(:\w+-child(\([^)]+\))?)([^: >+~]*)/,"$1$3$6$4")},ignoreCase:true,escape:function(a){return this.optimise(this.format(a))},format:function(a){return a.replace(cY,"$1").replace(cX,"$1 $2").replace(cW,"$1*$2")},optimise:function(a){return this.sorter.exec(a.replace(cd,">* "))},unescape:function(a){return bg(a)}});var cf={"":"%1!=null","=":"%1=='%2'","~=":/(^| )%1( |$)/,"|=":/^%1(-|$)/,"^=":/^%1/,"$=":/%1$/,"*=":/%1/};var bH={"first-child":"!IE7._4(e%1)","link":"e%1.currentStyle['ie7-link']=='link'","visited":"e%1.currentStyle['ie7-link']=='visited'"};var bI="var p%2=0,i%2,e%2,n%2=e%1.";var cg="e%1.sourceIndex";var ch="var g="+cg+";if(!p[g]){p[g]=1;";var ci="r[r.length]=e%1;if(s)return e%1;";var cj="var _k=function(e0,s){IE7._1++;var r=[],p={},reg=[%1],d=document;";var I;var l;var p;var y;var Y;var bj={};var E=new ce({" (\\*|[\\w-]+)#([\\w-]+)":function(a,b,c){p=false;var d="var e%2=IE7._e(d,'%4');if(e%2&&";if(b!="*")d+="e%2.nodeName=='%3'&&";d+="(e%1==d||e%1.contains(e%2))){";if(y)d+=i("i%1=n%1.length;",y);return i(d,l++,l,b.toUpperCase(),c)}," (\\*|[\\w-]+)":function(a,b){Y++;p=b=="*";var c=bI;c+=(p&&bi)?"all":"getElementsByTagName('%3')";c+=";for(i%2=0;(e%2=n%2[i%2]);i%2++){";return i(c,l++,y=l,b.toUpperCase())},">(\\*|[\\w-]+)":function(a,b){var c=y;p=b=="*";var d=bI;d+=c?"children":"childNodes";if(!p&&c)d+=".tags('%3')";d+=";for(i%2=0;(e%2=n%2[i%2]);i%2++){";if(p){d+="if(e%2.nodeType==1){";p=bi}else{if(!c)d+="if(e%2.nodeName=='%3'){"}return i(d,l++,y=l,b.toUpperCase())},"\\+(\\*|[\\w-]+)":function(a,b){var c="";if(p)c+="if(e%1.nodeName!='!'){";p=false;c+="e%1=IE7._3(e%1);if(e%1";if(b!="*")c+="&&e%1.nodeName=='%2'";c+="){";return i(c,l,b.toUpperCase())},"~(\\*|[\\w-]+)":function(a,b){var c="";if(p)c+="if(e%1.nodeName!='!'){";p=false;Y=2;c+="while(e%1=e%1.nextSibling){if(e%1.ie7_adjacent==IE7._1)break;if(";if(b=="*"){c+="e%1.nodeType==1";if(bi)c+="&&e%1.nodeName!='!'"}else c+="e%1.nodeName=='%2'";c+="){e%1.ie7_adjacent=IE7._1;";return i(c,l,b.toUpperCase())},"#([\\w-]+)":function(a,b){p=false;var c="if(e%1.id=='%2'){";if(y)c+=i("i%1=n%1.length;",y);return i(c,l,b)},"\\.([\\w-]+)":function(a,b){p=false;I.push(new RegExp("(^|\\s)"+W(b)+"(\\s|$)"));return i("if(e%1.className&&reg[%2].test(e%1.className)){",l,I.length-1)},"\\[([\\w-]+)\\s*([^=]?=)?\\s*([^\\]]*)\\]":function(a,b,c,d){var f=bG[b]||b;if(c){var g="e%1.getAttribute('%2',2)";if(!cb.test(b)){g="e%1.%3||"+g}b=i("("+g+")",l,b,f)}else{b=i("IE7._f(e%1,'%2')",l,b)}var h=cf[c||""]||"0";if(h&&h.source){I.push(new RegExp(i(h.source,W(E.unescape(d)))));h="reg[%2].test(%1)";d=I.length-1}return"if("+i(h,b,d)+"){"},":+([\\w-]+)(\\(([^)]+)\\))?":function(a,b,c,d){b=bH[b];return"if("+(b?i(b,l,d||""):"0")+"){"}});var ck=/a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i;var cl=/\s*\{\s*/,cm=/\s*\}\s*/,cn=/\s*\,\s*/;var co=/(.*)(:first-(line|letter))/;var z=document.styleSheets;IE7.CSS=new(bZ.extend({parser:new bU,screen:"",print:"",styles:[],rules:[],pseudoClasses:m<7?"first\\-child":"",dynamicPseudoClasses:{toString:function(){var a=[];for(var b in this)a.push(b);return a.join("|")}},init:function(){var a="^\x01$";var b="\\[class=?[^\\]]*\\]";var c=[];if(this.pseudoClasses)c.push(this.pseudoClasses);var d=this.dynamicPseudoClasses.toString();if(d)c.push(d);c=c.join("|");var f=m<7?["[>+~[(]|([:.])\\w+\\1"]:[b];if(c)f.push(":("+c+")");this.UNKNOWN=new RegExp(f.join("|")||a,"i");var g=m<7?["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"]:[b];var h=g.concat();if(c)h.push(":("+c+")");o.COMPLEX=new RegExp(h.join("|")||a,"ig");if(this.pseudoClasses)g.push(":("+this.pseudoClasses+")");O.COMPLEX=new RegExp(g.join("|")||a,"i");O.MATCH=new RegExp(d?"(.*):("+d+")(.*)":a,"i");this.createStyleSheet();this.refresh()},addEventHandler:function(){v.apply(null,arguments)},addFix:function(a,b){this.parser.add(a,b)},addRecalc:function(c,d,f,g){d=new RegExp("([{;\\s])"+c+"\\s*:\\s*"+d+"[^;}]*");var h=this.recalcs.length;if(g)g=c+":"+g;this.addFix(d,function(a,b){return(g?b+g:a)+";ie7-"+a.slice(1)+";ie7_recalc"+h+":1"});this.recalcs.push(arguments);return h},apply:function(){this.getInlineStyles();new bJ("screen");this.trash()},createStyleSheet:function(){this.styleSheet=document.createStyleSheet();this.styleSheet.ie7=true;this.styleSheet.owningElement.ie7=true;this.styleSheet.cssText=J},getInlineStyles:function(){var a=document.getElementsByTagName("style"),b;for(var c=a.length-1;(b=a[c]);c--){if(!b.disabled&&!b.ie7){this.styles.push(b.innerHTML)}}},getText:function(a,b){try{var c=a.cssText}catch(e){c=""}if(K)c=cD(a.href,b)||c;return c},recalc:function(){this.screen.recalc();var a=/ie7_recalc\d+/g;var b=J.match(/[{,]/g).length;var c=b+(this.screen.cssText.match(/\{/g)||"").length;var d=this.styleSheet.rules,f;var g,h,j,q,r,k,u,n;for(r=b;r<c;r++){f=d[r];var s=f.style.cssText;if(f&&(g=s.match(a))){j=x(f.selectorText);if(j.length)for(k=0;k<g.length;k++){n=g[k];h=IE7.CSS.recalcs[n.slice(10)][2];for(u=0;(q=j[u]);u++){if(q.currentStyle[n])h(q,s)}}}}},refresh:function(){this.styleSheet.cssText=J+this.screen+this.print},trash:function(){for(var a=0;a<z.length;a++){if(!z[a].ie7){try{var b=z[a].cssText}catch(e){b=""}if(b)z[a].cssText=""}}}}));var bJ=B.extend({constructor:function(a){this.media=a;this.load();IE7.CSS[a]=this;IE7.CSS.refresh()},createRule:function(a,b){if(IE7.CSS.UNKNOWN.test(a)){var c;if(F&&(c=a.match(F.MATCH))){return new F(c[1],c[2],b)}else if(c=a.match(O.MATCH)){if(!ck.test(c[0])||O.COMPLEX.test(c[0])){return new O(a,c[1],c[2],c[3],b)}}else return new o(a,b)}return a+" {"+b+"}"},getText:function(){var h=[].concat(IE7.CSS.styles);var j=/@media\s+([^{]*)\{([^@]+\})\s*\}/gi;var q=/\ball\b|^$/i,r=/\bscreen\b/i,k=/\bprint\b/i;function u(a,b){n.value=b;return a.replace(j,n)};function n(a,b,c){b=s(b);switch(b){case"screen":case"print":if(b!=n.value)return"";case"all":return c}return""};function s(a){if(q.test(a))return"all";else if(r.test(a))return(k.test(a))?"all":"screen";else if(k.test(a))return"print"};var R=this;function S(a,b,c,d){var f="";if(!d){c=s(a.media);d=0}if(c=="all"||c==R.media){if(d<3){for(var g=0;g<a.imports.length;g++){f+=S(a.imports[g],by(a.href,b),c,d+1)}}f+=cS(a.href?cy(a,b):h.pop()||"");f=u(f,R.media)}return f};var bw={};function cy(a,b){var c=bc(a.href,b);if(bw[c])return"";bw[c]=(a.disabled)?"":cA(IE7.CSS.getText(a,b),by(a.href,b));return bw[c]};var cz=/(url\s*\(\s*['"]?)([\w\.]+[^:\)]*['"]?\))/gi;function cA(a,b){return a.replace(cz,"$1"+b.slice(0,b.lastIndexOf("/")+1)+"$2")};for(var T=0;T<z.length;T++){if(!z[T].disabled&&!z[T].ie7){this.cssText+=S(z[T])}}},load:function(){this.cssText="";this.getText();this.parse();this.cssText=bg(this.cssText);bd={}},parse:function(){this.cssText=IE7.CSS.parser.exec(this.cssText);var a=IE7.CSS.rules.length;var b=this.cssText.split(cm),c;var d,f,g,h;for(g=0;g<b.length;g++){c=b[g].split(cl);d=c[0].split(cn);f=c[1];for(h=0;h<d.length;h++){d[h]=f?this.createRule(d[h],f):""}b[g]=d.join("\n")}this.cssText=b.join("\n");this.rules=IE7.CSS.rules.slice(a)},recalc:function(){var a,b;for(b=0;(a=this.rules[b]);b++)a.recalc()},toString:function(){return"@media "+this.media+"{"+this.cssText+"}"}});var F;var o=IE7.Rule=B.extend({constructor:function(a,b){this.id=IE7.CSS.rules.length;this.className=o.PREFIX+this.id;a=a.match(co)||a||"*";this.selector=a[1]||a;this.selectorText=this.parse(this.selector)+(a[2]||"");this.cssText=b;this.MATCH=new RegExp("\\s"+this.className+"(\\s|$)","g");IE7.CSS.rules.push(this);this.init()},init:U,add:function(a){a.className+=" "+this.className},recalc:function(){var a=x(this.selector);for(var b=0;b<a.length;b++)this.add(a[b])},parse:function(a){var b=a.replace(o.CHILD," ").replace(o.COMPLEX,"");if(m<7)b=b.replace(o.MULTI,"");var c=L(b,o.TAGS).length-L(a,o.TAGS).length;var d=L(b,o.CLASSES).length-L(a,o.CLASSES).length+1;while(d>0&&o.CLASS.test(b)){b=b.replace(o.CLASS,"");d--}while(c>0&&o.TAG.test(b)){b=b.replace(o.TAG,"$1*");c--}b+="."+this.className;d=Math.min(d,2);c=Math.min(c,2);var f=-10*d-c;if(f>0){b=b+","+o.MAP[f]+" "+b}return b},remove:function(a){a.className=a.className.replace(this.MATCH,"$1")},toString:function(){return i("%1 {%2}",this.selectorText,this.cssText)}},{CHILD:/>/g,CLASS:/\.[\w-]+/,CLASSES:/[.:\[]/g,MULTI:/(\.[\w-]+)+/g,PREFIX:"ie7_class",TAG:/^\w+|([\s>+~])\w+/,TAGS:/^\w|[\s>+~]\w/g,MAP:{1:"html",2:"html body",10:".ie7_html",11:"html.ie7_html",12:"html.ie7_html body",20:".ie7_html .ie7_body",21:"html.ie7_html .ie7_body",22:"html.ie7_html body.ie7_body"}});var O=o.extend({constructor:function(a,b,c,d,f){this.attach=b||"*";this.dynamicPseudoClass=IE7.CSS.dynamicPseudoClasses[c];this.target=d;this.base(a,f)},recalc:function(){var a=x(this.attach),b;for(var c=0;b=a[c];c++){var d=this.target?x(this.target,b):[b];if(d.length)this.dynamicPseudoClass.apply(b,d,this)}}});var A=B.extend({constructor:function(a,b){this.name=a;this.apply=b;this.instances={};IE7.CSS.dynamicPseudoClasses[a]=this},register:function(a){var b=a[2];a.id=b.id+a[0].uniqueID;if(!this.instances[a.id]){var c=a[1],d;for(d=0;d<c.length;d++)b.add(c[d]);this.instances[a.id]=a}},unregister:function(a){if(this.instances[a.id]){var b=a[2];var c=a[1],d;for(d=0;d<c.length;d++)b.remove(c[d]);delete this.instances[a.id]}}});if(m<7){var Z=new A("hover",function(a){var b=arguments;IE7.CSS.addEventHandler(a,m<5.5?"onmouseover":"onmouseenter",function(){Z.register(b)});IE7.CSS.addEventHandler(a,m<5.5?"onmouseout":"onmouseleave",function(){Z.unregister(b)})});v(document,"onmouseup",function(){var a=Z.instances;for(var b in a)if(!a[b][0].contains(event.srcElement))Z.unregister(a[b])})}IE7.CSS.addRecalc("[\\w-]+","inherit",function(c,d){var f=d.match(/[\w-]+\s*:\s*inherit/g);for(var g=0;g<f.length;g++){var h=f[g].replace(/ie7\-|\s*:\s*inherit/g,"").replace(/\-([a-z])/g,function(a,b){return b.toUpperCase()});c.runtimeStyle[h]=c.parentElement.currentStyle[h]}});IE7.HTML=new(bZ.extend({fixed:{},init:U,addFix:function(){this.fixes.push(arguments)},apply:function(){for(var a=0;a<this.fixes.length;a++){var b=x(this.fixes[a][0]);var c=this.fixes[a][1];for(var d=0;d<b.length;d++)c(b[d])}},addRecalc:function(){this.recalcs.push(arguments)},recalc:function(){for(var a=0;a<this.recalcs.length;a++){var b=x(this.recalcs[a][0]);var c=this.recalcs[a][1],d;var f=Math.pow(2,a);for(var g=0;(d=b[g]);g++){var h=d.uniqueID;if((this.fixed[h]&f)==0){d=c(d)||d;this.fixed[h]|=f}}}}}));if(m<7){document.createElement("abbr");IE7.HTML.addRecalc("label",function(a){if(!a.htmlFor){var b=x("input,textarea",a,true);if(b){v(a,"onclick",function(){b.click()})}}})}var P="[.\\d]";new function(_){var layout=IE7.Layout=this;J+="*{boxSizing:content-box}";IE7.hasLayout=m<5.5?function(a){return a.clientWidth}:function(a){return a.currentStyle.hasLayout};layout.boxSizing=function(a){if(!IE7.hasLayout(a)){a.style.height="0cm";if(a.currentStyle.verticalAlign=="auto")a.runtimeStyle.verticalAlign="top";collapseMargins(a)}};function collapseMargins(a){if(a!=t&&a.currentStyle.position!="absolute"){collapseMargin(a,"marginTop");collapseMargin(a,"marginBottom")}};function collapseMargin(a,b){if(!a.runtimeStyle[b]){var c=a.parentElement;if(c&&IE7.hasLayout(c)&&!IE7[b=="marginTop"?"_4":"_3"](a))return;var d=x(">*:"+(b=="marginTop"?"first":"last")+"-child",a,true);if(d&&d.currentStyle.styleFloat=="none"&&IE7.hasLayout(d)){collapseMargin(d,b);margin=_b(a,a.currentStyle[b]);childMargin=_b(d,d.currentStyle[b]);if(margin<0||childMargin<0){a.runtimeStyle[b]=margin+childMargin}else{a.runtimeStyle[b]=Math.max(childMargin,margin)}d.runtimeStyle[b]="0px"}}};function _b(a,b){return b=="auto"?0:D(a,b)};var UNIT=/^[.\d][\w%]*$/,AUTO=/^(auto|0cm)$/;var applyWidth,applyHeight;IE7.Layout.borderBox=function(a){applyWidth(a);applyHeight(a)};var fixWidth=function(g){applyWidth=function(a){if(!M.test(a.currentStyle.width))h(a);collapseMargins(a)};function h(a,b){if(!a.runtimeStyle.fixedWidth){if(!b)b=a.currentStyle.width;a.runtimeStyle.fixedWidth=(UNIT.test(b))?Math.max(0,r(a,b)):b;N(a,"width",a.runtimeStyle.fixedWidth)}};function j(a){if(!bh(a)){var b=a.offsetParent;while(b&&!IE7.hasLayout(b))b=b.offsetParent}return(b||t).clientWidth};function q(a,b){if(M.test(b))return parseInt(parseFloat(b)/100*j(a));return D(a,b)};var r=function(a,b){var c=a.currentStyle["box-sizing"]=="border-box";var d=0;if(G&&!c)d+=k(a)+u(a,"padding");else if(!G&&c)d-=k(a)+u(a,"padding");return q(a,b)+d};function k(a){return a.offsetWidth-a.clientWidth};function u(a,b){return q(a,a.currentStyle[b+"Left"])+q(a,a.currentStyle[b+"Right"])};J+="*{minWidth:none;maxWidth:none;min-width:none;max-width:none}";layout.minWidth=function(a){if(a.currentStyle["min-width"]!=null){a.style.minWidth=a.currentStyle["min-width"]}if(X(arguments.callee,a,a.currentStyle.minWidth!="none")){layout.boxSizing(a);h(a);n(a)}};eval("IE7.Layout.maxWidth="+String(layout.minWidth).replace(/min/g,"max"));function n(a){var b=a.getBoundingClientRect();var c=b.right-b.left;if(a.currentStyle.minWidth!="none"&&c<=r(a,a.currentStyle.minWidth)){a.runtimeStyle.width=a.currentStyle.minWidth}else if(a.currentStyle.maxWidth!="none"&&c>=r(a,a.currentStyle.maxWidth)){a.runtimeStyle.width=a.currentStyle.maxWidth}else{a.runtimeStyle.width=a.runtimeStyle.fixedWidth}};function s(a){if(X(s,a,/^(fixed|absolute)$/.test(a.currentStyle.position)&&bF(a,"left")!="auto"&&bF(a,"right")!="auto"&&AUTO.test(bF(a,"width")))){R(a);IE7.Layout.boxSizing(a)}};IE7.Layout.fixRight=s;function R(a){var b=q(a,a.runtimeStyle._c||a.currentStyle.left);var c=j(a)-q(a,a.currentStyle.right)-b-u(a,"margin");if(parseInt(a.runtimeStyle.width)==c)return;a.runtimeStyle.width="";if(bh(a)||g||a.offsetWidth<c){if(!G)c-=k(a)+u(a,"padding");if(c<0)c=0;a.runtimeStyle.fixedWidth=c;N(a,"width",c)}};var S=0;bC(function(){if(!t)return;var a,b=(S<t.clientWidth);S=t.clientWidth;var c=layout.minWidth.elements;for(a in c){var d=c[a];var f=(parseInt(d.runtimeStyle.width)==r(d,d.currentStyle.minWidth));if(b&&f)d.runtimeStyle.width="";if(b==f)n(d)}var c=layout.maxWidth.elements;for(a in c){var d=c[a];var f=(parseInt(d.runtimeStyle.width)==r(d,d.currentStyle.maxWidth));if(!b&&f)d.runtimeStyle.width="";if(b!=f)n(d)}for(a in s.elements)R(s.elements[a])});if(G){IE7.CSS.addRecalc("width",P,applyWidth)}if(m<7){IE7.CSS.addRecalc("min-width",P,layout.minWidth);IE7.CSS.addRecalc("max-width",P,layout.maxWidth);IE7.CSS.addRecalc("right",P,s)}};eval("var fixHeight="+C(fixWidth));fixWidth();fixHeight(true)};var bk=bc("blank.gif",cC);var bl="DXImageTransform.Microsoft.AlphaImageLoader";var bK="progid:"+bl+"(src='%1',sizingMethod='%2')";var bm;var Q=[];function bL(a){if(bm.test(a.src)){var b=new Image(a.width,a.height);b.onload=function(){a.width=b.width;a.height=b.height;b=null};b.src=a.src;a.pngSrc=a.src;bo(a)}};if(m>=5.5&&m<7){IE7.CSS.addFix(/background(-image)?\s*:\s*([^};]*)?url\(([^\)]+)\)([^;}]*)?/,function(a,b,c,d,f){d=bB(d);return bm.test(d)?"filter:"+i(bK,d,"crop")+";zoom:1;background"+(b||"")+":"+(c||"")+"none"+(f||""):a});IE7.HTML.addRecalc("img,input",function(a){if(a.tagName=="INPUT"&&a.type!="image")return;bL(a);v(a,"onpropertychange",function(){if(!bn&&event.propertyName=="src"&&a.src.indexOf(bk)==-1)bL(a)})});var bn=false;v(window,"onbeforeprint",function(){bn=true;for(var a=0;a<Q.length;a++)cp(Q[a])});v(window,"onafterprint",function(){for(var a=0;a<Q.length;a++)bo(Q[a]);bn=false})}function bo(a,b){var c=a.filters[bl];if(c){c.src=a.src;c.enabled=true}else{a.runtimeStyle.filter=i(bK,a.src,b||"scale");Q.push(a)}a.src=bk};function cp(a){a.src=a.pngSrc;a.filters[bl].enabled=false};new function(_){if(m>=7)return;IE7.CSS.addRecalc("position","fixed",_8,"absolute");IE7.CSS.addRecalc("background(-attachment)?","[^};]*fixed",_5);var $viewport=G?"body":"documentElement";function _6(){if(w.currentStyle.backgroundAttachment!="fixed"){if(w.currentStyle.backgroundImage=="none"){w.runtimeStyle.backgroundRepeat="no-repeat";w.runtimeStyle.backgroundImage="url("+bk+")"}w.runtimeStyle.backgroundAttachment="fixed"}_6=U};var _0=ca("img");function _2(a){return a?bh(a)||_2(a.parentElement):false};function _d(a,b,c){setTimeout("document.all."+a.uniqueID+".runtimeStyle.setExpression('"+b+"','"+c+"')",0)};function _5(a){if(X(_5,a,a.currentStyle.backgroundAttachment=="fixed"&&!a.contains(w))){_6();bgLeft(a);bgTop(a);_a(a)}};function _a(a){_0.src=a.currentStyle.backgroundImage.slice(5,-2);var b=a.canHaveChildren?a:a.parentElement;b.appendChild(_0);setOffsetLeft(a);setOffsetTop(a);b.removeChild(_0)};function bgLeft(a){a.style.backgroundPositionX=a.currentStyle.backgroundPositionX;if(!_2(a)){_d(a,"backgroundPositionX","(parseInt(runtimeStyle.offsetLeft)+document."+$viewport+".scrollLeft)||0")}};eval(C(bgLeft));function setOffsetLeft(a){var b=_2(a)?"backgroundPositionX":"offsetLeft";a.runtimeStyle[b]=getOffsetLeft(a,a.style.backgroundPositionX)-a.getBoundingClientRect().left-a.clientLeft+2};eval(C(setOffsetLeft));function getOffsetLeft(a,b){switch(b){case"left":case"top":return 0;case"right":case"bottom":return t.clientWidth-_0.offsetWidth;case"center":return(t.clientWidth-_0.offsetWidth)/2;default:if(M.test(b)){return parseInt((t.clientWidth-_0.offsetWidth)*parseFloat(b)/100)}_0.style.left=b;return _0.offsetLeft}};eval(C(getOffsetLeft));function _8(a){if(X(_8,a,bh(a))){N(a,"position","absolute");N(a,"left",a.currentStyle.left);N(a,"top",a.currentStyle.top);_6();IE7.Layout.fixRight(a);_7(a)}};function _7(a,b){positionTop(a,b);positionLeft(a,b,true);if(!a.runtimeStyle.autoLeft&&a.currentStyle.marginLeft=="auto"&&a.currentStyle.right!="auto"){var c=t.clientWidth-getPixelWidth(a,a.currentStyle.right)-getPixelWidth(a,a.runtimeStyle._c)-a.clientWidth;if(a.currentStyle.marginRight=="auto")c=parseInt(c/2);if(_2(a.offsetParent))a.runtimeStyle.pixelLeft+=c;else a.runtimeStyle.shiftLeft=c}clipWidth(a);clipHeight(a)};function clipWidth(a){var b=a.runtimeStyle.fixWidth;a.runtimeStyle.borderRightWidth="";a.runtimeStyle.width=b?getPixelWidth(a,b):"";if(a.currentStyle.width!="auto"){var c=a.getBoundingClientRect();var d=a.offsetWidth-t.clientWidth+c.left-2;if(d>=0){a.runtimeStyle.borderRightWidth="0px";d=Math.max(D(a,a.currentStyle.width)-d,0);N(a,"width",d);return d}}};eval(C(clipWidth));function positionLeft(a,b){if(!b&&M.test(a.currentStyle.width)){a.runtimeStyle.fixWidth=a.currentStyle.width}if(a.runtimeStyle.fixWidth){a.runtimeStyle.width=getPixelWidth(a,a.runtimeStyle.fixWidth)}a.runtimeStyle.shiftLeft=0;a.runtimeStyle._c=a.currentStyle.left;a.runtimeStyle.autoLeft=a.currentStyle.right!="auto"&&a.currentStyle.left=="auto";a.runtimeStyle.left="";a.runtimeStyle.screenLeft=getScreenLeft(a);a.runtimeStyle.pixelLeft=a.runtimeStyle.screenLeft;if(!b&&!_2(a.offsetParent)){_d(a,"pixelLeft","runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document."+$viewport+".scrollLeft")}};eval(C(positionLeft));function getScreenLeft(a){var b=a.offsetLeft,c=1;if(a.runtimeStyle.autoLeft){b=t.clientWidth-a.offsetWidth-getPixelWidth(a,a.currentStyle.right)}if(a.currentStyle.marginLeft!="auto"){b-=getPixelWidth(a,a.currentStyle.marginLeft)}while(a=a.offsetParent){if(a.currentStyle.position!="static")c=-1;b+=a.offsetLeft*c}return b};eval(C(getScreenLeft));function getPixelWidth(a,b){return M.test(b)?parseInt(parseFloat(b)/100*t.clientWidth):D(a,b)};eval(C(getPixelWidth));function _j(){var a=_5.elements;for(var b in a)_a(a[b]);a=_8.elements;for(b in a){_7(a[b],true);_7(a[b],true)}_9=0};var _9;bC(function(){if(!_9)_9=setTimeout(_j,0)})};var bp={backgroundColor:"transparent",backgroundImage:"none",backgroundPositionX:null,backgroundPositionY:null,backgroundRepeat:null,borderTopWidth:0,borderRightWidth:0,borderBottomWidth:0,borderLeftStyle:"none",borderTopStyle:"none",borderRightStyle:"none",borderBottomStyle:"none",borderLeftWidth:0,height:null,marginTop:0,marginBottom:0,marginRight:0,marginLeft:0,width:"100%"};IE7.CSS.addRecalc("overflow","visible",function(a){if(a.parentNode.ie7_wrapped)return;if(IE7.Layout&&a.currentStyle["max-height"]!="auto"){IE7.Layout.maxHeight(a)}if(a.currentStyle.marginLeft=="auto")a.style.marginLeft=0;if(a.currentStyle.marginRight=="auto")a.style.marginRight=0;var b=document.createElement(bN);b.ie7_wrapped=a;for(var c in bp){b.style[c]=a.currentStyle[c];if(bp[c]!=null){a.runtimeStyle[c]=bp[c]}}b.style.display="block";b.style.position="relative";a.runtimeStyle.position="absolute";a.parentNode.insertBefore(b,a);b.appendChild(a)});function cq(){var f="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var g=0;g<f.length;g++){f[f[g]]=f[g-1]||"0.67em"}IE7.CSS.addFix(/(font(-size)?\s*:\s*)([\w.-]+)/,function(a,b,c,d){return b+(f[d]||d)});if(m<6){var h=/^\-/,j=/(em|ex)$/i;var q=/em$/i,r=/ex$/i;D=function(a,b){if(bY.test(b))return parseInt(b)||0;var c=h.test(b)?-1:1;if(j.test(b))c*=u(a);k.style.width=(c<0)?b.slice(1):b;w.appendChild(k);b=c*k.offsetWidth;k.removeNode();return parseInt(b)};var k=ca();function u(a){var b=1;k.style.fontFamily=a.currentStyle.fontFamily;k.style.lineHeight=a.currentStyle.lineHeight;while(a!=w){var c=a.currentStyle["ie7-font-size"];if(c){if(q.test(c))b*=parseFloat(c);else if(M.test(c))b*=(parseFloat(c)/100);else if(r.test(c))b*=(parseFloat(c)/2);else{k.style.fontSize=c;return 1}}a=a.parentElement}return b};IE7.CSS.addFix(/cursor\s*:\s*pointer/,"cursor:hand");IE7.CSS.addFix(/display\s*:\s*list-item/,"display:block")}function n(a){if(m<5.5)IE7.Layout.boxSizing(a.parentElement);var b=a.parentElement;var c=b.offsetWidth-a.offsetWidth-s(b);var d=(a.currentStyle["ie7-margin"]&&a.currentStyle.marginRight=="auto")||a.currentStyle["ie7-margin-right"]=="auto";switch(b.currentStyle.textAlign){case"right":c=d?parseInt(c/2):0;a.runtimeStyle.marginRight=c+"px";break;case"center":if(d)c=0;default:if(d)c/=2;a.runtimeStyle.marginLeft=parseInt(c)+"px"}};function s(a){return D(a,a.currentStyle.paddingLeft)+D(a,a.currentStyle.paddingRight)};IE7.CSS.addRecalc("margin(-left|-right)?","[^};]*auto",function(a){if(X(n,a,a.parentElement&&a.currentStyle.display=="block"&&a.currentStyle.marginLeft=="auto"&&a.currentStyle.position!="absolute")){n(a)}});bC(function(){for(var a in n.elements){var b=n.elements[a];b.runtimeStyle.marginLeft=b.runtimeStyle.marginRight="";n(b)}})};IE7._g=function(a){a=a.firstChild;while(a){if(a.nodeType==3||(a.nodeType==1&&a.nodeName!="!"))return false;a=a.nextSibling}return true};IE7._h=function(a,b){while(a&&!a.getAttribute("lang"))a=a.parentNode;return a&&new RegExp("^"+W(b),"i").test(a.getAttribute("lang"))};function cr(a,b,c,d){d=/last/i.test(a)?d+"+1-":"";if(!isNaN(b))b="0n+"+b;else if(b=="even")b="2n";else if(b=="odd")b="2n+1";b=b.split("n");var f=b[0]?(b[0]=="-")?-1:parseInt(b[0]):1;var g=parseInt(b[1])||0;var h=f<0;if(h){f=-f;if(f==1)g++}var j=i(f==0?"%3%7"+(d+g):"(%4%3-%2)%6%1%70%5%4%3>=%2",f,g,c,d,"&&","%","==");if(h)j="!("+j+")";return j};bH={"link":"e%1.currentStyle['ie7-link']=='link'","visited":"e%1.currentStyle['ie7-link']=='visited'","checked":"e%1.checked","contains":"e%1.innerText.indexOf('%2')!=-1","disabled":"e%1.isDisabled","empty":"IE7._g(e%1)","enabled":"e%1.disabled===false","first-child":"!IE7._4(e%1)","lang":"IE7._h(e%1,'%2')","last-child":"!IE7._3(e%1)","only-child":"!IE7._4(e%1)&&!IE7._3(e%1)","target":"e%1.id==location.hash.slice(1)","indeterminate":"e%1.indeterminate"};IE7._i=function(a){if(a.rows){a.ie7_length=a.rows.length;a.ie7_lookup="rowIndex"}else if(a.cells){a.ie7_length=a.cells.length;a.ie7_lookup="cellIndex"}else if(a.ie7_indexed!=IE7._1){var b=0;var c=a.firstChild;while(c){if(c.nodeType==1&&c.nodeName!="!"){c.ie7_index=++b}c=c.nextSibling}a.ie7_length=b;a.ie7_lookup="ie7_index"}a.ie7_indexed=IE7._1;return a};var ba=E[V];var cs=ba[ba.length-1];ba.length--;E.merge({":not\\((\\*|[\\w-]+)?([^)]*)\\)":function(a,b,c){var d=(b&&b!="*")?i("if(e%1.nodeName=='%2'){",l,b.toUpperCase()):"";d+=E.exec(c);return"if(!"+d.slice(2,-1).replace(/\)\{if\(/g,"&&")+"){"},":nth(-last)?-child\\(([^)]+)\\)":function(a,b,c){p=false;b=i("e%1.parentNode.ie7_length",l);var d="if(p%1!==e%1.parentNode)p%1=IE7._i(e%1.parentNode);";d+="var i=e%1[p%1.ie7_lookup];if(p%1.ie7_lookup!='ie7_index')i++;if(";return i(d,l)+cr(a,c,"i",b)+"){"}});ba.push(cs);var bM="\\([^)]*\\)";if(IE7.CSS.pseudoClasses)IE7.CSS.pseudoClasses+="|";IE7.CSS.pseudoClasses+="before|after|last\\-child|only\\-child|empty|root|"+"not|nth\\-child|nth\\-last\\-child|contains|lang".split("|").join(bM+"|")+bM;bV.add(/::/,":");var bb=new A("focus",function(a){var b=arguments;IE7.CSS.addEventHandler(a,"onfocus",function(){bb.unregister(b);bb.register(b)});IE7.CSS.addEventHandler(a,"onblur",function(){bb.unregister(b)});if(a==document.activeElement){bb.register(b)}});var bq=new A("active",function(a){var b=arguments;IE7.CSS.addEventHandler(a,"onmousedown",function(){bq.register(b)})});v(document,"onmouseup",function(){var a=bq.instances;for(var b in a)bq.unregister(a[b])});var br=new A("checked",function(a){if(typeof a.checked!="boolean")return;var b=arguments;IE7.CSS.addEventHandler(a,"onpropertychange",function(){if(event.propertyName=="checked"){if(a.checked)br.register(b);else br.unregister(b)}});if(a.checked)br.register(b)});var bs=new A("enabled",function(a){if(typeof a.disabled!="boolean")return;var b=arguments;IE7.CSS.addEventHandler(a,"onpropertychange",function(){if(event.propertyName=="disabled"){if(!a.isDisabled)bs.register(b);else bs.unregister(b)}});if(!a.isDisabled)bs.register(b)});var bt=new A("disabled",function(a){if(typeof a.disabled!="boolean")return;var b=arguments;IE7.CSS.addEventHandler(a,"onpropertychange",function(){if(event.propertyName=="disabled"){if(a.isDisabled)bt.register(b);else bt.unregister(b)}});if(a.isDisabled)bt.register(b)});var bu=new A("indeterminate",function(a){if(typeof a.indeterminate!="boolean")return;var b=arguments;IE7.CSS.addEventHandler(a,"onpropertychange",function(){if(event.propertyName=="indeterminate"){if(a.indeterminate)bu.register(b);else bu.unregister(b)}});IE7.CSS.addEventHandler(a,"onclick",function(){bu.unregister(b)})});var bv=new A("target",function(a){var b=arguments;if(!a.tabIndex)a.tabIndex=0;IE7.CSS.addEventHandler(document,"onpropertychange",function(){if(event.propertyName=="activeElement"){if(a.id&&a.id==location.hash.slice(1))bv.register(b);else bv.unregister(b)}});if(a.id&&a.id==location.hash.slice(1))bv.register(b)});var ct=/^attr/;var cu=/^url\s*\(\s*([^)]*)\)$/;var cv={before0:"beforeBegin",before1:"afterBegin",after0:"afterEnd",after1:"beforeEnd"};var F=IE7.PseudoElement=o.extend({constructor:function(a,b,c){this.position=b;var d=c.match(F.CONTENT),f,g;if(d){d=d[1];f=d.split(/\s+/);for(var h=0;(g=f[h]);h++){f[h]=ct.test(g)?{attr:g.slice(5,-1)}:(g.charAt(0)=="'")?bB(g):bg(g)}d=f}this.content=d;this.base(a,bg(c))},init:function(){this.match=x(this.selector);for(var a=0;a<this.match.length;a++){var b=this.match[a].runtimeStyle;if(!b[this.position])b[this.position]={cssText:""};b[this.position].cssText+=";"+this.cssText;if(this.content!=null)b[this.position].content=this.content}},create:function(a){var b=a.runtimeStyle[this.position];if(b){var c=[].concat(b.content||"");for(var d=0;d<c.length;d++){if(typeof c[d]=="object"){c[d]=a.getAttribute(c[d].attr)}}c=c.join("");var f=c.match(cu);var g="overflow:hidden;"+b.cssText.replace(/'/g,'"');if(a.currentStyle.styleFloat!="none"){}var h=cv[this.position+Number(a.canHaveChildren)];var j='ie7_pseudo'+F.count++;a.insertAdjacentHTML(h,i(F.ANON,this.className,j,g,f?"":c));if(f){var q=document.getElementById(j);q.src=bB(f[1]);bo(q,"crop")}a.runtimeStyle[this.position]=null}},recalc:function(){if(this.content==null)return;for(var a=0;a<this.match.length;a++){this.create(this.match[a])}},toString:function(){return"."+this.className+"{display:inline}"}},{CONTENT:/content\s*:\s*([^;]*)(;|$)/,ANON:"<ie7:! class='ie7_anon %1' id=%2 style='%3'>%4</ie7:!>",MATCH:/(.*):(before|after).*/,count:0});var cw=/^(submit|reset|button)$/;IE7.HTML.addRecalc("button,input",function(a){if(a.tagName=="BUTTON"){var b=a.outerHTML.match(/ value="([^"]*)"/i);a.runtimeStyle.value=(b)?b[1]:""}if(a.type=="submit"){v(a,"onclick",function(){a.runtimeStyle.clicked=true;setTimeout("document.all."+a.uniqueID+".runtimeStyle.clicked=false",1)})}});IE7.HTML.addRecalc("form",function(c){v(c,"onsubmit",function(){for(var a,b=0;a=c[b];b++){if(cw.test(a.type)&&!a.disabled&&!a.runtimeStyle.clicked){a.disabled=true;setTimeout("document.all."+a.uniqueID+".disabled=false",1)}else if(a.tagName=="BUTTON"&&a.type=="submit"){setTimeout("document.all."+a.uniqueID+".value='"+a.value+"'",1);a.value=a.runtimeStyle.value}}})});IE7.HTML.addRecalc("img",function(a){if(a.alt&&!a.title)a.title=""});IE7.CSS.addRecalc("border-spacing",P,function(a){if(a.currentStyle.borderCollapse!="collapse"){a.cellSpacing=D(a,a.currentStyle["border-spacing"])}});IE7.CSS.addRecalc("box-sizing","content-box",IE7.Layout.boxSizing);IE7.CSS.addRecalc("box-sizing","border-box",IE7.Layout.borderBox);IE7.CSS.addFix(/opacity\s*:\s*([\d.]+)/,function(a,b){return"zoom:1;filter:Alpha(opacity="+((b*100)||1)+")"});var cx=/^image/i;IE7.HTML.addRecalc("object",function(a){if(cx.test(a.type)){a.body.style.cssText="margin:0;padding:0;border:none;overflow:hidden";return a}});IE7.loaded=true;(function(){try{bx.doScroll("left")}catch(e){setTimeout(arguments.callee,1);return}try{eval(bO.innerHTML)}catch(e){}bm=new RegExp(W(typeof IE7_PNG_SUFFIX=="string"?IE7_PNG_SUFFIX:"-trans.png")+"$","i");w=document.body;t=G?w:bx;w.className+=" ie7_body";bx.className+=" ie7_html";if(G)cq();IE7.CSS.init();IE7.HTML.init();IE7.HTML.apply();IE7.CSS.apply();IE7.recalc()})()})(); \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/IE7/ie7-recalc.js b/rt/share/html/NoAuth/js/IE7/ie7-recalc.js
deleted file mode 100644
index f07c5a694..000000000
--- a/rt/share/html/NoAuth/js/IE7/ie7-recalc.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/* IE7/IE8.js - copyright 2004-2008, Dean Edwards */
-(function(){if(!IE7.loaded)return;CLASSES=/\sie7_class\d+/g;IE7.CSS.extend({elements:{},handlers:[],reset:function(){this.removeEventHandlers();var a=this.elements;for(var b in a)a[b].runtimeStyle.cssText="";this.elements={};var a=IE7.Rule.elements;for(var b in a){with(a[b])className=className.replace(CLASSES,"")}IE7.Rule.elements={}},reload:function(){this.rules=[];this.getInlineStyles();this.screen.load();if(this.print)this.print.load();this.refresh();this.trash()},addRecalc:function(b,c,d,e){this.base(b,c,function(a){d(a);IE7.CSS.elements[a.uniqueID]=a},e)},recalc:function(){this.reset();this.base()},addEventHandler:function(a,b,c){a.attachEvent(b,c);this.handlers.push(arguments)},removeEventHandlers:function(){var a;while(a=this.handlers.pop()){a[0].detachEvent(a[1],a[2])}},getInlineStyles:function(){var a=document.getElementsByTagName("style"),b;for(var c=a.length-1;(b=a[c]);c--){if(!b.disabled&&!b.ie7){var d=b.cssText||b.innerHTML;this.styles.push(d);b.cssText=d}}},trash:function(){var a=document.styleSheets,b,c;for(c=0;c<a.length;c++){b=a[c];if(!b.ie7&&!b.cssText){b.cssText=b.cssText}}this.base()},getText:function(a){return a.cssText||this.base(a)}});IE7.CSS.addEventHandler(window,"onunload",function(){IE7.CSS.removeEventHandlers()});IE7.Rule.elements={};IE7.Rule.prototype.extend({add:function(a){this.base(a);IE7.Rule.elements[a.uniqueID]=a}});if(IE7.PseudoElement){IE7.PseudoElement.hash={};IE7.PseudoElement.prototype.extend({create:function(a){var b=this.selector+":"+a.uniqueID;if(!IE7.PseudoElement.hash[b]){IE7.PseudoElement.hash[b]=true;this.base(a)}}})}IE7.HTML.extend({elements:{},addRecalc:function(b,c){this.base(b,function(a){if(!this.elements[a.uniqueID]){c(a);this.elements[a.uniqueID]=a}})}});document.recalc=function(a){if(IE7.CSS.screen){if(a)IE7.CSS.reload();IE7.recalc()}}})(); \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/IE7/ie7-squish.js b/rt/share/html/NoAuth/js/IE7/ie7-squish.js
deleted file mode 100644
index 71128f550..000000000
--- a/rt/share/html/NoAuth/js/IE7/ie7-squish.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/* IE7/IE8.js - copyright 2004-2008, Dean Edwards */
-/* ---------------------------------------------------------------------
-
- Squish some IE bugs!
-
- Some of these bug fixes may have adverse effects so they are
- not included in the standard library. Add your own if you want.
-
---------------------------------------------------------------------- */
-
-// @NOTE: ie7Layout.boxSizing is the same as the "Holly Hack"
-
-if (IE7.loaded && IE7.appVersion < 7) {
-
- // "doubled margin" bug
- // http://www.positioniseverything.net/explorer/doubled-margin.html
- IE7.CSS.addFix(/(float\s*:\s*(left|right))/, "display:inline;$1");
-
- // "peekaboo" bug
- // http://www.positioniseverything.net/explorer/peekaboo.html
- if (IE7.appVersion >= 6) IE7.CSS.addRecalc("float", "(left|right)", function(element) {
- IE7.Layout.boxSizing(element.parentElement); // assing "hasLayout" to parent element
- // "doubled margin" bug
- element.style.display = "inline";
- });
-
- // "unscrollable content" bug
- // http://www.positioniseverything.net/explorer/unscrollable.html
- IE7.CSS.addRecalc("position", "absolute|fixed", function(element) {
- if (element.offsetParent && element.offsetParent.currentStyle.position == "relative")
- IE7.Layout.boxSizing(element.offsetParent); // assing "hasLayout"
- });
-}
-
-//# // get rid of Microsoft's pesky image toolbar
-//# document.write('<meta http-equiv="imagetoolbar" content="no">');
diff --git a/rt/share/html/NoAuth/js/ahah.js b/rt/share/html/NoAuth/js/ahah.js
deleted file mode 100644
index 5fcb47a19..000000000
--- a/rt/share/html/NoAuth/js/ahah.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-% $r->content_type('application/x-javascript');
-*/
-// originally Fetched from http://www.opendarwin.org/~drernie/src/ahah.js - No Copyright - Public Domain
-// a patch fetched from http://www.xfront.com/microformats/examples/ahah/example01/ahah.js - see http://issues.bestpractical.com/Ticket/Display.html?id=14296
-
-function ahah(url, target, delay) {
- // document.getElementById(target).innerHTML = 'Loading <a href="'+url+'">'+url +'</a>...';
- var req;
- if (window.XMLHttpRequest) {
- req = new XMLHttpRequest();
- } else if (window.ActiveXObject) {
- req = new ActiveXObject("Microsoft.XMLHTTP");
- }
-
- var use_get;
- if ( /webkit|firefox\/2/i.test( navigator.userAgent ) ) {
- // seems safari has weird problem with post:
- // it does remove the old content of target
- // while doesn't replace that with new content
- // so is firefox 2
- use_get = 1;
- }
-
- if (req != undefined) {
- req.onreadystatechange = function() {ahahDone(req, url, target, delay);};
- if ( use_get == 1 ) {
- req.open("GET", url, true);
- }
- else{
- req.open("POST", url, true);
- }
- req.send("");
- }
-}
-
-function ahahDone(req, url, target, delay) {
- if (req.readyState == 4) { // only if req is "loaded"
- if (req.status == 200) { // only if "OK"
- document.getElementById(target).innerHTML = req.responseText;
- } else {
- document.getElementById(target).innerHTML="Error loading '"+url+"':\n"+req.statusText;
- }
- if (delay != undefined) {
- setTimeout("ahah(url,target,delay)", delay); // resubmit after delay
- //server should ALSO delay before responding
- }
- }
-}
-
-% $m->abort();
diff --git a/rt/share/html/NoAuth/js/autohandler b/rt/share/html/NoAuth/js/autohandler
index c2fff834d..451bf6778 100644
--- a/rt/share/html/NoAuth/js/autohandler
+++ b/rt/share/html/NoAuth/js/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/NoAuth/js/cascaded.js b/rt/share/html/NoAuth/js/cascaded.js
index d7110d572..fb20b329b 100644
--- a/rt/share/html/NoAuth/js/cascaded.js
+++ b/rt/share/html/NoAuth/js/cascaded.js
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -75,6 +75,8 @@ function filter_cascade (id, val) {
else {
for (i in complete_children) {
if (!complete_children[i].label ||
+ (complete_children[i].hasAttribute &&
+ !complete_children[i].hasAttribute('label') ) ||
complete_children[i].label.substr(0, val.length) == val ) {
if ( complete_children[i].cloneNode ) {
new_option = complete_children[i].cloneNode(true);
diff --git a/rt/share/html/NoAuth/js/combobox.js b/rt/share/html/NoAuth/js/combobox.js
index 8413591fe..22815bdc3 100644
--- a/rt/share/html/NoAuth/js/combobox.js
+++ b/rt/share/html/NoAuth/js/combobox.js
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/NoAuth/js/dhandler b/rt/share/html/NoAuth/js/dhandler
new file mode 100644
index 000000000..cdb2588c6
--- /dev/null
+++ b/rt/share/html/NoAuth/js/dhandler
@@ -0,0 +1,65 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%ONCE>
+my $content = '';
+</%ONCE>
+<%INIT>
+my $arg = $m->dhandler_arg;
+if ( $arg =~ m{squished-[a-f0-9]{32}\.js$} ) {
+ my $squished = RT::Interface::Web::SquishedJS();
+
+ # Don't send Last-Modified since we don't handle If-Modified-Since
+ #$r->header_out( 'Last-Modified' => $squished->ModifiedTimeString );
+
+ $m->out( $squished->Content );
+}
+else {
+ return $m->decline;
+}
+
+</%INIT>
diff --git a/rt/share/html/NoAuth/js/farbtastic.js b/rt/share/html/NoAuth/js/farbtastic.js
new file mode 100644
index 000000000..5d2f60461
--- /dev/null
+++ b/rt/share/html/NoAuth/js/farbtastic.js
@@ -0,0 +1,347 @@
+/**
+ * Farbtastic Color Picker 1.2
+ * © 2008 Steven Wittens
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+(function ($){
+jQuery.fn.farbtastic = function (callback) {
+ $.farbtastic(this, callback);
+ return this;
+};
+
+jQuery.farbtastic = function (container, callback) {
+ var container = $(container).get(0);
+ return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback));
+}
+
+jQuery._farbtastic = function (container, callback) {
+ // Store farbtastic object
+ var fb = this;
+
+ // Insert markup
+ $(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');
+ var e = $('.farbtastic', container);
+ fb.wheel = $('.wheel', container).get(0);
+ // Dimensions
+ fb.radius = 84;
+ fb.square = 100;
+ fb.width = 194;
+
+ // Fix background PNGs in IE6
+ if (navigator.appVersion.match(/MSIE [0-6]\./)) {
+ $('*', e).each(function () {
+ if (this.currentStyle.backgroundImage != 'none') {
+ var image = this.currentStyle.backgroundImage;
+ image = this.currentStyle.backgroundImage.substring(5, image.length - 2);
+ $(this).css({
+ 'backgroundImage': 'none',
+ 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
+ });
+ }
+ });
+ }
+
+ /**
+ * Link to the given element(s) or callback.
+ */
+ fb.linkTo = function (callback) {
+ // Unbind previous nodes
+ if (typeof fb.callback == 'object') {
+ $(fb.callback).unbind('keyup', fb.updateValue);
+ }
+
+ // Reset color
+ fb.color = null;
+
+ // Bind callback or elements
+ if (typeof callback == 'function') {
+ fb.callback = callback;
+ }
+ else if (typeof callback == 'object' || typeof callback == 'string') {
+ fb.callback = $(callback);
+ fb.callback.bind('keyup', fb.updateValue);
+ if (fb.callback.get(0).value) {
+ fb.setColor(fb.callback.get(0).value);
+ }
+ }
+ return this;
+ }
+ fb.updateValue = function (event) {
+ if (this.value && this.value != fb.color) {
+ fb.setColor(this.value);
+ }
+ }
+
+ /**
+ * Change color with HTML syntax #123456
+ */
+ fb.setColor = function (color) {
+ var unpack = fb.unpack(color);
+ if (fb.color != color && unpack) {
+ fb.color = color;
+ fb.rgb = unpack;
+ fb.hsl = fb.RGBToHSL(fb.rgb);
+ fb.updateDisplay();
+ }
+ return this;
+ }
+
+ /**
+ * Change color with HSL triplet [0..1, 0..1, 0..1]
+ */
+ fb.setHSL = function (hsl) {
+ fb.hsl = hsl;
+ fb.rgb = fb.HSLToRGB(hsl);
+ fb.color = fb.pack(fb.rgb);
+ fb.updateDisplay();
+ return this;
+ }
+
+ /////////////////////////////////////////////////////
+
+ /**
+ * Retrieve the coordinates of the given event relative to the center
+ * of the widget.
+ */
+ fb.widgetCoords = function (event) {
+ var x, y;
+ var el = event.target || event.srcElement;
+ var reference = fb.wheel;
+
+ if (typeof event.offsetX != 'undefined') {
+ // Use offset coordinates and find common offsetParent
+ var pos = { x: event.offsetX, y: event.offsetY };
+
+ // Send the coordinates upwards through the offsetParent chain.
+ var e = el;
+ while (e) {
+ e.mouseX = pos.x;
+ e.mouseY = pos.y;
+ pos.x += e.offsetLeft;
+ pos.y += e.offsetTop;
+ e = e.offsetParent;
+ }
+
+ // Look for the coordinates starting from the wheel widget.
+ var e = reference;
+ var offset = { x: 0, y: 0 }
+ while (e) {
+ if (typeof e.mouseX != 'undefined') {
+ x = e.mouseX - offset.x;
+ y = e.mouseY - offset.y;
+ break;
+ }
+ offset.x += e.offsetLeft;
+ offset.y += e.offsetTop;
+ e = e.offsetParent;
+ }
+
+ // Reset stored coordinates
+ e = el;
+ while (e) {
+ e.mouseX = undefined;
+ e.mouseY = undefined;
+ e = e.offsetParent;
+ }
+ }
+ else {
+ // Use absolute coordinates
+ var pos = fb.absolutePosition(reference);
+ x = (event.pageX || 0*(event.clientX + $('html').get(0).scrollLeft)) - pos.x;
+ y = (event.pageY || 0*(event.clientY + $('html').get(0).scrollTop)) - pos.y;
+ }
+ // Subtract distance to middle
+ return { x: x - fb.width / 2, y: y - fb.width / 2 };
+ }
+
+ /**
+ * Mousedown handler
+ */
+ fb.mousedown = function (event) {
+ // Capture mouse
+ if (!document.dragging) {
+ $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);
+ document.dragging = true;
+ }
+
+ // Check which area is being dragged
+ var pos = fb.widgetCoords(event);
+ fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;
+
+ // Process
+ fb.mousemove(event);
+ return false;
+ }
+
+ /**
+ * Mousemove handler
+ */
+ fb.mousemove = function (event) {
+ // Get coordinates relative to color picker center
+ var pos = fb.widgetCoords(event);
+
+ // Set new HSL parameters
+ if (fb.circleDrag) {
+ var hue = Math.atan2(pos.x, -pos.y) / 6.28;
+ if (hue < 0) hue += 1;
+ fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);
+ }
+ else {
+ var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));
+ var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));
+ fb.setHSL([fb.hsl[0], sat, lum]);
+ }
+ return false;
+ }
+
+ /**
+ * Mouseup handler
+ */
+ fb.mouseup = function () {
+ // Uncapture mouse
+ $(document).unbind('mousemove', fb.mousemove);
+ $(document).unbind('mouseup', fb.mouseup);
+ document.dragging = false;
+ }
+
+ /**
+ * Update the markers and styles
+ */
+ fb.updateDisplay = function () {
+ // Markers
+ var angle = fb.hsl[0] * 6.28;
+ $('.h-marker', e).css({
+ left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',
+ top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'
+ });
+
+ $('.sl-marker', e).css({
+ left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',
+ top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'
+ });
+
+ // Saturation/Luminance gradient
+ $('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));
+
+ // Linked elements or callback
+ if (typeof fb.callback == 'object') {
+ // Set background/foreground color
+ $(fb.callback).css({
+ backgroundColor: fb.color,
+ color: fb.hsl[2] > 0.5 ? '#000' : '#fff'
+ });
+
+ // Change linked value
+ $(fb.callback).each(function() {
+ if (this.value && this.value != fb.color) {
+ this.value = fb.color;
+ }
+ });
+ }
+ else if (typeof fb.callback == 'function') {
+ fb.callback.call(fb, fb.color);
+ }
+ }
+
+ /**
+ * Get absolute position of element
+ */
+ fb.absolutePosition = function (el) {
+ var r = { x: el.offsetLeft, y: el.offsetTop };
+ // Resolve relative to offsetParent
+ if (el.offsetParent) {
+ var tmp = fb.absolutePosition(el.offsetParent);
+ r.x += tmp.x;
+ r.y += tmp.y;
+ }
+ return r;
+ };
+
+ /* Various color utility functions */
+ fb.pack = function (rgb) {
+ var r = Math.round(rgb[0] * 255);
+ var g = Math.round(rgb[1] * 255);
+ var b = Math.round(rgb[2] * 255);
+ return '#' + (r < 16 ? '0' : '') + r.toString(16) +
+ (g < 16 ? '0' : '') + g.toString(16) +
+ (b < 16 ? '0' : '') + b.toString(16);
+ }
+
+ fb.unpack = function (color) {
+ if (color.length == 7) {
+ return [parseInt('0x' + color.substring(1, 3)) / 255,
+ parseInt('0x' + color.substring(3, 5)) / 255,
+ parseInt('0x' + color.substring(5, 7)) / 255];
+ }
+ else if (color.length == 4) {
+ return [parseInt('0x' + color.substring(1, 2)) / 15,
+ parseInt('0x' + color.substring(2, 3)) / 15,
+ parseInt('0x' + color.substring(3, 4)) / 15];
+ }
+ }
+
+ fb.HSLToRGB = function (hsl) {
+ var m1, m2, r, g, b;
+ var h = hsl[0], s = hsl[1], l = hsl[2];
+ m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;
+ m1 = l * 2 - m2;
+ return [this.hueToRGB(m1, m2, h+0.33333),
+ this.hueToRGB(m1, m2, h),
+ this.hueToRGB(m1, m2, h-0.33333)];
+ }
+
+ fb.hueToRGB = function (m1, m2, h) {
+ h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);
+ if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
+ if (h * 2 < 1) return m2;
+ if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;
+ return m1;
+ }
+
+ fb.RGBToHSL = function (rgb) {
+ var min, max, delta, h, s, l;
+ var r = rgb[0], g = rgb[1], b = rgb[2];
+ min = Math.min(r, Math.min(g, b));
+ max = Math.max(r, Math.max(g, b));
+ delta = max - min;
+ l = (min + max) / 2;
+ s = 0;
+ if (l > 0 && l < 1) {
+ s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
+ }
+ h = 0;
+ if (delta > 0) {
+ if (max == r && max != g) h += (g - b) / delta;
+ if (max == g && max != b) h += (2 + (b - r) / delta);
+ if (max == b && max != r) h += (4 + (r - g) / delta);
+ h /= 6;
+ }
+ return [h, s, l];
+ }
+
+ // Install mousedown handler (the others are set on the document on-demand)
+ $('*', e).mousedown(fb.mousedown);
+
+ // Init color
+ fb.setColor('#000000');
+
+ // Set linked elements/callback
+ if (callback) {
+ fb.linkTo(callback);
+ }
+}
+})(jQuery);
diff --git a/rt/share/html/NoAuth/js/history-folding.js b/rt/share/html/NoAuth/js/history-folding.js
new file mode 100644
index 000000000..e6ad124d0
--- /dev/null
+++ b/rt/share/html/NoAuth/js/history-folding.js
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+function fold_message_stanza(e,showmsg, hidemsg) {
+ var box = jQuery(e).next("br").next('.message-stanza');
+ if ( box.hasClass('closed') ) {
+ jQuery([e, box[0]]).removeClass('closed').addClass('open');
+ jQuery(e).text( hidemsg);
+ } else {
+ jQuery([e, box[0]]).addClass('closed').removeClass('open');
+ jQuery(e).text( showmsg);
+ }
+}
+
+function toggle_all_folds(e, showmsg, hidemsg) {
+ var link = jQuery(e);
+ var history = link.closest(".history");
+ var dir = link.attr('data-direction');
+
+ if (dir == 'open') {
+ history.find(".message-stanza-folder.closed").click();
+ link.attr('data-direction', 'closed').text(hidemsg);
+ }
+ else if (dir == 'closed') {
+ history.find(".message-stanza-folder.open").click();
+ link.attr('data-direction', 'open').text(showmsg);
+ }
+ return false;
+}
diff --git a/rt/share/html/NoAuth/js/jquery-1.4.2.min.js b/rt/share/html/NoAuth/js/jquery-1.4.2.min.js
new file mode 100644
index 000000000..7c2430802
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery-1.4.2.min.js
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/rt/share/html/NoAuth/js/jquery-ui-1.8.4.custom.min.js b/rt/share/html/NoAuth/js/jquery-ui-1.8.4.custom.min.js
new file mode 100644
index 000000000..e90b4fe4b
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery-ui-1.8.4.custom.min.js
@@ -0,0 +1,224 @@
+/*!
+ * jQuery UI 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,
+b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,
+CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable",
+"off").css("MozUserSelect","")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none")},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
+"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=
+parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+
+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this,h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==
+b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);
+b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):
+this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});
+this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f,
+h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=
+b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*
+ * jQuery UI Position 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h=
+0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+=
+g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k,
+elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"?
+-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position=
+"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Accordion 1.8.5
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
+a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(g){return a._keydown(g)}).next().attr("role",
+"tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);
+this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
+b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
+a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
+c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
+if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);
+a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
+this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j,
+down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})});
+f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.5",animations:{slide:function(a,
+b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1],
+unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",
+paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
+;/*
+ * jQuery UI Autocomplete 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.position.js
+ */
+(function(e){e.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},_create:function(){var a=this,b=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!a.options.disabled){var d=e.ui.keyCode;switch(c.keyCode){case d.PAGE_UP:a._move("previousPage",
+c);break;case d.PAGE_DOWN:a._move("nextPage",c);break;case d.UP:a._move("previous",c);c.preventDefault();break;case d.DOWN:a._move("next",c);c.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:a.menu.element.is(":visible")&&c.preventDefault();case d.TAB:if(!a.menu.active)return;a.menu.select(c);break;case d.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);
+break}}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("<ul></ul>").addClass("ui-autocomplete").appendTo(e(this.options.appendTo||"body",b)[0]).mousedown(function(c){var d=a.menu.element[0];
+c.target===d&&setTimeout(function(){e(document).one("mousedown",function(f){f.target!==a.element[0]&&f.target!==d&&!e.ui.contains(d,f.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,d){d=d.item.data("item.autocomplete");false!==a._trigger("focus",null,{item:d})&&/^key/.test(c.originalEvent.type)&&a.element.val(d.value)},selected:function(c,d){d=d.item.data("item.autocomplete");var f=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();
+a.previous=f}false!==a._trigger("select",c,{item:d})&&a.element.val(d.value);a.close(c);a.selectedItem=d},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();
+e.Widget.prototype.destroy.call(this)},_setOption:function(a,b){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(e(b||"body",this.element[0].ownerDocument)[0])},_initSource:function(){var a,b;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(c,d){d(e.ui.autocomplete.filter(a,c.term))}}else if(typeof this.options.source==="string"){b=this.options.source;this.source=function(c,d){e.getJSON(b,
+c,d)}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search")!==false)return this._search(a)},_search:function(a){this.term=this.element.addClass("ui-autocomplete-loading").val();this.source({term:a},this.response)},_response:function(a){if(a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();this.element.removeClass("ui-autocomplete-loading")},
+close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this._trigger("close",a);this.menu.element.hide();this.menu.deactivate()}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return e.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return e.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=
+this.menu.element.empty().zIndex(this.element.zIndex()+1),c;this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();this.menu.element.show().position(e.extend({of:this.element},this.options.position));a=b.width("").outerWidth();c=this.element.outerWidth();b.outerWidth(Math.max(a,c))},_renderMenu:function(a,b){var c=this;e.each(b,function(d,f){c._renderItem(a,f)})},_renderItem:function(a,b){return e("<li></li>").data("item.autocomplete",b).append(e("<a></a>").text(b.label)).appendTo(a)},_move:function(a,
+b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var c=new RegExp(e.ui.autocomplete.escapeRegex(b),"i");return e.grep(a,function(d){return c.test(d.label||d.value||
+d)})}})})(jQuery);
+(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(e(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(b){a.activate(b,
+e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.attr("scrollTop"),f=this.element.height();if(c<0)this.element.attr("scrollTop",d+c);else c>f&&this.element.attr("scrollTop",d+c-f+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
+this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(c,a):this.activate(c,this.element.children(b))}else this.activate(c,
+this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(":first"));else{var b=this.active.offset().top,c=this.element.height(),d=this.element.children("li").filter(function(){var f=e(this).offset().top-b-c+e(this).height();return f<10&&f>-10});d.length||(d=this.element.children(":last"));this.activate(a,d)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||
+this.first())this.activate(a,this.element.children(":last"));else{var b=this.active.offset().top,c=this.element.height();result=this.element.children("li").filter(function(){var d=e(this).offset().top-b+c-e(this).height();return d<10&&d>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",
+a,{item:this.active})}})})(jQuery);
+;/*
+ * jQuery UI Tabs 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(a,e){if(a=="selected")this.options.collapsible&&
+e==this.options.selected||this.select(e);else{this.options[a]=e;this._tabify()}},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[a].concat(d.makeArray(arguments)))},_ui:function(a,e){return{tab:a,panel:e,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a=
+d(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(a){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var b=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
+(q=d("base")[0])&&l===q.href)){j=f.hash;f.href=j}if(h.test(j))b.panels=b.panels.add(b._sanitizeSelector(j));else if(j!=="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=b._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(c.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(b.panels[g-1]||b.list);f.data("destroy.tabs",true)}b.panels=b.panels.add(f)}else c.disabled.push(g)});if(a){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(b._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return b.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(c.selected>=0&&this.anchors.length){this.panels.eq(c.selected).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");b.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[c.selected],b.panels[c.selected]))});this.load(c.selected)}d(window).bind("unload",function(){b.lis.add(b.anchors).unbind(".tabs");b.lis=b.anchors=b.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[c.collapsible?"addClass":
+"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);a=0;for(var i;i=this.lis[a];a++)d(i)[d.inArray(a,c.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs",
+function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);b._trigger("show",
+null,b._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");b._trigger("show",null,b._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);b.element.dequeue("tabs")})}:function(g,f){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");b.element.dequeue("tabs")};this.anchors.bind(c.event+".tabs",
+function(){var g=this,f=d(g).closest("li"),j=b.panels.filter(":not(.ui-tabs-hide)"),l=d(b._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||b._trigger("select",null,b._ui(this,l[0]))===false){this.blur();return false}c.selected=b.anchors.index(this);b.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=-1;c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){s(g,
+j)}).dequeue("tabs");this.blur();return false}else if(!j.length){c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this));this.blur();return false}c.cookie&&b._cookie(c.selected,c.cookie);if(l.length){j.length&&b.element.queue("tabs",function(){s(g,j)});b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",
+function(){return false})},_getIndex:function(a){if(typeof a=="string")a=this.anchors.index(this.anchors.filter("[href$="+a+"]"));return a},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=
+e;var b=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){b.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(a,e,b){if(b===p)b=this.anchors.length;
+var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,a).replace(/#\{label\}/g,e));a=!a.indexOf("#")?a.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var i=d("#"+a);i.length||(i=d(h.panelTemplate).attr("id",a).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(b>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[b]);
+i.insertBefore(this.panels[b])}h.disabled=d.map(h.disabled,function(k){return k>=b?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[b],this.panels[b]));return this},remove:function(a){a=this._getIndex(a);var e=this.options,b=this.lis.eq(a).remove(),c=this.panels.eq(a).remove();
+if(b.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(a+(a+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=a}),function(h){return h>=a?--h:h});this._tabify();this._trigger("remove",null,this._ui(b.find("a")[0],c[0]));return this},enable:function(a){a=this._getIndex(a);var e=this.options;if(d.inArray(a,e.disabled)!=-1){this.lis.eq(a).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(b){return b!=a});this._trigger("enable",null,
+this._ui(this.anchors[a],this.panels[a]));return this}},disable:function(a){a=this._getIndex(a);var e=this.options;if(a!=e.selected){this.lis.eq(a).addClass("ui-state-disabled");e.disabled.push(a);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))}return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},
+load:function(a){a=this._getIndex(a);var e=this,b=this.options,c=this.anchors.eq(a)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(b.spinner){var i=d("span",c);i.data("label.tabs",i.html()).html(b.spinner)}this.xhr=d.ajax(d.extend({},b.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(c.hash)).html(k);e._cleanup();b.cache&&d.data(c,"cache.tabs",
+true);e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.error(k,n,a,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(a,
+e){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.4"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(a,e){var b=this,c=this.options,h=b._rotate||(b._rotate=function(i){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var k=c.selected;b.select(++k<b.anchors.length?k:0)},a);i&&i.stopPropagation()});e=b._unrotate||(b._unrotate=!e?function(i){i.clientX&&b.rotate(null)}:
+function(){t=c.selected;h()});if(a){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
+;/*
+ * jQuery UI Datepicker 1.8.4
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker
+ *
+ * Depends:
+ * jquery.ui.core.js
+ */
+(function(d,G){function L(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
+"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
+minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}function E(a,b){d.extend(a,
+b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.4"}});var y=(new Date).getTime();d.extend(L.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=
+f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},
+_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&
+b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==
+""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,
+c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),
+true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor==
+Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);
+d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},
+_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=
+d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;
+for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&
+this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&
+!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass,b.dpDiv).add(d("td."+d.datepicker._currentClass,b.dpDiv));c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();
+return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||
+a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,
+a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));
+var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||
+a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);
+d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&
+d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,
+h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");
+this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");
+this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");
+a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),
+k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];
+a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():
+"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&
+!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;
+b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=
+this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=
+d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,
+"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b==
+"object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"?4:p=="o"?
+3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,w,H){p=o(p)?H:w;for(w=0;w<p.length;w++)if(b.substr(s,p[w].length)==p[w]){s+=p[w].length;return w+1}throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(j)if(a.charAt(z)=="'"&&!o("'"))j=false;else r();else switch(a.charAt(z)){case "d":l=m("d");break;case "D":n("D",f,h);break;
+case "o":u=m("o");break;case "m":k=m("m");break;case "M":k=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else j=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){k=1;l=u;do{e=this._getDaysInMonth(c,
+k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";
+var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+1<a.length&&a.charAt(j+1)==o)&&j++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},k=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var j=0;j<a.length;j++)if(u)if(a.charAt(j)=="'"&&!i("'"))u=false;else l+=a.charAt(j);
+else switch(a.charAt(j)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=k("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=k("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(j)}return l},
+_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=
+a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,
+this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,k=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,j=u.exec(h);j;){switch(j[2]||"d"){case "d":case "D":g+=parseInt(j[1],
+10);break;case "w":case "W":g+=parseInt(j[1],10)*7;break;case "m":case "M":l+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break;case "y":case "Y":k+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break}j=u.exec(h)}return new Date(k,l,g)};if(b=(b=b==null?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):b)&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;
+a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||
+a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?
+new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&n<j?j:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a));
+n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+k+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,
+g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+k+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&
+a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+y+".datepicker._gotoToday('#"+a.id+"');\">"+k+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var M=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var N=
+"",D=0;D<i[1];D++){var J=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?
+f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=k?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,
+A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!k?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,K=B&&!H||!F[0]||j&&q<j||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==J.getTime()&&g==a.selectedMonth&&
+a._keyEvent||M.getTime()==q.getTime()&&M.getTime()==J.getTime()?" "+this._dayOverClass:"")+(K?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!w?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!B||w)&&F[2]?' title="'+F[2]+'"':"")+(K?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!w?"&#xa0;":K?'<span class="ui-state-default">'+q.getDate()+
+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==J.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");N+=x}I+=N}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
+"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='<div class="ui-datepicker-title">',o="";if(h||!k)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+
+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(j+=o+(h||!(k&&l)?"&#xa0;":""));if(h||!l)j+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,
+i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)j+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";j+="</select>"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?"&#xa0;":"")+o;j+="</div>";return j},_adjustInstDate:function(a,b,c){var e=
+a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,
+"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);
+c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,
+"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=
+function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));
+return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.4";window["DP_jQuery_"+y]=d})(jQuery);
+;
diff --git a/rt/share/html/NoAuth/js/jquery-ui-patch-datepicker.js b/rt/share/html/NoAuth/js/jquery-ui-patch-datepicker.js
new file mode 100644
index 000000000..40cc0db99
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery-ui-patch-datepicker.js
@@ -0,0 +1,61 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+(function($){
+ $.datepicker._newInst_orig = $.datepicker._newInst;
+ $.datepicker._newInst = function(target, inline) {
+ var data = this._newInst_orig(target, inline);
+
+ // Escape single quotes to avoid incorrect quoting in onclick handlers
+ // when other datepicker code interpolates inst.id. They'll already be
+ // escaped by the original _newInst for handing to jQuery's CSS
+ // selector parser.
+ data.id = data.id.replace(/'/g, "\\'");
+
+ return data;
+ };
+})(jQuery);
diff --git a/rt/share/html/NoAuth/js/jquery.event.hover-1.0.js b/rt/share/html/NoAuth/js/jquery.event.hover-1.0.js
new file mode 100644
index 000000000..6883ad21d
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery.event.hover-1.0.js
@@ -0,0 +1,85 @@
+;(function($){ // secure $ jQuery alias
+/*******************************************************************************************/
+// jquery.event.hover.js - rev 5
+// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
+// Liscensed under the MIT License (MIT-LICENSE.txt)
+// http://www.opensource.org/licenses/mit-license.php
+// Created: 2008-06-02 | Updated: 2008-07-30
+/*******************************************************************************************/
+
+// USE THESE PROPERTIES TO CUSTOMIZE SETTINGS...
+
+// $.event.special.hover.delay = 100;
+// Defines the delay (msec) while mouse is inside the element before checking the speed
+
+// $.event.special.hover.speed = 100;
+// Defines the maximum speed (px/sec) the mouse may be moving to trigger the hover event
+
+// save the old jquery "hover" method
+$.fn._hover = $.fn.hover;
+
+// jquery method
+$.fn.hover = function( fn1, fn2, fn3 ) {
+ if ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args
+ if ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args
+ return !fn1 ? this.trigger('hover') // 0 args
+ : this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args
+ };
+
+// special event configuration
+var hover = $.event.special.hover = {
+ delay: 100, // milliseconds
+ speed: 100, // pixels per second
+ setup: function( data ){
+ data = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );
+ $.event.add( this, "mouseenter mouseleave", hoverHandler, data );
+ },
+ teardown: function(){
+ $.event.remove( this, "mouseenter mouseleave", hoverHandler );
+ }
+ };
+
+// shared event handler
+function hoverHandler( event ){
+ var data = event.data || event;
+ switch ( event.type ){
+ case 'mouseenter': // mouseover
+ data.dist2 = 0; // init mouse distance²
+ data.event = event; // store the event
+ event.type = "hoverstart"; // hijack event
+ if ( $.event.handle.call( this, event ) !== false ){ // handle "hoverstart"
+ data.elem = this; // ref to the current element
+ $.event.add( this, "mousemove", hoverHandler, data ); // track the mouse
+ data.timer = setTimeout( compare, data.delay ); // start async compare
+ }
+ break;
+ case 'mousemove': // track the event, mouse distance² = x² + y²
+ data.dist2 += Math.pow( event.pageX-data.event.pageX, 2 )
+ + Math.pow( event.pageY-data.event.pageY, 2 );
+ data.event = event; // store current event
+ break;
+ case 'mouseleave': // mouseout
+ clearTimeout( data.timer ); // uncompare
+ if ( data.hovered ){
+ event.type = "hoverend"; // hijack event
+ $.event.handle.call( this, event ); // handle "hoverend"
+ data.hovered--; // reset flag
+ }
+ else $.event.remove( data.elem, "mousemove", hoverHandler ); // untrack
+ break;
+ default: // timeout compare // distance² = x² + y² = ( speed * time )²
+ if ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable
+ $.event.remove( data.elem, "mousemove", hoverHandler ); // untrack
+ data.event.type = "hover"; // hijack event
+ if ( $.event.handle.call( data.elem, data.event ) !== false ) // handle "hover"
+ data.hovered++; // flag for "hoverend"
+ }
+ else data.timer = setTimeout( compare, data.delay ); // async recurse
+ data.dist2 = 0; // reset distance² for next compare
+ break;
+ }
+ function compare(){ hoverHandler( data ); }; // timeout/recursive function
+ };
+
+/*******************************************************************************************/
+})(jQuery); // confine scope \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/jquery.supposition.js b/rt/share/html/NoAuth/js/jquery.supposition.js
new file mode 100644
index 000000000..0ce573027
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery.supposition.js
@@ -0,0 +1,83 @@
+/* This file was modified to look for superfish in $.fn.superfish instead of $.superfish */
+
+/*
+ * Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget
+ *
+ * Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him.
+ * Special thanks to Karl Swedberg for valuable input.
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($){
+
+ $.fn.supposition = function(){
+ var $w = $(window), /*do this once instead of every onBeforeShow call*/
+ _offset = function(dir) {
+ return window[dir == 'y' ? 'pageYOffset' : 'pageXOffset']
+ || document.documentElement && document.documentElement[dir=='y' ? 'scrollTop' : 'scrollLeft']
+ || document.body[dir=='y' ? 'scrollTop' : 'scrollLeft'];
+ },
+ onInit = function(){
+ /* I haven't touched this bit - needs work as there are still z-index issues */
+ $topNav = $('li',this);
+ var cZ=parseInt($topNav.css('z-index')) + $topNav.length;
+ $topNav.each(function() {
+ $(this).css({zIndex:--cZ});
+ });
+ },
+ onHide = function(){
+ this.css({marginTop:'',marginLeft:''});
+ },
+ onBeforeShow = function(){
+ this.each(function(){
+ var $u = $(this);
+ $u.css('display','block');
+ var menuWidth = $u.width(),
+ parentWidth = $u.parents('ul').width(),
+ totalRight = $w.width() + _offset('x'),
+ menuRight = $u.offset().left + menuWidth;
+ if (menuRight > totalRight) {
+ $u.css('margin-left', ($u.parents('ul').length == 1 ? totalRight - menuRight : -(menuWidth + parentWidth)) + 'px');
+ }
+
+ var windowHeight = $w.height(),
+ offsetTop = $u.offset().top,
+ menuHeight = $u.height(),
+ baseline = windowHeight + _offset('y');
+ var expandUp = (offsetTop + menuHeight > baseline);
+ if (expandUp) {
+ $u.css('margin-top',baseline - (menuHeight + offsetTop));
+ }
+ $u.css('display','none');
+ });
+ };
+
+ return this.each(function() {
+ var o = $.fn.superfish.o[this.serial]; /* get this menu's options */
+
+ /* if callbacks already set, store them */
+ var _onInit = o.onInit,
+ _onBeforeShow = o.onBeforeShow,
+ _onHide = o.onHide;
+
+ $.extend($.fn.superfish.o[this.serial],{
+ onInit : function() {
+ onInit.call(this); /* fire our Supposition callback */
+ _onInit.call(this); /* fire stored callbacks */
+ },
+ onBeforeShow: function() {
+ onBeforeShow.call(this); /* fire our Supposition callback */
+ _onBeforeShow.call(this); /* fire stored callbacks */
+ },
+ onHide : function() {
+ onHide.call(this); /* fire our Supposition callback */
+ _onHide.call(this); /* fire stored callbacks */
+ }
+ });
+ });
+ };
+
+})(jQuery);
diff --git a/rt/share/html/NoAuth/js/jquery.tablesorter.min.js b/rt/share/html/NoAuth/js/jquery.tablesorter.min.js
new file mode 100644
index 000000000..299f9dee7
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery.tablesorter.min.js
@@ -0,0 +1,16 @@
+/*
+ *
+ * TableSorter 2.0 - Client-side table sorting with ease!
+ * Version 2.0.5b
+ * @requires jQuery v1.2.3
+ *
+ * Copyright (c) 2007 Christian Bach
+ * Examples and docs at: http://tablesorter.com
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+(function($){$.extend({tablesorter:new
+function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,rows,-1,i);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,rows,rowIndex,cellIndex){var l=parsers.length,node=false,nodeValue=false,keepLooking=true;while(nodeValue==''&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug){log('Checking if value was empty on row:'+rowIndex);}}else{keepLooking=false;}}for(var i=1;i<l;i++){if(parsers[i].is(nodeValue,table,node)){return parsers[i];}}return parsers[0];}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex];}function trimAndGetNodeText(config,node){return $.trim(getElementText(config,node));}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=$(table.tBodies[0].rows[i]),cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length-1]=cache.row[cache.row.length-1].add(c);continue;}cache.row.push(c);for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));}cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction=="simple"){if(config.supportsTextContent){text=node.textContent;}else{if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){text=node.childNodes[0].innerHTML;}else{text=node.innerHTML;}}}else{if(typeof(config.textExtraction)=="function"){text=config.textExtraction(node);}else{text=$(node).text();}}return text;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){var pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){var l=r[pos].length;for(var j=0;j<l;j++){tableBody[0].appendChild(r[pos][j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false;var header_index=computeTableHeaderCellIndexes(table);$tableHeaders=$(table.config.selectorHeaders,table).each(function(index){this.column=header_index[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=formatSortingOrder(table.config.sortInitialOrder);this.count=this.order;if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(checkHeaderOptionsSortingLocked(table,index))this.order=this.lockedOrder=checkHeaderOptionsSortingLocked(table,index);if(!this.sortDisabled){var $th=$(this).addClass(table.config.cssHeader);if(table.config.onRenderHeader)table.config.onRenderHeader.apply($th);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function computeTableHeaderCellIndexes(t){var matrix=[];var lookup={};var thead=t.getElementsByTagName('THEAD')[0];var trs=thead.getElementsByTagName('TR');for(var i=0;i<trs.length;i++){var cells=trs[i].cells;for(var j=0;j<cells.length;j++){var c=cells[j];var rowIndex=c.parentNode.rowIndex;var cellId=rowIndex+"-"+c.cellIndex;var rowSpan=c.rowSpan||1;var colSpan=c.colSpan||1
+var firstAvailCol;if(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex]=[];}for(var k=0;k<matrix[rowIndex].length+1;k++){if(typeof(matrix[rowIndex][k])=="undefined"){firstAvailCol=k;break;}}lookup[cellId]=firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k]=[];}var matrixrow=matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l]="x";}}}}return lookup;}function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){return(v.toLowerCase()=="desc")?1:0;}else{return(v==1)?1:0;}}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(table.config.parsers[c].type=="text")?((order==0)?makeSortFunction("text","asc",c):makeSortFunction("text","desc",c)):((order==0)?makeSortFunction("numeric","asc",c):makeSortFunction("numeric","desc",c));var e="e"+i;dynamicExp+="var "+e+" = "+s;dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";if(table.config.debug){benchmark("Evaling expression:"+dynamicExp,new Date());}eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function makeSortFunction(type,direction,index){var a="a["+index+"]",b="b["+index+"]";if(type=='text'&&direction=='asc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+a+" < "+b+") ? -1 : 1 )));";}else if(type=='text'&&direction=='desc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+b+" < "+a+") ? -1 : 1 )));";}else if(type=='numeric'&&direction=='asc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+a+" - "+b+"));";}else if(type=='numeric'&&direction=='desc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+b+" - "+a+"));";}};function makeSortText(i){return"((a["+i+"] < b["+i+"]) ? -1 : ((a["+i+"] > b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){var me=this;setTimeout(function(){me.config.parsers=buildParserCache(me,$headers);cache=buildCache(me);},1);}).bind("updateCell",function(e,cell){var config=this.config;var pos=[(cell.parentNode.rowIndex-1),cell.cellIndex];cache.normalized[pos[0]][pos[1]]=config.parsers[pos[1]].format(getElementText(config,cell),cell);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){return/^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g,'')));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLocaleLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}var $tr,row=-1,odd;$("tr:visible",table.tBodies[0]).each(function(i){$tr=$(this);if(!$tr.hasClass(table.config.cssChildRow))row++;odd=(row%2==0);$tr.removeClass(table.config.widgetZebra.css[odd?0:1]).addClass(table.config.widgetZebra.css[odd?1:0])});if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
diff --git a/rt/share/html/NoAuth/js/jquery_noconflict.js b/rt/share/html/NoAuth/js/jquery_noconflict.js
new file mode 100644
index 000000000..dd6412dac
--- /dev/null
+++ b/rt/share/html/NoAuth/js/jquery_noconflict.js
@@ -0,0 +1,51 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+/**
+ * noConflict.js - Tell jQuery not to clobber $()
+ */
+jQuery.noConflict();
diff --git a/rt/share/html/NoAuth/js/late.js b/rt/share/html/NoAuth/js/late.js
new file mode 100644
index 000000000..7a9688fca
--- /dev/null
+++ b/rt/share/html/NoAuth/js/late.js
@@ -0,0 +1,49 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+// Lower the speed limit for hover intent event
+jQuery.event.special.hover.speed = 80; // pixels per second
diff --git a/rt/share/html/NoAuth/js/prototype/prototype.js b/rt/share/html/NoAuth/js/prototype/prototype.js
deleted file mode 100644
index dfe8ab4e1..000000000
--- a/rt/share/html/NoAuth/js/prototype/prototype.js
+++ /dev/null
@@ -1,4320 +0,0 @@
-/* Prototype JavaScript framework, version 1.6.0.3
- * (c) 2005-2008 Sam Stephenson
- *
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://www.prototypejs.org/
- *
- *--------------------------------------------------------------------------*/
-
-var Prototype = {
- Version: '1.6.0.3',
-
- Browser: {
- IE: !!(window.attachEvent &&
- navigator.userAgent.indexOf('Opera') === -1),
- Opera: navigator.userAgent.indexOf('Opera') > -1,
- WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
- Gecko: navigator.userAgent.indexOf('Gecko') > -1 &&
- navigator.userAgent.indexOf('KHTML') === -1,
- MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
- },
-
- BrowserFeatures: {
- XPath: !!document.evaluate,
- SelectorsAPI: !!document.querySelector,
- ElementExtensions: !!window.HTMLElement,
- SpecificElementExtensions:
- document.createElement('div')['__proto__'] &&
- document.createElement('div')['__proto__'] !==
- document.createElement('form')['__proto__']
- },
-
- ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
- JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
-
- emptyFunction: function() { },
- K: function(x) { return x }
-};
-
-if (Prototype.Browser.MobileSafari)
- Prototype.BrowserFeatures.SpecificElementExtensions = false;
-
-
-/* Based on Alex Arnell's inheritance implementation. */
-var Class = {
- create: function() {
- var parent = null, properties = $A(arguments);
- if (Object.isFunction(properties[0]))
- parent = properties.shift();
-
- function klass() {
- this.initialize.apply(this, arguments);
- }
-
- Object.extend(klass, Class.Methods);
- klass.superclass = parent;
- klass.subclasses = [];
-
- if (parent) {
- var subclass = function() { };
- subclass.prototype = parent.prototype;
- klass.prototype = new subclass;
- parent.subclasses.push(klass);
- }
-
- for (var i = 0; i < properties.length; i++)
- klass.addMethods(properties[i]);
-
- if (!klass.prototype.initialize)
- klass.prototype.initialize = Prototype.emptyFunction;
-
- klass.prototype.constructor = klass;
-
- return klass;
- }
-};
-
-Class.Methods = {
- addMethods: function(source) {
- var ancestor = this.superclass && this.superclass.prototype;
- var properties = Object.keys(source);
-
- if (!Object.keys({ toString: true }).length)
- properties.push("toString", "valueOf");
-
- for (var i = 0, length = properties.length; i < length; i++) {
- var property = properties[i], value = source[property];
- if (ancestor && Object.isFunction(value) &&
- value.argumentNames().first() == "$super") {
- var method = value;
- value = (function(m) {
- return function() { return ancestor[m].apply(this, arguments) };
- })(property).wrap(method);
-
- value.valueOf = method.valueOf.bind(method);
- value.toString = method.toString.bind(method);
- }
- this.prototype[property] = value;
- }
-
- return this;
- }
-};
-
-var Abstract = { };
-
-Object.extend = function(destination, source) {
- for (var property in source)
- destination[property] = source[property];
- return destination;
-};
-
-Object.extend(Object, {
- inspect: function(object) {
- try {
- if (Object.isUndefined(object)) return 'undefined';
- if (object === null) return 'null';
- return object.inspect ? object.inspect() : String(object);
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
- },
-
- toJSON: function(object) {
- var type = typeof object;
- switch (type) {
- case 'undefined':
- case 'function':
- case 'unknown': return;
- case 'boolean': return object.toString();
- }
-
- if (object === null) return 'null';
- if (object.toJSON) return object.toJSON();
- if (Object.isElement(object)) return;
-
- var results = [];
- for (var property in object) {
- var value = Object.toJSON(object[property]);
- if (!Object.isUndefined(value))
- results.push(property.toJSON() + ': ' + value);
- }
-
- return '{' + results.join(', ') + '}';
- },
-
- toQueryString: function(object) {
- return $H(object).toQueryString();
- },
-
- toHTML: function(object) {
- return object && object.toHTML ? object.toHTML() : String.interpret(object);
- },
-
- keys: function(object) {
- var keys = [];
- for (var property in object)
- keys.push(property);
- return keys;
- },
-
- values: function(object) {
- var values = [];
- for (var property in object)
- values.push(object[property]);
- return values;
- },
-
- clone: function(object) {
- return Object.extend({ }, object);
- },
-
- isElement: function(object) {
- return !!(object && object.nodeType == 1);
- },
-
- isArray: function(object) {
- return object != null && typeof object == "object" &&
- 'splice' in object && 'join' in object;
- },
-
- isHash: function(object) {
- return object instanceof Hash;
- },
-
- isFunction: function(object) {
- return typeof object == "function";
- },
-
- isString: function(object) {
- return typeof object == "string";
- },
-
- isNumber: function(object) {
- return typeof object == "number";
- },
-
- isUndefined: function(object) {
- return typeof object == "undefined";
- }
-});
-
-Object.extend(Function.prototype, {
- argumentNames: function() {
- var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]
- .replace(/\s+/g, '').split(',');
- return names.length == 1 && !names[0] ? [] : names;
- },
-
- bind: function() {
- if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
- },
-
- bindAsEventListener: function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function(event) {
- return __method.apply(object, [event || window.event].concat(args));
- }
- },
-
- curry: function() {
- if (!arguments.length) return this;
- var __method = this, args = $A(arguments);
- return function() {
- return __method.apply(this, args.concat($A(arguments)));
- }
- },
-
- delay: function() {
- var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
- return window.setTimeout(function() {
- return __method.apply(__method, args);
- }, timeout);
- },
-
- defer: function() {
- var args = [0.01].concat($A(arguments));
- return this.delay.apply(this, args);
- },
-
- wrap: function(wrapper) {
- var __method = this;
- return function() {
- return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
- }
- },
-
- methodize: function() {
- if (this._methodized) return this._methodized;
- var __method = this;
- return this._methodized = function() {
- return __method.apply(null, [this].concat($A(arguments)));
- };
- }
-});
-
-Date.prototype.toJSON = function() {
- return '"' + this.getUTCFullYear() + '-' +
- (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
- this.getUTCDate().toPaddedString(2) + 'T' +
- this.getUTCHours().toPaddedString(2) + ':' +
- this.getUTCMinutes().toPaddedString(2) + ':' +
- this.getUTCSeconds().toPaddedString(2) + 'Z"';
-};
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0, length = arguments.length; i < length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) { }
- }
-
- return returnValue;
- }
-};
-
-RegExp.prototype.match = RegExp.prototype.test;
-
-RegExp.escape = function(str) {
- return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
-};
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create({
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- execute: function() {
- this.callback(this);
- },
-
- stop: function() {
- if (!this.timer) return;
- clearInterval(this.timer);
- this.timer = null;
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.execute();
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-});
-Object.extend(String, {
- interpret: function(value) {
- return value == null ? '' : String(value);
- },
- specialChar: {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '\\': '\\\\'
- }
-});
-
-Object.extend(String.prototype, {
- gsub: function(pattern, replacement) {
- var result = '', source = this, match;
- replacement = arguments.callee.prepareReplacement(replacement);
-
- while (source.length > 0) {
- if (match = source.match(pattern)) {
- result += source.slice(0, match.index);
- result += String.interpret(replacement(match));
- source = source.slice(match.index + match[0].length);
- } else {
- result += source, source = '';
- }
- }
- return result;
- },
-
- sub: function(pattern, replacement, count) {
- replacement = this.gsub.prepareReplacement(replacement);
- count = Object.isUndefined(count) ? 1 : count;
-
- return this.gsub(pattern, function(match) {
- if (--count < 0) return match[0];
- return replacement(match);
- });
- },
-
- scan: function(pattern, iterator) {
- this.gsub(pattern, iterator);
- return String(this);
- },
-
- truncate: function(length, truncation) {
- length = length || 30;
- truncation = Object.isUndefined(truncation) ? '...' : truncation;
- return this.length > length ?
- this.slice(0, length - truncation.length) + truncation : String(this);
- },
-
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(function(script) { return eval(script) });
- },
-
- escapeHTML: function() {
- var self = arguments.callee;
- self.text.data = this;
- return self.div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = new Element('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? (div.childNodes.length > 1 ?
- $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
- div.childNodes[0].nodeValue) : '';
- },
-
- toQueryParams: function(separator) {
- var match = this.strip().match(/([^?#]*)(#.*)?$/);
- if (!match) return { };
-
- return match[1].split(separator || '&').inject({ }, function(hash, pair) {
- if ((pair = pair.split('='))[0]) {
- var key = decodeURIComponent(pair.shift());
- var value = pair.length > 1 ? pair.join('=') : pair[0];
- if (value != undefined) value = decodeURIComponent(value);
-
- if (key in hash) {
- if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
- hash[key].push(value);
- }
- else hash[key] = value;
- }
- return hash;
- });
- },
-
- toArray: function() {
- return this.split('');
- },
-
- succ: function() {
- return this.slice(0, this.length - 1) +
- String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
- },
-
- times: function(count) {
- return count < 1 ? '' : new Array(count + 1).join(this);
- },
-
- camelize: function() {
- var parts = this.split('-'), len = parts.length;
- if (len == 1) return parts[0];
-
- var camelized = this.charAt(0) == '-'
- ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
- : parts[0];
-
- for (var i = 1; i < len; i++)
- camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
-
- return camelized;
- },
-
- capitalize: function() {
- return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
- },
-
- underscore: function() {
- return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
- },
-
- dasherize: function() {
- return this.gsub(/_/,'-');
- },
-
- inspect: function(useDoubleQuotes) {
- var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
- var character = String.specialChar[match[0]];
- return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
- });
- if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
- return "'" + escapedString.replace(/'/g, '\\\'') + "'";
- },
-
- toJSON: function() {
- return this.inspect(true);
- },
-
- unfilterJSON: function(filter) {
- return this.sub(filter || Prototype.JSONFilter, '#{1}');
- },
-
- isJSON: function() {
- var str = this;
- if (str.blank()) return false;
- str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
- return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
- },
-
- evalJSON: function(sanitize) {
- var json = this.unfilterJSON();
- try {
- if (!sanitize || json.isJSON()) return eval('(' + json + ')');
- } catch (e) { }
- throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
- },
-
- include: function(pattern) {
- return this.indexOf(pattern) > -1;
- },
-
- startsWith: function(pattern) {
- return this.indexOf(pattern) === 0;
- },
-
- endsWith: function(pattern) {
- var d = this.length - pattern.length;
- return d >= 0 && this.lastIndexOf(pattern) === d;
- },
-
- empty: function() {
- return this == '';
- },
-
- blank: function() {
- return /^\s*$/.test(this);
- },
-
- interpolate: function(object, pattern) {
- return new Template(this, pattern).evaluate(object);
- }
-});
-
-if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
- escapeHTML: function() {
- return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
- },
- unescapeHTML: function() {
- return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
- }
-});
-
-String.prototype.gsub.prepareReplacement = function(replacement) {
- if (Object.isFunction(replacement)) return replacement;
- var template = new Template(replacement);
- return function(match) { return template.evaluate(match) };
-};
-
-String.prototype.parseQuery = String.prototype.toQueryParams;
-
-Object.extend(String.prototype.escapeHTML, {
- div: document.createElement('div'),
- text: document.createTextNode('')
-});
-
-String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);
-
-var Template = Class.create({
- initialize: function(template, pattern) {
- this.template = template.toString();
- this.pattern = pattern || Template.Pattern;
- },
-
- evaluate: function(object) {
- if (Object.isFunction(object.toTemplateReplacements))
- object = object.toTemplateReplacements();
-
- return this.template.gsub(this.pattern, function(match) {
- if (object == null) return '';
-
- var before = match[1] || '';
- if (before == '\\') return match[2];
-
- var ctx = object, expr = match[3];
- var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
- match = pattern.exec(expr);
- if (match == null) return before;
-
- while (match != null) {
- var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
- ctx = ctx[comp];
- if (null == ctx || '' == match[3]) break;
- expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
- match = pattern.exec(expr);
- }
-
- return before + String.interpret(ctx);
- });
- }
-});
-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
-
-var $break = { };
-
-var Enumerable = {
- each: function(iterator, context) {
- var index = 0;
- try {
- this._each(function(value) {
- iterator.call(context, value, index++);
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- return this;
- },
-
- eachSlice: function(number, iterator, context) {
- var index = -number, slices = [], array = this.toArray();
- if (number < 1) return array;
- while ((index += number) < array.length)
- slices.push(array.slice(index, index+number));
- return slices.collect(iterator, context);
- },
-
- all: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result = true;
- this.each(function(value, index) {
- result = result && !!iterator.call(context, value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result = false;
- this.each(function(value, index) {
- if (result = !!iterator.call(context, value, index))
- throw $break;
- });
- return result;
- },
-
- collect: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var results = [];
- this.each(function(value, index) {
- results.push(iterator.call(context, value, index));
- });
- return results;
- },
-
- detect: function(iterator, context) {
- var result;
- this.each(function(value, index) {
- if (iterator.call(context, value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
-
- findAll: function(iterator, context) {
- var results = [];
- this.each(function(value, index) {
- if (iterator.call(context, value, index))
- results.push(value);
- });
- return results;
- },
-
- grep: function(filter, iterator, context) {
- iterator = iterator || Prototype.K;
- var results = [];
-
- if (Object.isString(filter))
- filter = new RegExp(filter);
-
- this.each(function(value, index) {
- if (filter.match(value))
- results.push(iterator.call(context, value, index));
- });
- return results;
- },
-
- include: function(object) {
- if (Object.isFunction(this.indexOf))
- if (this.indexOf(object) != -1) return true;
-
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inGroupsOf: function(number, fillWith) {
- fillWith = Object.isUndefined(fillWith) ? null : fillWith;
- return this.eachSlice(number, function(slice) {
- while(slice.length < number) slice.push(fillWith);
- return slice;
- });
- },
-
- inject: function(memo, iterator, context) {
- this.each(function(value, index) {
- memo = iterator.call(context, memo, value, index);
- });
- return memo;
- },
-
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.map(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator.call(context, value, index);
- if (result == null || value >= result)
- result = value;
- });
- return result;
- },
-
- min: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator.call(context, value, index);
- if (result == null || value < result)
- result = value;
- });
- return result;
- },
-
- partition: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var trues = [], falses = [];
- this.each(function(value, index) {
- (iterator.call(context, value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
-
- pluck: function(property) {
- var results = [];
- this.each(function(value) {
- results.push(value[property]);
- });
- return results;
- },
-
- reject: function(iterator, context) {
- var results = [];
- this.each(function(value, index) {
- if (!iterator.call(context, value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator, context) {
- return this.map(function(value, index) {
- return {
- value: value,
- criteria: iterator.call(context, value, index)
- };
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.map();
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (Object.isFunction(args.last()))
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- return iterator(collections.pluck(index));
- });
- },
-
- size: function() {
- return this.toArray().length;
- },
-
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
-};
-
-Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- filter: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray,
- every: Enumerable.all,
- some: Enumerable.any
-});
-function $A(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) return iterable.toArray();
- var length = iterable.length || 0, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
-}
-
-if (Prototype.Browser.WebKit) {
- $A = function(iterable) {
- if (!iterable) return [];
- // In Safari, only use the `toArray` method if it's not a NodeList.
- // A NodeList is a function, has an function `item` property, and a numeric
- // `length` property. Adapted from Google Doctype.
- if (!(typeof iterable === 'function' && typeof iterable.length ===
- 'number' && typeof iterable.item === 'function') && iterable.toArray)
- return iterable.toArray();
- var length = iterable.length || 0, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
- };
-}
-
-Array.from = $A;
-
-Object.extend(Array.prototype, Enumerable);
-
-if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
-
-Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0, length = this.length; i < length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != null;
- });
- },
-
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(Object.isArray(value) ?
- value.flatten() : [value]);
- });
- },
-
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
-
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
-
- reduce: function() {
- return this.length > 1 ? this : this[0];
- },
-
- uniq: function(sorted) {
- return this.inject([], function(array, value, index) {
- if (0 == index || (sorted ? array.last() != value : !array.include(value)))
- array.push(value);
- return array;
- });
- },
-
- intersect: function(array) {
- return this.uniq().findAll(function(item) {
- return array.detect(function(value) { return item === value });
- });
- },
-
- clone: function() {
- return [].concat(this);
- },
-
- size: function() {
- return this.length;
- },
-
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- },
-
- toJSON: function() {
- var results = [];
- this.each(function(object) {
- var value = Object.toJSON(object);
- if (!Object.isUndefined(value)) results.push(value);
- });
- return '[' + results.join(', ') + ']';
- }
-});
-
-// use native browser JS 1.6 implementation if available
-if (Object.isFunction(Array.prototype.forEach))
- Array.prototype._each = Array.prototype.forEach;
-
-if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
- i || (i = 0);
- var length = this.length;
- if (i < 0) i = length + i;
- for (; i < length; i++)
- if (this[i] === item) return i;
- return -1;
-};
-
-if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
- i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
- var n = this.slice(0, i).reverse().indexOf(item);
- return (n < 0) ? n : i - n - 1;
-};
-
-Array.prototype.toArray = Array.prototype.clone;
-
-function $w(string) {
- if (!Object.isString(string)) return [];
- string = string.strip();
- return string ? string.split(/\s+/) : [];
-}
-
-if (Prototype.Browser.Opera){
- Array.prototype.concat = function() {
- var array = [];
- for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
- for (var i = 0, length = arguments.length; i < length; i++) {
- if (Object.isArray(arguments[i])) {
- for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
- array.push(arguments[i][j]);
- } else {
- array.push(arguments[i]);
- }
- }
- return array;
- };
-}
-Object.extend(Number.prototype, {
- toColorPart: function() {
- return this.toPaddedString(2, 16);
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator, context) {
- $R(0, this, true).each(iterator, context);
- return this;
- },
-
- toPaddedString: function(length, radix) {
- var string = this.toString(radix || 10);
- return '0'.times(length - string.length) + string;
- },
-
- toJSON: function() {
- return isFinite(this) ? this.toString() : 'null';
- }
-});
-
-$w('abs round ceil floor').each(function(method){
- Number.prototype[method] = Math[method].methodize();
-});
-function $H(object) {
- return new Hash(object);
-};
-
-var Hash = Class.create(Enumerable, (function() {
-
- function toQueryPair(key, value) {
- if (Object.isUndefined(value)) return key;
- return key + '=' + encodeURIComponent(String.interpret(value));
- }
-
- return {
- initialize: function(object) {
- this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
- },
-
- _each: function(iterator) {
- for (var key in this._object) {
- var value = this._object[key], pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- },
-
- set: function(key, value) {
- return this._object[key] = value;
- },
-
- get: function(key) {
- // simulating poorly supported hasOwnProperty
- if (this._object[key] !== Object.prototype[key])
- return this._object[key];
- },
-
- unset: function(key) {
- var value = this._object[key];
- delete this._object[key];
- return value;
- },
-
- toObject: function() {
- return Object.clone(this._object);
- },
-
- keys: function() {
- return this.pluck('key');
- },
-
- values: function() {
- return this.pluck('value');
- },
-
- index: function(value) {
- var match = this.detect(function(pair) {
- return pair.value === value;
- });
- return match && match.key;
- },
-
- merge: function(object) {
- return this.clone().update(object);
- },
-
- update: function(object) {
- return new Hash(object).inject(this, function(result, pair) {
- result.set(pair.key, pair.value);
- return result;
- });
- },
-
- toQueryString: function() {
- return this.inject([], function(results, pair) {
- var key = encodeURIComponent(pair.key), values = pair.value;
-
- if (values && typeof values == 'object') {
- if (Object.isArray(values))
- return results.concat(values.map(toQueryPair.curry(key)));
- } else results.push(toQueryPair(key, values));
- return results;
- }).join('&');
- },
-
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- },
-
- toJSON: function() {
- return Object.toJSON(this.toObject());
- },
-
- clone: function() {
- return new Hash(this);
- }
- }
-})());
-
-Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
-Hash.from = $H;
-var ObjectRange = Class.create(Enumerable, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- while (this.include(value)) {
- iterator(value);
- value = value.succ();
- }
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
-});
-
-var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
-};
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new XMLHttpRequest()},
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
- ) || false;
- },
-
- activeRequestCount: 0
-};
-
-Ajax.Responders = {
- responders: [],
-
- _each: function(iterator) {
- this.responders._each(iterator);
- },
-
- register: function(responder) {
- if (!this.include(responder))
- this.responders.push(responder);
- },
-
- unregister: function(responder) {
- this.responders = this.responders.without(responder);
- },
-
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (Object.isFunction(responder[callback])) {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) { }
- }
- });
- }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
- onCreate: function() { Ajax.activeRequestCount++ },
- onComplete: function() { Ajax.activeRequestCount-- }
-});
-
-Ajax.Base = Class.create({
- initialize: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- encoding: 'UTF-8',
- parameters: '',
- evalJSON: true,
- evalJS: true
- };
- Object.extend(this.options, options || { });
-
- this.options.method = this.options.method.toLowerCase();
-
- if (Object.isString(this.options.parameters))
- this.options.parameters = this.options.parameters.toQueryParams();
- else if (Object.isHash(this.options.parameters))
- this.options.parameters = this.options.parameters.toObject();
- }
-});
-
-Ajax.Request = Class.create(Ajax.Base, {
- _complete: false,
-
- initialize: function($super, url, options) {
- $super(options);
- this.transport = Ajax.getTransport();
- this.request(url);
- },
-
- request: function(url) {
- this.url = url;
- this.method = this.options.method;
- var params = Object.clone(this.options.parameters);
-
- if (!['get', 'post'].include(this.method)) {
- // simulate other verbs over post
- params['_method'] = this.method;
- this.method = 'post';
- }
-
- this.parameters = params;
-
- if (params = Object.toQueryString(params)) {
- // when GET, append parameters to URL
- if (this.method == 'get')
- this.url += (this.url.include('?') ? '&' : '?') + params;
- else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
- params += '&_=';
- }
-
- try {
- var response = new Ajax.Response(this);
- if (this.options.onCreate) this.options.onCreate(response);
- Ajax.Responders.dispatch('onCreate', this, response);
-
- this.transport.open(this.method.toUpperCase(), this.url,
- this.options.asynchronous);
-
- if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
-
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- this.setRequestHeaders();
-
- this.body = this.method == 'post' ? (this.options.postBody || params) : null;
- this.transport.send(this.body);
-
- /* Force Firefox to handle ready state 4 for synchronous requests */
- if (!this.options.asynchronous && this.transport.overrideMimeType)
- this.onStateChange();
-
- }
- catch (e) {
- this.dispatchException(e);
- }
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState > 1 && !((readyState == 4) && this._complete))
- this.respondToReadyState(this.transport.readyState);
- },
-
- setRequestHeaders: function() {
- var headers = {
- 'X-Requested-With': 'XMLHttpRequest',
- 'X-Prototype-Version': Prototype.Version,
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
- };
-
- if (this.method == 'post') {
- headers['Content-type'] = this.options.contentType +
- (this.options.encoding ? '; charset=' + this.options.encoding : '');
-
- /* Force "Connection: close" for older Mozilla browsers to work
- * around a bug where XMLHttpRequest sends an incorrect
- * Content-length header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType &&
- (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
- headers['Connection'] = 'close';
- }
-
- // user-defined headers
- if (typeof this.options.requestHeaders == 'object') {
- var extras = this.options.requestHeaders;
-
- if (Object.isFunction(extras.push))
- for (var i = 0, length = extras.length; i < length; i += 2)
- headers[extras[i]] = extras[i+1];
- else
- $H(extras).each(function(pair) { headers[pair.key] = pair.value });
- }
-
- for (var name in headers)
- this.transport.setRequestHeader(name, headers[name]);
- },
-
- success: function() {
- var status = this.getStatus();
- return !status || (status >= 200 && status < 300);
- },
-
- getStatus: function() {
- try {
- return this.transport.status || 0;
- } catch (e) { return 0 }
- },
-
- respondToReadyState: function(readyState) {
- var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
-
- if (state == 'Complete') {
- try {
- this._complete = true;
- (this.options['on' + response.status]
- || this.options['on' + (this.success() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- var contentType = response.getHeader('Content-type');
- if (this.options.evalJS == 'force'
- || (this.options.evalJS && this.isSameOrigin() && contentType
- && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
- this.evalResponse();
- }
-
- try {
- (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
- Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if (state == 'Complete') {
- // avoid memory leak in MSIE: clean up
- this.transport.onreadystatechange = Prototype.emptyFunction;
- }
- },
-
- isSameOrigin: function() {
- var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
- return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
- protocol: location.protocol,
- domain: document.domain,
- port: location.port ? ':' + location.port : ''
- }));
- },
-
- getHeader: function(name) {
- try {
- return this.transport.getResponseHeader(name) || null;
- } catch (e) { return null }
- },
-
- evalResponse: function() {
- try {
- return eval((this.transport.responseText || '').unfilterJSON());
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
-});
-
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Response = Class.create({
- initialize: function(request){
- this.request = request;
- var transport = this.transport = request.transport,
- readyState = this.readyState = transport.readyState;
-
- if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
- this.status = this.getStatus();
- this.statusText = this.getStatusText();
- this.responseText = String.interpret(transport.responseText);
- this.headerJSON = this._getHeaderJSON();
- }
-
- if(readyState == 4) {
- var xml = transport.responseXML;
- this.responseXML = Object.isUndefined(xml) ? null : xml;
- this.responseJSON = this._getResponseJSON();
- }
- },
-
- status: 0,
- statusText: '',
-
- getStatus: Ajax.Request.prototype.getStatus,
-
- getStatusText: function() {
- try {
- return this.transport.statusText || '';
- } catch (e) { return '' }
- },
-
- getHeader: Ajax.Request.prototype.getHeader,
-
- getAllHeaders: function() {
- try {
- return this.getAllResponseHeaders();
- } catch (e) { return null }
- },
-
- getResponseHeader: function(name) {
- return this.transport.getResponseHeader(name);
- },
-
- getAllResponseHeaders: function() {
- return this.transport.getAllResponseHeaders();
- },
-
- _getHeaderJSON: function() {
- var json = this.getHeader('X-JSON');
- if (!json) return null;
- json = decodeURIComponent(escape(json));
- try {
- return json.evalJSON(this.request.options.sanitizeJSON ||
- !this.request.isSameOrigin());
- } catch (e) {
- this.request.dispatchException(e);
- }
- },
-
- _getResponseJSON: function() {
- var options = this.request.options;
- if (!options.evalJSON || (options.evalJSON != 'force' &&
- !(this.getHeader('Content-type') || '').include('application/json')) ||
- this.responseText.blank())
- return null;
- try {
- return this.responseText.evalJSON(options.sanitizeJSON ||
- !this.request.isSameOrigin());
- } catch (e) {
- this.request.dispatchException(e);
- }
- }
-});
-
-Ajax.Updater = Class.create(Ajax.Request, {
- initialize: function($super, container, url, options) {
- this.container = {
- success: (container.success || container),
- failure: (container.failure || (container.success ? null : container))
- };
-
- options = Object.clone(options);
- var onComplete = options.onComplete;
- options.onComplete = (function(response, json) {
- this.updateContent(response.responseText);
- if (Object.isFunction(onComplete)) onComplete(response, json);
- }).bind(this);
-
- $super(url, options);
- },
-
- updateContent: function(responseText) {
- var receiver = this.container[this.success() ? 'success' : 'failure'],
- options = this.options;
-
- if (!options.evalScripts) responseText = responseText.stripScripts();
-
- if (receiver = $(receiver)) {
- if (options.insertion) {
- if (Object.isString(options.insertion)) {
- var insertion = { }; insertion[options.insertion] = responseText;
- receiver.insert(insertion);
- }
- else options.insertion(receiver, responseText);
- }
- else receiver.update(responseText);
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
- initialize: function($super, container, url, options) {
- $super(options);
- this.onComplete = this.options.onComplete;
-
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
-
- this.updater = { };
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.options.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(response) {
- if (this.options.decay) {
- this.decay = (response.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = response.responseText;
- }
- this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-function $(element) {
- if (arguments.length > 1) {
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
- elements.push($(arguments[i]));
- return elements;
- }
- if (Object.isString(element))
- element = document.getElementById(element);
- return Element.extend(element);
-}
-
-if (Prototype.BrowserFeatures.XPath) {
- document._getElementsByXPath = function(expression, parentElement) {
- var results = [];
- var query = document.evaluate(expression, $(parentElement) || document,
- null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- for (var i = 0, length = query.snapshotLength; i < length; i++)
- results.push(Element.extend(query.snapshotItem(i)));
- return results;
- };
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Node) var Node = { };
-
-if (!Node.ELEMENT_NODE) {
- // DOM level 2 ECMAScript Language Binding
- Object.extend(Node, {
- ELEMENT_NODE: 1,
- ATTRIBUTE_NODE: 2,
- TEXT_NODE: 3,
- CDATA_SECTION_NODE: 4,
- ENTITY_REFERENCE_NODE: 5,
- ENTITY_NODE: 6,
- PROCESSING_INSTRUCTION_NODE: 7,
- COMMENT_NODE: 8,
- DOCUMENT_NODE: 9,
- DOCUMENT_TYPE_NODE: 10,
- DOCUMENT_FRAGMENT_NODE: 11,
- NOTATION_NODE: 12
- });
-}
-
-(function() {
- var element = this.Element;
- this.Element = function(tagName, attributes) {
- attributes = attributes || { };
- tagName = tagName.toLowerCase();
- var cache = Element.cache;
- if (Prototype.Browser.IE && attributes.name) {
- tagName = '<' + tagName + ' name="' + attributes.name + '">';
- delete attributes.name;
- return Element.writeAttribute(document.createElement(tagName), attributes);
- }
- if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
- return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
- };
- Object.extend(this.Element, element || { });
- if (element) this.Element.prototype = element.prototype;
-}).call(window);
-
-Element.cache = { };
-
-Element.Methods = {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function(element) {
- element = $(element);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- return element;
- },
-
- hide: function(element) {
- element = $(element);
- element.style.display = 'none';
- return element;
- },
-
- show: function(element) {
- element = $(element);
- element.style.display = '';
- return element;
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- return element;
- },
-
- update: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
- content = Object.toHTML(content);
- element.innerHTML = content.stripScripts();
- content.evalScripts.bind(content).defer();
- return element;
- },
-
- replace: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- else if (!Object.isElement(content)) {
- content = Object.toHTML(content);
- var range = element.ownerDocument.createRange();
- range.selectNode(element);
- content.evalScripts.bind(content).defer();
- content = range.createContextualFragment(content.stripScripts());
- }
- element.parentNode.replaceChild(content, element);
- return element;
- },
-
- insert: function(element, insertions) {
- element = $(element);
-
- if (Object.isString(insertions) || Object.isNumber(insertions) ||
- Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
- insertions = {bottom:insertions};
-
- var content, insert, tagName, childNodes;
-
- for (var position in insertions) {
- content = insertions[position];
- position = position.toLowerCase();
- insert = Element._insertionTranslations[position];
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- insert(element, content);
- continue;
- }
-
- content = Object.toHTML(content);
-
- tagName = ((position == 'before' || position == 'after')
- ? element.parentNode : element).tagName.toUpperCase();
-
- childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
-
- if (position == 'top' || position == 'after') childNodes.reverse();
- childNodes.each(insert.curry(element));
-
- content.evalScripts.bind(content).defer();
- }
-
- return element;
- },
-
- wrap: function(element, wrapper, attributes) {
- element = $(element);
- if (Object.isElement(wrapper))
- $(wrapper).writeAttribute(attributes || { });
- else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
- else wrapper = new Element('div', wrapper);
- if (element.parentNode)
- element.parentNode.replaceChild(wrapper, element);
- wrapper.appendChild(element);
- return wrapper;
- },
-
- inspect: function(element) {
- element = $(element);
- var result = '<' + element.tagName.toLowerCase();
- $H({'id': 'id', 'className': 'class'}).each(function(pair) {
- var property = pair.first(), attribute = pair.last();
- var value = (element[property] || '').toString();
- if (value) result += ' ' + attribute + '=' + value.inspect(true);
- });
- return result + '>';
- },
-
- recursivelyCollect: function(element, property) {
- element = $(element);
- var elements = [];
- while (element = element[property])
- if (element.nodeType == 1)
- elements.push(Element.extend(element));
- return elements;
- },
-
- ancestors: function(element) {
- return $(element).recursivelyCollect('parentNode');
- },
-
- descendants: function(element) {
- return $(element).select("*");
- },
-
- firstDescendant: function(element) {
- element = $(element).firstChild;
- while (element && element.nodeType != 1) element = element.nextSibling;
- return $(element);
- },
-
- immediateDescendants: function(element) {
- if (!(element = $(element).firstChild)) return [];
- while (element && element.nodeType != 1) element = element.nextSibling;
- if (element) return [element].concat($(element).nextSiblings());
- return [];
- },
-
- previousSiblings: function(element) {
- return $(element).recursivelyCollect('previousSibling');
- },
-
- nextSiblings: function(element) {
- return $(element).recursivelyCollect('nextSibling');
- },
-
- siblings: function(element) {
- element = $(element);
- return element.previousSiblings().reverse().concat(element.nextSiblings());
- },
-
- match: function(element, selector) {
- if (Object.isString(selector))
- selector = new Selector(selector);
- return selector.match($(element));
- },
-
- up: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(element.parentNode);
- var ancestors = element.ancestors();
- return Object.isNumber(expression) ? ancestors[expression] :
- Selector.findElement(ancestors, expression, index);
- },
-
- down: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return element.firstDescendant();
- return Object.isNumber(expression) ? element.descendants()[expression] :
- Element.select(element, expression)[index || 0];
- },
-
- previous: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
- var previousSiblings = element.previousSiblings();
- return Object.isNumber(expression) ? previousSiblings[expression] :
- Selector.findElement(previousSiblings, expression, index);
- },
-
- next: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
- var nextSiblings = element.nextSiblings();
- return Object.isNumber(expression) ? nextSiblings[expression] :
- Selector.findElement(nextSiblings, expression, index);
- },
-
- select: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element, args);
- },
-
- adjacent: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element.parentNode, args).without(element);
- },
-
- identify: function(element) {
- element = $(element);
- var id = element.readAttribute('id'), self = arguments.callee;
- if (id) return id;
- do { id = 'anonymous_element_' + self.counter++ } while ($(id));
- element.writeAttribute('id', id);
- return id;
- },
-
- readAttribute: function(element, name) {
- element = $(element);
- if (Prototype.Browser.IE) {
- var t = Element._attributeTranslations.read;
- if (t.values[name]) return t.values[name](element, name);
- if (t.names[name]) name = t.names[name];
- if (name.include(':')) {
- return (!element.attributes || !element.attributes[name]) ? null :
- element.attributes[name].value;
- }
- }
- return element.getAttribute(name);
- },
-
- writeAttribute: function(element, name, value) {
- element = $(element);
- var attributes = { }, t = Element._attributeTranslations.write;
-
- if (typeof name == 'object') attributes = name;
- else attributes[name] = Object.isUndefined(value) ? true : value;
-
- for (var attr in attributes) {
- name = t.names[attr] || attr;
- value = attributes[attr];
- if (t.values[attr]) name = t.values[attr](element, value);
- if (value === false || value === null)
- element.removeAttribute(name);
- else if (value === true)
- element.setAttribute(name, name);
- else element.setAttribute(name, value);
- }
- return element;
- },
-
- getHeight: function(element) {
- return $(element).getDimensions().height;
- },
-
- getWidth: function(element) {
- return $(element).getDimensions().width;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- var elementClassName = element.className;
- return (elementClassName.length > 0 && (elementClassName == className ||
- new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- if (!element.hasClassName(className))
- element.className += (element.className ? ' ' : '') + className;
- return element;
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- element.className = element.className.replace(
- new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
- return element;
- },
-
- toggleClassName: function(element, className) {
- if (!(element = $(element))) return;
- return element[element.hasClassName(className) ?
- 'removeClassName' : 'addClassName'](className);
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- var node = element.firstChild;
- while (node) {
- var nextNode = node.nextSibling;
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- element.removeChild(node);
- node = nextNode;
- }
- return element;
- },
-
- empty: function(element) {
- return $(element).innerHTML.blank();
- },
-
- descendantOf: function(element, ancestor) {
- element = $(element), ancestor = $(ancestor);
-
- if (element.compareDocumentPosition)
- return (element.compareDocumentPosition(ancestor) & 8) === 8;
-
- if (ancestor.contains)
- return ancestor.contains(element) && ancestor !== element;
-
- while (element = element.parentNode)
- if (element == ancestor) return true;
-
- return false;
- },
-
- scrollTo: function(element) {
- element = $(element);
- var pos = element.cumulativeOffset();
- window.scrollTo(pos[0], pos[1]);
- return element;
- },
-
- getStyle: function(element, style) {
- element = $(element);
- style = style == 'float' ? 'cssFloat' : style.camelize();
- var value = element.style[style];
- if (!value || value == 'auto') {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css[style] : null;
- }
- if (style == 'opacity') return value ? parseFloat(value) : 1.0;
- return value == 'auto' ? null : value;
- },
-
- getOpacity: function(element) {
- return $(element).getStyle('opacity');
- },
-
- setStyle: function(element, styles) {
- element = $(element);
- var elementStyle = element.style, match;
- if (Object.isString(styles)) {
- element.style.cssText += ';' + styles;
- return styles.include('opacity') ?
- element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
- }
- for (var property in styles)
- if (property == 'opacity') element.setOpacity(styles[property]);
- else
- elementStyle[(property == 'float' || property == 'cssFloat') ?
- (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
- property] = styles[property];
-
- return element;
- },
-
- setOpacity: function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
- return element;
- },
-
- getDimensions: function(element) {
- element = $(element);
- var display = element.getStyle('display');
- if (display != 'none' && display != null) // Safari bug
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- var originalDisplay = els.display;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = 'block';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = originalDisplay;
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (Prototype.Browser.Opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- return element;
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- return element;
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return element;
- element._overflow = Element.getStyle(element, 'overflow') || 'auto';
- if (element._overflow !== 'hidden')
- element.style.overflow = 'hidden';
- return element;
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (!element._overflow) return element;
- element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
- element._overflow = null;
- return element;
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- if (element.tagName.toUpperCase() == 'BODY') break;
- var p = Element.getStyle(element, 'position');
- if (p !== 'static') break;
- }
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'absolute') return element;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- var offsets = element.positionedOffset();
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.width = width + 'px';
- element.style.height = height + 'px';
- return element;
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'relative') return element;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- element.style.position = 'relative';
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.height = element._originalHeight;
- element.style.width = element._originalWidth;
- return element;
- },
-
- cumulativeScrollOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- getOffsetParent: function(element) {
- if (element.offsetParent) return $(element.offsetParent);
- if (element == document.body) return $(element);
-
- while ((element = element.parentNode) && element != document.body)
- if (Element.getStyle(element, 'position') != 'static')
- return $(element);
-
- return $(document.body);
- },
-
- viewportOffset: function(forElement) {
- var valueT = 0, valueL = 0;
-
- var element = forElement;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
-
- // Safari fix
- if (element.offsetParent == document.body &&
- Element.getStyle(element, 'position') == 'absolute') break;
-
- } while (element = element.offsetParent);
-
- element = forElement;
- do {
- if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) {
- valueT -= element.scrollTop || 0;
- valueL -= element.scrollLeft || 0;
- }
- } while (element = element.parentNode);
-
- return Element._returnOffset(valueL, valueT);
- },
-
- clonePosition: function(element, source) {
- var options = Object.extend({
- setLeft: true,
- setTop: true,
- setWidth: true,
- setHeight: true,
- offsetTop: 0,
- offsetLeft: 0
- }, arguments[2] || { });
-
- // find page position of source
- source = $(source);
- var p = source.viewportOffset();
-
- // find coordinate system to use
- element = $(element);
- var delta = [0, 0];
- var parent = null;
- // delta [0,0] will do fine with position: fixed elements,
- // position:absolute needs offsetParent deltas
- if (Element.getStyle(element, 'position') == 'absolute') {
- parent = element.getOffsetParent();
- delta = parent.viewportOffset();
- }
-
- // correct by body offsets (fixes Safari)
- if (parent == document.body) {
- delta[0] -= document.body.offsetLeft;
- delta[1] -= document.body.offsetTop;
- }
-
- // set position
- if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
- if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
- if (options.setWidth) element.style.width = source.offsetWidth + 'px';
- if (options.setHeight) element.style.height = source.offsetHeight + 'px';
- return element;
- }
-};
-
-Element.Methods.identify.counter = 1;
-
-Object.extend(Element.Methods, {
- getElementsBySelector: Element.Methods.select,
- childElements: Element.Methods.immediateDescendants
-});
-
-Element._attributeTranslations = {
- write: {
- names: {
- className: 'class',
- htmlFor: 'for'
- },
- values: { }
- }
-};
-
-if (Prototype.Browser.Opera) {
- Element.Methods.getStyle = Element.Methods.getStyle.wrap(
- function(proceed, element, style) {
- switch (style) {
- case 'left': case 'top': case 'right': case 'bottom':
- if (proceed(element, 'position') === 'static') return null;
- case 'height': case 'width':
- // returns '0px' for hidden elements; we want it to return null
- if (!Element.visible(element)) return null;
-
- // returns the border-box dimensions rather than the content-box
- // dimensions, so we subtract padding and borders from the value
- var dim = parseInt(proceed(element, style), 10);
-
- if (dim !== element['offset' + style.capitalize()])
- return dim + 'px';
-
- var properties;
- if (style === 'height') {
- properties = ['border-top-width', 'padding-top',
- 'padding-bottom', 'border-bottom-width'];
- }
- else {
- properties = ['border-left-width', 'padding-left',
- 'padding-right', 'border-right-width'];
- }
- return properties.inject(dim, function(memo, property) {
- var val = proceed(element, property);
- return val === null ? memo : memo - parseInt(val, 10);
- }) + 'px';
- default: return proceed(element, style);
- }
- }
- );
-
- Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
- function(proceed, element, attribute) {
- if (attribute === 'title') return element.title;
- return proceed(element, attribute);
- }
- );
-}
-
-else if (Prototype.Browser.IE) {
- // IE doesn't report offsets correctly for static elements, so we change them
- // to "relative" to get the values, then change them back.
- Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
- function(proceed, element) {
- element = $(element);
- // IE throws an error if element is not in document
- try { element.offsetParent }
- catch(e) { return $(document.body) }
- var position = element.getStyle('position');
- if (position !== 'static') return proceed(element);
- element.setStyle({ position: 'relative' });
- var value = proceed(element);
- element.setStyle({ position: position });
- return value;
- }
- );
-
- $w('positionedOffset viewportOffset').each(function(method) {
- Element.Methods[method] = Element.Methods[method].wrap(
- function(proceed, element) {
- element = $(element);
- try { element.offsetParent }
- catch(e) { return Element._returnOffset(0,0) }
- var position = element.getStyle('position');
- if (position !== 'static') return proceed(element);
- // Trigger hasLayout on the offset parent so that IE6 reports
- // accurate offsetTop and offsetLeft values for position: fixed.
- var offsetParent = element.getOffsetParent();
- if (offsetParent && offsetParent.getStyle('position') === 'fixed')
- offsetParent.setStyle({ zoom: 1 });
- element.setStyle({ position: 'relative' });
- var value = proceed(element);
- element.setStyle({ position: position });
- return value;
- }
- );
- });
-
- Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap(
- function(proceed, element) {
- try { element.offsetParent }
- catch(e) { return Element._returnOffset(0,0) }
- return proceed(element);
- }
- );
-
- Element.Methods.getStyle = function(element, style) {
- element = $(element);
- style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
- var value = element.style[style];
- if (!value && element.currentStyle) value = element.currentStyle[style];
-
- if (style == 'opacity') {
- if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
- if (value[1]) return parseFloat(value[1]) / 100;
- return 1.0;
- }
-
- if (value == 'auto') {
- if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
- return element['offset' + style.capitalize()] + 'px';
- return null;
- }
- return value;
- };
-
- Element.Methods.setOpacity = function(element, value) {
- function stripAlpha(filter){
- return filter.replace(/alpha\([^\)]*\)/gi,'');
- }
- element = $(element);
- var currentStyle = element.currentStyle;
- if ((currentStyle && !currentStyle.hasLayout) ||
- (!currentStyle && element.style.zoom == 'normal'))
- element.style.zoom = 1;
-
- var filter = element.getStyle('filter'), style = element.style;
- if (value == 1 || value === '') {
- (filter = stripAlpha(filter)) ?
- style.filter = filter : style.removeAttribute('filter');
- return element;
- } else if (value < 0.00001) value = 0;
- style.filter = stripAlpha(filter) +
- 'alpha(opacity=' + (value * 100) + ')';
- return element;
- };
-
- Element._attributeTranslations = {
- read: {
- names: {
- 'class': 'className',
- 'for': 'htmlFor'
- },
- values: {
- _getAttr: function(element, attribute) {
- return element.getAttribute(attribute, 2);
- },
- _getAttrNode: function(element, attribute) {
- var node = element.getAttributeNode(attribute);
- return node ? node.value : "";
- },
- _getEv: function(element, attribute) {
- attribute = element.getAttribute(attribute);
- return attribute ? attribute.toString().slice(23, -2) : null;
- },
- _flag: function(element, attribute) {
- return $(element).hasAttribute(attribute) ? attribute : null;
- },
- style: function(element) {
- return element.style.cssText.toLowerCase();
- },
- title: function(element) {
- return element.title;
- }
- }
- }
- };
-
- Element._attributeTranslations.write = {
- names: Object.extend({
- cellpadding: 'cellPadding',
- cellspacing: 'cellSpacing'
- }, Element._attributeTranslations.read.names),
- values: {
- checked: function(element, value) {
- element.checked = !!value;
- },
-
- style: function(element, value) {
- element.style.cssText = value ? value : '';
- }
- }
- };
-
- Element._attributeTranslations.has = {};
-
- $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
- 'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
- Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
- Element._attributeTranslations.has[attr.toLowerCase()] = attr;
- });
-
- (function(v) {
- Object.extend(v, {
- href: v._getAttr,
- src: v._getAttr,
- type: v._getAttr,
- action: v._getAttrNode,
- disabled: v._flag,
- checked: v._flag,
- readonly: v._flag,
- multiple: v._flag,
- onload: v._getEv,
- onunload: v._getEv,
- onclick: v._getEv,
- ondblclick: v._getEv,
- onmousedown: v._getEv,
- onmouseup: v._getEv,
- onmouseover: v._getEv,
- onmousemove: v._getEv,
- onmouseout: v._getEv,
- onfocus: v._getEv,
- onblur: v._getEv,
- onkeypress: v._getEv,
- onkeydown: v._getEv,
- onkeyup: v._getEv,
- onsubmit: v._getEv,
- onreset: v._getEv,
- onselect: v._getEv,
- onchange: v._getEv
- });
- })(Element._attributeTranslations.read.values);
-}
-
-else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
- Element.Methods.setOpacity = function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1) ? 0.999999 :
- (value === '') ? '' : (value < 0.00001) ? 0 : value;
- return element;
- };
-}
-
-else if (Prototype.Browser.WebKit) {
- Element.Methods.setOpacity = function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
-
- if (value == 1)
- if(element.tagName.toUpperCase() == 'IMG' && element.width) {
- element.width++; element.width--;
- } else try {
- var n = document.createTextNode(' ');
- element.appendChild(n);
- element.removeChild(n);
- } catch (e) { }
-
- return element;
- };
-
- // Safari returns margins on body which is incorrect if the child is absolutely
- // positioned. For performance reasons, redefine Element#cumulativeOffset for
- // KHTML/WebKit only.
- Element.Methods.cumulativeOffset = function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- if (element.offsetParent == document.body)
- if (Element.getStyle(element, 'position') == 'absolute') break;
-
- element = element.offsetParent;
- } while (element);
-
- return Element._returnOffset(valueL, valueT);
- };
-}
-
-if (Prototype.Browser.IE || Prototype.Browser.Opera) {
- // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
- Element.Methods.update = function(element, content) {
- element = $(element);
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
-
- content = Object.toHTML(content);
- var tagName = element.tagName.toUpperCase();
-
- if (tagName in Element._insertionTranslations.tags) {
- $A(element.childNodes).each(function(node) { element.removeChild(node) });
- Element._getContentFromAnonymousElement(tagName, content.stripScripts())
- .each(function(node) { element.appendChild(node) });
- }
- else element.innerHTML = content.stripScripts();
-
- content.evalScripts.bind(content).defer();
- return element;
- };
-}
-
-if ('outerHTML' in document.createElement('div')) {
- Element.Methods.replace = function(element, content) {
- element = $(element);
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- element.parentNode.replaceChild(content, element);
- return element;
- }
-
- content = Object.toHTML(content);
- var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
-
- if (Element._insertionTranslations.tags[tagName]) {
- var nextSibling = element.next();
- var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
- parent.removeChild(element);
- if (nextSibling)
- fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
- else
- fragments.each(function(node) { parent.appendChild(node) });
- }
- else element.outerHTML = content.stripScripts();
-
- content.evalScripts.bind(content).defer();
- return element;
- };
-}
-
-Element._returnOffset = function(l, t) {
- var result = [l, t];
- result.left = l;
- result.top = t;
- return result;
-};
-
-Element._getContentFromAnonymousElement = function(tagName, html) {
- var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
- if (t) {
- div.innerHTML = t[0] + html + t[1];
- t[2].times(function() { div = div.firstChild });
- } else div.innerHTML = html;
- return $A(div.childNodes);
-};
-
-Element._insertionTranslations = {
- before: function(element, node) {
- element.parentNode.insertBefore(node, element);
- },
- top: function(element, node) {
- element.insertBefore(node, element.firstChild);
- },
- bottom: function(element, node) {
- element.appendChild(node);
- },
- after: function(element, node) {
- element.parentNode.insertBefore(node, element.nextSibling);
- },
- tags: {
- TABLE: ['<table>', '</table>', 1],
- TBODY: ['<table><tbody>', '</tbody></table>', 2],
- TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3],
- TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
- SELECT: ['<select>', '</select>', 1]
- }
-};
-
-(function() {
- Object.extend(this.tags, {
- THEAD: this.tags.TBODY,
- TFOOT: this.tags.TBODY,
- TH: this.tags.TD
- });
-}).call(Element._insertionTranslations);
-
-Element.Methods.Simulated = {
- hasAttribute: function(element, attribute) {
- attribute = Element._attributeTranslations.has[attribute] || attribute;
- var node = $(element).getAttributeNode(attribute);
- return !!(node && node.specified);
- }
-};
-
-Element.Methods.ByTag = { };
-
-Object.extend(Element, Element.Methods);
-
-if (!Prototype.BrowserFeatures.ElementExtensions &&
- document.createElement('div')['__proto__']) {
- window.HTMLElement = { };
- window.HTMLElement.prototype = document.createElement('div')['__proto__'];
- Prototype.BrowserFeatures.ElementExtensions = true;
-}
-
-Element.extend = (function() {
- if (Prototype.BrowserFeatures.SpecificElementExtensions)
- return Prototype.K;
-
- var Methods = { }, ByTag = Element.Methods.ByTag;
-
- var extend = Object.extend(function(element) {
- if (!element || element._extendedByPrototype ||
- element.nodeType != 1 || element == window) return element;
-
- var methods = Object.clone(Methods),
- tagName = element.tagName.toUpperCase(), property, value;
-
- // extend methods for specific tags
- if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
-
- for (property in methods) {
- value = methods[property];
- if (Object.isFunction(value) && !(property in element))
- element[property] = value.methodize();
- }
-
- element._extendedByPrototype = Prototype.emptyFunction;
- return element;
-
- }, {
- refresh: function() {
- // extend methods for all tags (Safari doesn't need this)
- if (!Prototype.BrowserFeatures.ElementExtensions) {
- Object.extend(Methods, Element.Methods);
- Object.extend(Methods, Element.Methods.Simulated);
- }
- }
- });
-
- extend.refresh();
- return extend;
-})();
-
-Element.hasAttribute = function(element, attribute) {
- if (element.hasAttribute) return element.hasAttribute(attribute);
- return Element.Methods.Simulated.hasAttribute(element, attribute);
-};
-
-Element.addMethods = function(methods) {
- var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
-
- if (!methods) {
- Object.extend(Form, Form.Methods);
- Object.extend(Form.Element, Form.Element.Methods);
- Object.extend(Element.Methods.ByTag, {
- "FORM": Object.clone(Form.Methods),
- "INPUT": Object.clone(Form.Element.Methods),
- "SELECT": Object.clone(Form.Element.Methods),
- "TEXTAREA": Object.clone(Form.Element.Methods)
- });
- }
-
- if (arguments.length == 2) {
- var tagName = methods;
- methods = arguments[1];
- }
-
- if (!tagName) Object.extend(Element.Methods, methods || { });
- else {
- if (Object.isArray(tagName)) tagName.each(extend);
- else extend(tagName);
- }
-
- function extend(tagName) {
- tagName = tagName.toUpperCase();
- if (!Element.Methods.ByTag[tagName])
- Element.Methods.ByTag[tagName] = { };
- Object.extend(Element.Methods.ByTag[tagName], methods);
- }
-
- function copy(methods, destination, onlyIfAbsent) {
- onlyIfAbsent = onlyIfAbsent || false;
- for (var property in methods) {
- var value = methods[property];
- if (!Object.isFunction(value)) continue;
- if (!onlyIfAbsent || !(property in destination))
- destination[property] = value.methodize();
- }
- }
-
- function findDOMClass(tagName) {
- var klass;
- var trans = {
- "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
- "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
- "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
- "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
- "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
- "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
- "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
- "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
- "FrameSet", "IFRAME": "IFrame"
- };
- if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
- if (window[klass]) return window[klass];
- klass = 'HTML' + tagName + 'Element';
- if (window[klass]) return window[klass];
- klass = 'HTML' + tagName.capitalize() + 'Element';
- if (window[klass]) return window[klass];
-
- window[klass] = { };
- window[klass].prototype = document.createElement(tagName)['__proto__'];
- return window[klass];
- }
-
- if (F.ElementExtensions) {
- copy(Element.Methods, HTMLElement.prototype);
- copy(Element.Methods.Simulated, HTMLElement.prototype, true);
- }
-
- if (F.SpecificElementExtensions) {
- for (var tag in Element.Methods.ByTag) {
- var klass = findDOMClass(tag);
- if (Object.isUndefined(klass)) continue;
- copy(T[tag], klass.prototype);
- }
- }
-
- Object.extend(Element, Element.Methods);
- delete Element.ByTag;
-
- if (Element.extend.refresh) Element.extend.refresh();
- Element.cache = { };
-};
-
-document.viewport = {
- getDimensions: function() {
- var dimensions = { }, B = Prototype.Browser;
- $w('width height').each(function(d) {
- var D = d.capitalize();
- if (B.WebKit && !document.evaluate) {
- // Safari <3.0 needs self.innerWidth/Height
- dimensions[d] = self['inner' + D];
- } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {
- // Opera <9.5 needs document.body.clientWidth/Height
- dimensions[d] = document.body['client' + D]
- } else {
- dimensions[d] = document.documentElement['client' + D];
- }
- });
- return dimensions;
- },
-
- getWidth: function() {
- return this.getDimensions().width;
- },
-
- getHeight: function() {
- return this.getDimensions().height;
- },
-
- getScrollOffsets: function() {
- return Element._returnOffset(
- window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
- window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
- }
-};
-/* Portions of the Selector class are derived from Jack Slocum's DomQuery,
- * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
- * license. Please see http://www.yui-ext.com/ for more information. */
-
-var Selector = Class.create({
- initialize: function(expression) {
- this.expression = expression.strip();
-
- if (this.shouldUseSelectorsAPI()) {
- this.mode = 'selectorsAPI';
- } else if (this.shouldUseXPath()) {
- this.mode = 'xpath';
- this.compileXPathMatcher();
- } else {
- this.mode = "normal";
- this.compileMatcher();
- }
-
- },
-
- shouldUseXPath: function() {
- if (!Prototype.BrowserFeatures.XPath) return false;
-
- var e = this.expression;
-
- // Safari 3 chokes on :*-of-type and :empty
- if (Prototype.Browser.WebKit &&
- (e.include("-of-type") || e.include(":empty")))
- return false;
-
- // XPath can't do namespaced attributes, nor can it read
- // the "checked" property from DOM nodes
- if ((/(\[[\w-]*?:|:checked)/).test(e))
- return false;
-
- return true;
- },
-
- shouldUseSelectorsAPI: function() {
- if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
-
- if (!Selector._div) Selector._div = new Element('div');
-
- // Make sure the browser treats the selector as valid. Test on an
- // isolated element to minimize cost of this check.
- try {
- Selector._div.querySelector(this.expression);
- } catch(e) {
- return false;
- }
-
- return true;
- },
-
- compileMatcher: function() {
- var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
- c = Selector.criteria, le, p, m;
-
- if (Selector._cache[e]) {
- this.matcher = Selector._cache[e];
- return;
- }
-
- this.matcher = ["this.matcher = function(root) {",
- "var r = root, h = Selector.handlers, c = false, n;"];
-
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- p = ps[i];
- if (m = e.match(p)) {
- this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
- new Template(c[i]).evaluate(m));
- e = e.replace(m[0], '');
- break;
- }
- }
- }
-
- this.matcher.push("return h.unique(n);\n}");
- eval(this.matcher.join('\n'));
- Selector._cache[this.expression] = this.matcher;
- },
-
- compileXPathMatcher: function() {
- var e = this.expression, ps = Selector.patterns,
- x = Selector.xpath, le, m;
-
- if (Selector._cache[e]) {
- this.xpath = Selector._cache[e]; return;
- }
-
- this.matcher = ['.//*'];
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- if (m = e.match(ps[i])) {
- this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
- new Template(x[i]).evaluate(m));
- e = e.replace(m[0], '');
- break;
- }
- }
- }
-
- this.xpath = this.matcher.join('');
- Selector._cache[this.expression] = this.xpath;
- },
-
- findElements: function(root) {
- root = root || document;
- var e = this.expression, results;
-
- switch (this.mode) {
- case 'selectorsAPI':
- // querySelectorAll queries document-wide, then filters to descendants
- // of the context element. That's not what we want.
- // Add an explicit context to the selector if necessary.
- if (root !== document) {
- var oldId = root.id, id = $(root).identify();
- e = "#" + id + " " + e;
- }
-
- results = $A(root.querySelectorAll(e)).map(Element.extend);
- root.id = oldId;
-
- return results;
- case 'xpath':
- return document._getElementsByXPath(this.xpath, root);
- default:
- return this.matcher(root);
- }
- },
-
- match: function(element) {
- this.tokens = [];
-
- var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
- var le, p, m;
-
- while (e && le !== e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- p = ps[i];
- if (m = e.match(p)) {
- // use the Selector.assertions methods unless the selector
- // is too complex.
- if (as[i]) {
- this.tokens.push([i, Object.clone(m)]);
- e = e.replace(m[0], '');
- } else {
- // reluctantly do a document-wide search
- // and look for a match in the array
- return this.findElements(document).include(element);
- }
- }
- }
- }
-
- var match = true, name, matches;
- for (var i = 0, token; token = this.tokens[i]; i++) {
- name = token[0], matches = token[1];
- if (!Selector.assertions[name](element, matches)) {
- match = false; break;
- }
- }
-
- return match;
- },
-
- toString: function() {
- return this.expression;
- },
-
- inspect: function() {
- return "#<Selector:" + this.expression.inspect() + ">";
- }
-});
-
-Object.extend(Selector, {
- _cache: { },
-
- xpath: {
- descendant: "//*",
- child: "/*",
- adjacent: "/following-sibling::*[1]",
- laterSibling: '/following-sibling::*',
- tagName: function(m) {
- if (m[1] == '*') return '';
- return "[local-name()='" + m[1].toLowerCase() +
- "' or local-name()='" + m[1].toUpperCase() + "']";
- },
- className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",
- id: "[@id='#{1}']",
- attrPresence: function(m) {
- m[1] = m[1].toLowerCase();
- return new Template("[@#{1}]").evaluate(m);
- },
- attr: function(m) {
- m[1] = m[1].toLowerCase();
- m[3] = m[5] || m[6];
- return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
- },
- pseudo: function(m) {
- var h = Selector.xpath.pseudos[m[1]];
- if (!h) return '';
- if (Object.isFunction(h)) return h(m);
- return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
- },
- operators: {
- '=': "[@#{1}='#{3}']",
- '!=': "[@#{1}!='#{3}']",
- '^=': "[starts-with(@#{1}, '#{3}')]",
- '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
- '*=': "[contains(@#{1}, '#{3}')]",
- '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
- '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
- },
- pseudos: {
- 'first-child': '[not(preceding-sibling::*)]',
- 'last-child': '[not(following-sibling::*)]',
- 'only-child': '[not(preceding-sibling::* or following-sibling::*)]',
- 'empty': "[count(*) = 0 and (count(text()) = 0)]",
- 'checked': "[@checked]",
- 'disabled': "[(@disabled) and (@type!='hidden')]",
- 'enabled': "[not(@disabled) and (@type!='hidden')]",
- 'not': function(m) {
- var e = m[6], p = Selector.patterns,
- x = Selector.xpath, le, v;
-
- var exclusion = [];
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in p) {
- if (m = e.match(p[i])) {
- v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
- exclusion.push("(" + v.substring(1, v.length - 1) + ")");
- e = e.replace(m[0], '');
- break;
- }
- }
- }
- return "[not(" + exclusion.join(" and ") + ")]";
- },
- 'nth-child': function(m) {
- return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
- },
- 'nth-last-child': function(m) {
- return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
- },
- 'nth-of-type': function(m) {
- return Selector.xpath.pseudos.nth("position() ", m);
- },
- 'nth-last-of-type': function(m) {
- return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
- },
- 'first-of-type': function(m) {
- m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
- },
- 'last-of-type': function(m) {
- m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
- },
- 'only-of-type': function(m) {
- var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
- },
- nth: function(fragment, m) {
- var mm, formula = m[6], predicate;
- if (formula == 'even') formula = '2n+0';
- if (formula == 'odd') formula = '2n+1';
- if (mm = formula.match(/^(\d+)$/)) // digit only
- return '[' + fragment + "= " + mm[1] + ']';
- if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
- if (mm[1] == "-") mm[1] = -1;
- var a = mm[1] ? Number(mm[1]) : 1;
- var b = mm[2] ? Number(mm[2]) : 0;
- predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
- "((#{fragment} - #{b}) div #{a} >= 0)]";
- return new Template(predicate).evaluate({
- fragment: fragment, a: a, b: b });
- }
- }
- }
- },
-
- criteria: {
- tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;',
- className: 'n = h.className(n, r, "#{1}", c); c = false;',
- id: 'n = h.id(n, r, "#{1}", c); c = false;',
- attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
- attr: function(m) {
- m[3] = (m[5] || m[6]);
- return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
- },
- pseudo: function(m) {
- if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
- return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
- },
- descendant: 'c = "descendant";',
- child: 'c = "child";',
- adjacent: 'c = "adjacent";',
- laterSibling: 'c = "laterSibling";'
- },
-
- patterns: {
- // combinators must be listed first
- // (and descendant needs to be last combinator)
- laterSibling: /^\s*~\s*/,
- child: /^\s*>\s*/,
- adjacent: /^\s*\+\s*/,
- descendant: /^\s/,
-
- // selectors follow
- tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,
- id: /^#([\w\-\*]+)(\b|$)/,
- className: /^\.([\w\-\*]+)(\b|$)/,
- pseudo:
-/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,
- attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,
- attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
- },
-
- // for Selector.match and Element#match
- assertions: {
- tagName: function(element, matches) {
- return matches[1].toUpperCase() == element.tagName.toUpperCase();
- },
-
- className: function(element, matches) {
- return Element.hasClassName(element, matches[1]);
- },
-
- id: function(element, matches) {
- return element.id === matches[1];
- },
-
- attrPresence: function(element, matches) {
- return Element.hasAttribute(element, matches[1]);
- },
-
- attr: function(element, matches) {
- var nodeValue = Element.readAttribute(element, matches[1]);
- return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]);
- }
- },
-
- handlers: {
- // UTILITY FUNCTIONS
- // joins two collections
- concat: function(a, b) {
- for (var i = 0, node; node = b[i]; i++)
- a.push(node);
- return a;
- },
-
- // marks an array of nodes for counting
- mark: function(nodes) {
- var _true = Prototype.emptyFunction;
- for (var i = 0, node; node = nodes[i]; i++)
- node._countedByPrototype = _true;
- return nodes;
- },
-
- unmark: function(nodes) {
- for (var i = 0, node; node = nodes[i]; i++)
- node._countedByPrototype = undefined;
- return nodes;
- },
-
- // mark each child node with its position (for nth calls)
- // "ofType" flag indicates whether we're indexing for nth-of-type
- // rather than nth-child
- index: function(parentNode, reverse, ofType) {
- parentNode._countedByPrototype = Prototype.emptyFunction;
- if (reverse) {
- for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
- var node = nodes[i];
- if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
- }
- } else {
- for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
- if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
- }
- },
-
- // filters out duplicates and extends all nodes
- unique: function(nodes) {
- if (nodes.length == 0) return nodes;
- var results = [], n;
- for (var i = 0, l = nodes.length; i < l; i++)
- if (!(n = nodes[i])._countedByPrototype) {
- n._countedByPrototype = Prototype.emptyFunction;
- results.push(Element.extend(n));
- }
- return Selector.handlers.unmark(results);
- },
-
- // COMBINATOR FUNCTIONS
- descendant: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- h.concat(results, node.getElementsByTagName('*'));
- return results;
- },
-
- child: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- for (var j = 0, child; child = node.childNodes[j]; j++)
- if (child.nodeType == 1 && child.tagName != '!') results.push(child);
- }
- return results;
- },
-
- adjacent: function(nodes) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- var next = this.nextElementSibling(node);
- if (next) results.push(next);
- }
- return results;
- },
-
- laterSibling: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- h.concat(results, Element.nextSiblings(node));
- return results;
- },
-
- nextElementSibling: function(node) {
- while (node = node.nextSibling)
- if (node.nodeType == 1) return node;
- return null;
- },
-
- previousElementSibling: function(node) {
- while (node = node.previousSibling)
- if (node.nodeType == 1) return node;
- return null;
- },
-
- // TOKEN FUNCTIONS
- tagName: function(nodes, root, tagName, combinator) {
- var uTagName = tagName.toUpperCase();
- var results = [], h = Selector.handlers;
- if (nodes) {
- if (combinator) {
- // fastlane for ordinary descendant combinators
- if (combinator == "descendant") {
- for (var i = 0, node; node = nodes[i]; i++)
- h.concat(results, node.getElementsByTagName(tagName));
- return results;
- } else nodes = this[combinator](nodes);
- if (tagName == "*") return nodes;
- }
- for (var i = 0, node; node = nodes[i]; i++)
- if (node.tagName.toUpperCase() === uTagName) results.push(node);
- return results;
- } else return root.getElementsByTagName(tagName);
- },
-
- id: function(nodes, root, id, combinator) {
- var targetNode = $(id), h = Selector.handlers;
- if (!targetNode) return [];
- if (!nodes && root == document) return [targetNode];
- if (nodes) {
- if (combinator) {
- if (combinator == 'child') {
- for (var i = 0, node; node = nodes[i]; i++)
- if (targetNode.parentNode == node) return [targetNode];
- } else if (combinator == 'descendant') {
- for (var i = 0, node; node = nodes[i]; i++)
- if (Element.descendantOf(targetNode, node)) return [targetNode];
- } else if (combinator == 'adjacent') {
- for (var i = 0, node; node = nodes[i]; i++)
- if (Selector.handlers.previousElementSibling(targetNode) == node)
- return [targetNode];
- } else nodes = h[combinator](nodes);
- }
- for (var i = 0, node; node = nodes[i]; i++)
- if (node == targetNode) return [targetNode];
- return [];
- }
- return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
- },
-
- className: function(nodes, root, className, combinator) {
- if (nodes && combinator) nodes = this[combinator](nodes);
- return Selector.handlers.byClassName(nodes, root, className);
- },
-
- byClassName: function(nodes, root, className) {
- if (!nodes) nodes = Selector.handlers.descendant([root]);
- var needle = ' ' + className + ' ';
- for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
- nodeClassName = node.className;
- if (nodeClassName.length == 0) continue;
- if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
- results.push(node);
- }
- return results;
- },
-
- attrPresence: function(nodes, root, attr, combinator) {
- if (!nodes) nodes = root.getElementsByTagName("*");
- if (nodes && combinator) nodes = this[combinator](nodes);
- var results = [];
- for (var i = 0, node; node = nodes[i]; i++)
- if (Element.hasAttribute(node, attr)) results.push(node);
- return results;
- },
-
- attr: function(nodes, root, attr, value, operator, combinator) {
- if (!nodes) nodes = root.getElementsByTagName("*");
- if (nodes && combinator) nodes = this[combinator](nodes);
- var handler = Selector.operators[operator], results = [];
- for (var i = 0, node; node = nodes[i]; i++) {
- var nodeValue = Element.readAttribute(node, attr);
- if (nodeValue === null) continue;
- if (handler(nodeValue, value)) results.push(node);
- }
- return results;
- },
-
- pseudo: function(nodes, name, value, root, combinator) {
- if (nodes && combinator) nodes = this[combinator](nodes);
- if (!nodes) nodes = root.getElementsByTagName("*");
- return Selector.pseudos[name](nodes, value, root);
- }
- },
-
- pseudos: {
- 'first-child': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- if (Selector.handlers.previousElementSibling(node)) continue;
- results.push(node);
- }
- return results;
- },
- 'last-child': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- if (Selector.handlers.nextElementSibling(node)) continue;
- results.push(node);
- }
- return results;
- },
- 'only-child': function(nodes, value, root) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
- results.push(node);
- return results;
- },
- 'nth-child': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root);
- },
- 'nth-last-child': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, true);
- },
- 'nth-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, false, true);
- },
- 'nth-last-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, true, true);
- },
- 'first-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, "1", root, false, true);
- },
- 'last-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, "1", root, true, true);
- },
- 'only-of-type': function(nodes, formula, root) {
- var p = Selector.pseudos;
- return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
- },
-
- // handles the an+b logic
- getIndices: function(a, b, total) {
- if (a == 0) return b > 0 ? [b] : [];
- return $R(1, total).inject([], function(memo, i) {
- if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
- return memo;
- });
- },
-
- // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
- nth: function(nodes, formula, root, reverse, ofType) {
- if (nodes.length == 0) return [];
- if (formula == 'even') formula = '2n+0';
- if (formula == 'odd') formula = '2n+1';
- var h = Selector.handlers, results = [], indexed = [], m;
- h.mark(nodes);
- for (var i = 0, node; node = nodes[i]; i++) {
- if (!node.parentNode._countedByPrototype) {
- h.index(node.parentNode, reverse, ofType);
- indexed.push(node.parentNode);
- }
- }
- if (formula.match(/^\d+$/)) { // just a number
- formula = Number(formula);
- for (var i = 0, node; node = nodes[i]; i++)
- if (node.nodeIndex == formula) results.push(node);
- } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
- if (m[1] == "-") m[1] = -1;
- var a = m[1] ? Number(m[1]) : 1;
- var b = m[2] ? Number(m[2]) : 0;
- var indices = Selector.pseudos.getIndices(a, b, nodes.length);
- for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
- for (var j = 0; j < l; j++)
- if (node.nodeIndex == indices[j]) results.push(node);
- }
- }
- h.unmark(nodes);
- h.unmark(indexed);
- return results;
- },
-
- 'empty': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- // IE treats comments as element nodes
- if (node.tagName == '!' || node.firstChild) continue;
- results.push(node);
- }
- return results;
- },
-
- 'not': function(nodes, selector, root) {
- var h = Selector.handlers, selectorType, m;
- var exclusions = new Selector(selector).findElements(root);
- h.mark(exclusions);
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!node._countedByPrototype) results.push(node);
- h.unmark(exclusions);
- return results;
- },
-
- 'enabled': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!node.disabled && (!node.type || node.type !== 'hidden'))
- results.push(node);
- return results;
- },
-
- 'disabled': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (node.disabled) results.push(node);
- return results;
- },
-
- 'checked': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (node.checked) results.push(node);
- return results;
- }
- },
-
- operators: {
- '=': function(nv, v) { return nv == v; },
- '!=': function(nv, v) { return nv != v; },
- '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); },
- '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); },
- '*=': function(nv, v) { return nv == v || nv && nv.include(v); },
- '$=': function(nv, v) { return nv.endsWith(v); },
- '*=': function(nv, v) { return nv.include(v); },
- '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
- '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() +
- '-').include('-' + (v || "").toUpperCase() + '-'); }
- },
-
- split: function(expression) {
- var expressions = [];
- expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
- expressions.push(m[1].strip());
- });
- return expressions;
- },
-
- matchElements: function(elements, expression) {
- var matches = $$(expression), h = Selector.handlers;
- h.mark(matches);
- for (var i = 0, results = [], element; element = elements[i]; i++)
- if (element._countedByPrototype) results.push(element);
- h.unmark(matches);
- return results;
- },
-
- findElement: function(elements, expression, index) {
- if (Object.isNumber(expression)) {
- index = expression; expression = false;
- }
- return Selector.matchElements(elements, expression || '*')[index || 0];
- },
-
- findChildElements: function(element, expressions) {
- expressions = Selector.split(expressions.join(','));
- var results = [], h = Selector.handlers;
- for (var i = 0, l = expressions.length, selector; i < l; i++) {
- selector = new Selector(expressions[i].strip());
- h.concat(results, selector.findElements(element));
- }
- return (l > 1) ? h.unique(results) : results;
- }
-});
-
-if (Prototype.Browser.IE) {
- Object.extend(Selector.handlers, {
- // IE returns comment nodes on getElementsByTagName("*").
- // Filter them out.
- concat: function(a, b) {
- for (var i = 0, node; node = b[i]; i++)
- if (node.tagName !== "!") a.push(node);
- return a;
- },
-
- // IE improperly serializes _countedByPrototype in (inner|outer)HTML.
- unmark: function(nodes) {
- for (var i = 0, node; node = nodes[i]; i++)
- node.removeAttribute('_countedByPrototype');
- return nodes;
- }
- });
-}
-
-function $$() {
- return Selector.findChildElements(document, $A(arguments));
-}
-var Form = {
- reset: function(form) {
- $(form).reset();
- return form;
- },
-
- serializeElements: function(elements, options) {
- if (typeof options != 'object') options = { hash: !!options };
- else if (Object.isUndefined(options.hash)) options.hash = true;
- var key, value, submitted = false, submit = options.submit;
-
- var data = elements.inject({ }, function(result, element) {
- if (!element.disabled && element.name) {
- key = element.name; value = $(element).getValue();
- if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
- submit !== false && (!submit || key == submit) && (submitted = true)))) {
- if (key in result) {
- // a key is already present; construct an array of values
- if (!Object.isArray(result[key])) result[key] = [result[key]];
- result[key].push(value);
- }
- else result[key] = value;
- }
- }
- return result;
- });
-
- return options.hash ? data : Object.toQueryString(data);
- }
-};
-
-Form.Methods = {
- serialize: function(form, options) {
- return Form.serializeElements(Form.getElements(form), options);
- },
-
- getElements: function(form) {
- return $A($(form).getElementsByTagName('*')).inject([],
- function(elements, child) {
- if (Form.Element.Serializers[child.tagName.toLowerCase()])
- elements.push(Element.extend(child));
- return elements;
- }
- );
- },
-
- getInputs: function(form, typeName, name) {
- form = $(form);
- var inputs = form.getElementsByTagName('input');
-
- if (!typeName && !name) return $A(inputs).map(Element.extend);
-
- for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) || (name && input.name != name))
- continue;
- matchingInputs.push(Element.extend(input));
- }
-
- return matchingInputs;
- },
-
- disable: function(form) {
- form = $(form);
- Form.getElements(form).invoke('disable');
- return form;
- },
-
- enable: function(form) {
- form = $(form);
- Form.getElements(form).invoke('enable');
- return form;
- },
-
- findFirstElement: function(form) {
- var elements = $(form).getElements().findAll(function(element) {
- return 'hidden' != element.type && !element.disabled;
- });
- var firstByIndex = elements.findAll(function(element) {
- return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
- }).sortBy(function(element) { return element.tabIndex }).first();
-
- return firstByIndex ? firstByIndex : elements.find(function(element) {
- return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
- });
- },
-
- focusFirstElement: function(form) {
- form = $(form);
- form.findFirstElement().activate();
- return form;
- },
-
- request: function(form, options) {
- form = $(form), options = Object.clone(options || { });
-
- var params = options.parameters, action = form.readAttribute('action') || '';
- if (action.blank()) action = window.location.href;
- options.parameters = form.serialize(true);
-
- if (params) {
- if (Object.isString(params)) params = params.toQueryParams();
- Object.extend(options.parameters, params);
- }
-
- if (form.hasAttribute('method') && !options.method)
- options.method = form.method;
-
- return new Ajax.Request(action, options);
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element = {
- focus: function(element) {
- $(element).focus();
- return element;
- },
-
- select: function(element) {
- $(element).select();
- return element;
- }
-};
-
-Form.Element.Methods = {
- serialize: function(element) {
- element = $(element);
- if (!element.disabled && element.name) {
- var value = element.getValue();
- if (value != undefined) {
- var pair = { };
- pair[element.name] = value;
- return Object.toQueryString(pair);
- }
- }
- return '';
- },
-
- getValue: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- return Form.Element.Serializers[method](element);
- },
-
- setValue: function(element, value) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- Form.Element.Serializers[method](element, value);
- return element;
- },
-
- clear: function(element) {
- $(element).value = '';
- return element;
- },
-
- present: function(element) {
- return $(element).value != '';
- },
-
- activate: function(element) {
- element = $(element);
- try {
- element.focus();
- if (element.select && (element.tagName.toLowerCase() != 'input' ||
- !['button', 'reset', 'submit'].include(element.type)))
- element.select();
- } catch (e) { }
- return element;
- },
-
- disable: function(element) {
- element = $(element);
- element.disabled = true;
- return element;
- },
-
- enable: function(element) {
- element = $(element);
- element.disabled = false;
- return element;
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-var Field = Form.Element;
-var $F = Form.Element.Methods.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element.Serializers = {
- input: function(element, value) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element, value);
- default:
- return Form.Element.Serializers.textarea(element, value);
- }
- },
-
- inputSelector: function(element, value) {
- if (Object.isUndefined(value)) return element.checked ? element.value : null;
- else element.checked = !!value;
- },
-
- textarea: function(element, value) {
- if (Object.isUndefined(value)) return element.value;
- else element.value = value;
- },
-
- select: function(element, value) {
- if (Object.isUndefined(value))
- return this[element.type == 'select-one' ?
- 'selectOne' : 'selectMany'](element);
- else {
- var opt, currentValue, single = !Object.isArray(value);
- for (var i = 0, length = element.length; i < length; i++) {
- opt = element.options[i];
- currentValue = this.optionValue(opt);
- if (single) {
- if (currentValue == value) {
- opt.selected = true;
- return;
- }
- }
- else opt.selected = value.include(currentValue);
- }
- }
- },
-
- selectOne: function(element) {
- var index = element.selectedIndex;
- return index >= 0 ? this.optionValue(element.options[index]) : null;
- },
-
- selectMany: function(element) {
- var values, length = element.length;
- if (!length) return null;
-
- for (var i = 0, values = []; i < length; i++) {
- var opt = element.options[i];
- if (opt.selected) values.push(this.optionValue(opt));
- }
- return values;
- },
-
- optionValue: function(opt) {
- // extend element because hasAttribute may not be native
- return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
- initialize: function($super, element, frequency, callback) {
- $super(callback, frequency);
- this.element = $(element);
- this.lastValue = this.getValue();
- },
-
- execute: function() {
- var value = this.getValue();
- if (Object.isString(this.lastValue) && Object.isString(value) ?
- this.lastValue != value : String(this.lastValue) != String(value)) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
-});
-
-Form.Element.Observer = Class.create(Abstract.TimedObserver, {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.Observer = Class.create(Abstract.TimedObserver, {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = Class.create({
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- Form.getElements(this.element).each(this.registerCallback, this);
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- Event.observe(element, 'click', this.onElementEvent.bind(this));
- break;
- default:
- Event.observe(element, 'change', this.onElementEvent.bind(this));
- break;
- }
- }
- }
-});
-
-Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.EventObserver = Class.create(Abstract.EventObserver, {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-if (!window.Event) var Event = { };
-
-Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
- KEY_HOME: 36,
- KEY_END: 35,
- KEY_PAGEUP: 33,
- KEY_PAGEDOWN: 34,
- KEY_INSERT: 45,
-
- cache: { },
-
- relatedTarget: function(event) {
- var element;
- switch(event.type) {
- case 'mouseover': element = event.fromElement; break;
- case 'mouseout': element = event.toElement; break;
- default: return null;
- }
- return Element.extend(element);
- }
-});
-
-Event.Methods = (function() {
- var isButton;
-
- if (Prototype.Browser.IE) {
- var buttonMap = { 0: 1, 1: 4, 2: 2 };
- isButton = function(event, code) {
- return event.button == buttonMap[code];
- };
-
- } else if (Prototype.Browser.WebKit) {
- isButton = function(event, code) {
- switch (code) {
- case 0: return event.which == 1 && !event.metaKey;
- case 1: return event.which == 1 && event.metaKey;
- default: return false;
- }
- };
-
- } else {
- isButton = function(event, code) {
- return event.which ? (event.which === code + 1) : (event.button === code);
- };
- }
-
- return {
- isLeftClick: function(event) { return isButton(event, 0) },
- isMiddleClick: function(event) { return isButton(event, 1) },
- isRightClick: function(event) { return isButton(event, 2) },
-
- element: function(event) {
- event = Event.extend(event);
-
- var node = event.target,
- type = event.type,
- currentTarget = event.currentTarget;
-
- if (currentTarget && currentTarget.tagName) {
- // Firefox screws up the "click" event when moving between radio buttons
- // via arrow keys. It also screws up the "load" and "error" events on images,
- // reporting the document as the target instead of the original image.
- if (type === 'load' || type === 'error' ||
- (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
- && currentTarget.type === 'radio'))
- node = currentTarget;
- }
- if (node.nodeType == Node.TEXT_NODE) node = node.parentNode;
- return Element.extend(node);
- },
-
- findElement: function(event, expression) {
- var element = Event.element(event);
- if (!expression) return element;
- var elements = [element].concat(element.ancestors());
- return Selector.findElement(elements, expression, 0);
- },
-
- pointer: function(event) {
- var docElement = document.documentElement,
- body = document.body || { scrollLeft: 0, scrollTop: 0 };
- return {
- x: event.pageX || (event.clientX +
- (docElement.scrollLeft || body.scrollLeft) -
- (docElement.clientLeft || 0)),
- y: event.pageY || (event.clientY +
- (docElement.scrollTop || body.scrollTop) -
- (docElement.clientTop || 0))
- };
- },
-
- pointerX: function(event) { return Event.pointer(event).x },
- pointerY: function(event) { return Event.pointer(event).y },
-
- stop: function(event) {
- Event.extend(event);
- event.preventDefault();
- event.stopPropagation();
- event.stopped = true;
- }
- };
-})();
-
-Event.extend = (function() {
- var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
- m[name] = Event.Methods[name].methodize();
- return m;
- });
-
- if (Prototype.Browser.IE) {
- Object.extend(methods, {
- stopPropagation: function() { this.cancelBubble = true },
- preventDefault: function() { this.returnValue = false },
- inspect: function() { return "[object Event]" }
- });
-
- return function(event) {
- if (!event) return false;
- if (event._extendedByPrototype) return event;
-
- event._extendedByPrototype = Prototype.emptyFunction;
- var pointer = Event.pointer(event);
- Object.extend(event, {
- target: event.srcElement,
- relatedTarget: Event.relatedTarget(event),
- pageX: pointer.x,
- pageY: pointer.y
- });
- return Object.extend(event, methods);
- };
-
- } else {
- Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__'];
- Object.extend(Event.prototype, methods);
- return Prototype.K;
- }
-})();
-
-Object.extend(Event, (function() {
- var cache = Event.cache;
-
- function getEventID(element) {
- if (element._prototypeEventID) return element._prototypeEventID[0];
- arguments.callee.id = arguments.callee.id || 1;
- return element._prototypeEventID = [++arguments.callee.id];
- }
-
- function getDOMEventName(eventName) {
- if (eventName && eventName.include(':')) return "dataavailable";
- return eventName;
- }
-
- function getCacheForID(id) {
- return cache[id] = cache[id] || { };
- }
-
- function getWrappersForEventName(id, eventName) {
- var c = getCacheForID(id);
- return c[eventName] = c[eventName] || [];
- }
-
- function createWrapper(element, eventName, handler) {
- var id = getEventID(element);
- var c = getWrappersForEventName(id, eventName);
- if (c.pluck("handler").include(handler)) return false;
-
- var wrapper = function(event) {
- if (!Event || !Event.extend ||
- (event.eventName && event.eventName != eventName))
- return false;
-
- Event.extend(event);
- handler.call(element, event);
- };
-
- wrapper.handler = handler;
- c.push(wrapper);
- return wrapper;
- }
-
- function findWrapper(id, eventName, handler) {
- var c = getWrappersForEventName(id, eventName);
- return c.find(function(wrapper) { return wrapper.handler == handler });
- }
-
- function destroyWrapper(id, eventName, handler) {
- var c = getCacheForID(id);
- if (!c[eventName]) return false;
- c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
- }
-
- function destroyCache() {
- for (var id in cache)
- for (var eventName in cache[id])
- cache[id][eventName] = null;
- }
-
-
- // Internet Explorer needs to remove event handlers on page unload
- // in order to avoid memory leaks.
- if (window.attachEvent) {
- window.attachEvent("onunload", destroyCache);
- }
-
- // Safari has a dummy event handler on page unload so that it won't
- // use its bfcache. Safari <= 3.1 has an issue with restoring the "document"
- // object when page is returned to via the back button using its bfcache.
- if (Prototype.Browser.WebKit) {
- window.addEventListener('unload', Prototype.emptyFunction, false);
- }
-
- return {
- observe: function(element, eventName, handler) {
- element = $(element);
- var name = getDOMEventName(eventName);
-
- var wrapper = createWrapper(element, eventName, handler);
- if (!wrapper) return element;
-
- if (element.addEventListener) {
- element.addEventListener(name, wrapper, false);
- } else {
- element.attachEvent("on" + name, wrapper);
- }
-
- return element;
- },
-
- stopObserving: function(element, eventName, handler) {
- element = $(element);
- var id = getEventID(element), name = getDOMEventName(eventName);
-
- if (!handler && eventName) {
- getWrappersForEventName(id, eventName).each(function(wrapper) {
- element.stopObserving(eventName, wrapper.handler);
- });
- return element;
-
- } else if (!eventName) {
- Object.keys(getCacheForID(id)).each(function(eventName) {
- element.stopObserving(eventName);
- });
- return element;
- }
-
- var wrapper = findWrapper(id, eventName, handler);
- if (!wrapper) return element;
-
- if (element.removeEventListener) {
- element.removeEventListener(name, wrapper, false);
- } else {
- element.detachEvent("on" + name, wrapper);
- }
-
- destroyWrapper(id, eventName, handler);
-
- return element;
- },
-
- fire: function(element, eventName, memo) {
- element = $(element);
- if (element == document && document.createEvent && !element.dispatchEvent)
- element = document.documentElement;
-
- var event;
- if (document.createEvent) {
- event = document.createEvent("HTMLEvents");
- event.initEvent("dataavailable", true, true);
- } else {
- event = document.createEventObject();
- event.eventType = "ondataavailable";
- }
-
- event.eventName = eventName;
- event.memo = memo || { };
-
- if (document.createEvent) {
- element.dispatchEvent(event);
- } else {
- element.fireEvent(event.eventType, event);
- }
-
- return Event.extend(event);
- }
- };
-})());
-
-Object.extend(Event, Event.Methods);
-
-Element.addMethods({
- fire: Event.fire,
- observe: Event.observe,
- stopObserving: Event.stopObserving
-});
-
-Object.extend(document, {
- fire: Element.Methods.fire.methodize(),
- observe: Element.Methods.observe.methodize(),
- stopObserving: Element.Methods.stopObserving.methodize(),
- loaded: false
-});
-
-(function() {
- /* Support for the DOMContentLoaded event is based on work by Dan Webb,
- Matthias Miller, Dean Edwards and John Resig. */
-
- var timer;
-
- function fireContentLoadedEvent() {
- if (document.loaded) return;
- if (timer) window.clearInterval(timer);
- document.fire("dom:loaded");
- document.loaded = true;
- }
-
- if (document.addEventListener) {
- if (Prototype.Browser.WebKit) {
- timer = window.setInterval(function() {
- if (/loaded|complete/.test(document.readyState))
- fireContentLoadedEvent();
- }, 0);
-
- Event.observe(window, "load", fireContentLoadedEvent);
-
- } else {
- document.addEventListener("DOMContentLoaded",
- fireContentLoadedEvent, false);
- }
-
- } else {
- document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
- $("__onDOMContentLoaded").onreadystatechange = function() {
- if (this.readyState == "complete") {
- this.onreadystatechange = null;
- fireContentLoadedEvent();
- }
- };
- }
-})();
-/*------------------------------- DEPRECATED -------------------------------*/
-
-Hash.toQueryString = Object.toQueryString;
-
-var Toggle = { display: Element.toggle };
-
-Element.Methods.childOf = Element.Methods.descendantOf;
-
-var Insertion = {
- Before: function(element, content) {
- return Element.insert(element, {before:content});
- },
-
- Top: function(element, content) {
- return Element.insert(element, {top:content});
- },
-
- Bottom: function(element, content) {
- return Element.insert(element, {bottom:content});
- },
-
- After: function(element, content) {
- return Element.insert(element, {after:content});
- }
-};
-
-var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
-
-// This should be moved to script.aculo.us; notice the deprecated methods
-// further below, that map to the newer Element methods.
-var Position = {
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = Element.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = Element.cumulativeScrollOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = Element.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- // Deprecation layer -- use newer Element methods now (1.5.2).
-
- cumulativeOffset: Element.Methods.cumulativeOffset,
-
- positionedOffset: Element.Methods.positionedOffset,
-
- absolutize: function(element) {
- Position.prepare();
- return Element.absolutize(element);
- },
-
- relativize: function(element) {
- Position.prepare();
- return Element.relativize(element);
- },
-
- realOffset: Element.Methods.cumulativeScrollOffset,
-
- offsetParent: Element.Methods.getOffsetParent,
-
- page: Element.Methods.viewportOffset,
-
- clone: function(source, target, options) {
- options = options || { };
- return Element.clonePosition(target, source, options);
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
- function iter(name) {
- return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
- }
-
- instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
- function(element, className) {
- className = className.toString().strip();
- var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
- return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
- } : function(element, className) {
- className = className.toString().strip();
- var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
- if (!classNames && !className) return elements;
-
- var nodes = $(element).getElementsByTagName('*');
- className = ' ' + className + ' ';
-
- for (var i = 0, child, cn; child = nodes[i]; i++) {
- if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
- (classNames && classNames.all(function(name) {
- return !name.toString().blank() && cn.include(' ' + name + ' ');
- }))))
- elements.push(Element.extend(child));
- }
- return elements;
- };
-
- return function(className, parentElement) {
- return $(parentElement || document.body).getElementsByClassName(className);
- };
-}(Element.Methods);
-
-/*--------------------------------------------------------------------------*/
-
-Element.ClassNames = Class.create();
-Element.ClassNames.prototype = {
- initialize: function(element) {
- this.element = $(element);
- },
-
- _each: function(iterator) {
- this.element.className.split(/\s+/).select(function(name) {
- return name.length > 0;
- })._each(iterator);
- },
-
- set: function(className) {
- this.element.className = className;
- },
-
- add: function(classNameToAdd) {
- if (this.include(classNameToAdd)) return;
- this.set($A(this).concat(classNameToAdd).join(' '));
- },
-
- remove: function(classNameToRemove) {
- if (!this.include(classNameToRemove)) return;
- this.set($A(this).without(classNameToRemove).join(' '));
- },
-
- toString: function() {
- return $A(this).join(' ');
- }
-};
-
-Object.extend(Element.ClassNames.prototype, Enumerable);
-
-/*--------------------------------------------------------------------------*/
-
-Element.addMethods(); \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/scriptaculous/controls.js b/rt/share/html/NoAuth/js/scriptaculous/controls.js
deleted file mode 100644
index 99a6fa05d..000000000
--- a/rt/share/html/NoAuth/js/scriptaculous/controls.js
+++ /dev/null
@@ -1,971 +0,0 @@
-// LOCAL BEST PRACTICAL MODIFICATIONS
-// lines 218 and 224, removing scrollIntoView
-// Leaving these in causes autocomplete lists to flip out and jump
-// the screen around if the length of the returned list is anywhere
-// near the size of the viewport
-//
-// script.aculo.us controls.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008
-
-// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// (c) 2005-2008 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
-// (c) 2005-2008 Jon Tirsen (http://www.tirsen.com)
-// Contributors:
-// Richard Livsey
-// Rahul Bhargava
-// Rob Wills
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-// Autocompleter.Base handles all the autocompletion functionality
-// that's independent of the data source for autocompletion. This
-// includes drawing the autocompletion menu, observing keyboard
-// and mouse events, and similar.
-//
-// Specific autocompleters need to provide, at the very least,
-// a getUpdatedChoices function that will be invoked every time
-// the text inside the monitored textbox changes. This method
-// should get the text for which to provide autocompletion by
-// invoking this.getToken(), NOT by directly accessing
-// this.element.value. This is to allow incremental tokenized
-// autocompletion. Specific auto-completion logic (AJAX, etc)
-// belongs in getUpdatedChoices.
-//
-// Tokenized incremental autocompletion is enabled automatically
-// when an autocompleter is instantiated with the 'tokens' option
-// in the options parameter, e.g.:
-// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
-// will incrementally autocomplete with a comma as the token.
-// Additionally, ',' in the above example can be replaced with
-// a token array, e.g. { tokens: [',', '\n'] } which
-// enables autocompletion on multiple tokens. This is most
-// useful when one of the tokens is \n (a newline), as it
-// allows smart autocompletion after linebreaks.
-
-if(typeof Effect == 'undefined')
- throw("controls.js requires including script.aculo.us' effects.js library");
-
-var Autocompleter = { };
-Autocompleter.Base = Class.create({
- baseInitialize: function(element, update, options) {
- element = $(element);
- this.element = element;
- this.update = $(update);
- this.hasFocus = false;
- this.changed = false;
- this.active = false;
- this.index = 0;
- this.entryCount = 0;
- this.oldElementValue = this.element.value;
-
- if(this.setOptions)
- this.setOptions(options);
- else
- this.options = options || { };
-
- this.options.paramName = this.options.paramName || this.element.name;
- this.options.tokens = this.options.tokens || [];
- this.options.frequency = this.options.frequency || 0.4;
- this.options.minChars = this.options.minChars || 1;
- this.options.onShow = this.options.onShow ||
- function(element, update){
- if(!update.style.position || update.style.position=='absolute') {
- update.style.position = 'absolute';
- Position.clone(element, update, {
- setHeight: false,
- offsetTop: element.offsetHeight
- });
- }
- Effect.Appear(update,{duration:0.15});
- };
- this.options.onHide = this.options.onHide ||
- function(element, update){ new Effect.Fade(update,{duration:0.15}) };
-
- if(typeof(this.options.tokens) == 'string')
- this.options.tokens = new Array(this.options.tokens);
- // Force carriage returns as token delimiters anyway
- if (!this.options.tokens.include('\n'))
- this.options.tokens.push('\n');
-
- this.observer = null;
-
- this.element.setAttribute('autocomplete','off');
-
- Element.hide(this.update);
-
- Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
- Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));
- },
-
- show: function() {
- if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
- if(!this.iefix &&
- (Prototype.Browser.IE) &&
- (Element.getStyle(this.update, 'position')=='absolute')) {
- new Insertion.After(this.update,
- '<iframe id="' + this.update.id + '_iefix" '+
- 'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
- 'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
- this.iefix = $(this.update.id+'_iefix');
- }
- if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
- },
-
- fixIEOverlapping: function() {
- Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
- this.iefix.style.zIndex = 1;
- this.update.style.zIndex = 2;
- Element.show(this.iefix);
- },
-
- hide: function() {
- this.stopIndicator();
- if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
- if(this.iefix) Element.hide(this.iefix);
- },
-
- startIndicator: function() {
- if(this.options.indicator) Element.show(this.options.indicator);
- },
-
- stopIndicator: function() {
- if(this.options.indicator) Element.hide(this.options.indicator);
- },
-
- onKeyPress: function(event) {
- if(this.active)
- switch(event.keyCode) {
- case Event.KEY_TAB:
- case Event.KEY_RETURN:
- this.selectEntry();
- Event.stop(event);
- case Event.KEY_ESC:
- this.hide();
- this.active = false;
- Event.stop(event);
- return;
- case Event.KEY_LEFT:
- case Event.KEY_RIGHT:
- return;
- case Event.KEY_UP:
- this.markPrevious();
- this.render();
- Event.stop(event);
- return;
- case Event.KEY_DOWN:
- this.markNext();
- this.render();
- Event.stop(event);
- return;
- }
- else
- if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
- (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
-
- this.changed = true;
- this.hasFocus = true;
-
- if(this.observer) clearTimeout(this.observer);
- this.observer =
- setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
- },
-
- activate: function() {
- this.changed = false;
- this.hasFocus = true;
- this.getUpdatedChoices();
- },
-
- onHover: function(event) {
- var element = Event.findElement(event, 'LI');
- if(this.index != element.autocompleteIndex)
- {
- this.index = element.autocompleteIndex;
- this.render();
- }
- Event.stop(event);
- },
-
- onClick: function(event) {
- var element = Event.findElement(event, 'LI');
- this.index = element.autocompleteIndex;
- this.selectEntry();
- this.hide();
- },
-
- onBlur: function(event) {
- // needed to make click events working
- setTimeout(this.hide.bind(this), 250);
- this.hasFocus = false;
- this.active = false;
- },
-
- render: function() {
- if(this.entryCount > 0) {
- for (var i = 0; i < this.entryCount; i++)
- this.index==i ?
- Element.addClassName(this.getEntry(i),"selected") :
- Element.removeClassName(this.getEntry(i),"selected");
- if(this.hasFocus) {
- this.show();
- this.active = true;
- }
- } else {
- this.active = false;
- this.hide();
- }
- },
-
- markPrevious: function() {
- if(this.index > 0) this.index--;
- else this.index = this.entryCount-1;
- //this.getEntry(this.index).scrollIntoView(true);
- },
-
- markNext: function() {
- if(this.index < this.entryCount-1) this.index++;
- else this.index = 0;
- //this.getEntry(this.index).scrollIntoView(false);
- },
-
- getEntry: function(index) {
- return this.update.firstChild.childNodes[index];
- },
-
- getCurrentEntry: function() {
- return this.getEntry(this.index);
- },
-
- selectEntry: function() {
- this.active = false;
- this.updateElement(this.getCurrentEntry());
- },
-
- updateElement: function(selectedElement) {
- if (this.options.updateElement) {
- this.options.updateElement(selectedElement);
- return;
- }
- var value = '';
- if (this.options.select) {
- var nodes = $(selectedElement).select('.' + this.options.select) || [];
- if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
- } else
- value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
-
- var bounds = this.getTokenBounds();
- if (bounds[0] != -1) {
- var newValue = this.element.value.substr(0, bounds[0]);
- var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
- if (whitespace)
- newValue += whitespace[0];
- this.element.value = newValue + value + this.element.value.substr(bounds[1]);
- } else {
- this.element.value = value;
- }
- this.oldElementValue = this.element.value;
- this.element.focus();
-
- if (this.options.afterUpdateElement)
- this.options.afterUpdateElement(this.element, selectedElement);
- },
-
- updateChoices: function(choices) {
- if(!this.changed && this.hasFocus) {
- this.update.innerHTML = choices;
- Element.cleanWhitespace(this.update);
- Element.cleanWhitespace(this.update.down());
-
- if(this.update.firstChild && this.update.down().childNodes) {
- this.entryCount =
- this.update.down().childNodes.length;
- for (var i = 0; i < this.entryCount; i++) {
- var entry = this.getEntry(i);
- entry.autocompleteIndex = i;
- this.addObservers(entry);
- }
- } else {
- this.entryCount = 0;
- }
-
- this.stopIndicator();
- this.index = 0;
-
- if(this.entryCount==1 && this.options.autoSelect) {
- this.selectEntry();
- this.hide();
- } else {
- this.render();
- }
- }
- },
-
- addObservers: function(element) {
- Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
- Event.observe(element, "click", this.onClick.bindAsEventListener(this));
- },
-
- onObserverEvent: function() {
- this.changed = false;
- this.tokenBounds = null;
- if(this.getToken().length>=this.options.minChars) {
- this.getUpdatedChoices();
- } else {
- this.active = false;
- this.hide();
- }
- this.oldElementValue = this.element.value;
- },
-
- getToken: function() {
- var bounds = this.getTokenBounds();
- return this.element.value.substring(bounds[0], bounds[1]).strip();
- },
-
- getTokenBounds: function() {
- if (null != this.tokenBounds) return this.tokenBounds;
- var value = this.element.value;
- if (value.strip().empty()) return [-1, 0];
- var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);
- var offset = (diff == this.oldElementValue.length ? 1 : 0);
- var prevTokenPos = -1, nextTokenPos = value.length;
- var tp;
- for (var index = 0, l = this.options.tokens.length; index < l; ++index) {
- tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);
- if (tp > prevTokenPos) prevTokenPos = tp;
- tp = value.indexOf(this.options.tokens[index], diff + offset);
- if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
- }
- return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);
- }
-});
-
-Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {
- var boundary = Math.min(newS.length, oldS.length);
- for (var index = 0; index < boundary; ++index)
- if (newS[index] != oldS[index])
- return index;
- return boundary;
-};
-
-Ajax.Autocompleter = Class.create(Autocompleter.Base, {
- initialize: function(element, update, url, options) {
- this.baseInitialize(element, update, options);
- this.options.asynchronous = true;
- this.options.onComplete = this.onComplete.bind(this);
- this.options.defaultParams = this.options.parameters || null;
- this.url = url;
- },
-
- getUpdatedChoices: function() {
- this.startIndicator();
-
- var entry = encodeURIComponent(this.options.paramName) + '=' +
- encodeURIComponent(this.getToken());
-
- this.options.parameters = this.options.callback ?
- this.options.callback(this.element, entry) : entry;
-
- if(this.options.defaultParams)
- this.options.parameters += '&' + this.options.defaultParams;
-
- new Ajax.Request(this.url, this.options);
- },
-
- onComplete: function(request) {
- this.updateChoices(request.responseText);
- }
-});
-
-// The local array autocompleter. Used when you'd prefer to
-// inject an array of autocompletion options into the page, rather
-// than sending out Ajax queries, which can be quite slow sometimes.
-//
-// The constructor takes four parameters. The first two are, as usual,
-// the id of the monitored textbox, and id of the autocompletion menu.
-// The third is the array you want to autocomplete from, and the fourth
-// is the options block.
-//
-// Extra local autocompletion options:
-// - choices - How many autocompletion choices to offer
-//
-// - partialSearch - If false, the autocompleter will match entered
-// text only at the beginning of strings in the
-// autocomplete array. Defaults to true, which will
-// match text at the beginning of any *word* in the
-// strings in the autocomplete array. If you want to
-// search anywhere in the string, additionally set
-// the option fullSearch to true (default: off).
-//
-// - fullSsearch - Search anywhere in autocomplete array strings.
-//
-// - partialChars - How many characters to enter before triggering
-// a partial match (unlike minChars, which defines
-// how many characters are required to do any match
-// at all). Defaults to 2.
-//
-// - ignoreCase - Whether to ignore case when autocompleting.
-// Defaults to true.
-//
-// It's possible to pass in a custom function as the 'selector'
-// option, if you prefer to write your own autocompletion logic.
-// In that case, the other options above will not apply unless
-// you support them.
-
-Autocompleter.Local = Class.create(Autocompleter.Base, {
- initialize: function(element, update, array, options) {
- this.baseInitialize(element, update, options);
- this.options.array = array;
- },
-
- getUpdatedChoices: function() {
- this.updateChoices(this.options.selector(this));
- },
-
- setOptions: function(options) {
- this.options = Object.extend({
- choices: 10,
- partialSearch: true,
- partialChars: 2,
- ignoreCase: true,
- fullSearch: false,
- selector: function(instance) {
- var ret = []; // Beginning matches
- var partial = []; // Inside matches
- var entry = instance.getToken();
- var count = 0;
-
- for (var i = 0; i < instance.options.array.length &&
- ret.length < instance.options.choices ; i++) {
-
- var elem = instance.options.array[i];
- var foundPos = instance.options.ignoreCase ?
- elem.toLowerCase().indexOf(entry.toLowerCase()) :
- elem.indexOf(entry);
-
- while (foundPos != -1) {
- if (foundPos == 0 && elem.length != entry.length) {
- ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
- elem.substr(entry.length) + "</li>");
- break;
- } else if (entry.length >= instance.options.partialChars &&
- instance.options.partialSearch && foundPos != -1) {
- if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
- partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
- elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
- foundPos + entry.length) + "</li>");
- break;
- }
- }
-
- foundPos = instance.options.ignoreCase ?
- elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
- elem.indexOf(entry, foundPos + 1);
-
- }
- }
- if (partial.length)
- ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));
- return "<ul>" + ret.join('') + "</ul>";
- }
- }, options || { });
- }
-});
-
-// AJAX in-place editor and collection editor
-// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).
-
-// Use this if you notice weird scrolling problems on some browsers,
-// the DOM might be a bit confused when this gets called so do this
-// waits 1 ms (with setTimeout) until it does the activation
-Field.scrollFreeActivate = function(field) {
- setTimeout(function() {
- Field.activate(field);
- }, 1);
-};
-
-Ajax.InPlaceEditor = Class.create({
- initialize: function(element, url, options) {
- this.url = url;
- this.element = element = $(element);
- this.prepareOptions();
- this._controls = { };
- arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
- Object.extend(this.options, options || { });
- if (!this.options.formId && this.element.id) {
- this.options.formId = this.element.id + '-inplaceeditor';
- if ($(this.options.formId))
- this.options.formId = '';
- }
- if (this.options.externalControl)
- this.options.externalControl = $(this.options.externalControl);
- if (!this.options.externalControl)
- this.options.externalControlOnly = false;
- this._originalBackground = this.element.getStyle('background-color') || 'transparent';
- this.element.title = this.options.clickToEditText;
- this._boundCancelHandler = this.handleFormCancellation.bind(this);
- this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
- this._boundFailureHandler = this.handleAJAXFailure.bind(this);
- this._boundSubmitHandler = this.handleFormSubmission.bind(this);
- this._boundWrapperHandler = this.wrapUp.bind(this);
- this.registerListeners();
- },
- checkForEscapeOrReturn: function(e) {
- if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
- if (Event.KEY_ESC == e.keyCode)
- this.handleFormCancellation(e);
- else if (Event.KEY_RETURN == e.keyCode)
- this.handleFormSubmission(e);
- },
- createControl: function(mode, handler, extraClasses) {
- var control = this.options[mode + 'Control'];
- var text = this.options[mode + 'Text'];
- if ('button' == control) {
- var btn = document.createElement('input');
- btn.type = 'submit';
- btn.value = text;
- btn.className = 'editor_' + mode + '_button';
- if ('cancel' == mode)
- btn.onclick = this._boundCancelHandler;
- this._form.appendChild(btn);
- this._controls[mode] = btn;
- } else if ('link' == control) {
- var link = document.createElement('a');
- link.href = '#';
- link.appendChild(document.createTextNode(text));
- link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
- link.className = 'editor_' + mode + '_link';
- if (extraClasses)
- link.className += ' ' + extraClasses;
- this._form.appendChild(link);
- this._controls[mode] = link;
- }
- },
- createEditField: function() {
- var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
- var fld;
- if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
- fld = document.createElement('input');
- fld.type = 'text';
- var size = this.options.size || this.options.cols || 0;
- if (0 < size) fld.size = size;
- } else {
- fld = document.createElement('textarea');
- fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
- fld.cols = this.options.cols || 40;
- }
- fld.name = this.options.paramName;
- fld.value = text; // No HTML breaks conversion anymore
- fld.className = 'editor_field';
- if (this.options.submitOnBlur)
- fld.onblur = this._boundSubmitHandler;
- this._controls.editor = fld;
- if (this.options.loadTextURL)
- this.loadExternalText();
- this._form.appendChild(this._controls.editor);
- },
- createForm: function() {
- var ipe = this;
- function addText(mode, condition) {
- var text = ipe.options['text' + mode + 'Controls'];
- if (!text || condition === false) return;
- ipe._form.appendChild(document.createTextNode(text));
- };
- this._form = $(document.createElement('form'));
- this._form.id = this.options.formId;
- this._form.addClassName(this.options.formClassName);
- this._form.onsubmit = this._boundSubmitHandler;
- this.createEditField();
- if ('textarea' == this._controls.editor.tagName.toLowerCase())
- this._form.appendChild(document.createElement('br'));
- if (this.options.onFormCustomization)
- this.options.onFormCustomization(this, this._form);
- addText('Before', this.options.okControl || this.options.cancelControl);
- this.createControl('ok', this._boundSubmitHandler);
- addText('Between', this.options.okControl && this.options.cancelControl);
- this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');
- addText('After', this.options.okControl || this.options.cancelControl);
- },
- destroy: function() {
- if (this._oldInnerHTML)
- this.element.innerHTML = this._oldInnerHTML;
- this.leaveEditMode();
- this.unregisterListeners();
- },
- enterEditMode: function(e) {
- if (this._saving || this._editing) return;
- this._editing = true;
- this.triggerCallback('onEnterEditMode');
- if (this.options.externalControl)
- this.options.externalControl.hide();
- this.element.hide();
- this.createForm();
- this.element.parentNode.insertBefore(this._form, this.element);
- if (!this.options.loadTextURL)
- this.postProcessEditField();
- if (e) Event.stop(e);
- },
- enterHover: function(e) {
- if (this.options.hoverClassName)
- this.element.addClassName(this.options.hoverClassName);
- if (this._saving) return;
- this.triggerCallback('onEnterHover');
- },
- getText: function() {
- return this.element.innerHTML.unescapeHTML();
- },
- handleAJAXFailure: function(transport) {
- this.triggerCallback('onFailure', transport);
- if (this._oldInnerHTML) {
- this.element.innerHTML = this._oldInnerHTML;
- this._oldInnerHTML = null;
- }
- },
- handleFormCancellation: function(e) {
- this.wrapUp();
- if (e) Event.stop(e);
- },
- handleFormSubmission: function(e) {
- var form = this._form;
- var value = $F(this._controls.editor);
- this.prepareSubmission();
- var params = this.options.callback(form, value) || '';
- if (Object.isString(params))
- params = params.toQueryParams();
- params.editorId = this.element.id;
- if (this.options.htmlResponse) {
- var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);
- Object.extend(options, {
- parameters: params,
- onComplete: this._boundWrapperHandler,
- onFailure: this._boundFailureHandler
- });
- new Ajax.Updater({ success: this.element }, this.url, options);
- } else {
- var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
- Object.extend(options, {
- parameters: params,
- onComplete: this._boundWrapperHandler,
- onFailure: this._boundFailureHandler
- });
- new Ajax.Request(this.url, options);
- }
- if (e) Event.stop(e);
- },
- leaveEditMode: function() {
- this.element.removeClassName(this.options.savingClassName);
- this.removeForm();
- this.leaveHover();
- this.element.style.backgroundColor = this._originalBackground;
- this.element.show();
- if (this.options.externalControl)
- this.options.externalControl.show();
- this._saving = false;
- this._editing = false;
- this._oldInnerHTML = null;
- this.triggerCallback('onLeaveEditMode');
- },
- leaveHover: function(e) {
- if (this.options.hoverClassName)
- this.element.removeClassName(this.options.hoverClassName);
- if (this._saving) return;
- this.triggerCallback('onLeaveHover');
- },
- loadExternalText: function() {
- this._form.addClassName(this.options.loadingClassName);
- this._controls.editor.disabled = true;
- var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
- Object.extend(options, {
- parameters: 'editorId=' + encodeURIComponent(this.element.id),
- onComplete: Prototype.emptyFunction,
- onSuccess: function(transport) {
- this._form.removeClassName(this.options.loadingClassName);
- var text = transport.responseText;
- if (this.options.stripLoadedTextTags)
- text = text.stripTags();
- this._controls.editor.value = text;
- this._controls.editor.disabled = false;
- this.postProcessEditField();
- }.bind(this),
- onFailure: this._boundFailureHandler
- });
- new Ajax.Request(this.options.loadTextURL, options);
- },
- postProcessEditField: function() {
- var fpc = this.options.fieldPostCreation;
- if (fpc)
- $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
- },
- prepareOptions: function() {
- this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
- Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);
- [this._extraDefaultOptions].flatten().compact().each(function(defs) {
- Object.extend(this.options, defs);
- }.bind(this));
- },
- prepareSubmission: function() {
- this._saving = true;
- this.removeForm();
- this.leaveHover();
- this.showSaving();
- },
- registerListeners: function() {
- this._listeners = { };
- var listener;
- $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
- listener = this[pair.value].bind(this);
- this._listeners[pair.key] = listener;
- if (!this.options.externalControlOnly)
- this.element.observe(pair.key, listener);
- if (this.options.externalControl)
- this.options.externalControl.observe(pair.key, listener);
- }.bind(this));
- },
- removeForm: function() {
- if (!this._form) return;
- this._form.remove();
- this._form = null;
- this._controls = { };
- },
- showSaving: function() {
- this._oldInnerHTML = this.element.innerHTML;
- this.element.innerHTML = this.options.savingText;
- this.element.addClassName(this.options.savingClassName);
- this.element.style.backgroundColor = this._originalBackground;
- this.element.show();
- },
- triggerCallback: function(cbName, arg) {
- if ('function' == typeof this.options[cbName]) {
- this.options[cbName](this, arg);
- }
- },
- unregisterListeners: function() {
- $H(this._listeners).each(function(pair) {
- if (!this.options.externalControlOnly)
- this.element.stopObserving(pair.key, pair.value);
- if (this.options.externalControl)
- this.options.externalControl.stopObserving(pair.key, pair.value);
- }.bind(this));
- },
- wrapUp: function(transport) {
- this.leaveEditMode();
- // Can't use triggerCallback due to backward compatibility: requires
- // binding + direct element
- this._boundComplete(transport, this.element);
- }
-});
-
-Object.extend(Ajax.InPlaceEditor.prototype, {
- dispose: Ajax.InPlaceEditor.prototype.destroy
-});
-
-Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
- initialize: function($super, element, url, options) {
- this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
- $super(element, url, options);
- },
-
- createEditField: function() {
- var list = document.createElement('select');
- list.name = this.options.paramName;
- list.size = 1;
- this._controls.editor = list;
- this._collection = this.options.collection || [];
- if (this.options.loadCollectionURL)
- this.loadCollection();
- else
- this.checkForExternalText();
- this._form.appendChild(this._controls.editor);
- },
-
- loadCollection: function() {
- this._form.addClassName(this.options.loadingClassName);
- this.showLoadingText(this.options.loadingCollectionText);
- var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
- Object.extend(options, {
- parameters: 'editorId=' + encodeURIComponent(this.element.id),
- onComplete: Prototype.emptyFunction,
- onSuccess: function(transport) {
- var js = transport.responseText.strip();
- if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
- throw('Server returned an invalid collection representation.');
- this._collection = eval(js);
- this.checkForExternalText();
- }.bind(this),
- onFailure: this.onFailure
- });
- new Ajax.Request(this.options.loadCollectionURL, options);
- },
-
- showLoadingText: function(text) {
- this._controls.editor.disabled = true;
- var tempOption = this._controls.editor.firstChild;
- if (!tempOption) {
- tempOption = document.createElement('option');
- tempOption.value = '';
- this._controls.editor.appendChild(tempOption);
- tempOption.selected = true;
- }
- tempOption.update((text || '').stripScripts().stripTags());
- },
-
- checkForExternalText: function() {
- this._text = this.getText();
- if (this.options.loadTextURL)
- this.loadExternalText();
- else
- this.buildOptionList();
- },
-
- loadExternalText: function() {
- this.showLoadingText(this.options.loadingText);
- var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
- Object.extend(options, {
- parameters: 'editorId=' + encodeURIComponent(this.element.id),
- onComplete: Prototype.emptyFunction,
- onSuccess: function(transport) {
- this._text = transport.responseText.strip();
- this.buildOptionList();
- }.bind(this),
- onFailure: this.onFailure
- });
- new Ajax.Request(this.options.loadTextURL, options);
- },
-
- buildOptionList: function() {
- this._form.removeClassName(this.options.loadingClassName);
- this._collection = this._collection.map(function(entry) {
- return 2 === entry.length ? entry : [entry, entry].flatten();
- });
- var marker = ('value' in this.options) ? this.options.value : this._text;
- var textFound = this._collection.any(function(entry) {
- return entry[0] == marker;
- }.bind(this));
- this._controls.editor.update('');
- var option;
- this._collection.each(function(entry, index) {
- option = document.createElement('option');
- option.value = entry[0];
- option.selected = textFound ? entry[0] == marker : 0 == index;
- option.appendChild(document.createTextNode(entry[1]));
- this._controls.editor.appendChild(option);
- }.bind(this));
- this._controls.editor.disabled = false;
- Field.scrollFreeActivate(this._controls.editor);
- }
-});
-
-//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
-//**** This only exists for a while, in order to let ****
-//**** users adapt to the new API. Read up on the new ****
-//**** API and convert your code to it ASAP! ****
-
-Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
- if (!options) return;
- function fallback(name, expr) {
- if (name in options || expr === undefined) return;
- options[name] = expr;
- };
- fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
- options.cancelLink == options.cancelButton == false ? false : undefined)));
- fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :
- options.okLink == options.okButton == false ? false : undefined)));
- fallback('highlightColor', options.highlightcolor);
- fallback('highlightEndColor', options.highlightendcolor);
-};
-
-Object.extend(Ajax.InPlaceEditor, {
- DefaultOptions: {
- ajaxOptions: { },
- autoRows: 3, // Use when multi-line w/ rows == 1
- cancelControl: 'link', // 'link'|'button'|false
- cancelText: 'cancel',
- clickToEditText: 'Click to edit',
- externalControl: null, // id|elt
- externalControlOnly: false,
- fieldPostCreation: 'activate', // 'activate'|'focus'|false
- formClassName: 'inplaceeditor-form',
- formId: null, // id|elt
- highlightColor: '#ffff99',
- highlightEndColor: '#ffffff',
- hoverClassName: '',
- htmlResponse: true,
- loadingClassName: 'inplaceeditor-loading',
- loadingText: 'Loading...',
- okControl: 'button', // 'link'|'button'|false
- okText: 'ok',
- paramName: 'value',
- rows: 1, // If 1 and multi-line, uses autoRows
- savingClassName: 'inplaceeditor-saving',
- savingText: 'Saving...',
- size: 0,
- stripLoadedTextTags: false,
- submitOnBlur: false,
- textAfterControls: '',
- textBeforeControls: '',
- textBetweenControls: ''
- },
- DefaultCallbacks: {
- callback: function(form) {
- return Form.serialize(form);
- },
- onComplete: function(transport, element) {
- // For backward compatibility, this one is bound to the IPE, and passes
- // the element directly. It was too often customized, so we don't break it.
- new Effect.Highlight(element, {
- startcolor: this.options.highlightColor, keepBackgroundImage: true });
- },
- onEnterEditMode: null,
- onEnterHover: function(ipe) {
- ipe.element.style.backgroundColor = ipe.options.highlightColor;
- if (ipe._effect)
- ipe._effect.cancel();
- },
- onFailure: function(transport, ipe) {
- alert('Error communication with the server: ' + transport.responseText.stripTags());
- },
- onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.
- onLeaveEditMode: null,
- onLeaveHover: function(ipe) {
- ipe._effect = new Effect.Highlight(ipe.element, {
- startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,
- restorecolor: ipe._originalBackground, keepBackgroundImage: true
- });
- }
- },
- Listeners: {
- click: 'enterEditMode',
- keydown: 'checkForEscapeOrReturn',
- mouseover: 'enterHover',
- mouseout: 'leaveHover'
- }
-});
-
-Ajax.InPlaceCollectionEditor.DefaultOptions = {
- loadingCollectionText: 'Loading options...'
-};
-
-// Delayed observer, like Form.Element.Observer,
-// but waits for delay after last key input
-// Ideal for live-search fields
-
-Form.Element.DelayedObserver = Class.create({
- initialize: function(element, delay, callback) {
- this.delay = delay || 0.5;
- this.element = $(element);
- this.callback = callback;
- this.timer = null;
- this.lastValue = $F(this.element);
- Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
- },
- delayedListener: function(event) {
- if(this.lastValue == $F(this.element)) return;
- if(this.timer) clearTimeout(this.timer);
- this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
- this.lastValue = $F(this.element);
- },
- onTimerEvent: function() {
- this.timer = null;
- this.callback(this.element, $F(this.element));
- }
-});
diff --git a/rt/share/html/NoAuth/js/scriptaculous/effects.js b/rt/share/html/NoAuth/js/scriptaculous/effects.js
deleted file mode 100644
index f31a81a00..000000000
--- a/rt/share/html/NoAuth/js/scriptaculous/effects.js
+++ /dev/null
@@ -1,1130 +0,0 @@
-// script.aculo.us effects.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008
-
-// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-// Contributors:
-// Justin Palmer (http://encytemedia.com/)
-// Mark Pilgrim (http://diveintomark.org/)
-// Martin Bialasinki
-//
-// script.aculo.us is freely distributable under the terms of an MIT-style license.
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-// converts rgb() and #xxx to #xxxxxx format,
-// returns self (or first argument) if not convertable
-String.prototype.parseColor = function() {
- var color = '#';
- if (this.slice(0,4) == 'rgb(') {
- var cols = this.slice(4,this.length-1).split(',');
- var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
- } else {
- if (this.slice(0,1) == '#') {
- if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
- if (this.length==7) color = this.toLowerCase();
- }
- }
- return (color.length==7 ? color : (arguments[0] || this));
-};
-
-/*--------------------------------------------------------------------------*/
-
-Element.collectTextNodes = function(element) {
- return $A($(element).childNodes).collect( function(node) {
- return (node.nodeType==3 ? node.nodeValue :
- (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
- }).flatten().join('');
-};
-
-Element.collectTextNodesIgnoreClass = function(element, className) {
- return $A($(element).childNodes).collect( function(node) {
- return (node.nodeType==3 ? node.nodeValue :
- ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
- Element.collectTextNodesIgnoreClass(node, className) : ''));
- }).flatten().join('');
-};
-
-Element.setContentZoom = function(element, percent) {
- element = $(element);
- element.setStyle({fontSize: (percent/100) + 'em'});
- if (Prototype.Browser.WebKit) window.scrollBy(0,0);
- return element;
-};
-
-Element.getInlineOpacity = function(element){
- return $(element).style.opacity || '';
-};
-
-Element.forceRerendering = function(element) {
- try {
- element = $(element);
- var n = document.createTextNode(' ');
- element.appendChild(n);
- element.removeChild(n);
- } catch(e) { }
-};
-
-/*--------------------------------------------------------------------------*/
-
-var Effect = {
- _elementDoesNotExistError: {
- name: 'ElementDoesNotExistError',
- message: 'The specified DOM element does not exist, but is required for this effect to operate'
- },
- Transitions: {
- linear: Prototype.K,
- sinoidal: function(pos) {
- return (-Math.cos(pos*Math.PI)/2) + .5;
- },
- reverse: function(pos) {
- return 1-pos;
- },
- flicker: function(pos) {
- var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;
- return pos > 1 ? 1 : pos;
- },
- wobble: function(pos) {
- return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;
- },
- pulse: function(pos, pulses) {
- return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;
- },
- spring: function(pos) {
- return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
- },
- none: function(pos) {
- return 0;
- },
- full: function(pos) {
- return 1;
- }
- },
- DefaultOptions: {
- duration: 1.0, // seconds
- fps: 100, // 100= assume 66fps max.
- sync: false, // true for combining
- from: 0.0,
- to: 1.0,
- delay: 0.0,
- queue: 'parallel'
- },
- tagifyText: function(element) {
- var tagifyStyle = 'position:relative';
- if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
-
- element = $(element);
- $A(element.childNodes).each( function(child) {
- if (child.nodeType==3) {
- child.nodeValue.toArray().each( function(character) {
- element.insertBefore(
- new Element('span', {style: tagifyStyle}).update(
- character == ' ' ? String.fromCharCode(160) : character),
- child);
- });
- Element.remove(child);
- }
- });
- },
- multiple: function(element, effect) {
- var elements;
- if (((typeof element == 'object') ||
- Object.isFunction(element)) &&
- (element.length))
- elements = element;
- else
- elements = $(element).childNodes;
-
- var options = Object.extend({
- speed: 0.1,
- delay: 0.0
- }, arguments[2] || { });
- var masterDelay = options.delay;
-
- $A(elements).each( function(element, index) {
- new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
- });
- },
- PAIRS: {
- 'slide': ['SlideDown','SlideUp'],
- 'blind': ['BlindDown','BlindUp'],
- 'appear': ['Appear','Fade']
- },
- toggle: function(element, effect) {
- element = $(element);
- effect = (effect || 'appear').toLowerCase();
- var options = Object.extend({
- queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
- }, arguments[2] || { });
- Effect[element.visible() ?
- Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
- }
-};
-
-Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
-
-/* ------------- core effects ------------- */
-
-Effect.ScopedQueue = Class.create(Enumerable, {
- initialize: function() {
- this.effects = [];
- this.interval = null;
- },
- _each: function(iterator) {
- this.effects._each(iterator);
- },
- add: function(effect) {
- var timestamp = new Date().getTime();
-
- var position = Object.isString(effect.options.queue) ?
- effect.options.queue : effect.options.queue.position;
-
- switch(position) {
- case 'front':
- // move unstarted effects after this effect
- this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
- e.startOn += effect.finishOn;
- e.finishOn += effect.finishOn;
- });
- break;
- case 'with-last':
- timestamp = this.effects.pluck('startOn').max() || timestamp;
- break;
- case 'end':
- // start effect after last queued effect has finished
- timestamp = this.effects.pluck('finishOn').max() || timestamp;
- break;
- }
-
- effect.startOn += timestamp;
- effect.finishOn += timestamp;
-
- if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
- this.effects.push(effect);
-
- if (!this.interval)
- this.interval = setInterval(this.loop.bind(this), 15);
- },
- remove: function(effect) {
- this.effects = this.effects.reject(function(e) { return e==effect });
- if (this.effects.length == 0) {
- clearInterval(this.interval);
- this.interval = null;
- }
- },
- loop: function() {
- var timePos = new Date().getTime();
- for(var i=0, len=this.effects.length;i<len;i++)
- this.effects[i] && this.effects[i].loop(timePos);
- }
-});
-
-Effect.Queues = {
- instances: $H(),
- get: function(queueName) {
- if (!Object.isString(queueName)) return queueName;
-
- return this.instances.get(queueName) ||
- this.instances.set(queueName, new Effect.ScopedQueue());
- }
-};
-Effect.Queue = Effect.Queues.get('global');
-
-Effect.Base = Class.create({
- position: null,
- start: function(options) {
- function codeForEvent(options,eventName){
- return (
- (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') +
- (options[eventName] ? 'this.options.'+eventName+'(this);' : '')
- );
- }
- if (options && options.transition === false) options.transition = Effect.Transitions.linear;
- this.options = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });
- this.currentFrame = 0;
- this.state = 'idle';
- this.startOn = this.options.delay*1000;
- this.finishOn = this.startOn+(this.options.duration*1000);
- this.fromToDelta = this.options.to-this.options.from;
- this.totalTime = this.finishOn-this.startOn;
- this.totalFrames = this.options.fps*this.options.duration;
-
- this.render = (function() {
- function dispatch(effect, eventName) {
- if (effect.options[eventName + 'Internal'])
- effect.options[eventName + 'Internal'](effect);
- if (effect.options[eventName])
- effect.options[eventName](effect);
- }
-
- return function(pos) {
- if (this.state === "idle") {
- this.state = "running";
- dispatch(this, 'beforeSetup');
- if (this.setup) this.setup();
- dispatch(this, 'afterSetup');
- }
- if (this.state === "running") {
- pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;
- this.position = pos;
- dispatch(this, 'beforeUpdate');
- if (this.update) this.update(pos);
- dispatch(this, 'afterUpdate');
- }
- };
- })();
-
- this.event('beforeStart');
- if (!this.options.sync)
- Effect.Queues.get(Object.isString(this.options.queue) ?
- 'global' : this.options.queue.scope).add(this);
- },
- loop: function(timePos) {
- if (timePos >= this.startOn) {
- if (timePos >= this.finishOn) {
- this.render(1.0);
- this.cancel();
- this.event('beforeFinish');
- if (this.finish) this.finish();
- this.event('afterFinish');
- return;
- }
- var pos = (timePos - this.startOn) / this.totalTime,
- frame = (pos * this.totalFrames).round();
- if (frame > this.currentFrame) {
- this.render(pos);
- this.currentFrame = frame;
- }
- }
- },
- cancel: function() {
- if (!this.options.sync)
- Effect.Queues.get(Object.isString(this.options.queue) ?
- 'global' : this.options.queue.scope).remove(this);
- this.state = 'finished';
- },
- event: function(eventName) {
- if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
- if (this.options[eventName]) this.options[eventName](this);
- },
- inspect: function() {
- var data = $H();
- for(property in this)
- if (!Object.isFunction(this[property])) data.set(property, this[property]);
- return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
- }
-});
-
-Effect.Parallel = Class.create(Effect.Base, {
- initialize: function(effects) {
- this.effects = effects || [];
- this.start(arguments[1]);
- },
- update: function(position) {
- this.effects.invoke('render', position);
- },
- finish: function(position) {
- this.effects.each( function(effect) {
- effect.render(1.0);
- effect.cancel();
- effect.event('beforeFinish');
- if (effect.finish) effect.finish(position);
- effect.event('afterFinish');
- });
- }
-});
-
-Effect.Tween = Class.create(Effect.Base, {
- initialize: function(object, from, to) {
- object = Object.isString(object) ? $(object) : object;
- var args = $A(arguments), method = args.last(),
- options = args.length == 5 ? args[3] : null;
- this.method = Object.isFunction(method) ? method.bind(object) :
- Object.isFunction(object[method]) ? object[method].bind(object) :
- function(value) { object[method] = value };
- this.start(Object.extend({ from: from, to: to }, options || { }));
- },
- update: function(position) {
- this.method(position);
- }
-});
-
-Effect.Event = Class.create(Effect.Base, {
- initialize: function() {
- this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
- },
- update: Prototype.emptyFunction
-});
-
-Effect.Opacity = Class.create(Effect.Base, {
- initialize: function(element) {
- this.element = $(element);
- if (!this.element) throw(Effect._elementDoesNotExistError);
- // make this work on IE on elements without 'layout'
- if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
- this.element.setStyle({zoom: 1});
- var options = Object.extend({
- from: this.element.getOpacity() || 0.0,
- to: 1.0
- }, arguments[1] || { });
- this.start(options);
- },
- update: function(position) {
- this.element.setOpacity(position);
- }
-});
-
-Effect.Move = Class.create(Effect.Base, {
- initialize: function(element) {
- this.element = $(element);
- if (!this.element) throw(Effect._elementDoesNotExistError);
- var options = Object.extend({
- x: 0,
- y: 0,
- mode: 'relative'
- }, arguments[1] || { });
- this.start(options);
- },
- setup: function() {
- this.element.makePositioned();
- this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
- this.originalTop = parseFloat(this.element.getStyle('top') || '0');
- if (this.options.mode == 'absolute') {
- this.options.x = this.options.x - this.originalLeft;
- this.options.y = this.options.y - this.originalTop;
- }
- },
- update: function(position) {
- this.element.setStyle({
- left: (this.options.x * position + this.originalLeft).round() + 'px',
- top: (this.options.y * position + this.originalTop).round() + 'px'
- });
- }
-});
-
-// for backwards compatibility
-Effect.MoveBy = function(element, toTop, toLeft) {
- return new Effect.Move(element,
- Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
-};
-
-Effect.Scale = Class.create(Effect.Base, {
- initialize: function(element, percent) {
- this.element = $(element);
- if (!this.element) throw(Effect._elementDoesNotExistError);
- var options = Object.extend({
- scaleX: true,
- scaleY: true,
- scaleContent: true,
- scaleFromCenter: false,
- scaleMode: 'box', // 'box' or 'contents' or { } with provided values
- scaleFrom: 100.0,
- scaleTo: percent
- }, arguments[2] || { });
- this.start(options);
- },
- setup: function() {
- this.restoreAfterFinish = this.options.restoreAfterFinish || false;
- this.elementPositioning = this.element.getStyle('position');
-
- this.originalStyle = { };
- ['top','left','width','height','fontSize'].each( function(k) {
- this.originalStyle[k] = this.element.style[k];
- }.bind(this));
-
- this.originalTop = this.element.offsetTop;
- this.originalLeft = this.element.offsetLeft;
-
- var fontSize = this.element.getStyle('font-size') || '100%';
- ['em','px','%','pt'].each( function(fontSizeType) {
- if (fontSize.indexOf(fontSizeType)>0) {
- this.fontSize = parseFloat(fontSize);
- this.fontSizeType = fontSizeType;
- }
- }.bind(this));
-
- this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
-
- this.dims = null;
- if (this.options.scaleMode=='box')
- this.dims = [this.element.offsetHeight, this.element.offsetWidth];
- if (/^content/.test(this.options.scaleMode))
- this.dims = [this.element.scrollHeight, this.element.scrollWidth];
- if (!this.dims)
- this.dims = [this.options.scaleMode.originalHeight,
- this.options.scaleMode.originalWidth];
- },
- update: function(position) {
- var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
- if (this.options.scaleContent && this.fontSize)
- this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
- this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
- },
- finish: function(position) {
- if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
- },
- setDimensions: function(height, width) {
- var d = { };
- if (this.options.scaleX) d.width = width.round() + 'px';
- if (this.options.scaleY) d.height = height.round() + 'px';
- if (this.options.scaleFromCenter) {
- var topd = (height - this.dims[0])/2;
- var leftd = (width - this.dims[1])/2;
- if (this.elementPositioning == 'absolute') {
- if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
- if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
- } else {
- if (this.options.scaleY) d.top = -topd + 'px';
- if (this.options.scaleX) d.left = -leftd + 'px';
- }
- }
- this.element.setStyle(d);
- }
-});
-
-Effect.Highlight = Class.create(Effect.Base, {
- initialize: function(element) {
- this.element = $(element);
- if (!this.element) throw(Effect._elementDoesNotExistError);
- var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
- this.start(options);
- },
- setup: function() {
- // Prevent executing on elements not in the layout flow
- if (this.element.getStyle('display')=='none') { this.cancel(); return; }
- // Disable background image during the effect
- this.oldStyle = { };
- if (!this.options.keepBackgroundImage) {
- this.oldStyle.backgroundImage = this.element.getStyle('background-image');
- this.element.setStyle({backgroundImage: 'none'});
- }
- if (!this.options.endcolor)
- this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
- if (!this.options.restorecolor)
- this.options.restorecolor = this.element.getStyle('background-color');
- // init color calculations
- this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
- this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
- },
- update: function(position) {
- this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
- return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
- },
- finish: function() {
- this.element.setStyle(Object.extend(this.oldStyle, {
- backgroundColor: this.options.restorecolor
- }));
- }
-});
-
-Effect.ScrollTo = function(element) {
- var options = arguments[1] || { },
- scrollOffsets = document.viewport.getScrollOffsets(),
- elementOffsets = $(element).cumulativeOffset();
-
- if (options.offset) elementOffsets[1] += options.offset;
-
- return new Effect.Tween(null,
- scrollOffsets.top,
- elementOffsets[1],
- options,
- function(p){ scrollTo(scrollOffsets.left, p.round()); }
- );
-};
-
-/* ------------- combination effects ------------- */
-
-Effect.Fade = function(element) {
- element = $(element);
- var oldOpacity = element.getInlineOpacity();
- var options = Object.extend({
- from: element.getOpacity() || 1.0,
- to: 0.0,
- afterFinishInternal: function(effect) {
- if (effect.options.to!=0) return;
- effect.element.hide().setStyle({opacity: oldOpacity});
- }
- }, arguments[1] || { });
- return new Effect.Opacity(element,options);
-};
-
-Effect.Appear = function(element) {
- element = $(element);
- var options = Object.extend({
- from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
- to: 1.0,
- // force Safari to render floated elements properly
- afterFinishInternal: function(effect) {
- effect.element.forceRerendering();
- },
- beforeSetup: function(effect) {
- effect.element.setOpacity(effect.options.from).show();
- }}, arguments[1] || { });
- return new Effect.Opacity(element,options);
-};
-
-Effect.Puff = function(element) {
- element = $(element);
- var oldStyle = {
- opacity: element.getInlineOpacity(),
- position: element.getStyle('position'),
- top: element.style.top,
- left: element.style.left,
- width: element.style.width,
- height: element.style.height
- };
- return new Effect.Parallel(
- [ new Effect.Scale(element, 200,
- { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
- new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
- Object.extend({ duration: 1.0,
- beforeSetupInternal: function(effect) {
- Position.absolutize(effect.effects[0].element);
- },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.hide().setStyle(oldStyle); }
- }, arguments[1] || { })
- );
-};
-
-Effect.BlindUp = function(element) {
- element = $(element);
- element.makeClipping();
- return new Effect.Scale(element, 0,
- Object.extend({ scaleContent: false,
- scaleX: false,
- restoreAfterFinish: true,
- afterFinishInternal: function(effect) {
- effect.element.hide().undoClipping();
- }
- }, arguments[1] || { })
- );
-};
-
-Effect.BlindDown = function(element) {
- element = $(element);
- var elementDimensions = element.getDimensions();
- return new Effect.Scale(element, 100, Object.extend({
- scaleContent: false,
- scaleX: false,
- scaleFrom: 0,
- scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
- restoreAfterFinish: true,
- afterSetup: function(effect) {
- effect.element.makeClipping().setStyle({height: '0px'}).show();
- },
- afterFinishInternal: function(effect) {
- effect.element.undoClipping();
- }
- }, arguments[1] || { }));
-};
-
-Effect.SwitchOff = function(element) {
- element = $(element);
- var oldOpacity = element.getInlineOpacity();
- return new Effect.Appear(element, Object.extend({
- duration: 0.4,
- from: 0,
- transition: Effect.Transitions.flicker,
- afterFinishInternal: function(effect) {
- new Effect.Scale(effect.element, 1, {
- duration: 0.3, scaleFromCenter: true,
- scaleX: false, scaleContent: false, restoreAfterFinish: true,
- beforeSetup: function(effect) {
- effect.element.makePositioned().makeClipping();
- },
- afterFinishInternal: function(effect) {
- effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
- }
- });
- }
- }, arguments[1] || { }));
-};
-
-Effect.DropOut = function(element) {
- element = $(element);
- var oldStyle = {
- top: element.getStyle('top'),
- left: element.getStyle('left'),
- opacity: element.getInlineOpacity() };
- return new Effect.Parallel(
- [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
- new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
- Object.extend(
- { duration: 0.5,
- beforeSetup: function(effect) {
- effect.effects[0].element.makePositioned();
- },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
- }
- }, arguments[1] || { }));
-};
-
-Effect.Shake = function(element) {
- element = $(element);
- var options = Object.extend({
- distance: 20,
- duration: 0.5
- }, arguments[1] || {});
- var distance = parseFloat(options.distance);
- var split = parseFloat(options.duration) / 10.0;
- var oldStyle = {
- top: element.getStyle('top'),
- left: element.getStyle('left') };
- return new Effect.Move(element,
- { x: distance, y: 0, duration: split, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
- effect.element.undoPositioned().setStyle(oldStyle);
- }}); }}); }}); }}); }}); }});
-};
-
-Effect.SlideDown = function(element) {
- element = $(element).cleanWhitespace();
- // SlideDown need to have the content of the element wrapped in a container element with fixed height!
- var oldInnerBottom = element.down().getStyle('bottom');
- var elementDimensions = element.getDimensions();
- return new Effect.Scale(element, 100, Object.extend({
- scaleContent: false,
- scaleX: false,
- scaleFrom: window.opera ? 0 : 1,
- scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
- restoreAfterFinish: true,
- afterSetup: function(effect) {
- effect.element.makePositioned();
- effect.element.down().makePositioned();
- if (window.opera) effect.element.setStyle({top: ''});
- effect.element.makeClipping().setStyle({height: '0px'}).show();
- },
- afterUpdateInternal: function(effect) {
- effect.element.down().setStyle({bottom:
- (effect.dims[0] - effect.element.clientHeight) + 'px' });
- },
- afterFinishInternal: function(effect) {
- effect.element.undoClipping().undoPositioned();
- effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
- }, arguments[1] || { })
- );
-};
-
-Effect.SlideUp = function(element) {
- element = $(element).cleanWhitespace();
- var oldInnerBottom = element.down().getStyle('bottom');
- var elementDimensions = element.getDimensions();
- return new Effect.Scale(element, window.opera ? 0 : 1,
- Object.extend({ scaleContent: false,
- scaleX: false,
- scaleMode: 'box',
- scaleFrom: 100,
- scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
- restoreAfterFinish: true,
- afterSetup: function(effect) {
- effect.element.makePositioned();
- effect.element.down().makePositioned();
- if (window.opera) effect.element.setStyle({top: ''});
- effect.element.makeClipping().show();
- },
- afterUpdateInternal: function(effect) {
- effect.element.down().setStyle({bottom:
- (effect.dims[0] - effect.element.clientHeight) + 'px' });
- },
- afterFinishInternal: function(effect) {
- effect.element.hide().undoClipping().undoPositioned();
- effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
- }
- }, arguments[1] || { })
- );
-};
-
-// Bug in opera makes the TD containing this element expand for a instance after finish
-Effect.Squish = function(element) {
- return new Effect.Scale(element, window.opera ? 1 : 0, {
- restoreAfterFinish: true,
- beforeSetup: function(effect) {
- effect.element.makeClipping();
- },
- afterFinishInternal: function(effect) {
- effect.element.hide().undoClipping();
- }
- });
-};
-
-Effect.Grow = function(element) {
- element = $(element);
- var options = Object.extend({
- direction: 'center',
- moveTransition: Effect.Transitions.sinoidal,
- scaleTransition: Effect.Transitions.sinoidal,
- opacityTransition: Effect.Transitions.full
- }, arguments[1] || { });
- var oldStyle = {
- top: element.style.top,
- left: element.style.left,
- height: element.style.height,
- width: element.style.width,
- opacity: element.getInlineOpacity() };
-
- var dims = element.getDimensions();
- var initialMoveX, initialMoveY;
- var moveX, moveY;
-
- switch (options.direction) {
- case 'top-left':
- initialMoveX = initialMoveY = moveX = moveY = 0;
- break;
- case 'top-right':
- initialMoveX = dims.width;
- initialMoveY = moveY = 0;
- moveX = -dims.width;
- break;
- case 'bottom-left':
- initialMoveX = moveX = 0;
- initialMoveY = dims.height;
- moveY = -dims.height;
- break;
- case 'bottom-right':
- initialMoveX = dims.width;
- initialMoveY = dims.height;
- moveX = -dims.width;
- moveY = -dims.height;
- break;
- case 'center':
- initialMoveX = dims.width / 2;
- initialMoveY = dims.height / 2;
- moveX = -dims.width / 2;
- moveY = -dims.height / 2;
- break;
- }
-
- return new Effect.Move(element, {
- x: initialMoveX,
- y: initialMoveY,
- duration: 0.01,
- beforeSetup: function(effect) {
- effect.element.hide().makeClipping().makePositioned();
- },
- afterFinishInternal: function(effect) {
- new Effect.Parallel(
- [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
- new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
- new Effect.Scale(effect.element, 100, {
- scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
- sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
- ], Object.extend({
- beforeSetup: function(effect) {
- effect.effects[0].element.setStyle({height: '0px'}).show();
- },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
- }
- }, options)
- );
- }
- });
-};
-
-Effect.Shrink = function(element) {
- element = $(element);
- var options = Object.extend({
- direction: 'center',
- moveTransition: Effect.Transitions.sinoidal,
- scaleTransition: Effect.Transitions.sinoidal,
- opacityTransition: Effect.Transitions.none
- }, arguments[1] || { });
- var oldStyle = {
- top: element.style.top,
- left: element.style.left,
- height: element.style.height,
- width: element.style.width,
- opacity: element.getInlineOpacity() };
-
- var dims = element.getDimensions();
- var moveX, moveY;
-
- switch (options.direction) {
- case 'top-left':
- moveX = moveY = 0;
- break;
- case 'top-right':
- moveX = dims.width;
- moveY = 0;
- break;
- case 'bottom-left':
- moveX = 0;
- moveY = dims.height;
- break;
- case 'bottom-right':
- moveX = dims.width;
- moveY = dims.height;
- break;
- case 'center':
- moveX = dims.width / 2;
- moveY = dims.height / 2;
- break;
- }
-
- return new Effect.Parallel(
- [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
- new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
- new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
- ], Object.extend({
- beforeStartInternal: function(effect) {
- effect.effects[0].element.makePositioned().makeClipping();
- },
- afterFinishInternal: function(effect) {
- effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
- }, options)
- );
-};
-
-Effect.Pulsate = function(element) {
- element = $(element);
- var options = arguments[1] || { },
- oldOpacity = element.getInlineOpacity(),
- transition = options.transition || Effect.Transitions.linear,
- reverser = function(pos){
- return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);
- };
-
- return new Effect.Opacity(element,
- Object.extend(Object.extend({ duration: 2.0, from: 0,
- afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
- }, options), {transition: reverser}));
-};
-
-Effect.Fold = function(element) {
- element = $(element);
- var oldStyle = {
- top: element.style.top,
- left: element.style.left,
- width: element.style.width,
- height: element.style.height };
- element.makeClipping();
- return new Effect.Scale(element, 5, Object.extend({
- scaleContent: false,
- scaleX: false,
- afterFinishInternal: function(effect) {
- new Effect.Scale(element, 1, {
- scaleContent: false,
- scaleY: false,
- afterFinishInternal: function(effect) {
- effect.element.hide().undoClipping().setStyle(oldStyle);
- } });
- }}, arguments[1] || { }));
-};
-
-Effect.Morph = Class.create(Effect.Base, {
- initialize: function(element) {
- this.element = $(element);
- if (!this.element) throw(Effect._elementDoesNotExistError);
- var options = Object.extend({
- style: { }
- }, arguments[1] || { });
-
- if (!Object.isString(options.style)) this.style = $H(options.style);
- else {
- if (options.style.include(':'))
- this.style = options.style.parseStyle();
- else {
- this.element.addClassName(options.style);
- this.style = $H(this.element.getStyles());
- this.element.removeClassName(options.style);
- var css = this.element.getStyles();
- this.style = this.style.reject(function(style) {
- return style.value == css[style.key];
- });
- options.afterFinishInternal = function(effect) {
- effect.element.addClassName(effect.options.style);
- effect.transforms.each(function(transform) {
- effect.element.style[transform.style] = '';
- });
- };
- }
- }
- this.start(options);
- },
-
- setup: function(){
- function parseColor(color){
- if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
- color = color.parseColor();
- return $R(0,2).map(function(i){
- return parseInt( color.slice(i*2+1,i*2+3), 16 );
- });
- }
- this.transforms = this.style.map(function(pair){
- var property = pair[0], value = pair[1], unit = null;
-
- if (value.parseColor('#zzzzzz') != '#zzzzzz') {
- value = value.parseColor();
- unit = 'color';
- } else if (property == 'opacity') {
- value = parseFloat(value);
- if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
- this.element.setStyle({zoom: 1});
- } else if (Element.CSS_LENGTH.test(value)) {
- var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
- value = parseFloat(components[1]);
- unit = (components.length == 3) ? components[2] : null;
- }
-
- var originalValue = this.element.getStyle(property);
- return {
- style: property.camelize(),
- originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
- targetValue: unit=='color' ? parseColor(value) : value,
- unit: unit
- };
- }.bind(this)).reject(function(transform){
- return (
- (transform.originalValue == transform.targetValue) ||
- (
- transform.unit != 'color' &&
- (isNaN(transform.originalValue) || isNaN(transform.targetValue))
- )
- );
- });
- },
- update: function(position) {
- var style = { }, transform, i = this.transforms.length;
- while(i--)
- style[(transform = this.transforms[i]).style] =
- transform.unit=='color' ? '#'+
- (Math.round(transform.originalValue[0]+
- (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
- (Math.round(transform.originalValue[1]+
- (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
- (Math.round(transform.originalValue[2]+
- (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
- (transform.originalValue +
- (transform.targetValue - transform.originalValue) * position).toFixed(3) +
- (transform.unit === null ? '' : transform.unit);
- this.element.setStyle(style, true);
- }
-});
-
-Effect.Transform = Class.create({
- initialize: function(tracks){
- this.tracks = [];
- this.options = arguments[1] || { };
- this.addTracks(tracks);
- },
- addTracks: function(tracks){
- tracks.each(function(track){
- track = $H(track);
- var data = track.values().first();
- this.tracks.push($H({
- ids: track.keys().first(),
- effect: Effect.Morph,
- options: { style: data }
- }));
- }.bind(this));
- return this;
- },
- play: function(){
- return new Effect.Parallel(
- this.tracks.map(function(track){
- var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
- var elements = [$(ids) || $$(ids)].flatten();
- return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
- }).flatten(),
- this.options
- );
- }
-});
-
-Element.CSS_PROPERTIES = $w(
- 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
- 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
- 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
- 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
- 'fontSize fontWeight height left letterSpacing lineHeight ' +
- 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
- 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
- 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
- 'right textIndent top width wordSpacing zIndex');
-
-Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
-
-String.__parseStyleElement = document.createElement('div');
-String.prototype.parseStyle = function(){
- var style, styleRules = $H();
- if (Prototype.Browser.WebKit)
- style = new Element('div',{style:this}).style;
- else {
- String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
- style = String.__parseStyleElement.childNodes[0].style;
- }
-
- Element.CSS_PROPERTIES.each(function(property){
- if (style[property]) styleRules.set(property, style[property]);
- });
-
- if (Prototype.Browser.IE && this.include('opacity'))
- styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
-
- return styleRules;
-};
-
-if (document.defaultView && document.defaultView.getComputedStyle) {
- Element.getStyles = function(element) {
- var css = document.defaultView.getComputedStyle($(element), null);
- return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
- styles[property] = css[property];
- return styles;
- });
- };
-} else {
- Element.getStyles = function(element) {
- element = $(element);
- var css = element.currentStyle, styles;
- styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {
- results[property] = css[property];
- return results;
- });
- if (!styles.opacity) styles.opacity = element.getOpacity();
- return styles;
- };
-}
-
-Effect.Methods = {
- morph: function(element, style) {
- element = $(element);
- new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
- return element;
- },
- visualEffect: function(element, effect, options) {
- element = $(element);
- var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
- new Effect[klass](element, options);
- return element;
- },
- highlight: function(element, options) {
- element = $(element);
- new Effect.Highlight(element, options);
- return element;
- }
-};
-
-$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
- 'pulsate shake puff squish switchOff dropOut').each(
- function(effect) {
- Effect.Methods[effect] = function(element, options){
- element = $(element);
- Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
- return element;
- };
- }
-);
-
-$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
- function(f) { Effect.Methods[f] = Element[f]; }
-);
-
-Element.addMethods(Effect.Methods); \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/scriptaculous/scriptaculous.js b/rt/share/html/NoAuth/js/scriptaculous/scriptaculous.js
deleted file mode 100644
index 3e5543bd0..000000000
--- a/rt/share/html/NoAuth/js/scriptaculous/scriptaculous.js
+++ /dev/null
@@ -1,60 +0,0 @@
-// script.aculo.us scriptaculous.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008
-
-// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// For details, see the script.aculo.us web site: http://script.aculo.us/
-
-var Scriptaculous = {
- Version: '1.8.2',
- require: function(libraryName) {
- // inserting via DOM fails in Safari 2.0, so brute force approach
- document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
- },
- REQUIRED_PROTOTYPE: '1.6.0.3',
- load: function() {
- function convertVersionString(versionString) {
- var v = versionString.replace(/_.*|\./g, '');
- v = parseInt(v + '0'.times(4-v.length));
- return versionString.indexOf('_') > -1 ? v-1 : v;
- }
-
- if((typeof Prototype=='undefined') ||
- (typeof Element == 'undefined') ||
- (typeof Element.Methods=='undefined') ||
- (convertVersionString(Prototype.Version) <
- convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
- throw("script.aculo.us requires the Prototype JavaScript framework >= " +
- Scriptaculous.REQUIRED_PROTOTYPE);
-
- var js = /scriptaculous\.js(\?.*)?$/;
- $$('head script[src]').findAll(function(s) {
- return s.src.match(js);
- }).each(function(s) {
- var path = s.src.replace(js, ''),
- includes = s.src.match(/\?.*load=([a-z,]*)/);
- (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
- function(include) { Scriptaculous.require(path+include+'.js') });
- });
- }
-};
-
-Scriptaculous.load(); \ No newline at end of file
diff --git a/rt/share/html/NoAuth/js/superfish.js b/rt/share/html/NoAuth/js/superfish.js
new file mode 100644
index 000000000..2d7431835
--- /dev/null
+++ b/rt/share/html/NoAuth/js/superfish.js
@@ -0,0 +1,121 @@
+
+/*
+ * Superfish v1.4.8 - jQuery menu widget
+ * Copyright (c) 2008 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
+ */
+
+;(function($){
+ $.fn.superfish = function(op){
+
+ var sf = $.fn.superfish,
+ c = sf.c,
+ $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
+ over = function(){
+ var $$ = $(this), menu = getMenu($$);
+ clearTimeout(menu.sfTimer);
+ $$.showSuperfishUl().siblings().hideSuperfishUl();
+ },
+ out = function(){
+ var $$ = $(this), menu = getMenu($$), o = sf.op;
+ clearTimeout(menu.sfTimer);
+ menu.sfTimer=setTimeout(function(){
+ o.retainPath=($.inArray($$[0],o.$path)>-1);
+ $$.hideSuperfishUl();
+ if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
+ },o.delay);
+ },
+ getMenu = function($menu){
+ var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
+ sf.op = sf.o[menu.serial];
+ return menu;
+ },
+ addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
+
+ return this.each(function() {
+ var s = this.serial = sf.o.length;
+ var o = $.extend({},sf.defaults,op);
+ o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
+ $(this).addClass([o.hoverClass,c.bcClass].join(' '))
+ .filter('li:has(ul)').removeClass(o.pathClass);
+ });
+ sf.o[s] = sf.op = o;
+
+ $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
+ if (o.autoArrows) addArrow( $('>a:first-child',this) );
+ })
+ .not('.'+c.bcClass)
+ .hideSuperfishUl();
+
+ var $a = $('a',this);
+ $a.each(function(i){
+ var $li = $a.eq(i).parents('li');
+ $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
+ });
+ o.onInit.call(this);
+
+ }).each(function() {
+ var menuClasses = [c.menuClass];
+ if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
+ $(this).addClass(menuClasses.join(' '));
+ });
+ };
+
+ var sf = $.fn.superfish;
+ sf.o = [];
+ sf.op = {};
+ sf.IE7fix = function(){
+ var o = sf.op;
+ if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
+ this.toggleClass(sf.c.shadowClass+'-off');
+ };
+ sf.c = {
+ bcClass : 'sf-breadcrumb',
+ menuClass : 'sf-js-enabled',
+ anchorClass : 'sf-with-ul',
+ arrowClass : 'sf-sub-indicator',
+ shadowClass : 'sf-shadow'
+ };
+ sf.defaults = {
+ hoverClass : 'sfHover',
+ pathClass : 'overideThisToUse',
+ pathLevels : 1,
+ delay : 800,
+ animation : {opacity:'show'},
+ speed : 'normal',
+ autoArrows : true,
+ dropShadows : true,
+ disableHI : false, // true disables hoverIntent detection
+ onInit : function(){}, // callback functions
+ onBeforeShow: function(){},
+ onShow : function(){},
+ onHide : function(){}
+ };
+ $.fn.extend({
+ hideSuperfishUl : function(){
+ var o = sf.op,
+ not = (o.retainPath===true) ? o.$path : '';
+ o.retainPath = false;
+ var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
+ .find('>ul').hide().css('visibility','hidden');
+ o.onHide.call($ul);
+ return this;
+ },
+ showSuperfishUl : function(){
+ var o = sf.op,
+ sh = sf.c.shadowClass+'-off',
+ $ul = this.addClass(o.hoverClass)
+ .find('>ul:hidden').css('visibility','visible');
+ sf.IE7fix.call($ul);
+ o.onBeforeShow.call($ul);
+ $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
+ return this;
+ }
+ });
+
+})(jQuery);
diff --git a/rt/share/html/NoAuth/js/supersubs.js b/rt/share/html/NoAuth/js/supersubs.js
new file mode 100644
index 000000000..a6fce6524
--- /dev/null
+++ b/rt/share/html/NoAuth/js/supersubs.js
@@ -0,0 +1,90 @@
+
+/*
+ * Supersubs v0.2b - jQuery plugin
+ * Copyright (c) 2008 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ *
+ * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
+ * their longest list item children. If you use this, please expect bugs and report them
+ * to the jQuery Google Group with the word 'Superfish' in the subject line.
+ *
+ */
+
+;(function($){ // $ will refer to jQuery within this closure
+
+ $.fn.supersubs = function(options){
+ var opts = $.extend({}, $.fn.supersubs.defaults, options);
+ // return original object to support chaining
+ return this.each(function() {
+ // cache selections
+ var $$ = $(this);
+ // support metadata
+ var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
+ // get the font size of menu.
+ // .css('fontSize') returns various results cross-browser, so measure an em dash instead
+ var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
+ 'padding' : 0,
+ 'position' : 'absolute',
+ 'top' : '-999em',
+ 'width' : 'auto'
+ }).appendTo($$).width(); //clientWidth is faster, but was incorrect here
+ // remove em dash
+ $('#menu-fontsize').remove();
+ // cache all ul elements
+ $ULs = $$.find('ul');
+ // loop through each ul in menu
+ $ULs.each(function(i) {
+ // cache this ul
+ var $ul = $ULs.eq(i);
+ // get all (li) children of this ul
+ var $LIs = $ul.children();
+ // get all anchor grand-children
+ var $As = $LIs.children('a');
+ // force content to one line and save current float property
+ var liFloat = $LIs.css('white-space','nowrap').css('float');
+ // remove width restrictions and floats so elements remain vertically stacked
+ var emWidth = $ul.add($LIs).add($As).css({
+ 'float' : 'none',
+ 'width' : 'auto'
+ })
+ // this ul will now be shrink-wrapped to longest li due to position:absolute
+ // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
+ .end().end()[0].clientWidth / fontsize;
+ // add more width to ensure lines don't turn over at certain sizes in various browsers
+ emWidth += o.extraWidth;
+ // restrict to at least minWidth and at most maxWidth
+ if (emWidth > o.maxWidth) { emWidth = o.maxWidth; }
+ else if (emWidth < o.minWidth) { emWidth = o.minWidth; }
+ emWidth += 'em';
+ // set ul to width in ems
+ $ul.css('width',emWidth);
+ // restore li floats to avoid IE bugs
+ // set li width to full width of this ul
+ // revert white-space to normal
+ $LIs.css({
+ 'float' : liFloat,
+ 'width' : '100%',
+ 'white-space' : 'normal'
+ })
+ // update offset position of descendant ul to reflect new width of parent
+ .each(function(){
+ var $childUl = $('>ul',this);
+ var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
+ $childUl.css(offsetDirection,emWidth);
+ });
+ });
+
+ });
+ };
+ // expose defaults
+ $.fn.supersubs.defaults = {
+ minWidth : 9, // requires em unit.
+ maxWidth : 25, // requires em unit.
+ extraWidth : 0 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
+ };
+
+})(jQuery); // plugin code ends
diff --git a/rt/share/html/NoAuth/js/titlebox-state.js b/rt/share/html/NoAuth/js/titlebox-state.js
index ac0c2f002..a5e5dac20 100644
--- a/rt/share/html/NoAuth/js/titlebox-state.js
+++ b/rt/share/html/NoAuth/js/titlebox-state.js
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
function createCookie(name,value,days) {
- var path = "<%RT->Config->Get('WebPath')%>" ? "<%RT->Config->Get('WebPath')%>" : "/";
+ var path = <%RT->Config->Get('WebPath')|n,j%> ? <%RT->Config->Get('WebPath')|n,j%> : "/";
if (days) {
var date = new Date();
diff --git a/rt/share/html/NoAuth/js/ui.timepickr.js b/rt/share/html/NoAuth/js/ui.timepickr.js
new file mode 100644
index 000000000..3b2040a21
--- /dev/null
+++ b/rt/share/html/NoAuth/js/ui.timepickr.js
@@ -0,0 +1,941 @@
+/*
+ jQuery utils - @VERSION
+ http://code.google.com/p/jquery-utils/
+
+ (c) Maxime Haineault <haineault@gmail.com>
+ http://haineault.com
+
+ MIT License (http://www.opensource.org/licenses/mit-license.php
+
+*/
+
+(function($){
+ $.extend($.expr[':'], {
+ // case insensitive version of :contains
+ icontains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||"").toLowerCase().indexOf(m[3].toLowerCase())>=0;}
+ });
+
+ $.iterators = {
+ getText: function() { return $(this).text(); },
+ parseInt: function(v){ return parseInt(v, 10); }
+ };
+
+ $.extend({
+
+ // Returns a range object
+ // Author: Matthias Miller
+ // Site: http://blog.outofhanwell.com/2006/03/29/javascript-range-function/
+ range: function() {
+ if (!arguments.length) { return []; }
+ var min, max, step;
+ if (arguments.length == 1) {
+ min = 0;
+ max = arguments[0]-1;
+ step = 1;
+ }
+ else {
+ // default step to 1 if it's zero or undefined
+ min = arguments[0];
+ max = arguments[1]-1;
+ step = arguments[2] || 1;
+ }
+ // convert negative steps to positive and reverse min/max
+ if (step < 0 && min >= max) {
+ step *= -1;
+ var tmp = min;
+ min = max;
+ max = tmp;
+ min += ((max-min) % step);
+ }
+ var a = [];
+ for (var i = min; i <= max; i += step) { a.push(i); }
+ return a;
+ },
+
+ // Taken from ui.core.js.
+ // Why are you keeping this gem for yourself guys ? :|
+ keyCode: {
+ BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, CONTROL: 17, DELETE: 46, DOWN: 40,
+ END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37,
+ NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,
+ NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33,
+ PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38
+ },
+
+ // Takes a keyboard event and return true if the keycode match the specified keycode
+ keyIs: function(k, e) {
+ return parseInt($.keyCode[k.toUpperCase()], 10) == parseInt((typeof(e) == 'number' )? e: e.keyCode, 10);
+ },
+
+ // Returns the key of an array
+ keys: function(arr) {
+ var o = [];
+ for (k in arr) { o.push(k); }
+ return o;
+ },
+
+ // Redirect to a specified url
+ redirect: function(url) {
+ window.location.href = url;
+ return url;
+ },
+
+ // Stop event shorthand
+ stop: function(e, preventDefault, stopPropagation) {
+ if (preventDefault) { e.preventDefault(); }
+ if (stopPropagation) { e.stopPropagation(); }
+ return preventDefault && false || true;
+ },
+
+ // Returns the basename of a path
+ basename: function(path) {
+ var t = path.split('/');
+ return t[t.length] === '' && s || t.slice(0, t.length).join('/');
+ },
+
+ // Returns the filename of a path
+ filename: function(path) {
+ return path.split('/').pop();
+ },
+
+ // Returns a formated file size
+ filesizeformat: function(bytes, suffixes){
+ var b = parseInt(bytes, 10);
+ var s = suffixes || ['byte', 'bytes', 'KB', 'MB', 'GB'];
+ if (isNaN(b) || b === 0) { return '0 ' + s[0]; }
+ if (b == 1) { return '1 ' + s[0]; }
+ if (b < 1024) { return b.toFixed(2) + ' ' + s[1]; }
+ if (b < 1048576) { return (b / 1024).toFixed(2) + ' ' + s[2]; }
+ if (b < 1073741824) { return (b / 1048576).toFixed(2) + ' '+ s[3]; }
+ else { return (b / 1073741824).toFixed(2) + ' '+ s[4]; }
+ },
+
+ fileExtension: function(s) {
+ var tokens = s.split('.');
+ return tokens[tokens.length-1] || false;
+ },
+
+ // Returns true if an object is a String
+ isString: function(o) {
+ return typeof(o) == 'string' && true || false;
+ },
+
+ // Returns true if an object is a RegExp
+ isRegExp: function(o) {
+ return o && o.constructor.toString().indexOf('RegExp()') != -1 || false;
+ },
+
+ isObject: function(o) {
+ return (typeof(o) == 'object');
+ },
+
+ // Convert input to currency (two decimal fixed number)
+ toCurrency: function(i) {
+ i = parseFloat(i, 10).toFixed(2);
+ return (i=='NaN') ? '0.00' : i;
+ },
+
+ /*--------------------------------------------------------------------
+ * javascript method: "pxToEm"
+ * by:
+ Scott Jehl (scott@filamentgroup.com)
+ Maggie Wachs (maggie@filamentgroup.com)
+ http://www.filamentgroup.com
+ *
+ * Copyright (c) 2008 Filament Group
+ * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
+ *
+ * Description: pxToEm converts a pixel value to ems depending on inherited font size.
+ * Article: http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/
+ * Demo: http://www.filamentgroup.com/examples/pxToEm/
+ *
+ * Options:
+ scope: string or jQuery selector for font-size scoping
+ reverse: Boolean, true reverses the conversion to em-px
+ * Dependencies: jQuery library
+ * Usage Example: myPixelValue.pxToEm(); or myPixelValue.pxToEm({'scope':'#navigation', reverse: true});
+ *
+ * Version: 2.1, 18.12.2008
+ * Changelog:
+ * 08.02.2007 initial Version 1.0
+ * 08.01.2008 - fixed font-size calculation for IE
+ * 18.12.2008 - removed native object prototyping to stay in jQuery's spirit, jsLinted (Maxime Haineault <haineault@gmail.com>)
+ --------------------------------------------------------------------*/
+
+ pxToEm: function(i, settings){
+ //set defaults
+ settings = jQuery.extend({
+ scope: 'body',
+ reverse: false
+ }, settings);
+
+ var pxVal = (i === '') ? 0 : parseFloat(i);
+ var scopeVal;
+ var getWindowWidth = function(){
+ var de = document.documentElement;
+ return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
+ };
+
+ /* When a percentage-based font-size is set on the body, IE returns that percent of the window width as the font-size.
+ For example, if the body font-size is 62.5% and the window width is 1000px, IE will return 625px as the font-size.
+ When this happens, we calculate the correct body font-size (%) and multiply it by 16 (the standard browser font size)
+ to get an accurate em value. */
+
+ if (settings.scope == 'body' && $.browser.msie && (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(1) > 0.0) {
+ var calcFontSize = function(){
+ return (parseFloat($('body').css('font-size'))/getWindowWidth()).toFixed(3) * 16;
+ };
+ scopeVal = calcFontSize();
+ }
+ else { scopeVal = parseFloat(jQuery(settings.scope).css("font-size")); }
+
+ var result = (settings.reverse === true) ? (pxVal * scopeVal).toFixed(2) + 'px' : (pxVal / scopeVal).toFixed(2) + 'em';
+ return result;
+ }
+ });
+
+ $.extend($.fn, {
+ type: function() {
+ try { return $(this).get(0).nodeName.toLowerCase(); }
+ catch(e) { return false; }
+ },
+ // Select a text range in a textarea
+ selectRange: function(start, end){
+ // use only the first one since only one input can be focused
+ if ($(this).get(0).createTextRange) {
+ var range = $(this).get(0).createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', end);
+ range.moveStart('character', start);
+ range.select();
+ }
+ else if ($(this).get(0).setSelectionRange) {
+ $(this).bind('focus', function(e){
+ e.preventDefault();
+ }).get(0).setSelectionRange(start, end);
+ }
+ return $(this);
+ },
+
+ /*--------------------------------------------------------------------
+ * JQuery Plugin: "EqualHeights"
+ * by: Scott Jehl, Todd Parker, Maggie Costello Wachs (http://www.filamentgroup.com)
+ *
+ * Copyright (c) 2008 Filament Group
+ * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
+ *
+ * Description: Compares the heights or widths of the top-level children of a provided element
+ and sets their min-height to the tallest height (or width to widest width). Sets in em units
+ by default if pxToEm() method is available.
+ * Dependencies: jQuery library, pxToEm method (article:
+ http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/)
+ * Usage Example: $(element).equalHeights();
+ Optional: to set min-height in px, pass a true argument: $(element).equalHeights(true);
+ * Version: 2.1, 18.12.2008
+ *
+ * Note: Changed pxToEm call to call $.pxToEm instead, jsLinted (Maxime Haineault <haineault@gmail.com>)
+ --------------------------------------------------------------------*/
+
+ equalHeights: function(px){
+ $(this).each(function(){
+ var currentTallest = 0;
+ $(this).children().each(function(i){
+ if ($(this).height() > currentTallest) { currentTallest = $(this).height(); }
+ });
+ if (!px || !$.pxToEm) { currentTallest = $.pxToEm(currentTallest); } //use ems unless px is specified
+ // for ie6, set height since min-height isn't supported
+ if ($.browser.msie && $.browser.version == 6.0) { $(this).children().css({'height': currentTallest}); }
+ $(this).children().css({'min-height': currentTallest});
+ });
+ return this;
+ },
+
+ // Copyright (c) 2009 James Padolsey
+ // http://james.padolsey.com/javascript/jquery-delay-plugin/
+ delay: function(time, callback){
+ jQuery.fx.step.delay = function(){};
+ return this.animate({delay:1}, time, callback);
+ }
+ });
+})(jQuery);
+
+/*
+ jQuery strings - 0.4
+ http://code.google.com/p/jquery-utils/
+
+ (c) Maxime Haineault <haineault@gmail.com>
+ http://haineault.com
+
+ MIT License (http://www.opensource.org/licenses/mit-license.php)
+
+ Implementation of Python3K advanced string formatting
+ http://www.python.org/dev/peps/pep-3101/
+
+ Documentation: http://code.google.com/p/jquery-utils/wiki/StringFormat
+
+*/
+(function($){
+ var strings = {
+ strConversion: {
+ // tries to translate any objects type into string gracefully
+ __repr: function(i){
+ switch(this.__getType(i)) {
+ case 'array':case 'date':case 'number':
+ return i.toString();
+ case 'object': // Thanks to Richard Paul Lewis for the fix
+ var o = [];
+ var l = i.length;
+ for(var x=0;x<l;x++) {
+ o.push(x+': '+this.__repr(i[x]));
+ }
+ return o.join(', ');
+ case 'string':
+ return i;
+ default:
+ return i;
+ }
+ },
+ // like typeof but less vague
+ __getType: function(i) {
+ if (!i || !i.constructor) { return typeof(i); }
+ var match = i.constructor.toString().match(/Array|Number|String|Object|Date/);
+ return match && match[0].toLowerCase() || typeof(i);
+ },
+ // Jonas Raoni Soares Silva (http://jsfromhell.com/string/pad)
+ __pad: function(str, l, s, t){
+ var p = s || ' ';
+ var o = str;
+ if (l - str.length > 0) {
+ o = new Array(Math.ceil(l / p.length)).join(p).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2)) + str + p.substr(0, l - t);
+ }
+ return o;
+ },
+ __getInput: function(arg, args) {
+ var key = arg.getKey();
+ switch(this.__getType(args)){
+ case 'object': // Thanks to Jonathan Works for the patch
+ var keys = key.split('.');
+ var obj = args;
+ for(var subkey = 0; subkey < keys.length; subkey++){
+ obj = obj[keys[subkey]];
+ }
+ if (typeof(obj) != 'undefined') {
+ if (strings.strConversion.__getType(obj) == 'array') {
+ return arg.getFormat().match(/\.\*/) && obj[1] || obj;
+ }
+ return obj;
+ }
+ else {
+ // TODO: try by numerical index
+ }
+ break;
+ case 'array':
+ key = parseInt(key, 10);
+ if (arg.getFormat().match(/\.\*/) && typeof args[key+1] != 'undefined') { return args[key+1]; }
+ else if (typeof args[key] != 'undefined') { return args[key]; }
+ else { return key; }
+ break;
+ }
+ return '{'+key+'}';
+ },
+ __formatToken: function(token, args) {
+ var arg = new Argument(token, args);
+ return strings.strConversion[arg.getFormat().slice(-1)](this.__getInput(arg, args), arg);
+ },
+
+ // Signed integer decimal.
+ d: function(input, arg){
+ var o = parseInt(input, 10); // enforce base 10
+ var p = arg.getPaddingLength();
+ if (p) { return this.__pad(o.toString(), p, arg.getPaddingString(), 0); }
+ else { return o; }
+ },
+ // Signed integer decimal.
+ i: function(input, args){
+ return this.d(input, args);
+ },
+ // Unsigned octal
+ o: function(input, arg){
+ var o = input.toString(8);
+ if (arg.isAlternate()) { o = this.__pad(o, o.length+1, '0', 0); }
+ return this.__pad(o, arg.getPaddingLength(), arg.getPaddingString(), 0);
+ },
+ // Unsigned decimal
+ u: function(input, args) {
+ return Math.abs(this.d(input, args));
+ },
+ // Unsigned hexadecimal (lowercase)
+ x: function(input, arg){
+ var o = parseInt(input, 10).toString(16);
+ o = this.__pad(o, arg.getPaddingLength(), arg.getPaddingString(),0);
+ return arg.isAlternate() ? '0x'+o : o;
+ },
+ // Unsigned hexadecimal (uppercase)
+ X: function(input, arg){
+ return this.x(input, arg).toUpperCase();
+ },
+ // Floating point exponential format (lowercase)
+ e: function(input, arg){
+ return parseFloat(input, 10).toExponential(arg.getPrecision());
+ },
+ // Floating point exponential format (uppercase)
+ E: function(input, arg){
+ return this.e(input, arg).toUpperCase();
+ },
+ // Floating point decimal format
+ f: function(input, arg){
+ return this.__pad(parseFloat(input, 10).toFixed(arg.getPrecision()), arg.getPaddingLength(), arg.getPaddingString(),0);
+ },
+ // Floating point decimal format (alias)
+ F: function(input, args){
+ return this.f(input, args);
+ },
+ // Floating point format. Uses exponential format if exponent is greater than -4 or less than precision, decimal format otherwise
+ g: function(input, arg){
+ var o = parseFloat(input, 10);
+ return (o.toString().length > 6) ? Math.round(o.toExponential(arg.getPrecision())): o;
+ },
+ // Floating point format. Uses exponential format if exponent is greater than -4 or less than precision, decimal format otherwise
+ G: function(input, args){
+ return this.g(input, args);
+ },
+ // Single character (accepts integer or single character string).
+ c: function(input, args) {
+ var match = input.match(/\w|\d/);
+ return match && match[0] || '';
+ },
+ // String (converts any JavaScript object to anotated format)
+ r: function(input, args) {
+ return this.__repr(input);
+ },
+ // String (converts any JavaScript object using object.toString())
+ s: function(input, args) {
+ return input.toString && input.toString() || ''+input;
+ }
+ },
+
+ format: function(str, args) {
+ var end = 0;
+ var start = 0;
+ var match = false;
+ var buffer = [];
+ var token = '';
+ var tmp = (str||'').split('');
+ for(start=0; start < tmp.length; start++) {
+ if (tmp[start] == '{' && tmp[start+1] !='{') {
+ end = str.indexOf('}', start);
+ token = tmp.slice(start+1, end).join('');
+ if (tmp[start-1] != '{' && tmp[end+1] != '}') {
+ var tokenArgs = (typeof arguments[1] != 'object')? arguments2Array(arguments, 2): args || [];
+ buffer.push(strings.strConversion.__formatToken(token, tokenArgs));
+ }
+ else {
+ buffer.push(token);
+ }
+ }
+ else if (start > end || buffer.length < 1) { buffer.push(tmp[start]); }
+ }
+ return (buffer.length > 1)? buffer.join(''): buffer[0];
+ },
+
+ calc: function(str, args) {
+ return eval(format(str, args));
+ },
+
+ repeat: function(s, n) {
+ return new Array(n+1).join(s);
+ },
+
+ UTF8encode: function(s) {
+ return unescape(encodeURIComponent(s));
+ },
+
+ UTF8decode: function(s) {
+ return decodeURIComponent(escape(s));
+ },
+
+ tpl: function() {
+ var out = '';
+ var render = true;
+ // Set
+ // $.tpl('ui.test', ['<span>', helloWorld ,'</span>']);
+ if (arguments.length == 2 && $.isArray(arguments[1])) {
+ this[arguments[0]] = arguments[1].join('');
+ return $(this[arguments[0]]);
+ }
+ // $.tpl('ui.test', '<span>hello world</span>');
+ if (arguments.length == 2 && $.isString(arguments[1])) {
+ this[arguments[0]] = arguments[1];
+ return $(this[arguments[0]]);
+ }
+ // Call
+ // $.tpl('ui.test');
+ if (arguments.length == 1) {
+ return $(this[arguments[0]]);
+ }
+ // $.tpl('ui.test', false);
+ if (arguments.length == 2 && arguments[1] == false) {
+ return this[arguments[0]];
+ }
+ // $.tpl('ui.test', {value:blah});
+ if (arguments.length == 2 && $.isObject(arguments[1])) {
+ return $($.format(this[arguments[0]], arguments[1]));
+ }
+ // $.tpl('ui.test', {value:blah}, false);
+ if (arguments.length == 3 && $.isObject(arguments[1])) {
+ return (arguments[2] == true)
+ ? $.format(this[arguments[0]], arguments[1])
+ : $($.format(this[arguments[0]], arguments[1]));
+ }
+ }
+ };
+
+ var Argument = function(arg, args) {
+ this.__arg = arg;
+ this.__args = args;
+ this.__max_precision = parseFloat('1.'+ (new Array(32)).join('1'), 10).toString().length-3;
+ this.__def_precision = 6;
+ this.getString = function(){
+ return this.__arg;
+ };
+ this.getKey = function(){
+ return this.__arg.split(':')[0];
+ };
+ this.getFormat = function(){
+ var match = this.getString().split(':');
+ return (match && match[1])? match[1]: 's';
+ };
+ this.getPrecision = function(){
+ var match = this.getFormat().match(/\.(\d+|\*)/g);
+ if (!match) { return this.__def_precision; }
+ else {
+ match = match[0].slice(1);
+ if (match != '*') { return parseInt(match, 10); }
+ else if(strings.strConversion.__getType(this.__args) == 'array') {
+ return this.__args[1] && this.__args[0] || this.__def_precision;
+ }
+ else if(strings.strConversion.__getType(this.__args) == 'object') {
+ return this.__args[this.getKey()] && this.__args[this.getKey()][0] || this.__def_precision;
+ }
+ else { return this.__def_precision; }
+ }
+ };
+ this.getPaddingLength = function(){
+ var match = false;
+ if (this.isAlternate()) {
+ match = this.getString().match(/0?#0?(\d+)/);
+ if (match && match[1]) { return parseInt(match[1], 10); }
+ }
+ match = this.getString().match(/(0|\.)(\d+|\*)/g);
+ return match && parseInt(match[0].slice(1), 10) || 0;
+ };
+ this.getPaddingString = function(){
+ var o = '';
+ if (this.isAlternate()) { o = ' '; }
+ // 0 take precedence on alternate format
+ if (this.getFormat().match(/#0|0#|^0|\.\d+/)) { o = '0'; }
+ return o;
+ };
+ this.getFlags = function(){
+ var match = this.getString().matc(/^(0|\#|\-|\+|\s)+/);
+ return match && match[0].split('') || [];
+ };
+ this.isAlternate = function() {
+ return !!this.getFormat().match(/^0?#/);
+ };
+ };
+
+ var arguments2Array = function(args, shift) {
+ var o = [];
+ for (l=args.length, x=(shift || 0)-1; x<l;x++) { o.push(args[x]); }
+ return o;
+ };
+ $.extend(strings);
+})(jQuery);
+
+/*
+ jQuery ui.timepickr - @VERSION
+ http://code.google.com/p/jquery-utils/
+
+ (c) Maxime Haineault <haineault@gmail.com>
+ http://haineault.com
+
+ MIT License (http://www.opensource.org/licenses/mit-license.php
+
+ Note: if you want the original experimental plugin checkout the rev 224
+
+ Dependencies
+ ------------
+ - jquery.utils.js
+ - jquery.strings.js
+ - jquery.ui.js
+
+*/
+
+(function($) {
+
+$.tpl('timepickr.menu', '<div class="ui-helper-reset ui-timepickr ui-widget" />');
+$.tpl('timepickr.row', '<ol class="ui-timepickr-row ui-helper-clearfix" />');
+$.tpl('timepickr.button', '<li class="{className:s}"><span class="ui-state-default">{label:s}</span></li>');
+
+$.widget('ui.timepickr', {
+ plugins: {},
+ _create: function() {
+ this._dom = {
+ menu: $.tpl('timepickr.menu'),
+ row: $.tpl('timepickr.menu')
+ };
+ this._trigger('initialize');
+ this._trigger('initialized');
+ },
+
+ _trigger: function(type, e, ui) {
+ var ui = ui || this;
+ $.ui.plugin.call(this, type, [e, ui]);
+ return $.Widget.prototype._trigger.call(this, type, e, ui);
+ },
+
+ _createButton: function(i, format, className) {
+ var o = format && $.format(format, i) || i;
+ var cn = className && 'ui-timepickr-button '+ className || 'ui-timepickr-button';
+ return $.tpl('timepickr.button', {className: cn, label: o}).data('id', i)
+ .bind('mouseover', function(){
+ $(this).siblings().find('span')
+ .removeClass('ui-state-hover').end().end()
+ .find('span').addClass('ui-state-hover');
+ });
+
+ },
+
+ _addRow: function(range, format, className, insertAfter) {
+ var ui = this;
+ var btn = false;
+ var row = $.tpl('timepickr.row').bind('mouseover', function(){
+ $(this).next().show();
+ });
+ $.each(range, function(idx, val){
+ ui._createButton(val, format || false).appendTo(row);
+ });
+ if (className) {
+ $(row).addClass(className);
+ }
+ if (this.options.corners) {
+ row.find('span').addClass('ui-corner-'+ this.options.corners);
+ }
+ if (insertAfter) {
+ row.insertAfter(insertAfter);
+ }
+ else {
+ ui._dom.menu.append(row);
+ }
+ return row;
+ },
+
+ _setVal: function(val) {
+ val = val || this._getVal();
+ if (!(val.h==='' && val.m==='')) {
+ this.element.data('timepickr.initialValue', val);
+ this.element.val(this._formatVal(val));
+ }
+ if(this._dom.menu.is(':hidden')) {
+ this.element.trigger('change');
+ }
+ },
+
+ _getVal: function() {
+ var ols = this._dom.menu.find('ol');
+ function get(unit) {
+ var u = ols.filter('.'+unit).find('.ui-state-hover:first').text();
+ return u || ols.filter('.'+unit+'li:first span').text();
+ }
+ return {
+ h: get('hours'),
+ m: get('minutes'),
+ s: get('seconds'),
+ a: get('prefix'),
+ z: get('suffix'),
+ f: this.options['format'+ this.c],
+ c: this.c
+ };
+ },
+
+ _formatVal: function(ival) {
+ var val = ival || this._getVal();
+ val.c = this.options.convention;
+ val.f = val.c === 12 && this.options.format12 || this.options.format24;
+ return (new Time(val)).getTime();
+ },
+
+ blur: function() {
+ return this.element.blur();
+ },
+
+ focus: function() {
+ return this.element.focus();
+ },
+ show: function() {
+ this._trigger('show');
+ this.element.trigger(this.options.trigger);
+ },
+ hide: function() {
+ this._trigger('hide');
+ this._dom.menu.hide();
+ }
+
+});
+
+// These properties are shared accross every instances of timepickr
+$.extend($.ui.timepickr.prototype, {
+ version: '@VERSION',
+ //eventPrefix: '',
+ //getter: '',
+ options: {
+ convention: 24, // 24, 12
+ trigger: 'mouseover',
+ format12: '{h:02.d}:{m:02.d} {z:s}',
+ format24: '{h:02.d}:{m:02.d}',
+ hours: true,
+ prefix: ['am', 'pm'],
+ suffix: ['am', 'pm'],
+ prefixVal: false,
+ suffixVal: true,
+ rangeHour12: $.range(1, 13),
+ rangeHour24: [$.range(0, 12), $.range(12, 24)],
+ rangeMin: $.range(0, 60, 15),
+ rangeSec: $.range(0, 60, 15),
+ corners: 'all',
+ // plugins
+ core: true,
+ minutes: true,
+ seconds: false,
+ val: false,
+ updateLive: true,
+ resetOnBlur: true,
+ keyboardnav: true,
+ handle: false,
+ handleEvent: 'click'
+ }
+});
+
+$.ui.plugin.add('timepickr', 'core', {
+ initialized: function(e, ui) {
+ var menu = ui._dom.menu;
+ var pos = ui.element.position();
+
+ menu.insertAfter(ui.element).css('left', pos.left);
+
+ if (!$.boxModel) { // IE alignement fix
+ menu.css('margin-top', ui.element.height() + 8);
+ }
+
+ ui.element
+ .bind(ui.options.trigger, function() {
+ ui._dom.menu.show();
+ ui._dom.menu.find('ol:first').show();
+ ui._trigger('focus');
+ if (ui.options.trigger != 'focus') {
+ ui.element.focus();
+ }
+ ui._trigger('focus');
+ })
+ .bind('blur', function() {
+ ui.hide();
+ ui._trigger('blur');
+ });
+
+ menu.find('li').bind('mouseover.timepickr', function() {
+ ui._trigger('refresh');
+ });
+ },
+ refresh: function(e, ui) {
+ // Realign each menu layers
+ ui._dom.menu.find('ol').each(function(){
+ var p = $(this).prev('ol');
+ try { // .. to not fuckup IE
+ $(this).css('left', p.position().left + p.find('.ui-state-hover').position().left);
+ } catch(e) {};
+ });
+ }
+});
+
+$.ui.plugin.add('timepickr', 'hours', {
+ initialize: function(e, ui) {
+ if (ui.options.convention === 24) {
+ // prefix is required in 24h mode
+ ui._dom.prefix = ui._addRow(ui.options.prefix, false, 'prefix');
+
+ // split-range
+ if ($.isArray(ui.options.rangeHour24[0])) {
+ var range = [];
+ $.merge(range, ui.options.rangeHour24[0]);
+ $.merge(range, ui.options.rangeHour24[1]);
+ ui._dom.hours = ui._addRow(range, '{0:0.2d}', 'hours');
+ ui._dom.hours.find('li').slice(ui.options.rangeHour24[0].length, -1).hide();
+ var lis = ui._dom.hours.find('li');
+
+ var show = [
+ function() {
+ lis.slice(ui.options.rangeHour24[0].length).hide().end()
+ .slice(0, ui.options.rangeHour24[0].length).show()
+ .filter(':visible:first').trigger('mouseover');
+
+ },
+ function() {
+ lis.slice(0, ui.options.rangeHour24[0].length).hide().end()
+ .slice(ui.options.rangeHour24[0].length).show()
+ .filter(':visible:first').trigger('mouseover');
+ }
+ ];
+
+ ui._dom.prefix.find('li').bind('mouseover.timepickr', function(){
+ var index = ui._dom.menu.find('.prefix li').index(this);
+ show[index].call();
+ });
+ }
+ else {
+ ui._dom.hours = ui._addRow(ui.options.rangeHour24, '{0:0.2d}', 'hours');
+ ui._dom.hours.find('li').slice(12, -1).hide();
+ }
+ }
+ else {
+ ui._dom.hours = ui._addRow(ui.options.rangeHour12, '{0:0.2d}', 'hours');
+ // suffix is required in 12h mode
+ ui._dom.suffix = ui._addRow(ui.options.suffix, false, 'suffix');
+ }
+ }});
+
+$.ui.plugin.add('timepickr', 'minutes', {
+ initialize: function(e, ui) {
+ var p = ui._dom.hours && ui._dom.hours || false;
+ ui._dom.minutes = ui._addRow(ui.options.rangeMin, '{0:0.2d}', 'minutes', p);
+ }
+});
+
+$.ui.plugin.add('timepickr', 'seconds', {
+ initialize: function(e, ui) {
+ var p = ui._dom.minutes && ui._dom.minutes || false;
+ ui._dom.seconds = ui._addRow(ui.options.rangeSec, '{0:0.2d}', 'seconds', p);
+ }
+});
+
+$.ui.plugin.add('timepickr', 'val', {
+ initialized: function(e, ui) {
+ ui._setVal(ui.options.val);
+ }
+});
+
+$.ui.plugin.add('timepickr', 'updateLive', {
+ refresh: function(e, ui) {
+ ui._setVal();
+ }
+});
+
+$.ui.plugin.add('timepickr', 'resetOnBlur', {
+ initialized: function(e, ui) {
+ ui.element.data('timepickr.initialValue', ui._getVal());
+ ui._dom.menu.find('li > span').bind('mousedown.timepickr', function(){
+ ui.element.data('timepickr.initialValue', ui._getVal());
+ });
+ },
+ blur: function(e, ui) {
+ ui._setVal(ui.element.data('timepickr.initialValue'));
+ }
+});
+
+$.ui.plugin.add('timepickr', 'handle', {
+ initialized: function(e, ui) {
+ $(ui.options.handle).bind(ui.options.handleEvent + '.timepickr', function(){
+ ui.show();
+ });
+ }
+});
+
+$.ui.plugin.add('timepickr', 'keyboardnav', {
+ initialized: function(e, ui) {
+ ui.element
+ .bind('keydown', function(e) {
+ if ($.keyIs('enter', e)) {
+ ui._setVal();
+ ui.blur();
+ }
+ else if ($.keyIs('escape', e)) {
+ ui.blur();
+ }
+ });
+ }
+});
+
+var Time = function() { // arguments: h, m, s, c, z, f || time string
+ if (!(this instanceof arguments.callee)) {
+ throw Error("Constructor called as a function");
+ }
+ // arguments as literal object
+ if (arguments.length == 1 && $.isObject(arguments[0])) {
+ this.h = arguments[0].h || 0;
+ this.m = arguments[0].m || 0;
+ this.s = arguments[0].s || 0;
+ this.c = arguments[0].c && ($.inArray(arguments[0].c, [12, 24]) >= 0) && arguments[0].c || 24;
+ this.f = arguments[0].f || ((this.c == 12) && '{h:02.d}:{m:02.d} {z:02.d}' || '{h:02.d}:{m:02.d}');
+ this.z = arguments[0].z || 'am';
+ }
+ // arguments as string
+ else if (arguments.length < 4 && $.isString(arguments[1])) {
+ this.c = arguments[2] && ($.inArray(arguments[0], [12, 24]) >= 0) && arguments[0] || 24;
+ this.f = arguments[3] || ((this.c == 12) && '{h:02.d}:{m:02.d} {z:02.d}' || '{h:02.d}:{m:02.d}');
+ this.z = arguments[4] || 'am';
+
+ this.h = arguments[1] || 0; // parse
+ this.m = arguments[1] || 0; // parse
+ this.s = arguments[1] || 0; // parse
+ }
+ // no arguments (now)
+ else if (arguments.length === 0) {
+ // now
+ }
+ // standards arguments
+ else {
+ this.h = arguments[0] || 0;
+ this.m = arguments[1] || 0;
+ this.s = arguments[2] || 0;
+ this.c = arguments[3] && ($.inArray(arguments[3], [12, 24]) >= 0) && arguments[3] || 24;
+ this.f = this.f || ((this.c == 12) && '{h:02.d}:{m:02.d} {z:02.d}' || '{h:02.d}:{m:02.d}');
+ this.z = 'am';
+ }
+ return this;
+};
+
+Time.prototype.get = function(p, f, u) { return u && this.h || $.format(f, this.h); };
+Time.prototype.getHours = function(unformated) { return this.get('h', '{0:02.d}', unformated); };
+Time.prototype.getMinutes = function(unformated) { return this.get('m', '{0:02.d}', unformated); };
+Time.prototype.getSeconds = function(unformated) { return this.get('s', '{0:02.d}', unformated); };
+Time.prototype.setFormat = function(format) { return this.f = format; };
+Time.prototype.getObject = function() { return { h: this.h, m: this.m, s: this.s, c: this.c, f: this.f, z: this.z }; };
+Time.prototype.getTime = function() { return $.format(this.f, {h: this.h, m: this.m, suffix: this.z}); }; // Thanks to Jackson for the fix.
+Time.prototype.parse = function(str) {
+ // 12h formats
+ if (this.c === 12) {
+ // Supported formats: (can't find any *official* standards for 12h..)
+ // - [hh]:[mm]:[ss] [zz] | [hh]:[mm] [zz] | [hh] [zz]
+ // - [hh]:[mm]:[ss] [z.z.] | [hh]:[mm] [z.z.] | [hh] [z.z.]
+ this.tokens = str.split(/\s|:/);
+ this.h = this.tokens[0] || 0;
+ this.m = this.tokens[1] || 0;
+ this.s = this.tokens[2] || 0;
+ this.z = this.tokens[3] || '';
+ return this.getObject();
+ }
+ // 24h formats
+ else {
+ // Supported formats:
+ // - ISO 8601: [hh][mm][ss] | [hh][mm] | [hh]
+ // - ISO 8601 extended: [hh]:[mm]:[ss] | [hh]:[mm] | [hh]
+ this.tokens = /:/.test(str) && str.split(/:/) || str.match(/[0-9]{2}/g);
+ this.h = this.tokens[0] || 0;
+ this.m = this.tokens[1] || 0;
+ this.s = this.tokens[2] || 0;
+ this.z = this.tokens[3] || '';
+ return this.getObject();
+ }
+};
+
+})(jQuery);
diff --git a/rt/share/html/NoAuth/js/userautocomplete.js b/rt/share/html/NoAuth/js/userautocomplete.js
new file mode 100644
index 000000000..b4f678c76
--- /dev/null
+++ b/rt/share/html/NoAuth/js/userautocomplete.js
@@ -0,0 +1,110 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+jQuery(function() {
+ // inputs that accept multiple email addresses
+ var multipleCompletion = new Array("Requestors", "To", "Bcc", "Cc", "AdminCc", "WatcherAddressEmail[123]", "UpdateCc", "UpdateBcc");
+
+ // inputs with only a single email address allowed
+ var singleCompletion = new Array("(Add|Delete)Requestor", "(Add|Delete)Cc", "(Add|Delete)AdminCc");
+
+ // inputs for only privileged users
+ var privilegedCompletion = new Array("AddPrincipalForRights-user");
+
+ // build up the regexps we'll use to match
+ var applyto = new RegExp('^(' + multipleCompletion.concat(singleCompletion, privilegedCompletion).join('|') + ')$');
+ var acceptsMultiple = new RegExp('^(' + multipleCompletion.join('|') + ')$');
+ var onlyPrivileged = new RegExp('^(' + privilegedCompletion.join('|') + ')$');
+
+ var inputs = document.getElementsByTagName("input");
+
+ for (var i = 0; i < inputs.length; i++) {
+ var input = inputs[i];
+ var inputName = input.getAttribute("name");
+
+ if (!inputName || !inputName.match(applyto))
+ continue;
+
+ var options = {
+ source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Users"
+ };
+
+ var queryargs = [];
+
+ if (inputName.match("AddPrincipalForRights-user")) {
+ queryargs.push("return=Name");
+ options.select = addprincipal_onselect;
+ options.change = addprincipal_onchange;
+ }
+
+ if (inputName.match(onlyPrivileged)) {
+ queryargs.push("privileged=1");
+ }
+
+ if (inputName.match(acceptsMultiple)) {
+ queryargs.push("delim=,");
+
+ options.focus = function () {
+ // prevent value inserted on focus
+ return false;
+ }
+
+ options.select = function(event, ui) {
+ var terms = this.value.split(/,\s*/);
+ terms.pop(); // remove current input
+ terms.push( ui.item.value ); // add selected item
+ this.value = terms.join(", ");
+ return false;
+ }
+ }
+
+ if (queryargs.length)
+ options.source += "?" + queryargs.join("&");
+
+ jQuery(input).autocomplete(options);
+ }
+});
diff --git a/rt/share/html/NoAuth/js/util.js b/rt/share/html/NoAuth/js/util.js
index d8ce74c46..5bfce411d 100644
--- a/rt/share/html/NoAuth/js/util.js
+++ b/rt/share/html/NoAuth/js/util.js
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,28 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-/* $(...)
- Returns DOM node or array of nodes (if more then one argument passed).
- If argument is node object allready then do nothing.
- // Stolen from Prototype
-*/
-function $() {
- var elements = new Array();
-
- for (var i = 0; i < arguments.length; i++) {
- var element = arguments[i];
- if (typeof element == 'string')
- element = document.getElementById(element);
-
- if (arguments.length == 1)
- return element;
-
- elements.push(element);
- }
-
- return elements;
-}
-
/* Visibility */
function show(id) { delClass( id, 'hidden' ) }
@@ -74,12 +52,14 @@ function hide(id) { addClass( id, 'hidden' ) }
function hideshow(id) { return toggleVisibility( id ) }
function toggleVisibility(id) {
- var e = $(id);
+ var e = jQuery('#' + id);
- if ( e.className.match( /\bhidden\b/ ) )
- show(e);
- else
- hide(e);
+ if ( e.hasClass('hidden') ) {
+ e.removeClass('hidden');
+ }
+ else {
+ e.addClass('hidden');
+ }
return false;
}
@@ -98,26 +78,25 @@ function switchVisibility(id1, id2) {
}
/* Classes */
+function jQueryWrap( id ) {
+ return typeof id == 'object' ? jQuery(id) : jQuery('#'+id);
+}
function addClass(id, value) {
- var e = $(id);
- if ( e.className.match( new RegExp('\b'+ value +'\b') ) )
- return;
- e.className += e.className? ' '+value : value;
+ jQueryWrap(id).addClass(value);
}
function delClass(id, value) {
- var e = $(id);
- e.className = e.className.replace( new RegExp('\\s?\\b'+ value +'\\b', 'g'), '' );
+ jQueryWrap(id).removeClass(value);
}
/* Rollups */
function rollup(id) {
- var e = $(id);
- var e2 = e.parentNode;
+ var e = jQueryWrap(id);
+ var e2 = e.parent();
- if (e.className.match(/\bhidden\b/)) {
+ if (e.hasClass('hidden')) {
set_rollup_state(e,e2,'shown');
createCookie(id,1,365);
}
@@ -141,103 +120,26 @@ function set_rollup_state(e,e2,state) {
}
}
-
-/* onload handlers */
-/* New code should be using doOnLoad which makes use of prototype
- instead. See HeaderJavascript. It works better than clobbering
- window.onload. Left around in case other code is using them */
-
-var onLoadStack = new Array();
-var onLoadLastStack = new Array();
-var onLoadExecuted = 0;
-
-function onLoadHook(commandStr) {
- if(typeof(commandStr) == "string") {
- onLoadStack[ onLoadStack.length ] = commandStr;
- return true;
- }
- return false;
-}
-
-// some things *really* need to be done after everything else
-function onLoadLastHook(commandStr) {
- if(typeof(commandStr) == "string"){
- onLoadLastStack[onLoadLastStack.length] = commandStr;
- return true;
- }
- return false;
-}
-
-function doOnLoadHooks() {
- if(onLoadExecuted) return;
-
- var i;
- for ( i in onLoadStack ) {
- eval( onLoadStack[i] );
- }
- for ( i in onLoadLastStack ) {
- eval( onLoadLastStack[i] );
- }
- onLoadExecuted = 1;
-}
-
-window.onload = doOnLoadHooks;
-
-/* new onLoad code */
-
-function doOnLoad(handler) {
- Event.observe(window, 'load', handler);
-}
-
-/* calendar functions */
-
-function openCalWindow(field) {
- var objWindow = window.open('<%RT->Config->Get('WebPath')%>/Helpers/CalPopup.html?field='+field,
- 'RT_Calendar',
- 'height=235,width=285,scrollbars=1');
- objWindow.focus();
-}
-
-function createCalendarLink(input) {
- var e = $(input);
- if (e) {
- var link = document.createElement('a');
- link.setAttribute('href', '#');
- $(link).observe('click', function(ev) { openCalWindow(input); ev.stop(); });
- //link.setAttribute('onclick', "openCalWindow('"+input+"'); return false;");
-
- var text = document.createTextNode('<% loc("Calendar") %>');
- link.appendChild(text);
-
- var space = document.createTextNode(' ');
-
- e.parentNode.insertBefore(link, e.nextSibling);
- e.parentNode.insertBefore(space, e.nextSibling);
-
- return true;
- }
- return false;
-}
-
/* other utils */
function focusElementById(id) {
- var e = $(id);
+ var e = jQuery('#'+id);
if (e) e.focus();
}
-function updateParentField(field, value) {
- if (window.opener) {
- window.opener.$(field).value = value;
- window.close();
- }
-}
-
function setCheckbox(form, name, val) {
var myfield = form.getElementsByTagName('input');
for ( var i = 0; i < myfield.length; i++ ) {
- if ( name && myfield[i].name != name ) continue;
if ( myfield[i].type != 'checkbox' ) continue;
+ if ( name ) {
+ if ( name instanceof RegExp ) {
+ if ( ! myfield[i].name.match( name ) ) continue;
+ }
+ else {
+ if ( myfield[i].name != name ) continue;
+ }
+
+ }
myfield[i].checked = val;
}
@@ -247,84 +149,213 @@ function setCheckbox(form, name, val) {
function walkChildNodes(parent, callback)
{
- if( !parent || !parent.childNodes ) return;
- var list = parent.childNodes;
- for( var i = 0; i < list.length; i++ ) {
- callback( list[i] );
- }
+ if( !parent || !parent.childNodes ) return;
+ var list = parent.childNodes;
+ for( var i = 0; i < list.length; i++ ) {
+ callback( list[i] );
+ }
}
function walkChildElements(parent, callback)
{
- walkChildNodes( parent, function(node) {
- if( node.nodeType != 1 ) return;
- return callback( node );
- } );
+ walkChildNodes( parent, function(node) {
+ if( node.nodeType != 1 ) return;
+ return callback( node );
+ } );
}
/* shredder things */
function showShredderPluginTab( plugin )
{
- var plugin_tab_id = 'shredder-plugin-'+ plugin +'-tab';
- var root = $('shredder-plugin-tabs');
- walkChildElements( root, function(node) {
- if( node.id == plugin_tab_id ) {
- show( node );
- } else {
- hide( node );
- }
- } );
- if( plugin ) {
- show('shredder-submit-button');
- } else {
- hide('shredder-submit-button');
- }
+ var plugin_tab_id = 'shredder-plugin-'+ plugin +'-tab';
+ var root = jQuery('#shredder-plugin-tabs');
+
+ root.children(':not(.hidden)').addClass('hidden');
+ root.children('#' + plugin_tab_id).removeClass('hidden');
+
+ if( plugin ) {
+ show('shredder-submit-button');
+ } else {
+ hide('shredder-submit-button');
+ }
}
function checkAllObjects()
{
- var check = $('shredder-select-all-objects-checkbox').checked;
- var elements = $('shredder-search-form').elements;
- for( var i = 0; i < elements.length; i++ ) {
- if( elements[i].name != 'WipeoutObject' ) {
- continue;
- }
- if( elements[i].type != 'checkbox' ) {
- continue;
- }
- if( check ) {
- elements[i].checked = true;
- } else {
- elements[i].checked = false;
- }
- }
+ var check = jQuery('#shredder-select-all-objects-checkbox').attr('checked');
+ var elements = jQuery('#shredder-search-form :checkbox[name=WipeoutObject]');
+
+ if( check ) {
+ elements.attr('checked', true);
+ } else {
+ elements.attr('checked', false);
+ }
}
function checkboxToInput(target,checkbox,val){
- var tar=$(target);
- var box = $(checkbox);
- if(box.checked){
- if (tar.value==''){
- tar.value=val;
- }else{
- tar.value=val+', '+tar.value; }
- }else{
- tar.value=tar.value.replace(val+', ','');
- tar.value=tar.value.replace(val,'');
+ var tar = jQuery('#' + escapeCssSelector(target));
+ var box = jQuery('#' + escapeCssSelector(checkbox));
+ if(box.attr('checked')){
+ if (tar.val()==''){
+ tar.val(val);
+ }
+ else{
+ tar.val( val+', '+ tar.val() );
+ }
+ }
+ else{
+ tar.val(tar.val().replace(val+', ',''));
+ tar.val(tar.val().replace(val,''));
}
+ jQuery('#UpdateIgnoreAddressCheckboxes').val(true);
}
-function toggleTicketBookmark( id, url ) {
- var elements = $$("span.toggle-"+id);
- if ( elements.length ) {
- new Ajax.Request(url, {
- method: 'get',
- onSuccess: function(response) {
- elements.each( function( item ) {
- item.replace(response.responseText);
- })
+// ahah for back compatibility as plugins may still use it
+function ahah( url, id ) {
+ jQuery('#'+id).load(url);
+}
+
+// only for back compatibility, please JQuery() instead
+function doOnLoad( js ) {
+ jQuery(js);
+}
+
+jQuery(function() {
+ jQuery(".ui-datepicker:not(.withtime)").datepicker( {
+ dateFormat: 'yy-mm-dd',
+ constrainInput: false
+ } );
+
+ jQuery(".ui-datepicker.withtime").datepicker( {
+ dateFormat: 'yy-mm-dd',
+ constrainInput: false,
+ onSelect: function( dateText, inst ) {
+ // trigger timepicker to get time
+ var button = document.createElement('input');
+ button.setAttribute('type', 'button');
+ jQuery(button).width('5em');
+ jQuery(button).insertAfter(this);
+ jQuery(button).timepickr({val: '00:00'});
+ var date_input = this;
+
+ jQuery(button).blur( function() {
+ var time = jQuery(button).val();
+ if ( ! time.match(/\d\d:\d\d/) ) {
+ time = '00:00';
+ }
+ jQuery(date_input).val( dateText + ' ' + time + ':00' );
+ jQuery(button).remove();
+ } );
+
+ jQuery(button).focus();
+ }
+ } );
+});
+
+function textToHTML(value) {
+ return value.replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;")
+ .replace(/>/g, "&gt;")
+ .replace(/-- \n/g,"--&nbsp;\n")
+ .replace(/\n/g, "\n<br />");
+};
+
+function ReplaceAllTextareas(encoded) {
+ var sAgent = navigator.userAgent.toLowerCase();
+ if (!CKEDITOR.env.isCompatible ||
+ sAgent.indexOf('iphone') != -1 ||
+ sAgent.indexOf('ipad') != -1 ||
+ sAgent.indexOf('android') != -1 )
+ return false;
+
+ // replace all content and signature message boxes
+ var allTextAreas = document.getElementsByTagName("textarea");
+
+ for (var i=0; i < allTextAreas.length; i++) {
+ var textArea = allTextAreas[i];
+ if (jQuery(textArea).hasClass("messagebox")) {
+ // Turn the original plain text content into HTML
+ if (encoded == 0) {
+ textArea.value = textToHTML(textArea.value);
+ }
+ // For this javascript
+ var CKeditorEncoded = document.createElement('input');
+ CKeditorEncoded.setAttribute('type', 'hidden');
+ CKeditorEncoded.setAttribute('name', 'CKeditorEncoded');
+ CKeditorEncoded.setAttribute('value', '1');
+ textArea.parentNode.appendChild(CKeditorEncoded);
+
+ // For fckeditor
+ var typeField = document.createElement('input');
+ typeField.setAttribute('type', 'hidden');
+ typeField.setAttribute('name', textArea.name + 'Type');
+ typeField.setAttribute('value', 'text/html');
+ textArea.parentNode.appendChild(typeField);
+
+
+ CKEDITOR.replace(textArea.name,{width:'100%',height:<% RT->Config->Get('MessageBoxRichTextHeight') |n,j%>});
+ CKEDITOR.basePath = <%RT->Config->Get('WebPath')|n,j%>+"/NoAuth/RichText/";
+
+ jQuery("#" + textArea.name + "___Frame").addClass("richtext-editor");
+ }
+ }
+};
+
+function toggle_addprincipal_validity(input, good, title) {
+ if (good) {
+ jQuery(input).nextAll(".warning").hide();
+ jQuery("#acl-AddPrincipal input[type=checkbox]").removeAttr("disabled");
+ } else {
+ jQuery(input).nextAll(".warning").css("display", "block");
+ jQuery("#acl-AddPrincipal input[type=checkbox]").attr("disabled", "disabled");
+ }
+
+ if (title == null)
+ title = jQuery(input).val();
+
+ update_addprincipal_title( title );
+}
+
+function update_addprincipal_title(title) {
+ var h3 = jQuery("#acl-AddPrincipal h3");
+ h3.html( h3.text().replace(/: .*$/,'') + ": " + title );
+}
+
+// when a value is selected from the autocompleter
+function addprincipal_onselect(ev, ui) {
+ // pass the item's value along as the title since the input's value
+ // isn't actually updated yet
+ toggle_addprincipal_validity(this, true, ui.item.value);
+}
+
+// when the input is actually changed, through typing or autocomplete
+function addprincipal_onchange(ev, ui) {
+ // if we have a ui.item, then they selected from autocomplete and it's good
+ if (!ui.item) {
+ var input = jQuery(this);
+ // Check using the same autocomplete source if the value typed would
+ // have been autocompleted and is therefore valid
+ jQuery.ajax({
+ url: input.autocomplete("option", "source"),
+ data: {
+ op: "=",
+ term: input.val()
+ },
+ dataType: "json",
+ success: function(data) {
+ if (data)
+ toggle_addprincipal_validity(input, data.length ? true : false );
+ else
+ toggle_addprincipal_validity(input, true);
}
});
+ } else {
+ toggle_addprincipal_validity(this, true);
}
}
+
+
+function escapeCssSelector(str) {
+ return str.replace(/([^A-Za-z0-9_-])/g,'\\$1');
+}
diff --git a/rt/share/html/NoAuth/rss/dhandler b/rt/share/html/NoAuth/rss/dhandler
index 8356d027a..1c64b9a84 100644
--- a/rt/share/html/NoAuth/rss/dhandler
+++ b/rt/share/html/NoAuth/rss/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Prefs/Calendar.html b/rt/share/html/Prefs/Calendar.html
index 5fbdd2717..57eb007f6 100644
--- a/rt/share/html/Prefs/Calendar.html
+++ b/rt/share/html/Prefs/Calendar.html
@@ -6,10 +6,7 @@ $HiddenField => undef
</%args>
<& /Elements/Header, Title => $title &>
-<& /User/Elements/Tabs,
- current_tab => 'Prefs/Calendar.html',
- Title => $title
-&>
+<& /Elements/Tabs &>
<&| /Widgets/TitleBox, title => loc('ICal Feeds (ics)') &>
@@ -50,7 +47,7 @@ Builder")%></a>.</p>
<& /Prefs/Elements/CalendarFeed &>
-% # only allow this part if
+% # only allow this part if
% if ($AllowSearch) {
% my $search_count;
@@ -95,7 +92,7 @@ href="<%$RT::WebPath . '/Search/Build.html'%>">the Query Builder</a>
</&>
<%INIT>
-use Digest::SHA1;
+use Digest::SHA 'sha1_base64';
use RT::SavedSearches;
my $title = loc("Calendar Prefs");
@@ -107,14 +104,14 @@ $AllowSearch = 1
my $object;
-if ($HiddenField eq 'Private') {
+if ($HiddenField && $HiddenField eq 'Private') {
$object = $session{CurrentUser}->UserObj;
-} elsif ($AllowSearch and my ($SearchId) = $HiddenField =~ m/SavedSearch\-(\d+)/) {
+} elsif ($AllowSearch and $HiddenField and my ($SearchId) = $HiddenField =~ m/SavedSearch\-(\d+)/) {
$object = $session{CurrentUser}->Attributes->WithId($SearchId);
}
if (defined $ChangeURL) {
- my @args = $object->SetAttribute(Name => 'ICalURL', Content => Digest::SHA1::sha1_base64(time));
+ my @args = $object->SetAttribute(Name => 'ICalURL', Content => sha1_base64(time));
} elsif (defined $ResetURL) {
my @args = $object->DeleteAttribute('ICalURL');
}
diff --git a/rt/share/html/Prefs/MyRT.html b/rt/share/html/Prefs/MyRT.html
index 3bcea53f2..55e5cc9d7 100644
--- a/rt/share/html/Prefs/MyRT.html
+++ b/rt/share/html/Prefs/MyRT.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,19 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Prefs/Elements/Tabs,
- current_tab => 'Prefs/MyRT.html',
- Title => $title,
- Searches => \@sys_searches
+<& /Elements/Tabs
&>
<& /Elements/ListActions, actions => \@results &>
<& /Widgets/SelectionBox:header, nojs => 1 &>
-<form method="post" action="MyRT.html">
-<input type="hidden" name="Reset" value="1" />
-<input type="submit" class="button" value="<% loc('Reset to default') %>">
-</form>
<br />
@@ -78,6 +71,13 @@
<input type="submit" class="button" name="UpdateSummaryRows" value="<% loc('Save') %>" />
</form>
</&>
+<&|/Widgets/TitleBox, title => loc("Reset RT at a glance") &>
+<form method="post" action="MyRT.html">
+<input type="hidden" name="Reset" value="1" />
+<input type="submit" class="button" value="<% loc('Reset to default') %>">
+</form>
+</&>
+
<%INIT>
my @results;
@@ -115,7 +115,7 @@ my @items = map ["component-$_", $_], grep !$seen{$_}++, @{RT->Config->Get('Home
my $sys = RT::System->new($session{'CurrentUser'});
my @objs = ($sys);
-push @objs, RT::SavedSearches->new( $session{CurrentUser} )->_PrivacyObjects
+push @objs, RT::SavedSearch->new( $session{CurrentUser} )->ObjectsForLoading
if $session{'CurrentUser'}->HasRight( Right => 'LoadSavedSearch',
Object => $RT::System );
diff --git a/rt/share/html/Prefs/Other.html b/rt/share/html/Prefs/Other.html
index e0b158153..9f7e04a9c 100644
--- a/rt/share/html/Prefs/Other.html
+++ b/rt/share/html/Prefs/Other.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,13 +46,10 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /User/Elements/Tabs,
- current_tab => 'Prefs/Other.html',
- Title => $title,
-&>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="Other.html">
+<form method="post" action="Other.html" name="ModifyPreferences" id="ModifyPreferences">
% foreach my $section( RT->Config->Sections ) {
<&|/Widgets/TitleBox, title => loc( $section ) &>
% foreach my $option( RT->Config->Options( Section => $section ) ) {
@@ -84,9 +81,10 @@ my $title = loc("Settings");
my $UserObj = $session{'CurrentUser'}->UserObj;
my $preferences = $UserObj->Preferences( $RT::System );
-if ((defined $PreferredKey) && $PreferredKey ne $UserObj->FirstAttribute('PreferredKey')) {
+if (defined($PreferredKey) and (not $UserObj->FirstAttribute('PreferredKey')
+ or $PreferredKey ne $UserObj->FirstAttribute('PreferredKey')->Content)) {
my ($code, $msg) = $UserObj->SetAttribute(Name => 'PreferredKey', Content => $PreferredKey);
- push @results, loc('Preferred Key: [_1]', loc_fuzzy($msg));
+ push @results, loc('Preferred Key: [_1]', $msg) unless $code;
}
if ( $Update ) {
diff --git a/rt/share/html/Prefs/Quicksearch.html b/rt/share/html/Prefs/Quicksearch.html
index 93d0a5f23..7142450cb 100644
--- a/rt/share/html/Prefs/Quicksearch.html
+++ b/rt/share/html/Prefs/Quicksearch.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Prefs/Elements/Tabs,
- current_tab => 'Prefs/MyRT.html',
- current_subtab => 'Prefs/Quicksearch.html',
- Title => $title
+<& /Elements/Tabs
&>
<& /Elements/ListActions, actions => \@actions &>
<h1><&|/l&>Select queues to be displayed on the "RT at a glance" page</&></h1>
@@ -60,7 +57,7 @@
% unless ($unwanted->{$queue->Name}) {
checked="checked"
% }
-/><%$queue->Name%>: <%$queue->Description%></li>
+/><%$queue->Name%><% $queue->Description ? ': '.$queue->Description : '' %></li>
% }
</ul>
<& /Elements/Submit, Caption => loc("Save Changes"), Label => loc('Save'), Name => 'Save'&>
@@ -70,7 +67,6 @@ checked="checked"
<%INIT>
my @actions;
my $title = loc("Customize").' '.loc("Quick search");
-# The queue list is not loaded from cache, so it might be a bit inconsistent
my $user = $session{'CurrentUser'}->UserObj;
my $unwanted = $user->Preferences('QuickSearch', {});
my $Queues = RT::Queues->new($session{'CurrentUser'});
@@ -89,9 +85,6 @@ if ($ARGS{'Save'}) {
my ($ok, $msg) = $user->SetPreferences('QuickSearch', $unwanted);
push @actions, $ok ? loc('Preferences saved.') : $msg;
-
- # Let QueueSummary rebuild the cache
- delete $session{'quick_search_queues'};
}
</%INIT>
diff --git a/rt/share/html/Prefs/Search.html b/rt/share/html/Prefs/Search.html
index 7e96ebc65..42aa16bbf 100644
--- a/rt/share/html/Prefs/Search.html
+++ b/rt/share/html/Prefs/Search.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Prefs/Elements/Tabs,
- current_tab => 'Prefs/MyRT.html',
-# current_subtab => 'Prefs/Search.html?name='.$m->comp('/Elements/QueryString', name => $ARGS{name}),
- current_subtab => 'Prefs/Search.html?name='.$ARGS{name},
- Title => $title
+<& /Elements/Tabs
&>
<& /Elements/ListActions, actions => \@actions &>
% if ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'SuperUser')) {
@@ -99,7 +95,7 @@ $ARGS{'OrderBy'} = join '|', grep defined && /\S/, (ref $ARGS{'OrderBy'})? @{$AR
my ( $AvailableColumns, $CurrentFormat );
( $ARGS{Format}, $AvailableColumns, $CurrentFormat ) = $m->comp(
'/Search/Elements/BuildFormatString',
- cfqueues => {}, %ARGS
+ %ARGS
);
if ($ARGS{'Save'}) {
diff --git a/rt/share/html/Prefs/SearchOptions.html b/rt/share/html/Prefs/SearchOptions.html
index aeb27863f..de88b5e2e 100644
--- a/rt/share/html/Prefs/SearchOptions.html
+++ b/rt/share/html/Prefs/SearchOptions.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("Ticketing Search Preferences") &>
-<& /User/Elements/Tabs,
- current_tab => "Prefs/SearchOptions.html",
- Title => loc("Search Preferences")
-&>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@actions &>
<form method="post" action="SearchOptions.html">
@@ -67,7 +64,7 @@
<%INIT>
my @actions;
-# {{{ If we're saving search preferences, do that now
+# If we're saving search preferences, do that now
$Order = join '|', grep defined && /\S/, (ref $Order)? @{$Order}: $Order;
$OrderBy = join '|', grep defined && /\S/, (ref $OrderBy)? @{$OrderBy}: $OrderBy;
@@ -84,7 +81,6 @@ if ($ARGS{'SavePreferences'}) {
push @actions, $ok ? loc("Preferences saved.") : $msg;
}
-# }}}
# Read from user preferences
my $prefs = $session{'CurrentUser'}->UserObj->Preferences("SearchDisplay") || {};
diff --git a/rt/share/html/REST/1.0/Forms/attachment/default b/rt/share/html/REST/1.0/Forms/attachment/default
index b53f6fdc9..3f9bd1b63 100644
--- a/rt/share/html/REST/1.0/Forms/attachment/default
+++ b/rt/share/html/REST/1.0/Forms/attachment/default
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@ $args => undef
<%INIT>
my @data;
my ($c, $o, $k, $e) = ("", [], {}, "");
-my $attachment = new RT::Attachment $session{CurrentUser};
+my $attachment = RT::Attachment->new($session{CurrentUser});
$attachment->Load($id);
unless ( $attachment->Id ) {
diff --git a/rt/share/html/REST/1.0/Forms/group/customfields b/rt/share/html/REST/1.0/Forms/group/customfields
index b7b679274..70b50cceb 100644
--- a/rt/share/html/REST/1.0/Forms/group/customfields
+++ b/rt/share/html/REST/1.0/Forms/group/customfields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@ $changes => {}
<%perl>
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
-my $group = new RT::Group $session{CurrentUser};
+my $group = RT::Group->new($session{CurrentUser});
$group->Load($id);
if (!$group->Id) {
diff --git a/rt/share/html/REST/1.0/Forms/group/default b/rt/share/html/REST/1.0/Forms/group/default
index 22ecf5840..7686f2176 100644
--- a/rt/share/html/REST/1.0/Forms/group/default
+++ b/rt/share/html/REST/1.0/Forms/group/default
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -57,7 +57,7 @@ $changes => {}
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
my %data = %$changes;
-my $group = new RT::Group $session{CurrentUser};
+my $group = RT::Group->new($session{CurrentUser});
my @fields = qw(Name Description);
my %fields = map { lc $_ => $_ } @fields;
diff --git a/rt/share/html/REST/1.0/Forms/group/ns b/rt/share/html/REST/1.0/Forms/group/ns
index ec85faeb7..2e15040c4 100644
--- a/rt/share/html/REST/1.0/Forms/group/ns
+++ b/rt/share/html/REST/1.0/Forms/group/ns
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,7 +53,7 @@ $id
<%perl>
use RT::Groups;
-my $groups = new RT::Groups $session{CurrentUser};
+my $groups = RT::Groups->new($session{CurrentUser});
$groups->Limit(FIELD => 'Name', OPERATOR => '=', VALUE => $id);
if ($groups->Count == 0) {
return (0, "No group named $id exists.");
diff --git a/rt/share/html/REST/1.0/Forms/queue/customfields b/rt/share/html/REST/1.0/Forms/queue/customfields
index 87f925c34..18b1222d2 100644
--- a/rt/share/html/REST/1.0/Forms/queue/customfields
+++ b/rt/share/html/REST/1.0/Forms/queue/customfields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@ $changes => {}
<%perl>
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
-my $queue = new RT::Queue $session{CurrentUser};
+my $queue = RT::Queue->new($session{CurrentUser});
$queue->Load($id);
if (!$queue->Id) {
diff --git a/rt/share/html/REST/1.0/Forms/queue/default b/rt/share/html/REST/1.0/Forms/queue/default
index d42fef9c3..e6d50f311 100755
--- a/rt/share/html/REST/1.0/Forms/queue/default
+++ b/rt/share/html/REST/1.0/Forms/queue/default
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -57,7 +57,7 @@ $changes => {}
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
my %data = %$changes;
-my $queue = new RT::Queue $session{CurrentUser};
+my $queue = RT::Queue->new($session{CurrentUser});
my @fields = qw(Name Description CorrespondAddress CommentAddress
InitialPriority FinalPriority DefaultDueIn);
my %fields = map { lc $_ => $_ } @fields;
diff --git a/rt/share/html/REST/1.0/Forms/queue/ns b/rt/share/html/REST/1.0/Forms/queue/ns
index a46431b16..255af4c0b 100755
--- a/rt/share/html/REST/1.0/Forms/queue/ns
+++ b/rt/share/html/REST/1.0/Forms/queue/ns
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,7 +53,7 @@ $id
<%perl>
use RT::Queues;
-my $queues = new RT::Queues $session{CurrentUser};
+my $queues = RT::Queues->new($session{CurrentUser});
$queues->Limit(FIELD => 'Name', OPERATOR => '=', VALUE => $id);
if ($queues->Count == 0) {
return (0, "No queue named $id exists.");
diff --git a/rt/share/html/REST/1.0/Forms/queue/ticketcustomfields b/rt/share/html/REST/1.0/Forms/queue/ticketcustomfields
index 61ca19da8..abbfa8ea8 100644
--- a/rt/share/html/REST/1.0/Forms/queue/ticketcustomfields
+++ b/rt/share/html/REST/1.0/Forms/queue/ticketcustomfields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@ $changes => {}
<%perl>
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
-my $queue = new RT::Queue $session{CurrentUser};
+my $queue = RT::Queue->new($session{CurrentUser});
$queue->Load($id);
if (!$queue->Id) {
@@ -71,7 +71,7 @@ if (%$changes) {
my @data;
push @data, [ id => "queue/" . $queue->Id ];
-my $qcfs = RT::CustomFields->new($session{CurrentUser});
+my $qcfs = RT::CustomFields->new($session{CurrentUser});;
$qcfs->LimitToGlobalOrQueue($id);
while ( my $qcf = $qcfs->Next() ) {
if ( $format eq "l" ) {
diff --git a/rt/share/html/REST/1.0/Forms/ticket/attachments b/rt/share/html/REST/1.0/Forms/ticket/attachments
index ac141615d..43b8ed85a 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/attachments
+++ b/rt/share/html/REST/1.0/Forms/ticket/attachments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@ $args => undef
<%INIT>
my @data;
my ($c, $o, $k, $e) = ("", [], {}, "");
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
$ticket->Load($id);
unless ($ticket->Id) {
@@ -76,7 +76,7 @@ if ($aid) {
unless ($aid =~ /^\d+$/) {
return [ "# Invalid attachment id: $aid", [], {}, 1 ];
}
- my $attachment = new RT::Attachment $session{CurrentUser};
+ my $attachment = RT::Attachment->new($session{CurrentUser});
$attachment->Load($aid);
unless ($attachment->Id eq $aid) {
return [ "# Invalid attachment id: $aid", [], {}, 1 ];
@@ -118,7 +118,8 @@ else {
my $size = length($a->Content || '');
if ($size > 1024) { $size = int($size/102.4)/10 . "k" }
else { $size .= "b" }
- push @attachments, $a->Id.": ".($a->Filename || '(Unnamed)')." (".$a->ContentType . " / ".$size.")";
+ my $name = (defined $a->Filename and length $a->Filename) ? $a->Filename : "(Unnamed)";
+ push @attachments, $a->Id.": $name (".$a->ContentType . " / $size)";
}
}
diff --git a/rt/share/html/REST/1.0/Forms/ticket/comment b/rt/share/html/REST/1.0/Forms/ticket/comment
index c8d548adb..35b543d9c 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/comment
+++ b/rt/share/html/REST/1.0/Forms/ticket/comment
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -60,7 +60,7 @@ use File::Temp qw(tempfile);
$RT::Logger->debug("Got ticket id=$id for comment");
$RT::Logger->debug("Got args @{[keys(%changes)]}.");
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my ($c, $o, $k, $e) = ("", [], {}, 0);
# http://.../REST/1.0/ticket/1/comment
diff --git a/rt/share/html/REST/1.0/Forms/ticket/default b/rt/share/html/REST/1.0/Forms/ticket/default
index 76635c85a..9a2212b55 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/default
+++ b/rt/share/html/REST/1.0/Forms/ticket/default
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -62,7 +62,7 @@ my $cf_spec = RT::Interface::REST->custom_field_spec(1);
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
my %data = %$changes;
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my @dates = qw(Created Starts Started Due Resolved Told LastUpdated);
my @people = qw(Requestors Cc AdminCc);
my @create = qw(Queue Requestor Subject Cc AdminCc Owner Status Priority
@@ -81,20 +81,27 @@ if ($id ne 'new') {
if (!$ticket->Id) {
return [ "# Ticket $id does not exist.", [], {}, 1 ];
}
- elsif (!$ticket->CurrentUserHasRight('ShowTicket') ||
- (%data && !$ticket->CurrentUserHasRight('ModifyTicket')))
- {
- my $act = %data ? "modify" : "display";
- return [ "# You are not allowed to $act ticket $id.", [], {}, 1 ];
+ elsif ( %data ) {
+ if ( $data{status} && $data{status} eq 'deleted' && ! grep { $_ ne 'id' && $_ ne 'status' } keys %data ) {
+ if ( !$ticket->CurrentUserHasRight('DeleteTicket') ) {
+ return [ "# You are not allowed to delete ticket $id.", [], {}, 1 ];
+ }
+ }
+ elsif ( !$ticket->CurrentUserHasRight('ModifyTicket') ) {
+ return [ "# You are not allowed to modify ticket $id.", [], {}, 1 ];
+ }
+ }
+ elsif (!$ticket->CurrentUserHasRight('ShowTicket')) {
+ return [ "# You are not allowed to display ticket $id.", [], {}, 1 ];
}
}
else {
if (!keys(%data)) {
# GET ticket/new: Return a suitable default form.
# We get defaults from queue/1 (XXX: What if it isn't there?).
- my $due = new RT::Date $session{CurrentUser};
- my $queue = new RT::Queue $session{CurrentUser};
- my $starts = new RT::Date $session{CurrentUser};
+ my $due = RT::Date->new($session{CurrentUser});
+ my $queue = RT::Queue->new($session{CurrentUser});
+ my $starts = RT::Date->new($session{CurrentUser});
$queue->Load(1);
$due->SetToNow;
$due->AddDays($queue->DefaultDueIn) if $queue->DefaultDueIn;
@@ -132,7 +139,7 @@ else {
foreach my $k (keys %data) {
# flexibly parse any dates
if ($dates{lc $k}) {
- my $time = new RT::Date $session{CurrentUser};
+ my $time = RT::Date->new($session{CurrentUser});
$time->Set(Format => 'unknown', Value => $data{$k});
$data{$k} = $time->ISO;
}
@@ -142,10 +149,16 @@ else {
}
# Set custom field
elsif ($k =~ /^$cf_spec/) {
- my $cf = RT::CustomField->new( $RT::SystemUser );
- my $cfk = $1 || $2;
- unless($cf->LoadByName( Name => $cfk )) {
- push @comments, "# Invalid custom field name ($cfk)";
+ my $key = $1 || $2;
+
+ my $cf = RT::CustomField->new( $session{CurrentUser} );
+ $cf->LoadByName( Name => $key, Queue => $data{Queue} || $v{Queue} );
+ unless ( $cf->id ) {
+ $cf->LoadByName( Name => $key, Queue => 0 );
+ }
+
+ if (not $cf->id) {
+ push @comments, "# Invalid custom field name ($key)";
delete $data{$k};
next;
}
@@ -205,14 +218,14 @@ if (!keys(%data)) {
push @data, [ $key => [ $ticket->$key->MemberEmailAddresses ] ];
}
- $time = new RT::Date ($session{CurrentUser});
+ $time = RT::Date->new ($session{CurrentUser});
foreach $key (@dates) {
next unless (!%$fields || (exists $fields->{lc $key}));
$time->Set(Format => 'sql', Value => $ticket->$key);
push @data, [ $key => $time->AsString ];
}
- $time = new RT::Date ($session{CurrentUser});
+ $time = RT::Date->new ($session{CurrentUser});
foreach $key (qw(TimeEstimated TimeWorked TimeLeft)) {
next unless (!%$fields || (exists $fields->{lc $key}));
$val = $ticket->$key || 0;
@@ -280,7 +293,7 @@ else {
$key = $simple{$key};
$set = "Set$key";
- next if (($val eq $ticket->$key)|| ($ticket->$key =~ /^\d+$/ && $val == $ticket->$key));
+ next if (($val eq ($ticket->$key||''))|| ($ticket->$key =~ /^\d+$/ && $val =~ /^\d+$/ && $val == $ticket->$key));
($n, $s) = $ticket->$set("$val");
}
elsif (exists $dates{$key}) {
@@ -295,7 +308,7 @@ else {
$set = "Set$key";
- my $time = new RT::Date $session{CurrentUser};
+ my $time = RT::Date->new($session{CurrentUser});
$time->Set(Format => 'sql', Value => $ticket->$key);
next if ($val =~ /^not set$/i || $val eq $time->AsString);
@@ -341,9 +354,15 @@ else {
}
# Set custom field
elsif ($key =~ /^$cf_spec/) {
- my $cf = RT::CustomField->new( $RT::SystemUser );
$key = $1 || $2;
- if (not $cf->LoadByName( Name => $key )) {
+
+ my $cf = RT::CustomField->new( $session{CurrentUser} );
+ $cf->LoadByName( Name => $key, Queue => $ticket->Queue );
+ unless ( $cf->id ) {
+ $cf->LoadByName( Name => $key, Queue => 0 );
+ }
+
+ if (not $cf->id) {
$n = 0;
$s = "Unknown custom field.";
}
diff --git a/rt/share/html/REST/1.0/Forms/ticket/history b/rt/share/html/REST/1.0/Forms/ticket/history
index c2aa35a8e..8b6e01722 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/history
+++ b/rt/share/html/REST/1.0/Forms/ticket/history
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@ $format => undef
$fields => undef
</%ARGS>
<%INIT>
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my ($c, $o, $k, $e) = ("", [], {}, "");
$ticket->Load($id);
@@ -100,7 +100,7 @@ if ($type) {
if ($tid) {
my @data;
- my $t = new RT::Transaction $session{CurrentUser};
+ my $t = RT::Transaction->new($session{CurrentUser});
# this paragraph limits the transaction ID query to transactions on this ticket.
# Otherwise you can query any transaction from any ticket, which makes no sense.
@@ -137,7 +137,7 @@ if ($tid) {
if (!%$fields || exists $fields->{lc 'Content'}) {
- my $creator = new RT::User $session{CurrentUser};
+ my $creator = RT::User->new($session{CurrentUser});
$creator->Load($t->Creator);
push @data, [ Creator => $creator->Name ];
}
@@ -151,7 +151,8 @@ if ($tid) {
my $size = length($a->Content||'');
if ($size > 1024) { $size = int($size/102.4)/10 . "k" }
else { $size .= "b" }
- $attachlist .= "\n" . $a->Id.": ".($a->Filename || "untitled")." (".$size.")";
+ my $name = (defined $a->Filename and length $a->Filename) ? $a->Filename : "untitled";
+ $attachlist .= "\n" . $a->Id.": $name ($size)";
}
push @data, [Attachments => $attachlist];
diff --git a/rt/share/html/REST/1.0/Forms/ticket/links b/rt/share/html/REST/1.0/Forms/ticket/links
index fb9ee8fe1..bf4f2575c 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/links
+++ b/rt/share/html/REST/1.0/Forms/ticket/links
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@ $changes => undef
</%ARGS>
<%INIT>
my @data;
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
$ticket->Load($id);
if (!$ticket->Id) {
@@ -96,11 +96,12 @@ if ($changes) {
my %new;
foreach my $nkey (@{vsplit($val)}) {
if ($nkey =~ /^\d+$/) {
- my $uri = new RT::URI $session{CurrentUser};
- my $tick = new RT::Ticket $session{CurrentUser};
+ my $uri = RT::URI->new($session{CurrentUser});
+ my $tick = RT::Ticket->new($session{CurrentUser});
$tick->Load($nkey);
if ($tick->Id) {
- $nkey = $uri->FromObject($tick);
+ $uri->FromObject($tick);
+ $nkey = $uri->URI;
}
else {
$n = 0;
diff --git a/rt/share/html/REST/1.0/Forms/ticket/merge b/rt/share/html/REST/1.0/Forms/ticket/merge
index 360ddd702..a751dc558 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/merge
+++ b/rt/share/html/REST/1.0/Forms/ticket/merge
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,8 +56,8 @@ use RT::Interface::REST;
my $into = $args;
-my $ticket = new RT::Ticket $session{CurrentUser};
-my $ticket_into = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
+my $ticket_into = RT::Ticket->new($session{CurrentUser});
my ($c, $o, $k, $e) = ("", [], {}, 0);
# http://.../REST/1.0/ticket/1/merge/6 (merges ticket 1 into ticket 6)
diff --git a/rt/share/html/REST/1.0/Forms/ticket/take b/rt/share/html/REST/1.0/Forms/ticket/take
index d0bf13e3a..503ba55f0 100755
--- a/rt/share/html/REST/1.0/Forms/ticket/take
+++ b/rt/share/html/REST/1.0/Forms/ticket/take
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,7 +54,7 @@ $id
<%INIT>
use RT::Interface::REST;
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my ($c, $o, $k, $e) = ("", [], {}, 0);
# http://.../REST/1.0/ticket/1/take
diff --git a/rt/share/html/REST/1.0/Forms/transaction/default b/rt/share/html/REST/1.0/Forms/transaction/default
index 46488d23a..2e45f6707 100644
--- a/rt/share/html/REST/1.0/Forms/transaction/default
+++ b/rt/share/html/REST/1.0/Forms/transaction/default
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,23 +49,20 @@
%#
<%ARGS>
$id
-$args => undef
$format => undef
$fields => undef
</%ARGS>
<%INIT>
-my $trans = new RT::Transactions $session{CurrentUser};
+my $trans = RT::Transactions->new($session{CurrentUser});
my ($c, $o, $k, $e) = ("", [], {} , "");
-chomp $args;
-my @arglist = split('/', $args);
my $tid = $id;
$trans->Limit(FIELD => 'Id', OPERATOR => '=', VALUE => $tid);
if ($tid) {
my @data;
- my $t = new RT::Transaction $session{CurrentUser};
+ my $t = RT::Transaction->new($session{CurrentUser});
$t->Load($tid);
if ($format eq "l") {
push @data, [ id => $t->Id ];
@@ -89,7 +86,7 @@ if ($tid) {
if (!%$fields || exists $fields->{lc 'Content'});
if (!%$fields || exists $fields->{lc 'Content'}) {
- my $creator = new RT::User $session{CurrentUser};
+ my $creator = RT::User->new($session{CurrentUser});
$creator->Load($t->Creator);
push @data, [ Creator => $creator->Name ];
}
@@ -107,7 +104,8 @@ if ($tid) {
else {
$size .= "b";
}
- $attachlist .= "\n" . $a->Id.": ".($a->Filename || "untitled")." (".$size.")";
+ my $name = (defined $a->Filename and length $a->Filename) ? $a->Filename : "untitled";
+ $attachlist .= "\n" . $a->Id.": $name ($size)";
}
push @data, [Attachments => $attachlist];
}
diff --git a/rt/share/html/REST/1.0/Forms/user/default b/rt/share/html/REST/1.0/Forms/user/default
index 908eab208..a5786bab3 100755
--- a/rt/share/html/REST/1.0/Forms/user/default
+++ b/rt/share/html/REST/1.0/Forms/user/default
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@ $changes => {}
my @comments;
my ($c, $o, $k, $e) = ("", [], {}, 0);
my %data = %$changes;
-my $user = new RT::User $session{CurrentUser};
+my $user = RT::User->new($session{CurrentUser});
my @fields = qw(RealName NickName Gecos Organization Address1 Address2 City
State Zip Country HomePhone WorkPhone MobilePhone PagerPhone
FreeformContactInfo Comments Signature Lang EmailEncoding
diff --git a/rt/share/html/REST/1.0/Forms/user/ns b/rt/share/html/REST/1.0/Forms/user/ns
index 16c8902eb..0aca5de4d 100755
--- a/rt/share/html/REST/1.0/Forms/user/ns
+++ b/rt/share/html/REST/1.0/Forms/user/ns
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@ use RT::Users;
my $field = "Name";
$field = "EmailAddress" if $id =~ /\@/;
-my $users = new RT::Users $session{CurrentUser};
+my $users = RT::Users->new($session{CurrentUser});
$users->Limit(FIELD => $field, OPERATOR => '=', VALUE => $id);
if ($users->Count == 0) {
return (0, "No user named $id exists.");
diff --git a/rt/share/html/REST/1.0/NoAuth/mail-gateway b/rt/share/html/REST/1.0/NoAuth/mail-gateway
index a34536861..27c2ac6c1 100755
--- a/rt/share/html/REST/1.0/NoAuth/mail-gateway
+++ b/rt/share/html/REST/1.0/NoAuth/mail-gateway
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/REST/1.0/autohandler b/rt/share/html/REST/1.0/autohandler
index 6bc219789..ccca11235 100755
--- a/rt/share/html/REST/1.0/autohandler
+++ b/rt/share/html/REST/1.0/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/REST/1.0/dhandler b/rt/share/html/REST/1.0/dhandler
index a7400ddbd..a6fc89724 100755
--- a/rt/share/html/REST/1.0/dhandler
+++ b/rt/share/html/REST/1.0/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/REST/1.0/logout b/rt/share/html/REST/1.0/logout
index 2e59b1dca..660c12337 100755
--- a/rt/share/html/REST/1.0/logout
+++ b/rt/share/html/REST/1.0/logout
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/REST/1.0/search/dhandler b/rt/share/html/REST/1.0/search/dhandler
index 70b799946..e1ddb9b13 100755
--- a/rt/share/html/REST/1.0/search/dhandler
+++ b/rt/share/html/REST/1.0/search/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/REST/1.0/search/ticket b/rt/share/html/REST/1.0/search/ticket
index bd03caf9f..16c6c6a0d 100755
--- a/rt/share/html/REST/1.0/search/ticket
+++ b/rt/share/html/REST/1.0/search/ticket
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -57,7 +57,7 @@ $fields => undef
use RT::Interface::REST;
my $output = "";
my $status = "200 Ok";
-my $tickets = new RT::Tickets $session{CurrentUser};
+my $tickets = RT::Tickets->new($session{CurrentUser});
# Parse and validate any field specifications.
my $field = RT::Interface::REST->field_spec;
@@ -88,24 +88,29 @@ my ($n, $s);
eval {
($n, $s) = $tickets->FromSQL($query);
};
-my $sortstring = "";
+
if ($orderby) {
- $sortstring = 'FIELD => ';
+ my %args;
+
my $order = substr($orderby, 0, 1);
if ($order eq '+' || $order eq '-') {
- $sortstring .= 'substr($orderby, 1)';
- if ($order eq '+') {
- $sortstring .= ", ORDER => 'ASC'";
- } elsif ($order eq '-') {
- $sortstring .= ", ORDER => 'DESC'";
- }
- } else {
- $sortstring .= '$orderby';
+ # remove the +/- sorting sigil
+ substr($orderby, 0, 1, '');
+
+ if ($order eq '+') {
+ $args{ORDER} = 'ASC';
+ }
+ elsif ($order eq '-') {
+ $args{ORDER} = 'DESC';
+ }
}
- my $foo = 'FIELD => ';
- $foo .= '$orderby';
- $tickets->OrderBy(eval $sortstring);
+
+ $tickets->OrderBy(
+ FIELD => $orderby,
+ %args,
+ );
}
+
if ($@ || $n == 0) {
$s ||= $@;
$status = "400 Bad request";
@@ -132,10 +137,11 @@ while (my $ticket = $tickets->Next) {
}
# Cut off the annoying ticket/ before the id;
$key_values->{'id'} = $id;
- $output .= join("\t", map {$key_values->{$_}} @$order)."\n";
-
+ $output .= join("\t", map { ref $key_values->{$_} eq 'ARRAY' ?
+join( ', ', @{$key_values->{$_}} ) : $key_values->{$_} } @$order)."\n";
+
- } else {
+ } else {
$output .= $ticket->Id . ": ". $ticket->Subject . "\n";
}
}
diff --git a/rt/share/html/REST/1.0/ticket/comment b/rt/share/html/REST/1.0/ticket/comment
index c0a3c4747..768a4688b 100755
--- a/rt/share/html/REST/1.0/ticket/comment
+++ b/rt/share/html/REST/1.0/ticket/comment
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@ use LWP::MediaTypes;
use RT::Interface::REST;
use File::Temp qw(tempfile);
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my $object = $r->path_info;
my $status = "200 Ok";
my $output;
diff --git a/rt/share/html/REST/1.0/ticket/link b/rt/share/html/REST/1.0/ticket/link
index 4f4ff25a9..8d3345fa0 100755
--- a/rt/share/html/REST/1.0/ticket/link
+++ b/rt/share/html/REST/1.0/ticket/link
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -58,7 +58,7 @@ use RT::Interface::REST;
my $output;
my $status = "200 Ok";
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my $object = $r->path_info;
my @fields = qw(DependsOn DependedOnBy RefersTo ReferredToBy HasMember MemberOf);
@@ -81,10 +81,9 @@ if ($id && $object && $id != $object) {
goto OUTPUT;
}
$id ||= $object;
-unless ($id =~ /^\d+$/ && $to =~ /^\d+$/) {
- my $bad = ($id !~ /^\d+$/) ? $id : $to;
+unless ($id =~ /^\d+$/) {
$output = $r->path_info. "\n";
- $output .= "Invalid ticket id: '$bad'.\n";
+ $output .= "Invalid ticket id: '$id'.\n";
$status = "400 Bad Request";
goto OUTPUT;
}
diff --git a/rt/share/html/REST/1.0/ticket/merge b/rt/share/html/REST/1.0/ticket/merge
index fe8fdad55..c7507a40b 100755
--- a/rt/share/html/REST/1.0/ticket/merge
+++ b/rt/share/html/REST/1.0/ticket/merge
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@ use RT::Interface::REST;
my $output;
my $status = "200 Ok";
-my $ticket = new RT::Ticket $session{CurrentUser};
+my $ticket = RT::Ticket->new($session{CurrentUser});
my $object = $r->path_info;
# http://.../REST/1.0/ticket/merge/1
diff --git a/rt/share/html/Search/Article.html b/rt/share/html/Search/Article.html
new file mode 100644
index 000000000..a50990598
--- /dev/null
+++ b/rt/share/html/Search/Article.html
@@ -0,0 +1,52 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%init>
+RT::Interface::Web::Redirect(RT->Config->Get('WebURL').
+ 'Articles/Article/Search.html?' . $m->comp( '/Elements/QueryString',
+ %ARGS, Load => 'Load', CurrentSearch => $ARGS{LoadSavedSearch} ) );
+</%init>
diff --git a/rt/share/html/Search/Build.html b/rt/share/html/Search/Build.html
index 506384c4b..b200f9050 100644
--- a/rt/share/html/Search/Build.html
+++ b/rt/share/html/Search/Build.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,7 +53,7 @@
%# Build/Edit.html (Advanced).)
%#
%# After doing some stuff with default arguments and saved searches, the ParseQuery
-%# function (which is similar to, but not the same as, _parser in RT/Tickets_Overlay_SQL)
+%# function (which is similar to, but not the same as, _parser in lib/RT/Tickets_SQL.pm)
%# converts the Query into a RT::Interface::Web::QueryBuilder::Tree. This mason file
%# then adds stuff to or modifies the tree based on the actions that had been requested
%# by clicking buttons. It then calls GetQueryAndOptionList on the tree to generate
@@ -66,15 +66,9 @@
%# action does quote it (this breaks SQLite).
%#
<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs,
- current_tab => "Search/Build.html?".$QueryString,
- Title => $title,
- %query,
- SavedSearchId => $saved_search{'Id'},
- SavedChartSearchId => $ARGS{SavedChartSearchId},
-&>
+<& /Elements/Tabs, %TabArgs &>
-<form method="post" action="Build.html" name="BuildQuery">
+<form method="post" action="Build.html" name="BuildQuery" id="BuildQuery">
<input type="hidden" class="hidden" name="SavedSearchId" value="<% $saved_search{'Id'} %>" />
<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $ARGS{'SavedChartSearchId'} %>" />
<input type="hidden" class="hidden" name="Query" value="<% $query{'Query'} %>" />
@@ -84,9 +78,9 @@
<div id="pick-criteria">
- <& Elements/PickCriteria, query => $query{'Query'}, cfqueues => $queues &>
-<& /Elements/Submit, Label => loc('Add these terms'), Name => 'AddClause'&>
-<& /Elements/Submit, Label => loc('Add these terms and Search'), Name => 'DoSearch'&>
+ <& Elements/PickCriteria, query => $query{'Query'}, queues => $queues &>
+<& /Elements/Submit, Label => loc('Add these terms'), SubmitId => 'AddClause', Name => 'AddClause'&>
+<& /Elements/Submit, Label => loc('Add these terms and Search'), SubmitId => 'DoSearch', Name => 'DoSearch'&>
</div>
@@ -108,8 +102,8 @@
AvailableColumns => $AvailableColumns,
CurrentFormat => $CurrentFormat,
&>
-<& /Elements/Submit, Label => loc('Update format and Search'), Name => 'DoSearch', id=>"formatbuttons"&>
</span>
+<& /Elements/Submit, Label => loc('Update format and Search'), Name => 'DoSearch', id=>"formatbuttons"&>
</form>
<%INIT>
@@ -179,14 +173,22 @@ my $tree = $ParseQuery->( $query{'Query'}, \@parse_results );
# if parsing went poorly, send them to the edit page to fix it
if ( @parse_results ) {
- return $m->comp( "Edit.html", Query => $query{'Query'}, actions => \@actions );
+ push @actions, @parse_results;
+ return $m->comp(
+ "Edit.html",
+ Query => $query{'Query'},
+ Format => $query{'Format'},
+ SavedSearchId => $saved_search{'Id'},
+ SavedChartSearchId => $ARGS{'SavedChartSearchId'},
+ actions => \@actions,
+ );
}
my @options = $tree->GetDisplayedNodes;
my @current_values = grep defined, @options[@clauses];
my @new_values = ();
-# {{{ Try to find if we're adding a clause
+# Try to find if we're adding a clause
foreach my $arg ( keys %ARGS ) {
next unless $arg =~ m/^ValueOf([\w\.]+|'CF.{.*?}')$/
&& ( ref $ARGS{$arg} eq "ARRAY"
@@ -226,14 +228,16 @@ foreach my $arg ( keys %ARGS ) {
elsif ( $op eq '!=' ) {
$op = "IS NOT";
}
-
- # This isn't "right", but...
- # It has to be this way until #5182 is fixed
- $value = "'NULL'";
}
- else {
- $value =~ s/'/\\'/g;
- $value = "'$value'" unless $value =~ /^\d+$/;
+ elsif ($value =~ /\D/) {
+ $value =~ s/(['\\])/\\$1/g;
+ $value = "'$value'";
+ }
+
+ if ($keyword =~ /^'CF\.{(.*)}'/) {
+ my $cf = $1;
+ $cf =~ s/(['\\])/\\$1/g;
+ $keyword = "'CF.{$cf}'";
}
my $clause = {
@@ -246,7 +250,6 @@ foreach my $arg ( keys %ARGS ) {
}
}
-# }}}
push @actions, $m->comp('Elements/EditQuery:Process',
%ARGS,
@@ -255,7 +258,7 @@ push @actions, $m->comp('Elements/EditQuery:Process',
New => \@new_values,
);
-# {{{ Rebuild $Query based on the additions / movements
+# Rebuild $Query based on the additions / movements
my $optionlist_arrayref;
($query{'Query'}, $optionlist_arrayref) = $tree->GetQueryAndOptionList(\@current_values);
@@ -264,25 +267,29 @@ my $optionlist = join "\n", map { qq(<option value="$_->{INDEX}" $_->{SELECTED}>
. ("&nbsp;" x (5 * $_->{DEPTH}))
. $m->interp->apply_escapes($_->{TEXT}, 'h') . qq(</option>) } @$optionlist_arrayref;
-# }}}
my $queues = $tree->GetReferencedQueues;
-# {{{ Deal with format changes
+# Deal with format changes
my ( $AvailableColumns, $CurrentFormat );
( $query{'Format'}, $AvailableColumns, $CurrentFormat ) = $m->comp(
'Elements/BuildFormatString',
%ARGS,
- cfqueues => $queues,
+ queues => $queues,
Format => $query{'Format'},
);
-# }}}
# if we're asked to save the current search, save it
push @actions, $m->comp( 'Elements/EditSearches:Save', %ARGS, Query => \%query, SavedSearch => \%saved_search);
-# {{{ Push the updates into the session so we don't loose 'em
+# Populate the "query" context with saved search data
+
+if ($ARGS{SavedSearchSave}) {
+ $query{'SavedSearchId'} = $saved_search{'Id'};
+}
+
+# Push the updates into the session so we don't lose 'em
$session{'CurrentSearchHash'} = {
%query,
@@ -291,30 +298,31 @@ $session{'CurrentSearchHash'} = {
Description => $saved_search{'Description'},
};
-# }}}
-# {{{ Show the results, if we were asked.
+# Show the results, if we were asked.
if ( $ARGS{'DoSearch'} ) {
- $m->comp( 'Results.html', %query, SavedChartSearchId => $ARGS{'SavedChartSearchId'}, );
- $m->comp( '/Elements/Footer' );
+ my $redir_query_string = $m->comp(
+ '/Elements/QueryString',
+ %query,
+ SavedChartSearchId => $ARGS{'SavedChartSearchId'},
+ SavedSearchId => $saved_search{'Id'},
+ );
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL') . 'Search/Results.html?' . $redir_query_string);
$m->abort;
}
-# }}}
-# {{{ Build a querystring for the tabs
+# Build a querystring for the tabs
-my $QueryString = '';
+my %TabArgs = ();
if ($NewQuery) {
- $QueryString = 'NewQuery=1';
+ $TabArgs{QueryString} = 'NewQuery=1';
}
elsif ( $query{'Query'} ) {
- $QueryString = $m->comp('/Elements/QueryString', %query );
+ $TabArgs{QueryArgs} = \%query;
}
-# }}}
-
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Search/Bulk.html b/rt/share/html/Search/Bulk.html
index 9f58789ab..250f6135d 100755
--- a/rt/share/html/Search/Bulk.html
+++ b/rt/share/html/Search/Bulk.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,20 +46,10 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs,
- current_tab => "Search/Bulk.html",
- Title => $title,
- Format => $ARGS{'Format'}, # we don't want the locally modified one
- Query => $Query,
- Rows => $Rows,
- OrderBy => $OrderBy,
- Order => $Order,
- SavedSearchId => $SavedSearchId,
- SavedChartSearchId => $SavedChartSearchId,
- &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="<% RT->Config->Get('WebPath') %>/Search/Bulk.html" enctype="multipart/form-data">
+<form method="post" action="<% RT->Config->Get('WebPath') %>/Search/Bulk.html" enctype="multipart/form-data" name="BulkUpdate" id="BulkUpdate">
% foreach my $var (qw(Query Format OrderBy Order Rows Page SavedChartSearchId)) {
<input type="hidden" class="hidden" name="<%$var%>" value="<%$ARGS{$var} || ''%>" />
%}
@@ -81,7 +71,7 @@
<hr />
-<& /Elements/Submit, Label => loc('Update'), CheckAll => 1, ClearAll => 1 &>
+<& /Elements/Submit, Label => loc('Update'), CheckboxNameRegex => '/^UpdateTicket\d+$/', CheckAll => 1, ClearAll => 1 &>
<br />
<&|/Widgets/TitleBox, title => $title &>
<table>
@@ -142,7 +132,7 @@
<table>
<tr><td align="right"><&|/l&>Update Type</&>:</td>
<td><select name="UpdateType">
- <option value="private" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'private' ? 'selected="selected"' : '' %> ><&|/l&>Comments (not sent to requestors)</&></option>
+ <option value="private" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'private' ? 'selected="selected"' : '' %> ><&|/l&>Comments (Not sent to requestors)</&></option>
<option value="response" <% $ARGS{UpdateType} && $ARGS{UpdateType} eq 'response' ? 'selected="selected"' : '' %>><&|/l&>Reply to requestors</&></option>
</select>
</td></tr>
@@ -159,20 +149,9 @@ size="60" value="<% $ARGS{UpdateSubject} || "" %>" /></td></tr>
&><em><% $CF->FriendlyType %></em></td>
</td></tr>
% } # end if while
-% if (exists $session{'Attachments'}) {
-<tr><td><&|/l&>Attached file</&>:</td>
-<td>
-<&|/l&>Check box to delete</&><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
-<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
-% } # end of foreach
-</td>
-</tr>
-% } # end of if
- <tr><td align="right"><&|/l&>Attach</&>:</td><td><input name="Attach" type="file" />
- <input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" />
- <input type="hidden" class="hidden" name="UpdateAttach" value="1" /></td></tr>
+<& /Ticket/Elements/AddAttachments, %ARGS &>
+
<tr><td class="labeltop"><&|/l&>Message</&>:</td><td>
%# Currently, bulk update always starts with Comment not Reply selected, so we check this unconditionally
% my $IncludeSignature = RT->Config->Get('MessageBoxIncludeSignatureOnComment');
@@ -255,17 +234,16 @@ map ( $ARGS{$_} =~ /^$/ && ( delete $ARGS{$_} ), keys %ARGS );
my (@results);
-# {{{ deal with deleting uploaded attachments
+# deal with deleting uploaded attachments
foreach my $key (keys %ARGS) {
if ($key =~ m/^DeleteAttach-(.+)$/) {
delete $session{'Attachments'}{$1};
}
$session{'Attachments'} = { %{$session{'Attachments'} || {}} };
}
-# }}}
-# {{{ store the uploaded attachment in session
-if ($ARGS{'Attach'}) { # attachment?
+# store the uploaded attachment in session
+if ( defined $ARGS{'Attach'} && length $ARGS{'Attach'} ) { # attachment?
my $attachment = MakeMIMEEntity(
AttachmentFieldName => 'Attach'
);
@@ -276,13 +254,11 @@ if ($ARGS{'Attach'}) { # attachment?
$file_path => $attachment,
};
}
-# }}}
# delete temporary storage entry to make WebUI clean
unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) {
delete $session{'Attachments'};
}
-# }}}
$Page ||= 1;
diff --git a/rt/share/html/Search/Calendar.html b/rt/share/html/Search/Calendar.html
index 9d2b6f546..8a1b79609 100644
--- a/rt/share/html/Search/Calendar.html
+++ b/rt/share/html/Search/Calendar.html
@@ -10,9 +10,8 @@ $NewQuery => 0
</%args>
<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs,
- current_tab => "Search/Calendar.html?$QueryString",
- Title => $title &>
+<& /Elements/Tabs &>
+
<&| /Widgets/TitleBox,
title => loc('Calendar for ') . $rtdate->GetMonth($Month) . " $Year" ,
title_class=> 'inverse',
@@ -195,7 +194,7 @@ my $set = DateTime::Set->from_recurrence(
next => sub { $_[0]->truncate( to => 'day' )->add( days => 1 ) }
);
-my $QueryString =
+my $QueryString =
$m->comp(
'/Elements/QueryString',
Query => $Query,
@@ -212,7 +211,7 @@ $QueryString ||= 'NewQuery=1';
my $TempFormat = "__Starts__ __Due__";
my $TempQuery = "( Status = 'new' OR Status = 'open' OR Status = 'stalled')
AND ( Owner = '" . $session{CurrentUser}->Id ."' OR Owner = 'Nobody' )
- AND ( Type = 'reminder' OR 'Type' = 'ticket' )";
+ AND ( Type = 'reminder' OR 'Type' = 'ticket' )";
if ( my $Search = RTx::Calendar::SearchDefaultCalendar($session{CurrentUser}) ) {
$TempFormat = $Search->SubValue('Format');
diff --git a/rt/share/html/Search/Chart b/rt/share/html/Search/Chart
index 7bcb8d0d9..2709eb9c2 100644
--- a/rt/share/html/Search/Chart
+++ b/rt/share/html/Search/Chart
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,7 +48,6 @@
<%args>
$Query => "id > 0"
$PrimaryGroupBy => 'Queue'
-$SecondaryGroupBy => undef
$ChartStyle => 'bars'
</%args>
<%init>
@@ -170,9 +169,8 @@ if ($chart_class eq "GD::Graph::bars") {
# refine values' colors, with both Color::Scheme's help and my own tweak
$chart->{dclrs} = [
'66cc66', 'ff6666', 'ffcc66', '663399',
- '3333cc',
- '339933', '993333', '996633', '663399',
- '33cc33', 'cc3333', 'cc9933', '6633cc'
+ '3333cc', '339933', '993333', '996633',
+ '33cc33', 'cc3333', 'cc9933', '6633cc',
];
{
diff --git a/rt/share/html/Search/Chart.html b/rt/share/html/Search/Chart.html
index 1a80ee385..070ce7cf7 100644
--- a/rt/share/html/Search/Chart.html
+++ b/rt/share/html/Search/Chart.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,12 +47,10 @@
%# END BPS TAGGED BLOCK }}}
<%args>
$PrimaryGroupBy => 'Queue'
-$SecondaryGroupBy => ''
$ChartStyle => 'bars'
$Description => undef
</%args>
<%init>
-$ARGS{SecondaryGroupBy} ||= '';
$ARGS{Query} ||= 'id > 0';
# FIXME: should be factored with RT::Report::Tickets::Label :(
@@ -74,25 +72,64 @@ my $title = loc( "Search results grouped by [_1]", $PrimaryGroupByLabel );
my $saved_search = $m->comp( '/Widgets/SavedSearch:new',
SearchType => 'Chart',
- SearchFields => [qw(Query PrimaryGroupBy SecondaryGroupBy ChartStyle)] );
+ SearchFields => [qw(Query PrimaryGroupBy ChartStyle)] );
my @actions = $m->comp( '/Widgets/SavedSearch:process', args => \%ARGS, self => $saved_search );
+my %query;
+
+{
+ if ($saved_search->{'CurrentSearch'}->{'Object'}) {
+ foreach my $search_field (@{ $saved_search->{'SearchFields'} }) {
+ $query{$search_field} = $saved_search->{'CurrentSearch'}->{'Object'}->Content->{$search_field};
+ }
+ }
+
+ my $current = $session{'CurrentSearchHash'};
+
+ my @session_fields = qw(
+ Query
+ SavedChartSearchId
+ SavedSearchDescription
+ SavedSearchLoad
+ SavedSearchLoadButton
+ SavedSearchOwner
+ );
+
+ for(@session_fields) {
+ $query{$_} = $current->{$_} unless defined $query{$_};
+ $query{$_} = $m->request_args->{$_} unless defined $query{$_};
+ }
+
+ if ($m->request_args->{'SavedSearchLoadSubmit'}) {
+ $query{'SavedChartSearchId'} = $m->request_args->{'SavedSearchLoad'};
+ }
+
+ if ($m->request_args->{'SavedSearchSave'}) {
+ $query{'SavedChartSearchId'} = $saved_search->{'SearchId'};
+ }
+
+}
+
</%init>
<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs, Title => $title, Query => $ARGS{Query},
- SavedChartSearchId => $saved_search->{SearchId} &>
+<& /Elements/Tabs, QueryArgs => \%query &>
<& /Elements/ListActions, actions => \@actions &>
<& /Search/Elements/Chart, %ARGS &>
-<br />
-<&| /Widgets/TitleBox, title => loc('Graph Properties')&>
+<div class="chart-meta">
+<div class="chart-type">
+<&| /Widgets/TitleBox, title => loc('Chart Properties')&>
<form method="get" action="<%RT->Config->Get('WebPath')%>/Search/Chart.html">
<input type="hidden" class="hidden" name="Query" value="<% $ARGS{Query} %>" />
<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $saved_search->{SearchId} || 'new' %>" />
-<&|/l, $m->scomp('Elements/SelectChartType', Name => 'ChartStyle', Default => $ChartStyle), $m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $ARGS{Query}, Default => $PrimaryGroupBy)
-&>[_1] chart by [_2]</&><input type="submit" class="button" value="<%loc('Update Graph')%>" />
+
+<&|/l_unsafe, $m->scomp('Elements/SelectChartType', Name => 'ChartStyle', Default => $ChartStyle), $m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $ARGS{Query}, Default => $PrimaryGroupBy)
+&>[_1] chart by [_2]</&><input type="submit" class="button" value="<%loc('Update Chart')%>" />
</form>
</&>
-
-<& /Widgets/SavedSearch:show, %ARGS, Action => 'Chart.html', self => $saved_search, Title => loc('Saved charts') &>
+</div>
+<div class="saved-search">
+ <& /Widgets/SavedSearch:show, %ARGS, Action => 'Chart.html', self => $saved_search, Title => loc('Saved charts') &>
+</div>
+</div>
diff --git a/rt/share/html/Search/Edit.html b/rt/share/html/Search/Edit.html
index 76993f138..2459be0e4 100755
--- a/rt/share/html/Search/Edit.html
+++ b/rt/share/html/Search/Edit.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,21 +46,11 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title&>
-<& /Ticket/Elements/Tabs,
- current_tab => "Search/Edit.html?".$QueryString,
- Title => $title,
- Format => $Format,
- Query => $Query,
- Rows => $Rows,
- OrderBy => $OrderBy,
- Order => $Order,
- SavedSearchId => $SavedSearchId,
- SavedChartSearchId => $SavedChartSearchId,
-&>
+<& /Elements/Tabs &>
<& Elements/NewListActions, actions => \@actions &>
-<form method="post" action="Build.html">
+<form method="post" action="Build.html" id="BuildQueryAdvanced" name="BuildQueryAdvanced">
<input type="hidden" class="hidden" name="SavedSearchId" value="<% $SavedSearchId %>" />
<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $SavedChartSearchId %>" />
<&|/Widgets/TitleBox, title => loc('Query'), &>
diff --git a/rt/share/html/Search/Elements/Article b/rt/share/html/Search/Elements/Article
new file mode 100644
index 000000000..46c13d79e
--- /dev/null
+++ b/rt/share/html/Search/Elements/Article
@@ -0,0 +1,64 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/CollectionList, %ARGS,
+ Collection => $articles,
+ Class => 'RT::Articles',
+ Format => q{
+ '<a href="/Articles/Article/Display.html?id=__id__">__id__</a>/TITLE:#',
+ '<a href="/Articles/Article/Display.html?id=__id__">__Name__</a>/TITLE:Name',
+ '__ClassName__',
+ '__CreatedRelative__',
+ '__LastUpdatedRelative__',
+ '__Summary__',
+ '__Topics__', }
+ &>
+<%INIT>
+my $QueryString = "?".$m->comp('/Elements/QueryString', %{$ARGS{args}});
+my $articles = RT::Articles->new( $session{CurrentUser} );
+$articles->Search( %{$ARGS{args}} );
+</%INIT>
diff --git a/rt/share/html/Search/Elements/BuildFormatString b/rt/share/html/Search/Elements/BuildFormatString
index 96e6a2863..a39287bff 100644
--- a/rt/share/html/Search/Elements/BuildFormatString
+++ b/rt/share/html/Search/Elements/BuildFormatString
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,7 +48,7 @@
<%ARGS>
$Format => RT->Config->Get('DefaultSearchResultFormat')
-%cfqueues => ()
+%queues => ()
$Face => undef
$Size => undef
@@ -76,6 +76,7 @@ my @fields = (
),
$m->comp('/Elements/CustomerFields', 'Names'), #freeside
+ $m->comp('/Elements/ServiceFields', 'Names'), #freeside
qw(
Status ExtendedStatus UpdateStatus
@@ -103,23 +104,18 @@ my @fields = (
Bookmark
NEWLINE
+ NBSP
)
); # loc_qw
$m->callback( CallbackOnce => 1, CallbackName => 'SetFieldsOnce', Fields => \@fields );
my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'});
-foreach my $id (keys %cfqueues) {
+foreach my $id (keys %queues) {
# Gotta load up the $queue object, since queues get stored by name now. my $id
my $queue = RT::Queue->new($session{'CurrentUser'});
$queue->Load($id);
- unless ($queue->id) {
- # XXX TODO: This ancient code dates from a former developer
- # we have no idea what it means or why cfqueues are so encoded.
- $id =~ s/^.'*(.*).'*$/$1/;
- $queue->Load($id);
- }
- $CustomFields->LimitToQueue($queue->Id);
+ $CustomFields->LimitToQueue($queue->Id) if $queue->Id;
}
$CustomFields->LimitToGlobal;
diff --git a/rt/share/html/Search/Elements/Chart b/rt/share/html/Search/Elements/Chart
index e25a9efd0..be05da315 100644
--- a/rt/share/html/Search/Elements/Chart
+++ b/rt/share/html/Search/Elements/Chart
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,7 +48,6 @@
<%args>
$Query => "id > 0"
$PrimaryGroupBy => 'Queue'
-$SecondaryGroupBy => undef
$ChartStyle => 'bars'
</%args>
<%init>
@@ -89,65 +88,66 @@ my %loc_keys;
foreach my $key (@keys) { $data{$key} = shift @values; $loc_keys{$key} = loc($key); }
my @sorted_keys = map { $loc_keys{$_}} sort { $loc_keys{$a} cmp $loc_keys{$b} } keys %loc_keys;
my @sorted_values = map { $data{$_}} sort { $loc_keys{$a} cmp $loc_keys{$b} } keys %loc_keys;
-
-
my $query_string = $m->comp('/Elements/QueryString', %ARGS);
-</%init>
-
-<% loc('Query:') %>&nbsp;<% $Query %><br />
+my ($i,$total);
+</%init>
+<div class="chart-wrapper">
+<span class="chart image">
% if (RT->Config->Get('DisableGD')) {
<% loc('Graphical charts are not available.') %><br />
% } else {
-<img src="<%RT->Config->Get('WebPath')%>/Search/Chart?<%$query_string|n%>" /><br />
+<img src="<%RT->Config->Get('WebPath')%>/Search/Chart?<%$query_string|n%>" />
% }
-
-<table class="collection-as-table">
+</span>
+<table class="collection-as-table chart">
<tr>
<th class="collection-as-table"><% loc($tix->Label($PrimaryGroupBy)) %>
</th>
<th class="collection-as-table"><&|/l&>Tickets</&>
</th>
</tr>
-% my ($i,$total);
-% while (my $key = shift @sorted_keys) {
-% $i++;
-% my $value = shift @sorted_values;
-% $total += $value;
-<tr class="<%$i%2 ? 'evenline' : 'oddline' %>">
+<%perl>
+ while (my $key = shift @sorted_keys) {
+ $i++;
+ my $value = shift @sorted_values;
+ $total += $value;
+</%perl>
+<tr class="<% $i%2 ? 'evenline' : 'oddline' %>">
+<%perl>
+# TODO sadly we don't have "creator.city is null" or alike support yet
+# so no link if the key is undef for now
+ if ( $PrimaryGroupBy !~ /(Hourly|Daily|Monthly|Annually)$/
+ && $key ne loc('(no value)') ) {
+ my $group = $PrimaryGroupBy; $group =~ s! !.!;
+ my %orig_keys = reverse %loc_keys;
+ my $QueryString = $m->comp('/Elements/QueryString',
+ Query => "$Query and $group = '$orig_keys{$key}'",
+ Format => $ARGS{Format},
+ Rows => $ARGS{Rows},
+ OrderBy => $ARGS{OrderBy},
+ Order => $ARGS{Order},
+ );
+</%perl>
<td class="label collection-as-table">
-%# TODO sadly we don't have "creator.city is null" or alike support yet
-%# so no link if the key is undef for now
-% if ( $PrimaryGroupBy !~ /(Hourly|Daily|Monthly|Annually)$/
-% && $key ne loc('(no value)') ) {
-% my $group = $PrimaryGroupBy; $group =~ s! !.!;
-% my %orig_keys = reverse %loc_keys;
-% my $QueryString = $m->comp('/Elements/QueryString',
-% Query => "$Query and $group = '$orig_keys{$key}'",
-% Format => $ARGS{Format},
-% Rows => $ARGS{Rows},
-% OrderBy => $ARGS{OrderBy},
-% Order => $ARGS{Order},
-% );
-<a href=<% RT->Config->Get('WebURL') %>Search/Results.html?<%$QueryString%>><%$key%></a>
-% } else {
-<% $key %>
-% }
+<a href=<% RT->Config->Get('WebPath') %>/Search/Results.html?<%$QueryString%>><%$key%></a>
</td>
<td class="value collection-as-table">
-<%$value%>
+<a href=<% RT->Config->Get('WebPath') %>/Search/Results.html?<%$QueryString%>><%$value%></a>
</td>
+% } else {
+<td class="label collection-as-table"><% $key %></td>
+<td class="value collection-as-table"><% $value %></td>
+% }
</tr>
% }
%$i++;
-<tr class="<%$i%2 ? 'evenline' : 'oddline' %>">
-<td class="label collection-as-table">
-<%loc('Total')%>
-</td>
-<td class="value collection-as-table">
-<%$total||''%>
-</td>
+<tr class="<%$i%2 ? 'evenline' : 'oddline' %> total">
+<td class="label collection-as-table"><%loc('Total')%></td>
+<td class="value collection-as-table"><%$total||'0'%></td>
</tr>
</table>
+<div class="query"><span class="label"><% loc('Query') %>:</span><span class="value"><% $Query %></span></div>
+</div>
diff --git a/rt/share/html/Search/Elements/ConditionRow b/rt/share/html/Search/Elements/ConditionRow
index 65e217639..9d68b0925 100644
--- a/rt/share/html/Search/Elements/ConditionRow
+++ b/rt/share/html/Search/Elements/ConditionRow
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/DisplayOptions b/rt/share/html/Search/Elements/DisplayOptions
index c83035884..fbd497eb8 100644
--- a/rt/share/html/Search/Elements/DisplayOptions
+++ b/rt/share/html/Search/Elements/DisplayOptions
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,91 +46,8 @@
%#
%# END BPS TAGGED BLOCK }}}
<&| /Widgets/TitleBox, title => loc("Sorting"), id => 'sorting' &>
-<table valign="top">
-
-% for my $o (0..3) {
-% $Order[$o] ||= ''; $OrderBy[$o] ||= '';
-<tr>
-<td class="label">
-% if ($o == 0) {
-<&|/l&>Order by</&>:
-% }
-</td>
-<td class="value">
-<select name="OrderBy">
-% if ($o > 0) {
-<option value=""><&|/l&>~[none~]</&></option>
-% }
-% foreach my $field (sort keys %fields) {
-% next unless $field;
-<option value="<%$field%>"
-% if (defined $OrderBy[$o] and $field eq $OrderBy[$o]) {
-selected="selected"
-% }
-><% loc($field) %></option>
-% }
-</select>
-<select name="Order">
-<option value="ASC"
-% unless ( ($Order[$o]||'') eq "DESC" ) {
-selected="selected"
-% }
-><&|/l&>Asc</&></option>
-<option value="DESC"
-% if ( ($Order[$o]||'') eq "DESC" ) {
-selected="selected"
-% }
-><&|/l&>Desc</&></option>
-</select>
-</td>
-</tr>
-% }
-<tr>
-<td class="label">
-<&|/l&>Rows per page</&>:
-</td><td class="value">
-<& /Elements/SelectResultsPerPage,
- Name => "RowsPerPage",
- Default => $RowsPerPage &>
-</td>
-</tr>
-</table>
+<& EditSort, %ARGS &>
</&>
<&| /Widgets/TitleBox, title => loc("Display Columns"), id => 'columns' &>
<& EditFormat, %ARGS &>
</&>
-
-<%INIT>
-my $tickets = new RT::Tickets($session{'CurrentUser'});
-my %fields = %{$tickets->FIELDS};
-map { $fields{$_}->[0] =~ /^(?:ENUM|INT|DATE|STRING|ID)$/ || delete $fields{$_} } keys %fields;
-delete $fields{'EffectiveId'};
-$fields{'Owner'} = 1;
-$fields{ $_ . '.EmailAddress' } = 1 foreach( qw(Requestor Cc AdminCc) );
-
-# Add all available CustomFields to the list of sortable columns.
-my @cfs = grep /^CustomField/, @{$ARGS{AvailableColumns}};
-$fields{$_}=1 for @cfs;
-
-# Add PAW sort
-$fields{'Custom.Ownership'} = 1;
-
-$fields{"Customer.$_"} = 1 foreach qw( Number Name ); #Freeside
-
-my @Order = split /\|/, $Order;
-my @OrderBy = split /\|/, $OrderBy;
-if ($Order =~ /\|/) {
- @Order = split /\|/, $Order;
-} else {
- @Order = ( $Order );
-}
-
-</%INIT>
-
-<%ARGS>
-$Order => undef
-$OrderBy => undef
-$RowsPerPage => undef
-$Format => undef
-$GroupBy => 'id'
-</%ARGS>
diff --git a/rt/share/html/Search/Elements/EditFormat b/rt/share/html/Search/Elements/EditFormat
index bb869fe66..3eb5a9100 100644
--- a/rt/share/html/Search/Elements/EditFormat
+++ b/rt/share/html/Search/Elements/EditFormat
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,7 +45,7 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<table>
+<table class="edit-columns">
<tr>
<th><&|/l&>Add Columns</&>:</th>
@@ -62,8 +62,10 @@
<option value="<% $field %>"><% loc($field) %></option>
% }
</select></td>
-
-<td><&|/l&>Link</&>:
+<td>
+<div class="row">
+<span class="label"><&|/l&>Link</&>:</span>
+<span class="value">
<select name="Link">
<option value="None">-</option>
<option value="Display"><&|/l&>Display</&></option>
@@ -72,19 +74,30 @@
<option value="Comment"><&|/l&>Comment</&></option>
<option value="Resolve"><&|/l&>Resolve</&></option>
</select>
-<br /><&|/l&>Title</&>: <input name="Title" size="10" />
-<br /><&|/l&>Size</&>:
-<select name="Size">
+</span>
+</div>
+<div class="row">
+<span class="label"><&|/l&>Title</&>:</span>
+<span class="value"><input name="Title" size="10" /></span>
+</div>
+<div class="row">
+<span class="label"><&|/l&>Size</&>:</span>
+<span class="value"><select name="Size">
<option value="">-</option>
<option value="Small"><&|/l&>Small</&></option>
<option value="Large"><&|/l&>Large</&></option>
</select>
-<br /><&|/l&>Style</&>:
-<select name="Face">
+</span>
+</div>
+<div class="row">
+<span class="label"><&|/l&>Style</&>:</span>
+<span class="value"><select name="Face">
<option value="">-</option>
<option value="Bold"><&|/l&>Bold</&></option>
<option value="Italic"><&|/l&>Italic</&></option>
</select>
+</span>
+</div>
</td>
<td><input type="submit" class="button" name="AddCol" value=" &rarr; " /></td>
diff --git a/rt/share/html/Search/Elements/EditQuery b/rt/share/html/Search/Elements/EditQuery
index e6f649ea8..cfa8e0d1b 100644
--- a/rt/share/html/Search/Elements/EditQuery
+++ b/rt/share/html/Search/Elements/EditQuery
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/EditSearches b/rt/share/html/Search/Elements/EditSearches
index 08f84c70c..64309cb00 100644
--- a/rt/share/html/Search/Elements/EditSearches
+++ b/rt/share/html/Search/Elements/EditSearches
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,14 +45,15 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
+<div class="edit-saved-searches">
<&| /Widgets/TitleBox, title => loc($Title)&>
%# Hide all the save functionality if the user shouldn't see it.
% if ( $can_modify ) {
-<&|/l&>Privacy:</&>
+<span class="label"><&|/l&>Privacy</&>:</span>
<& SelectSearchObject, Name => 'SavedSearchOwner', Objects => \@Objects, Object => ( $Object && $Object->id ) ? $Object->Object : '' &>
<br />
-<&|/l&>Description</&>:
+<span class="label"><&|/l&>Description</&>:</span>
<input size="25" name="SavedSearchDescription" value="<% $Description || '' %>" />
% if ($Id ne 'new') {
@@ -67,19 +68,19 @@
</nobr>
% }
% if ( $Object && $Object->Id ) {
-<input type="submit" class="button" name="SavedSearchSave" value="<%loc('Update')%>" />
+<input type="submit" class="button" id="SavedSearchSave" name="SavedSearchSave" value="<%loc('Update')%>" />
% } else {
-<input type="submit" class="button" name="SavedSearchSave" value="<%loc('Save')%>" />
+<input type="submit" class="button" id="SavedSearchSave" name="SavedSearchSave" value="<%loc('Save')%>" />
%}
% }
<br />
<hr />
-<&|/l&>Load saved search:</&>
+<span class="label"><&|/l&>Load saved search</&>:</span>
<& SelectSearchesForObjects, Name => 'SavedSearchLoad', Objects => \@Objects, SearchType => $Type &>
-<input type="submit" value="<% loc('Load') %>" class="button" />
+<input type="submit" value="<% loc('Load') %>" id="SavedSearchLoadSubmit" name="SavedSearchLoadSubmit" class="button" />
</&>
-
+</div>
<%INIT>
return unless $session{'CurrentUser'}->HasRight(
Right => 'LoadSavedSearch',
@@ -91,8 +92,8 @@ my $can_modify = $session{'CurrentUser'}->HasRight(
Object => $RT::System,
);
-use RT::SavedSearches;
-my @Objects = RT::SavedSearches->new($session{CurrentUser})->_PrivacyObjects;
+use RT::SavedSearch;
+my @Objects = RT::SavedSearch->new($session{CurrentUser})->_PrivacyObjects;
push @Objects, RT::System->new( $session{'CurrentUser'} )
if $session{'CurrentUser'}->HasRight( Object=> $RT::System,
Right => 'SuperUser' );
diff --git a/rt/share/html/Search/Elements/EditSort b/rt/share/html/Search/Elements/EditSort
new file mode 100644
index 000000000..497611e13
--- /dev/null
+++ b/rt/share/html/Search/Elements/EditSort
@@ -0,0 +1,142 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<table valign="top">
+
+% for my $o (0..3) {
+% $Order[$o] ||= ''; $OrderBy[$o] ||= '';
+<tr>
+<td class="label">
+% if ($o == 0) {
+<&|/l&>Order by</&>:
+% }
+</td>
+<td class="value">
+<select name="OrderBy">
+% if ($o > 0) {
+<option value=""><&|/l&>~[none~]</&></option>
+% }
+% # %fields maps display name to SQL column/function
+% foreach my $field (sort keys %fields) {
+% next unless $field;
+% my $fieldval = $fields{$field};
+<option value="<%$fieldval%>"
+% if (defined $OrderBy[$o] and $fieldval eq $OrderBy[$o]) {
+selected="selected"
+% }
+><% loc($field) %></option>
+% }
+</select>
+<select name="Order">
+<option value="ASC"
+% unless ( ($Order[$o]||'') eq "DESC" ) {
+selected="selected"
+% }
+><&|/l&>Asc</&></option>
+<option value="DESC"
+% if ( ($Order[$o]||'') eq "DESC" ) {
+selected="selected"
+% }
+><&|/l&>Desc</&></option>
+</select>
+</td>
+</tr>
+% }
+<tr>
+<td class="label">
+<&|/l&>Rows per page</&>:
+</td><td class="value">
+<& /Elements/SelectResultsPerPage,
+ Name => "RowsPerPage",
+ Default => $RowsPerPage &>
+</td>
+</tr>
+</table>
+
+<%INIT>
+my $tickets = RT::Tickets->new($session{'CurrentUser'});
+my %FieldDescriptions = %{$tickets->FIELDS};
+my %fields;
+
+for my $field (keys %FieldDescriptions) {
+ next if $field eq 'EffectiveId';
+ next unless $FieldDescriptions{$field}->[0] =~ /^(?:ENUM|INT|DATE|STRING|ID)$/;
+ $fields{$field} = $field;
+}
+
+$fields{'Owner'} = 'Owner';
+$fields{ $_ . '.EmailAddress' } = $_ . '.EmailAddress'
+ for qw(Requestor Cc AdminCc);
+
+# Add all available CustomFields to the list of sortable columns.
+my @cfs = grep /^CustomField/, @{$ARGS{AvailableColumns}};
+$fields{$_} = $_ for @cfs;
+
+# Add PAW sort
+$fields{'Custom.Ownership'} = 'Custom.Ownership';
+
+$fields{"Customer.$_"} = 1 foreach qw( Number Name ); #Freeside
+
+$m->callback(CallbackName => 'MassageSortFields', Fields => \%fields );
+
+my @Order = split /\|/, $Order;
+my @OrderBy = split /\|/, $OrderBy;
+if ($Order =~ /\|/) {
+ @Order = split /\|/, $Order;
+} else {
+ @Order = ( $Order );
+}
+
+</%INIT>
+
+<%ARGS>
+$Order => ''
+$OrderBy => ''
+$RowsPerPage => undef
+$Format => undef
+$GroupBy => 'id'
+</%ARGS>
diff --git a/rt/share/html/Search/Elements/Graph b/rt/share/html/Search/Elements/Graph
index 1cf1f1baa..ba2f4dbb8 100644
--- a/rt/share/html/Search/Elements/Graph
+++ b/rt/share/html/Search/Elements/Graph
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/NewListActions b/rt/share/html/Search/Elements/NewListActions
index 8c7846a19..db185da3b 100644
--- a/rt/share/html/Search/Elements/NewListActions
+++ b/rt/share/html/Search/Elements/NewListActions
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/PickBasics b/rt/share/html/Search/Elements/PickBasics
index ff30f7c11..db7d9f5c1 100644
--- a/rt/share/html/Search/Elements/PickBasics
+++ b/rt/share/html/Search/Elements/PickBasics
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -103,7 +103,7 @@ my @lines = (
Value => {
Type => 'component',
Path => '/Elements/SelectStatus',
- Arguments => { SkipDeleted => 1 },
+ Arguments => { SkipDeleted => 1, Queues => \%queues },
},
},
{
@@ -124,7 +124,7 @@ my @lines = (
Value => {
Type => 'component',
Path => '/Elements/SelectOwner',
- Arguments => { ValueAttribute => 'Name' },
+ Arguments => { ValueAttribute => 'Name', Queues => \%queues },
},
},
{
@@ -210,8 +210,10 @@ my @lines = (
);
#freeside
-push @lines, $m->comp('/Elements/CustomerFields', 'PickBasics');
$m->callback( Conditions => \@lines );
</%INIT>
+<%ARGS>
+%queues => ()
+</%ARGS>
diff --git a/rt/share/html/Search/Elements/PickCFs b/rt/share/html/Search/Elements/PickCFs
index 9abab4443..f2dc21f68 100644
--- a/rt/share/html/Search/Elements/PickCFs
+++ b/rt/share/html/Search/Elements/PickCFs
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -50,21 +50,11 @@
% }
<%INIT>
my $CustomFields = RT::CustomFields->new( $session{'CurrentUser'});
-foreach my $id (keys %cfqueues) {
- # Gotta load up the $queue object, since queues get stored by name now. my $id
+foreach my $id (keys %queues) {
+ # Gotta load up the $queue object, since queues get stored by name now.
my $queue = RT::Queue->new($session{'CurrentUser'});
$queue->Load($id);
- unless ($queue->id) {
- # XXX TODO: This ancient code dates from a former developer
- # we have no idea what it means or why cfqueues are so encoded.
- $id =~ s/^.'*(.*).'*$/$1/;
-
- # unescape internal quotes
- $id =~ s/(\\(.))/$2 eq "'" ? "'" : $1/eg;
-
- $queue->Load($id);
- }
- $CustomFields->LimitToQueue($queue->Id);
+ $CustomFields->LimitToQueue($queue->Id) if $queue->Id;
}
$CustomFields->LimitToGlobal;
$m->callback(
@@ -80,12 +70,19 @@ while ( my $CustomField = $CustomFields->Next ) {
$line{'Field'} = $CustomField->Name;
# Op
- if ($CustomField->Type eq 'Date') {
+ if ($CustomField->Type =~ /^Date(Time)?$/ ) {
$line{'Op'} = {
Type => 'component',
Path => '/Elements/SelectDateRelation',
Arguments => {},
};
+ }
+ elsif ($CustomField->Type =~ /^IPAddress(Range)?$/ ) {
+ $line{'Op'} = {
+ Type => 'component',
+ Path => '/Elements/SelectIPRelation',
+ Arguments => {},
+ };
} else {
$line{'Op'} = {
Type => 'component',
@@ -99,11 +96,12 @@ while ( my $CustomField = $CustomFields->Next ) {
}
# Value
- if ($CustomField->Type eq 'Date') {
+ if ($CustomField->Type =~ /^Date(Time)?$/) {
+ my $is_datetime = $1 ? 1 : 0;
$line{'Value'} = {
Type => 'component',
Path => '/Elements/SelectDate',
- Arguments => {},
+ Arguments => { $is_datetime ? (ShowTime => 1) : (ShowTime => 0), },
};
} else {
$line{'Value'} = {
@@ -116,10 +114,10 @@ while ( my $CustomField = $CustomFields->Next ) {
push @lines, \%line;
}
-$m->callback( Conditions => \@lines, Queues => \%cfqueues );
+$m->callback( Conditions => \@lines, Queues => \%queues );
</%INIT>
<%ARGS>
-%cfqueues => undef
+%queues => ()
</%ARGS>
diff --git a/rt/share/html/Search/Elements/PickCriteria b/rt/share/html/Search/Elements/PickCriteria
index 44e3b7037..74547c7da 100644
--- a/rt/share/html/Search/Elements/PickCriteria
+++ b/rt/share/html/Search/Elements/PickCriteria
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,7 +52,8 @@
<& PickBasics &>
-<& PickCFs, cfqueues => \%cfqueues &>
+<& PickCustomerFields &>
+<& PickCFs, queues => \%queues &>
<tr class="separator"><td colspan="3"><hr /></td></tr>
<tr>
@@ -68,5 +69,5 @@
<%ARGS>
$addquery => 0
$query => undef
-%cfqueues => undef
+%queues => ()
</%ARGS>
diff --git a/rt/share/html/Search/Elements/PickCustomerFields b/rt/share/html/Search/Elements/PickCustomerFields
new file mode 100644
index 000000000..96d8e47e7
--- /dev/null
+++ b/rt/share/html/Search/Elements/PickCustomerFields
@@ -0,0 +1,8 @@
+% if ( $RT::URI::freeside::IntegrationType eq 'Internal' ) {
+% my @lines;
+% push @lines, $m->comp('/Elements/CustomerFields', 'Criteria');
+% push @lines, $m->comp('/Elements/ServiceFields', 'Criteria');
+% foreach( @lines ) {
+<& ConditionRow, Condition => $_ &>
+% }
+% }
diff --git a/rt/share/html/Search/Elements/ResultsRSSView b/rt/share/html/Search/Elements/ResultsRSSView
index f3b416a4e..5033c8c64 100644
--- a/rt/share/html/Search/Elements/ResultsRSSView
+++ b/rt/share/html/Search/Elements/ResultsRSSView
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -70,7 +70,7 @@ if ( $m->request_comp->path =~ RT->Config->Get('WebNoAuthRegex') ) {
# convert to perl strings
$name = Encode::decode_utf8($name);
- my $user = RT::User->new($RT::SystemUser);
+ my $user = RT::User->new(RT->SystemUser);
$user->Load($name);
$notfound->("Invalid user: $user") unless $user->id;
@@ -102,7 +102,7 @@ $r->content_type('application/rss+xml');
# create an RSS 1.0 file (http://purl.org/rss/1.0/)
use XML::RSS;
- my $rss = new XML::RSS (version => '1.0');
+ my $rss = XML::RSS->new(version => '1.0');
$rss->channel(
title => RT->Config->Get('rtname').": Search " . $ARGS{'Query'},
link => RT->Config->Get('WebURL'),
diff --git a/rt/share/html/Search/Elements/SearchPrivacy b/rt/share/html/Search/Elements/SearchPrivacy
index f943af143..f36c1c894 100644
--- a/rt/share/html/Search/Elements/SearchPrivacy
+++ b/rt/share/html/Search/Elements/SearchPrivacy
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SearchesForObject b/rt/share/html/Search/Elements/SearchesForObject
index 35007bde5..efbf22078 100644
--- a/rt/share/html/Search/Elements/SearchesForObject
+++ b/rt/share/html/Search/Elements/SearchesForObject
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectAndOr b/rt/share/html/Search/Elements/SelectAndOr
index a644a71d8..ec19271b2 100644
--- a/rt/share/html/Search/Elements/SelectAndOr
+++ b/rt/share/html/Search/Elements/SelectAndOr
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectChartType b/rt/share/html/Search/Elements/SelectChartType
index 42cd4e4b2..aeee7cdbc 100644
--- a/rt/share/html/Search/Elements/SelectChartType
+++ b/rt/share/html/Search/Elements/SelectChartType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectGroup b/rt/share/html/Search/Elements/SelectGroup
index 2ed965d42..ff5fc0786 100644
--- a/rt/share/html/Search/Elements/SelectGroup
+++ b/rt/share/html/Search/Elements/SelectGroup
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@
</select>
<%INIT>
-my $groups = new RT::Groups($session{'CurrentUser'});
+my $groups = RT::Groups->new($session{'CurrentUser'});
$groups->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => $Domain);
</%INIT>
diff --git a/rt/share/html/Search/Elements/SelectGroupBy b/rt/share/html/Search/Elements/SelectGroupBy
index fbf19addb..9a6951a82 100644
--- a/rt/share/html/Search/Elements/SelectGroupBy
+++ b/rt/share/html/Search/Elements/SelectGroupBy
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectLinks b/rt/share/html/Search/Elements/SelectLinks
index 20c0dd311..0b7ce1251 100644
--- a/rt/share/html/Search/Elements/SelectLinks
+++ b/rt/share/html/Search/Elements/SelectLinks
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectPersonType b/rt/share/html/Search/Elements/SelectPersonType
index 6454acff3..d07e49c22 100644
--- a/rt/share/html/Search/Elements/SelectPersonType
+++ b/rt/share/html/Search/Elements/SelectPersonType
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectSearchObject b/rt/share/html/Search/Elements/SelectSearchObject
index d1b38abf0..6a511027e 100644
--- a/rt/share/html/Search/Elements/SelectSearchObject
+++ b/rt/share/html/Search/Elements/SelectSearchObject
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Elements/SelectSearchesForObjects b/rt/share/html/Search/Elements/SelectSearchesForObjects
index eafe88843..5f3169bbd 100644
--- a/rt/share/html/Search/Elements/SelectSearchesForObjects
+++ b/rt/share/html/Search/Elements/SelectSearchesForObjects
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -51,10 +51,11 @@ $Name => undef
$SearchType => 'Ticket',
</%args>
<select id="<%$Name%>" name="<%$Name%>">
-<option value="" selected>&nbsp;</option>
+<option value="">-</option>
% foreach my $object (@Objects) {
-<optgroup label="<& SearchPrivacy, Object => $object &>">
% my @searches = $object->Attributes->Named('SavedSearch');
+% if ( @searches ) {
+<optgroup label="<& SearchPrivacy, Object => $object &>">
% foreach my $search (@searches) {
% # Skip it if it is not of search type we want.
% next if ($search->SubValue('SearchType')
@@ -63,4 +64,5 @@ $SearchType => 'Ticket',
% }
</optgroup>
% }
+% }
</select>
diff --git a/rt/share/html/Search/Graph.html b/rt/share/html/Search/Graph.html
index 483aaae3d..c85181c3a 100644
--- a/rt/share/html/Search/Graph.html
+++ b/rt/share/html/Search/Graph.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Results.html b/rt/share/html/Search/Results.html
index 8aea1fc58..171b38d92 100755
--- a/rt/share/html/Search/Results.html
+++ b/rt/share/html/Search/Results.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,22 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title,
- Refresh => $session{'tickets_refresh_interval'} || RT->Config->Get('SearchResultsRefreshInterval', $session{'CurrentUser'} ),
- RSSAutoDiscovery => $RSSFeedURL,
+ Refresh => $refresh,
LinkRel => \%link_rel &>
-<& /Ticket/Elements/Tabs,
- current_tab => "Search/Results.html".$QueryString,
- Title => $title,
- Format => $Format,
- Query => $Query,
- Rows => $Rows,
- OrderBy => $OrderBy,
- Order => $Order,
- SavedSearchId => $SavedSearchId,
- SavedChartSearchId => $SavedChartSearchId,
- &>
+<& /Elements/Tabs &>
<& /Elements/CollectionList,
Query => $Query,
+ TotalFound => $ticketcount,
AllowSorting => 1,
OrderBy => $OrderBy,
Order => $Order,
@@ -82,22 +72,9 @@
<input type="submit" class="button" value="<&|/l&>Change</&>" />
</form>
</div>
-<div align="right" class="search-result-actions">
-<& Elements/ResultViews,
- Collection => $session{'tickets'},
- QueryString => $QueryString,
- Query => $Query,
- Format => $Format,
- Rows => $Rows,
- OrderBy => $OrderBy,
- Order => $Order,
- RSSFeedURL => $RSSFeedURL,
- ShortQueryString => $ShortQueryString,
-&>
-
-% $m->callback( QueryString => $QueryString, CallbackName => 'SearchActions' );
-</div>
<%INIT>
+$m->callback( ARGSRef => \%ARGS, CallbackName => 'Initial' );
+
# Read from user preferences
my $prefs = $session{'CurrentUser'}->UserObj->Preferences("SearchDisplay") || {};
@@ -124,7 +101,9 @@ $Page = 1 unless $Page && $Page > 0;
my ($title, $ticketcount);
$session{'i'}++;
$session{'tickets'} = RT::Tickets->new($session{'CurrentUser'}) ;
-$session{'tickets'}->FromSQL($Query) if ($Query);
+my ($ok, $msg) = $Query ? $session{'tickets'}->FromSQL($Query) : (1, "Vacuously OK");
+# Provide an empty search if parsing failed
+$session{'tickets'}->FromSQL("id < 0") unless ($ok);
if ($OrderBy =~ /\|/) {
# Multiple Sorts
@@ -164,16 +143,21 @@ my $QueryString = "?".$m->comp('/Elements/QueryString',
Order => $Order,
Page => $Page);
my $ShortQueryString = "?".$m->comp('/Elements/QueryString', Query => $Query);
-my $RSSQueryString = "?".$m->comp('/Elements/QueryString', Query => $Query, Order => $Order, OrderBy => $OrderBy);
-my $RSSPath = join '/', map $m->interp->apply_escapes($_, 'u'),
- $session{'CurrentUser'}->UserObj->Name,
- $session{'CurrentUser'}->UserObj->GenerateAuthString( $Query.$Order.$OrderBy );
-my $RSSFeedURL = RT->Config->Get('WebPath')."/NoAuth/rss/$RSSPath/$RSSQueryString";
if ($ARGS{'TicketsRefreshInterval'}) {
$session{'tickets_refresh_interval'} = $ARGS{'TicketsRefreshInterval'};
}
+my $refresh = $session{'tickets_refresh_interval'}
+ || RT->Config->Get('SearchResultsRefreshInterval', $session{'CurrentUser'} );
+
+if (RT->Config->Get('RestrictReferrer') and $refresh and not $m->request_args->{CSRF_Token}) {
+ my $token = RT::Interface::Web::StoreRequestToken( $session{'CurrentSearchHash'} );
+ $m->notes->{RefreshURL} = RT->Config->Get('WebURL')
+ . "Search/Results.html?CSRF_Token="
+ . $token;
+}
+
my %link_rel;
my $genpage = sub {
return $m->comp(
@@ -186,6 +170,15 @@ my $genpage = sub {
Page => shift(@_),
);
};
+
+if ( RT->Config->Get('SearchResultsAutoRedirect') && $ticketcount == 1 &&
+ $session{tickets}->First ) {
+# $ticketcount is not always precise unless $UseSQLForACLChecks is set to true,
+# check $session{tickets}->First here is to make sure the ticket is there.
+ RT::Interface::Web::Redirect( RT->Config->Get('WebURL')
+ ."Ticket/Display.html?id=". $session{tickets}->First->id );
+}
+
my $BaseURL = RT->Config->Get('WebPath')."/Search/Results.html?";
$link_rel{first} = $BaseURL . $genpage->(1) if $Page > 1;
$link_rel{prev} = $BaseURL . $genpage->($Page - 1) if $Page > 1;
diff --git a/rt/share/html/Search/Results.rdf b/rt/share/html/Search/Results.rdf
index 8356d027a..1c64b9a84 100644
--- a/rt/share/html/Search/Results.rdf
+++ b/rt/share/html/Search/Results.rdf
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Search/Results.tsv b/rt/share/html/Search/Results.tsv
index cdf1ebad0..977b1ea7b 100644
--- a/rt/share/html/Search/Results.tsv
+++ b/rt/share/html/Search/Results.tsv
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,12 +46,64 @@
%#
%# END BPS TAGGED BLOCK }}}
<%ARGS>
+$Format => undef
$Query => ''
$OrderBy => 'id'
$Order => 'ASC'
+$PreserveNewLines => 0
</%ARGS>
<%INIT>
+$r->content_type('text/tab-separated-values');
+$r->header_out('Content-Disposition' => 'attachment;filename="Results.tsv"');
+
+my $DisplayFormat = $m->comp('/Elements/ScrubHTML', Content => $Format);
+
+my @Format = $m->comp('/Elements/CollectionAsTable/ParseFormat', Format => $DisplayFormat);
+
+my @columns;
+
+my $should_loc = { map { $_ => 1 } qw(Status) };
+
+my $col_entry = sub {
+ my $col = shift;
+ # in tsv output, "#" is often a comment character but we use it for "id"
+ delete $col->{title}
+ if $col->{title} and $col->{title} =~ /^\s*#\s*$/;
+ return {
+ header => Encode::encode_utf8(loc($col->{title} || $col->{attribute})),
+ map => $m->comp(
+ "/Elements/ColumnMap",
+ Name => $col->{attribute},
+ Attr => 'value'
+ ),
+ should_loc => $should_loc->{$col->{attribute}},
+ }
+};
+
+if ($PreserveNewLines) {
+ my $col = [];
+ push @columns, $col;
+ for (@Format) {
+ if ($_->{title} eq 'NEWLINE') {
+ $col = [];
+ push @columns, $col;
+ }
+ else {
+ push @$col, $col_entry->($_);
+ }
+ }
+}
+else {
+ push @columns, [map { $_->{attribute}
+ ? $col_entry->($_)
+ : () } @Format];
+}
+
+for (@columns) {
+ $m->out(join("\t", map { $_->{header} } @$_)."\n");
+}
+
my $Tickets = RT::Tickets->new( $session{'CurrentUser'} );
$Tickets->FromSQL( $Query );
if ( $OrderBy =~ /\|/ ) {
@@ -67,97 +119,19 @@ else {
$Tickets->OrderBy( FIELD => $OrderBy, ORDER => $Order );
}
-my %cf_id_to_name;
-my %cf_name_to_pos;
-{
- my $cfs = RT::SQL::PossibleCustomFields(
- Query => $Query, CurrentUser => $session{'CurrentUser'},
- );
- while ( my $cf = $cfs->Next ) {
- my $name = $cf->Name;
- $cf_id_to_name{ $cf->id } = $name;
- next if $cf_name_to_pos{ $name };
-
- $cf_name_to_pos{ $name } =
- (sort { $b <=> $a } values %cf_name_to_pos)[0] + 1;
+my $ii = 0;
+while (my $row = $Tickets->Next) {
+ for my $col (@columns) {
+ $m->out(join("\t", map {
+ my $val = ProcessColumnMapValue($_->{map}, Arguments => [$row, $ii++], Escape => 0);
+ $val = loc($val) if $_->{should_loc};
+ # remove tabs from all field values, they screw up the tsv
+ $val = '' unless defined $val;
+ $val =~ s/(?:\n|\r)//g; $val =~ s{\t}{ }g;
+ Encode::encode_utf8($val);
+ } @$col)."\n");
}
}
-
-my @attrs = qw(
- id QueueObj->Name Subject Status
- TimeEstimated TimeWorked TimeLeft
- Priority FinalPriority
- OwnerObj->Name
- Requestors->MemberEmailAddressesAsString
- Cc->MemberEmailAddressesAsString
- AdminCc->MemberEmailAddressesAsString
- DueObj->ISO ToldObj->ISO CreatedObj->ISO
- ResolvedObj->ISO LastUpdatedObj->ISO LastUpdatedByObj->Name
-);
-
-$r->content_type('text/tab-separated-values');
-$r->header_out('Content-Disposition' => 'attachment;filename="Results.tsv"');
-{
- my @header;
- foreach my $attr (@attrs) {
- my $label = $attr;
- $label =~ s'Obj-.(?:AsString|Name|ISO)''g;
- $label =~ s'-\>MemberEmailAddressesAsString''g;
- push @header, $label;
- }
-
- $_ += @header - 1 foreach values %cf_name_to_pos;
-
- foreach my $name ( sort { $cf_name_to_pos{$a} <=> $cf_name_to_pos{$b} } keys %cf_name_to_pos ) {
- push @header, "CF-". $name;
- }
- $m->out(join("\t", @header));
- $m->out("\n");
- $m->flush_buffer;
-}
-
-my $i = 0;
-while ( my $Ticket = $Tickets->Next()) {
- my @row;
- foreach my $attr (@attrs) {
- my $value;
- if ($attr =~ /(.*)->ISO$/ and $Ticket->$1->Unix <= 0) {
- $value = '';
- } else {
- my $method = '$Ticket->'.$attr.'()';
- $method =~ s/->ISO\(\)$/->ISO( Timezone => 'user' )/;
- $value = eval $method;
- if ($@) {die "Failed to find $attr - ". $@};
- }
- push @row, $value;
- }
-
- my $values = $Ticket->CustomFieldValues;
- $values->OrderByCols; # don't sort them
- while (my $value = $values->Next) {
- my $pos = $cf_name_to_pos{ $cf_id_to_name{ $value->CustomField } };
- next unless $pos;
-
- $row[$pos] = '' unless defined $row[$pos];
- $row[$pos] .= ', ' if $row[$pos];
- $row[$pos] .= $value->Content;
- }
-
- # remove tabs from all field values, they screw up the tsv
- for (@row) {
- $_ = '' unless defined;
- $_ =~ s/(?:\n|\r)//g;
- $_ =~ s{\t}{ }g;
- }
-
- $m->out(join("\t",@row));
- $m->out("\n");
-
- unless (++$i%10) {
- $i = 0;
- $m->flush_buffer;
- }
-}
-
$m->abort();
+
</%INIT>
diff --git a/rt/share/html/Search/Simple.html b/rt/share/html/Search/Simple.html
index dc5c14d10..4d7b1e3c5 100644
--- a/rt/share/html/Search/Simple.html
+++ b/rt/share/html/Search/Simple.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Elements/Tabs,
- current_toptab => "Search/Simple.html",
- Title => $title
+<& /Elements/Tabs
&>
% $m->callback( %ARGS, CallbackName => 'PreForm' );
@@ -56,17 +54,42 @@
<div id="SimpleSearchForm">
<form action="Simple.html" method="get">
-<p><&|/l&>Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>.</&></p>
-
-<p><&|/l&>Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>.</&></p>
-<p><&|/l&>RT will look for anything else you enter in ticket subjects.</&></p>
-
-<br />
-<br />
<div align="center">
<input name="q" size="60" /><input type="submit" class="button" value="<&|/l&>Search</&>" />
</div>
+% my @strong = qw(<strong> </strong>);
+
+<p><&|/l_unsafe, @strong &>Search for tickets by entering [_1]id[_2] numbers, subject words [_1]"in quotes"[_2], [_1]queues[_2] by name, Owners by [_1]username[_2], Requestors by [_1]email address[_2], and ticket [_1]statuses[_2].</&></p>
+
+<p><&|/l&>Any word not recognized by RT is searched for in ticket subjects.</&></p>
+
+% my $config = RT->Config->Get('FullTextSearch') || {};
+% my $fulltext_keyword = 'fulltext:';
+% if ( $config->{'Enable'} ) {
+% if ( $config->{'Indexed'} ) {
+<p><&|/l, $fulltext_keyword &>You can search for any word in full ticket history by typing <b>[_1]<i>word</i></b>.</&></p>
+% } else {
+<p><&|/l, $fulltext_keyword &>Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history by typing <b>[_1]<i>word</i></b>.</&></p>
+% }
+% }
+
+<p><&|/l_unsafe, map { "<strong>$_</strong>" } qw(initial active inactive any) &>Entering [_1], [_2], [_3], or [_4] limits results to tickets with one of the respective types of statuses. Any individual status name limits results to just the statuses named.</&>
+
+% if (RT->Config->Get('OnlySearchActiveTicketsInSimpleSearch', $session{'CurrentUser'})) {
+% my $status_str = join ', ', map { loc($_) } RT::Queue->ActiveStatusArray;
+<&|/l, $status_str &>Unless you specify a specific status, only tickets with active statuses ([_1]) are searched.</&>
+% }
+</p>
+
+<p><&|/l_unsafe, map { "<strong>$_</strong>" } 'queue:"Example Queue"', 'owner:email@example.com' &>Start the search term with the name of a supported field followed by a colon, as in [_1] and [_2], to explicitly specify the search type.</&></p>
+
+<p><&|/l_unsafe, '<strong>cf.Name:value</strong>' &>CFs may be searched using a similar syntax as above with [_1].</&></p>
+
+% my $link_start = '<a href="' . RT->Config->Get('WebPath') . '/Search/Build.html">';
+% my $link_end = '</a>';
+<p><&|/l_unsafe, $link_start, $link_end &>For the full power of RT's searches, please visit the [_1]search builder interface[_2].</&></p>
+
</form>
% $m->callback( %ARGS, CallbackName => 'PostForm' );
@@ -78,7 +101,7 @@ my $title = loc("Search for tickets");
use RT::Search::Googleish;
if ($q) {
- my $tickets = new RT::Tickets( $session{'CurrentUser'} );
+ my $tickets = RT::Tickets->new( $session{'CurrentUser'} );
$m->callback( %ARGS, query => \$q, CallbackName => 'ModifyQuery' );
if ($q =~ /^#?(\d+)$/) {
diff --git a/rt/share/html/SelfService/Article/Display.html b/rt/share/html/SelfService/Article/Display.html
new file mode 100644
index 000000000..77b3c0ff2
--- /dev/null
+++ b/rt/share/html/SelfService/Article/Display.html
@@ -0,0 +1,73 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /SelfService/Elements/Header, Title => loc('Display Article [_1]', $id) &>
+<span class="label"><%$article->Name || loc("(no name)")%></span><br />
+<em><span class="value"><%$article->Summary%></span></em>
+<& /Elements/ShowCustomFields, Object => $article &>
+
+<%init>
+
+my $article = RT::Article->new( $session{'CurrentUser'} );
+if ($id) {
+ $article->Load($id);
+}
+unless ( $article->Id ) {
+ $m->comp( "/Elements/Error", Why => loc("Article not found") );
+}
+
+unless ( $article->CurrentUserHasRight('ShowArticle') ) {
+ $m->comp( "/Elements/Error", Why => loc("Permission Denied") );
+}
+my $title = loc( "Article #[_1]: [_2]", $article->Id, $article->Name || loc("(no name)"));
+
+$id = $article->id;
+
+</%init>
+<%args>
+$id => undef
+</%args>
diff --git a/rt/share/html/User/Elements/DelegateRights b/rt/share/html/SelfService/Article/Search.html
index a2a79d4c1..c9acc555a 100755..100644
--- a/rt/share/html/User/Elements/DelegateRights
+++ b/rt/share/html/SelfService/Article/Search.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,66 +45,70 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<h2><%$sectionheading%></h2>
-<%perl>
+<& /SelfService/Elements/Header, Title => loc('Search Articles') &>
-foreach my $object (keys %{$objects->{$ObjectType}}) {
-unless ($ObjectType eq 'RT::System') {
-my $object_obj = @{$objects->{$ObjectType}{$object}}[0]->Object;
-
-</%perl>
-<h3><% $object_obj->Name %></h3>
-% }
-<table width="100%" border="0" cellspacing="0" cellpadding="3">
+<table>
+<form action="<%RT->Config->Get('WebPath')%>/SelfService/Article/Search.html">
<tr>
- <th width="15%"><&|/l&>Personal Groups</&>:</th>
-% while (my $pg = $personalgroups->Next) {
-<th><%$pg->Name%></th>
-% }
+<td><&|/l&>Search for Articles matching</&></td>
+<td><input size=20 name="Articles_Content" /></td>
+<td><input type="submit" value="Search"></td>
</tr>
-<%perl>
-my $i;
-foreach my $right (@{$objects->{$ObjectType}{$object}}) {
-my $delegations = RT::ACL->new($session{'CurrentUser'});
-$delegations->DelegatedBy( Id => $session{'CurrentUser'}->PrincipalId);
-$delegations->DelegatedFrom ( Id => $right->Id);
+</form>
-my $del_hash = {};
-while ( my $delegation = $delegations->Next) {
- $del_hash->{$delegation->PrincipalId} = $delegation;
-}
-</%perl>
-% $i++;
-%
-<tr class="<%($i%2) && 'oddline'%>">
+<tr>
+<td>&nbsp;</td>
<td>
-<% loc($right->RightName) %><br />
-<div align="right"><font size="-2" color="#999999"><&|/l, $right->PrincipalObj->Object->SelfDescription &>as granted to [_1]</&></font></div>
- </td>
-% while (my $pg = $personalgroups->Next) {
-<td align="center">
- <input name="Delegate-ACE-<% $right->Id %>-to-<% $pg->PrincipalId%>" type="checkbox" value="1" <%$ del_hash->{$pg->PrincipalId} && 'checked="checked"' %> />
-% if ( $del_hash->{$pg->PrincipalId}) {
-<input type="hidden" class="hidden" name="Delegate-Existing-ACE-<% $right->Id %>-to-<% $pg->PrincipalId%>-as-<%$del_hash->{$pg->PrincipalId}->Id%>" />
+% if ($Articles_Content) {
+% if ($articles_basics->Count || $articles_content->Count) {
+<&|/l,$Articles_Content&>Articles matching [_1]</&>
+% } else {
+<&|/l,$Articles_Content&>No Articles match [_1]</&>
+% }
% }
</td>
+</tr>
+
+% my %dedupe_articles;
+% while (my $article = $articles_content->Next) {
+% $dedupe_articles{$article->Id}++;
+<tr>
+<td>&nbsp;</td>
+<td><a href="Display.html?id=<%$article->Id%>"><%$article->Name || loc('(no name)')%>: <%$article->Summary%><a></td>
+</tr>
% }
+
+% while (my $article = $articles_basics->Next) {
+% next if $dedupe_articles{$article->Id};
+<tr>
<td>&nbsp;</td>
+<td><a href="Display.html?id=<%$article->Id%>"><%$article->Name || loc('(no name)')%>: <%$article->Summary%><a></td>
</tr>
-%}
-</table>
% }
+</table>
<%init>
+use RT::Articles;
+
+my $articles_content = RT::Articles->new( $session{'CurrentUser'} );
+my $articles_basics = RT::Articles->new( $session{'CurrentUser'} );
+if ( $ARGS{'Articles_Content'} ) {
+ $articles_content->LimitCustomField( VALUE => $ARGS{'Articles_Content'},
+ OPERATOR => 'LIKE' );
+
+ $articles_basics->Limit( SUBCLAUSE => 'all',
+ FIELD => 'Name',
+ OPERATOR => 'LIKE',
+ VALUE => $ARGS{'Articles_Content'},
+ ENTRYAGGREGATOR => "OR" );
+ $articles_basics->Limit( SUBCLAUSE => 'all',
+ FIELD => 'Summary',
+ OPERATOR => 'LIKE',
+ VALUE => $ARGS{'Articles_Content'},
+ ENTRYAGGREGATOR => "OR" );
+}
-my ($frendly_type) = ($ObjectType =~ /^RT::(.*)$/);
-my $sectionheading = loc("$frendly_type rights");
-# 'System rights' # loc
-# 'Group rights' # loc
-# 'Queue rights' # loc
</%init>
<%args>
-$ObjectType => undef
-$objects => undef
-$personalgroups => undef
+$Articles_Content => ''
</%args>
diff --git a/rt/share/html/SelfService/Article/autohandler b/rt/share/html/SelfService/Article/autohandler
new file mode 100644
index 000000000..802184c27
--- /dev/null
+++ b/rt/share/html/SelfService/Article/autohandler
@@ -0,0 +1,58 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+
+if ( $session{'CurrentUser'}->HasRight( Right => 'ShowArticle',
+ Object => $RT::System )) {
+ $m->comp( { base_comp => $m->request_comp }, $m->fetch_next, %ARGS);
+}
+else {
+ RT::Interface::Web::Redirect($RT::WebURL."SelfService/");
+}
+
+</%INIT>
diff --git a/rt/share/html/SelfService/Attachment/dhandler b/rt/share/html/SelfService/Attachment/dhandler
index ebe44f9ed..e3381a981 100755
--- a/rt/share/html/SelfService/Attachment/dhandler
+++ b/rt/share/html/SelfService/Attachment/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/SelfService/Closed.html b/rt/share/html/SelfService/Closed.html
index 268a2264e..6fd6e8328 100755
--- a/rt/share/html/SelfService/Closed.html
+++ b/rt/share/html/SelfService/Closed.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,7 +49,7 @@
<& /SelfService/Elements/MyRequests,
%ARGS,
- status => ['rejected', 'resolved'],
+ status => [ RT::Queue->InactiveStatusArray ],
friendly_status => loc('closed'),
BaseURL => RT->Config->Get('WebPath') ."/SelfService/Closed.html?",
Page => $Page,
diff --git a/rt/share/html/SelfService/Create.html b/rt/share/html/SelfService/Create.html
index 56ef79fc3..e28ab0f57 100755
--- a/rt/share/html/SelfService/Create.html
+++ b/rt/share/html/SelfService/Create.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -51,14 +51,14 @@
<form action="Create.html" method="post" enctype="multipart/form-data">
<input type="hidden" class="hidden" name="id" value="new" />
-<table>
+<table width="100%">
<tr>
<td class="label">
<&|/l&>Queue</&>:
</td>
<td class="value">
<input type="hidden" class="hidden" name="Queue" value="<%$queue_obj->id || ''%>" />
- <strong><%$queue_obj->Name || ''%></strong> (<%$queue_obj->Description || ''%>)
+ <strong><%$queue_obj->Name || ''%></strong> <% $queue_obj->Description ? '('.$queue_obj->Description.')' : '' %>
</td>
</tr>
<% $m->callback( CallbackName => 'AfterQueue', %ARGS, QueueObj => $queue_obj ) %>
diff --git a/rt/share/html/SelfService/CreateTicketInQueue.html b/rt/share/html/SelfService/CreateTicketInQueue.html
index 4707e831c..887c32e35 100755
--- a/rt/share/html/SelfService/CreateTicketInQueue.html
+++ b/rt/share/html/SelfService/CreateTicketInQueue.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/SelfService/Display.html b/rt/share/html/SelfService/Display.html
index 4f227b18a..23c74672a 100755
--- a/rt/share/html/SelfService/Display.html
+++ b/rt/share/html/SelfService/Display.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -74,7 +74,6 @@
-%#!!pape: selfservice_find_attachments.patch {{
<& /Ticket/Elements/ShowHistory,
Ticket => $Ticket,
URIFile => "Display.html",
@@ -84,7 +83,6 @@
Attachments => $attachments,
UpdatePath => "Update.html"
&>
-%#!!pape: selfservice_find_attachments.patch }}
@@ -94,16 +92,16 @@ my ( $field, @results );
$m->callback( ARGSRef => \%ARGS, CallbackName => 'Initial' );
-# {{{ Load the ticket
+# Load the ticket
#If we get handed two ids, mason will make them an array. bleck.
# We want teh first one. Just because there's no other sensible way
# to deal
my @id = ( ref $id eq 'ARRAY' ) ? @{$id} : ($id);
-my $Ticket = new RT::Ticket( $session{'CurrentUser'} );
+my $Ticket = RT::Ticket->new( $session{'CurrentUser'} );
# store the uploaded attachment in session
-if ( $ARGS{'Attach'} ) { # attachment?
+if ( defined $ARGS{'Attach'} && length $ARGS{'Attach'} ) { # attachment?
$session{'Attachments'} = {} unless defined $session{'Attachments'};
my $attachment = MakeMIMEEntity(
@@ -121,7 +119,7 @@ if ( defined ($id[0]) && $id[0] eq 'new' ) {
# {{{ Create a new ticket
- my $Queue = new RT::Queue( $session{'CurrentUser'} );
+ my $Queue = RT::Queue->new( $session{'CurrentUser'} );
unless ( $Queue->Load( $ARGS{'Queue'} ) ) {
$m->comp( 'Error.html', Why => loc('Queue not found') );
$m->abort;
@@ -136,21 +134,19 @@ if ( defined ($id[0]) && $id[0] eq 'new' ) {
( $Ticket, @results ) =
- CreateTicket( Attachments => $session{'Attachments'}, %ARGS, Status => 'new' );
+ CreateTicket( Attachments => $session{'Attachments'}, %ARGS );
unless ( $Ticket->id ) {
$m->comp( 'Error.html', Why => join( "\n", @results ));
$m->abort();
}
- # }}}
# delete temporary storage entry to make WebUI clean
unless ( keys %{ $session{'Attachments'} } and $ARGS{'UpdateAttach'} ) {
delete $session{'Attachments'};
}
- # }}}
}
else {
unless ( $Ticket->Load( $id[0] ) ) {
@@ -186,7 +182,6 @@ if ( defined ($id[0]) && $id[0] eq 'new' ) {
my @cfupdates = ProcessObjectCustomFieldUpdates(Object => $Ticket, ARGSRef => \%ARGS);
push (@results, @cfupdates);
- # }}}
#Update the status
if ( ( defined $ARGS{'Status'} )
@@ -196,7 +191,6 @@ if ( defined ($id[0]) && $id[0] eq 'new' ) {
( $code, $msg ) = $Ticket->SetStatus( $ARGS{'Status'} );
push @results, "$msg";
}
- # }}}
}
diff --git a/rt/share/html/SelfService/Elements/GotoTicket b/rt/share/html/SelfService/Elements/GotoTicket
index 45fc4d9a9..28bc81b82 100755
--- a/rt/share/html/SelfService/Elements/GotoTicket
+++ b/rt/share/html/SelfService/Elements/GotoTicket
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,6 +45,6 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<form action="<% RT->Config->Get('WebPath') %>/SelfService/Display.html" method="get" id="GotoTicket">
-<input type="submit" class="button" value="<&|/l&>Goto ticket</&>" />&nbsp;<input size="4" name="id" />
+<form action="<% RT->Config->Get('WebPath') %>/SelfService/Display.html" method="get" id="GotoTicket" name="GotoTicket">
+<input size="4" name="id" value="<&|/l&>Goto Ticket</&>..." onfocus="if (this.value=='<&|/l&>Goto Ticket</&>...') this.value=''" />
</form>
diff --git a/rt/share/html/SelfService/Elements/Header b/rt/share/html/SelfService/Elements/Header
index dc59ecb5e..7cbc0ad96 100755
--- a/rt/share/html/SelfService/Elements/Header
+++ b/rt/share/html/SelfService/Elements/Header
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,5 +45,5 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, %ARGS, Prefs => '/SelfService/Prefs.html' &>
-<& /SelfService/Elements/Tabs, %ARGS &>
+<& /Elements/Header, %ARGS &>
+<& /Elements/Tabs &>
diff --git a/rt/share/html/SelfService/Elements/MyRequests b/rt/share/html/SelfService/Elements/MyRequests
index 8bca07607..76accfc9b 100755
--- a/rt/share/html/SelfService/Elements/MyRequests
+++ b/rt/share/html/SelfService/Elements/MyRequests
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,42 +45,34 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<&| /Widgets/TitleBox, title => $title &>
+<&| /Widgets/TitleBox, title => $title &>
<& /Elements/CollectionList, Title => $title,
Format => $Format,
Query => $Query,
Order => @Order,
OrderBy => @OrderBy,
BaseURL => $BaseURL,
- GenericQueryArgs => $GenericQueryArgs,
- AllowSorting => $AllowSorting,
+ AllowSorting => 1,
Class => 'RT::Tickets',
Rows => $Rows,
Page => $Page &>
</&>
<%INIT>
+my $title = loc("My [_1] tickets", $friendly_status);
my $id = $session{'CurrentUser'}->id;
-my $Query = "( "
- . join( ' OR ', map "$_.id = $id", @roles )
- . ")";
+my $Query = "( Watcher.id = $id )";
if ( @status ) {
- $Query .= " AND ( "
- . join( ' OR ', map "Status = '$_'", @status )
- . " )";
+ @status = map {s/(['\\])/\\$1/g; "Status = '$_'"} @status;
+ $Query .= " AND ( " . join(' OR ', @status ) . " )";
}
my $Format = RT->Config->Get('DefaultSelfServiceSearchResultFormat');
-
</%INIT>
<%ARGS>
$friendly_status => loc('open')
-$title => loc("My [_1] tickets", $friendly_status)
-@roles => ('Watcher')
-@status => RT::Queue->ActiveStatusArray()
+@status => ()
$BaseURL => undef
$Page => 1
-$GenericQueryArgs => undef
-$AllowSorting => 1
@Order => ('ASC')
@OrderBy => ('Created')
$Rows => 50
diff --git a/rt/share/html/SelfService/Elements/SearchArticle b/rt/share/html/SelfService/Elements/SearchArticle
new file mode 100644
index 000000000..d547127b5
--- /dev/null
+++ b/rt/share/html/SelfService/Elements/SearchArticle
@@ -0,0 +1,51 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<form action="<% RT->Config->Get('WebPath') %>/SelfService/Article/Search.html" id="ArticleSearch">
+<input size="4" name="Articles_Content" value="<&|/l&>Search Articles</&>..." onfocus="if (this.value=='<&|/l&>Search Articles</&>...') this.value=''" />
+</form>
+
diff --git a/rt/share/html/SelfService/Elements/Tabs b/rt/share/html/SelfService/Elements/Tabs
deleted file mode 100755
index eb4cba80c..000000000
--- a/rt/share/html/SelfService/Elements/Tabs
+++ /dev/null
@@ -1,113 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-% $m->callback( %ARGS, tabs => $tabs, actions => $actions );
-<& /Elements/PageLayout,
- current_toptab => $current_toptab,
- current_tab => $current_tab,
- toptabs => $tabs,
- topactions => $actions,
- title => $Title
-&>
-<a name="skipnav" id="skipnav" accesskey="8"></a>
-<%INIT>
-my $queues = RT::Queues->new($session{'CurrentUser'});
-$queues->UnLimit;
-
-my $queue_count = 0;
-my $queue_id = 1;
-
-while (my $queue = $queues->Next) {
- next unless $queue->CurrentUserHasRight('CreateTicket');
- $queue_id = $queue->id;
- $queue_count++;
- last if ($queue_count > 1);
-}
-
-if ($Title) {
-$Title = loc("RT Self Service") . " / " . $Title;
-} else {
-$Title = loc("RT Self Service");
-
-}
-my ($tab);
-my $tabs = { A => { title => loc('Open tickets'),
- path => 'SelfService/',
- },
- B => { title => loc('Closed tickets'),
- path => 'SelfService/Closed.html',
- },
- };
-
-if ($queue_count > 1) {
- $tabs->{C} = { title => loc('New ticket'),
- path => 'SelfService/CreateTicketInQueue.html'
- };
-} else {
- $tabs->{C} = { title => loc('New ticket'),
- path => 'SelfService/Create.html?Queue=' . $queue_id
- };
-}
-
-if ($session{'CurrentUser'}->HasRight( Right => 'ModifySelf',
- Object => $RT::System )) {
- $tabs->{Z} = { title => loc('Preferences'),
- path => 'SelfService/Prefs.html'
- };
-}
-
-my $actions = {
- B => { html => $m->scomp('GotoTicket')
- }
- };
-</%INIT>
-<%ARGS>
-$Title => undef
-$current_toptab => undef
-$current_tab => undef
-</%ARGS>
-
diff --git a/rt/share/html/SelfService/Error.html b/rt/share/html/SelfService/Error.html
index 74b6acf1a..9f0c7f82e 100755
--- a/rt/share/html/SelfService/Error.html
+++ b/rt/share/html/SelfService/Error.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/SelfService/Prefs.html b/rt/share/html/SelfService/Prefs.html
index 6f3bc9336..ac5d725ad 100755
--- a/rt/share/html/SelfService/Prefs.html
+++ b/rt/share/html/SelfService/Prefs.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/SelfService/Update.html b/rt/share/html/SelfService/Update.html
index 61ce09059..6525d3de9 100755
--- a/rt/share/html/SelfService/Update.html
+++ b/rt/share/html/SelfService/Update.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,13 +54,13 @@
<form action="Display.html" method="post" enctype="multipart/form-data">
<input type="hidden" class="hidden" name="UpdateType" value="response" />
<input type="hidden" class="hidden" name="id" value="<%$Ticket->Id%>" />
-<table>
+<table width="100%">
<tr>
<td class="label">
<&|/l&>Status</&>
</td>
<td class="value">
- <& /Elements/SelectStatus, Name=>"Status", DefaultLabel => loc("[_1] (Unchanged)", loc($Ticket->Status)), Default => $ARGS{'Status'} || ($Ticket->Status eq $DefaultStatus ? undef : $DefaultStatus)&>
+ <& /Elements/SelectStatus, Name => "Status", TicketObj => $Ticket, DefaultLabel => loc("[_1] (Unchanged)", loc($Ticket->Status)), Default => $ARGS{'Status'} || ($Ticket->Status eq $DefaultStatus ? undef : $DefaultStatus)&>
</td>
</tr>
<tr>
@@ -72,30 +72,9 @@
</td>
</tr>
-% if (exists $session{'Attachments'}) {
-<tr>
- <td class="label">
- <&|/l&>Attached file</&>
- </td>
- <td colspan="5" class="value">
- <&|/l&>Check box to delete</&><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
- <input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
-% } # end of foreach
- </td>
-</tr>
-% } # end of if
-<tr>
- <td class="label">
- <&|/l&>Attach</&>
- </td>
- <td class="value">
- <input name="Attach" type="file" />
- <input type="hidden" class="hidden" name="UpdateAttach" value="1" />
- </td>
- </tr>
+ <& /Ticket/Elements/AddAttachments, %ARGS, TicketObj => $Ticket &>
+ <tr><td colspan="2"><& /Ticket/Elements/EditCustomFields, TicketObj => $Ticket &></td></tr>
</table>
-<& /Ticket/Elements/EditCustomFields, TicketObj => $Ticket &>
<& /Elements/MessageBox,
Name => "UpdateContent",
QuoteTransaction => $ARGS{QuoteTransaction}
diff --git a/rt/share/html/SelfService/index.html b/rt/share/html/SelfService/index.html
index f57554aab..29accf551 100755
--- a/rt/share/html/SelfService/index.html
+++ b/rt/share/html/SelfService/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -48,6 +48,8 @@
<& /SelfService/Elements/Header, Title => loc('Open tickets') &>
<& /SelfService/Elements/MyRequests,
%ARGS,
+ status => [ RT::Queue->ActiveStatusArray() ],
+ friendly_status => loc('open'),
BaseURL => RT->Config->Get('WebPath') ."/SelfService/?",
Page => $Page,
&>
diff --git a/rt/share/html/Ticket/Attachment/WithHeaders/dhandler b/rt/share/html/Ticket/Attachment/WithHeaders/dhandler
index 7dc46d3b3..11b77010c 100644
--- a/rt/share/html/Ticket/Attachment/WithHeaders/dhandler
+++ b/rt/share/html/Ticket/Attachment/WithHeaders/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -53,7 +53,7 @@
Abort("Corrupted attachment URL");
}
- my $AttachmentObj = new RT::Attachment( $session{'CurrentUser'} );
+ my $AttachmentObj = RT::Attachment->new( $session{'CurrentUser'} );
$AttachmentObj->Load( $id );
unless ( $AttachmentObj->id ) {
Abort("Couldn't load attachment #$id");
diff --git a/rt/share/html/Ticket/Attachment/dhandler b/rt/share/html/Ticket/Attachment/dhandler
index 9d4d5322c..75efeffbc 100755
--- a/rt/share/html/Ticket/Attachment/dhandler
+++ b/rt/share/html/Ticket/Attachment/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,7 +55,7 @@
else {
Abort("Corrupted attachment URL.");
}
- my $AttachmentObj = new RT::Attachment($session{'CurrentUser'});
+ my $AttachmentObj = RT::Attachment->new($session{'CurrentUser'});
$AttachmentObj->Load($attach) || Abort("Attachment '$attach' could not be loaded");
@@ -81,10 +81,6 @@
$iana = $iana? $iana->mime_name : $enc;
$content_type .= ";charset=$iana";
- # unless (RT->Config->Get('TrustMIMEAttachments')) {
- # $content_type = 'application/octet-stream';
- # }
-
$r->subprocess_env('no-gzip' => 1); # disable mod_deflate
$r->content_type( $content_type );
$m->clear_buffer();
diff --git a/rt/share/html/Ticket/Create.html b/rt/share/html/Ticket/Create.html
index 6ea2c9f39..0419126c6 100755
--- a/rt/share/html/Ticket/Create.html
+++ b/rt/share/html/Ticket/Create.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,51 +47,80 @@
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header,
Title => $title,
- onload => "function () { hide(document.getElementById('Ticket-Create-details')) }" &>
-<& /Elements/Tabs,
- current_toptab => "Ticket/Create.html",
- Title => $title,
- actions => $actions &>
+ onload => "function () { hide('Ticket-Create-details') }" &>
+<& /Elements/Tabs &>
+
<& /Elements/ListActions, actions => \@results &>
+
<form action="<% RT->Config->Get('WebPath') %>/Ticket/Create.html" method="post" enctype="multipart/form-data" name="TicketCreate">
-<input type="hidden" class="hidden" name="id" value="new" />
+ <input type="hidden" class="hidden" name="id" value="new" />
+
% $m->callback( CallbackName => 'FormStart', QueueObj => $QueueObj, ARGSRef => \%ARGS );
+
% if ($gnupg_widget) {
-<& /Elements/GnuPG/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
+ <& /Elements/GnuPG/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
% }
+
<div id="Ticket-Create-basics">
<a name="basics"></a>
-<&| /Widgets/TitleBox, title => $title &>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td class="label"><&|/l&>Queue</&>:</td>
-%#<td class="value"><& Elements/ShowQueue, QueueObj => $QueueObj &>
-%#<input type="hidden" class="hidden" name="Queue" value="<% $QueueObj->Name %>" />
-<td class="value"><& /Elements/SelectQueue,
- Name => 'Queue',
- Default => $QueueObj->Name,
- ShowNullOption => 0,
- ShowAllQueues => 0,
- OnChange => "document.getElementsByName('id')[0].value = ''; form.submit()" &>
-</td>
-<td class="label"><&|/l&>Status</&>:
-</td>
-<td class="value">
-<& /Elements/SelectStatus, Name => "Status", Default => $ARGS{Status}||'new', DefaultValue => 0, SkipDeleted => 1 &>
-</td>
-<td class="label">
-<&|/l&>Owner</&>:
-</td>
-<td class="value">
-<& /Elements/SelectOwner, Name => "Owner", QueueObj => $QueueObj, Default => $ARGS{Owner}||$RT::Nobody->Id, DefaultValue => 0 &>
-</td>
+
+<div id="ticket-create-metadata">
+ <&| /Widgets/TitleBox, title => loc("Basics"), class=>'ticket-info-basics' &>
+ <table width="100%" border="0">
+ <& /Ticket/Elements/EditBasics,
+ InTable => 1,
+ fields => [
+ { name => 'Queue',
+ comp => '/Elements/SelectQueue',
+ args => {
+ Name => 'Queue',
+ Default => $QueueObj->Name,
+ QueueObj => $QueueObj,
+ ShowNullOption => 0,
+ ShowAllQueues => 0,
+ OnChange => "document.getElementsByName('id')[0].value = 'refresh'; form.submit()",
+ },
+ },
+ { name => 'Status',
+ comp => '/Elements/SelectStatus',
+ args => {
+ Name => "Status",
+ Default => $ARGS{Status} || $QueueObj->Lifecycle->DefaultOnCreate,
+ DefaultValue => 0,
+ SkipDeleted => 1,
+ QueueObj => $QueueObj,
+ },
+ },
+ { name => 'Owner',
+ comp => '/Elements/SelectOwner',
+ args => {
+ Name => "Owner",
+ Default => $ARGS{Owner} || RT->Nobody->Id,
+ DefaultValue => 0,
+ QueueObj => $QueueObj,
+ },
+ }
+ ]
+ &>
+
% $m->callback( CallbackName => 'AfterOwner', ARGSRef => \%ARGS );
-</tr>
+
+ <& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1 &>
+ <& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1 &>
+ </table>
+ </&>
+% $m->callback( CallbackName => 'AfterBasics', QueueObj => $QueueObj, ARGSRef => \%ARGS );
+</div>
+
+<div id="ticket-create-message">
+ <&| /Widgets/TitleBox, title => $title, class => 'messagedetails' &>
+<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="label">
<&|/l&>Requestors</&>:
</td>
<td class="value" colspan="5">
-<& /Elements/EmailInput, Name => 'Requestors', Size => '40', Default => $ARGS{Requestors} || $session{CurrentUser}->EmailAddress &>
+<& /Elements/EmailInput, Name => 'Requestors', Size => undef, Default => exists($ARGS{Requestors}) ? $ARGS{Requestors} : $session{CurrentUser}->EmailAddress &>
% $m->callback( CallbackName => 'AfterRequestors', QueueObj => $QueueObj, ARGSRef => \%ARGS );
</td>
</tr>
@@ -99,55 +128,41 @@
<td class="label">
<&|/l&>Cc</&>:
</td>
-<td class="value" colspan="3"><& /Elements/EmailInput, Name => 'Cc', Size => '40', Default => $ARGS{Cc} &></td>
-<td class="comment" colspan="2"><i><font size="-2">
-<&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)</&></font></i>
-</td>
+<td class="value" colspan="5"><& /Elements/EmailInput, Name => 'Cc', Size => undef, Default => $ARGS{Cc} &></td>
</tr>
+
<tr>
-<td class="label">
-<&|/l&>Admin Cc</&>:
-</td>
-<td class="value" colspan="3"><& /Elements/EmailInput, Name => 'AdminCc', Size => '40', Default => $ARGS{AdminCc} &></td>
-<td class="comment" colspan="2"><i><font size="-2">
-<&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)</&></font></i>
-</td>
+ <td class="label">&nbsp;</td>
+ <td class="comment" colspan="5">
+ <i><font size="-2">
+ <&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)</&>
+ </font></i>
+ </td>
</tr>
+
<tr>
<td class="label">
-<&|/l&>Subject</&>:
-</td>
-<td class="value" colspan="5">
-<input name="Subject" size="60" maxsize="200" value="<%$ARGS{Subject} || ''%>" />
-% $m->callback( %ARGS, CallbackName => 'AfterSubject' );
-</td>
-</tr>
-<tr>
-<td colspan="6">
-<& /Ticket/Elements/EditCustomFields, %ARGS, QueueObj => $QueueObj &>
+<&|/l&>Admin Cc</&>:
</td>
+<td class="value" colspan="5"><& /Elements/EmailInput, Name => 'AdminCc', Size => undef, Default => $ARGS{AdminCc} &></td>
</tr>
-<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj &>
+
<tr>
-% if (exists $session{'Attachments'}) {
-<td class="label">
-<&|/l&>Attached file</&>:
-</td>
-<td colspan="5">
-<&|/l&>Check box to delete</&><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
-<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
-% } # end of foreach
-</td>
+ <td class="label">&nbsp;</td>
+ <td class="comment" colspan="5">
+ <i><font size="-2">
+ <&|/l&>(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)</&>
+ </font></i>
+ </td>
</tr>
+
<tr>
-% } # end of if
<td class="label">
-<&|/l&>Attach file</&>:
+<&|/l&>Subject</&>:
</td>
<td class="value" colspan="5">
-<input type="file" name="Attach" />
-<input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" />
+<input type="text" name="Subject" maxsize="200" value="<%$ARGS{Subject} || ''%>" />
+% $m->callback( %ARGS, CallbackName => 'AfterSubject' );
</td>
</tr>
@@ -160,6 +175,9 @@
<tr>
<td colspan="6">
<&|/l&>Describe the issue below</&>:<br />
+% if ( RT->Config->Get('ArticleOnTicketCreate')) {
+<& /Articles/Elements/BeforeMessageBox, %ARGS, QueueObj => $QueueObj &>
+% }
% $m->callback( %ARGS, QueueObj => $QueueObj, CallbackName => 'BeforeMessageBox' );
% if (exists $ARGS{Content}) {
<& /Elements/MessageBox, Default => $ARGS{Content}, IncludeSignature => 0 &>
@@ -171,9 +189,12 @@
<br />
</td>
</tr>
-</table>
-</&>
-<& /Elements/Submit, Label => loc("Create")&>
+
+ <& /Ticket/Elements/AddAttachments, %ARGS, QueueObj => $QueueObj &>
+ </table>
+ </&>
+ <& /Elements/Submit, Label => loc("Create"), id => 'SubmitTicket' &>
+ </div>
</div>
<div id="Ticket-Create-details">
@@ -242,7 +263,6 @@
<tr><td class="label"><&|/l&>Referred to by</&></td><td><input size="10" name="RefersTo-new" value="<% $ARGS{'RefersTo-new'} || '' %>" /></td></tr>
<tr><td class="label">Customer ID</td><td><input size="10" name="new-Customer" value="<% $ARGS{'new-Customer'} || '' %>" /></td></tr>
-
</table>
</&>
</div>
@@ -258,10 +278,10 @@
<%INIT>
$m->callback( CallbackName => "Init", ARGSRef => \%ARGS );
my $Queue = $ARGS{Queue};
+$session{DefaultQueue} = $Queue;
-my $CloneTicketObj;
if ($CloneTicket) {
- $CloneTicketObj = RT::Ticket->new( $session{CurrentUser} );
+ my $CloneTicketObj = RT::Ticket->new( $session{CurrentUser} );
$CloneTicketObj->Load($CloneTicket)
or Abort( loc("Ticket could not be loaded") );
@@ -283,41 +303,30 @@ if ($CloneTicket) {
my $members = $CloneTicketObj->Members;
my ( @members, @members_of, @refers, @refers_by, @depends, @depends_by );
my $refers = $CloneTicketObj->RefersTo;
+ my $get_link_value = sub {
+ my ($link, $type) = @_;
+ my $uri_method = $type . 'URI';
+ my $local_method = 'Local' . $type;
+ my $uri = $link->$uri_method;
+ return if $uri->IsLocal and
+ $uri->Object and
+ $uri->Object->isa('RT::Ticket') and
+ $uri->Object->Type eq 'reminder';
+
+ return $link->$local_method || $uri->URI;
+ };
while ( my $refer = $refers->Next ) {
- push @refers, $refer->LocalTarget;
+ my $refer_value = $get_link_value->($refer, 'Target');
+ push @refers, $refer_value if defined $refer_value;
}
$clone->{'new-RefersTo'} = join ' ', @refers;
my $refers_by = $CloneTicketObj->ReferredToBy;
while ( my $refer_by = $refers_by->Next ) {
- push @refers_by, $refer_by->LocalBase;
+ my $refer_by_value = $get_link_value->($refer_by, 'Base');
+ push @refers_by, $refer_by_value if defined $refer_by_value;
}
$clone->{'RefersTo-new'} = join ' ', @refers_by;
- if (0) { # Temporarily disabled
- my $depends = $CloneTicketObj->DependsOn;
- while ( my $depend = $depends->Next ) {
- push @depends, $depend->LocalTarget;
- }
- $clone->{'new-DependsOn'} = join ' ', @depends;
-
- my $depends_by = $CloneTicketObj->DependedOnBy;
- while ( my $depend_by = $depends_by->Next ) {
- push @depends_by, $depend_by->LocalBase;
- }
- $clone->{'DependsOn-new'} = join ' ', @depends_by;
-
- while ( my $member = $members->Next ) {
- push @members, $member->LocalBase;
- }
- $clone->{'MemberOf-new'} = join ' ', @members;
-
- my $members_of = $CloneTicketObj->MemberOf;
- while ( my $member_of = $members_of->Next ) {
- push @members_of, $member_of->LocalTarget;
- }
- $clone->{'new-MemberOf'} = join ' ', @members_of;
-
- }
my $cfs = $CloneTicketObj->QueueObj->TicketCustomFields();
while ( my $cf = $cfs->Next ) {
@@ -351,7 +360,7 @@ my @results;
my $title = loc("Create a new ticket");
-my $QueueObj = new RT::Queue($session{'CurrentUser'});
+my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($Queue) || Abort(loc("Queue could not be loaded."));
$m->callback( QueueObj => $QueueObj, title => \$title, results => \@results, ARGSRef => \%ARGS );
@@ -366,17 +375,16 @@ my $ValidCFs = $m->comp(
ARGSRef => \%ARGS
);
-# {{{ deal with deleting uploaded attachments
+# deal with deleting uploaded attachments
foreach my $key (keys %ARGS) {
if ($key =~ m/^DeleteAttach-(.+)$/) {
delete $session{'Attachments'}{$1};
}
$session{'Attachments'} = { %{$session{'Attachments'} || {}} };
}
-# }}}
-# {{{ store the uploaded attachment in session
-if ($ARGS{'Attach'}) { # attachment?
+# store the uploaded attachment in session
+if ( defined $ARGS{'Attach'} && length $ARGS{'Attach'} ) { # attachment?
my $attachment = MakeMIMEEntity(
AttachmentFieldName => 'Attach'
);
@@ -387,10 +395,10 @@ if ($ARGS{'Attach'}) { # attachment?
$file_path => $attachment,
};
}
-# }}}
# delete temporary storage entry to make WebUI clean
-unless (keys %{$session{'Attachments'}} and $ARGS{'id'} eq 'new') {
+unless (keys %{$session{'Attachments'}} and
+ ($ARGS{'id'} eq 'new' or $ARGS{'id'} eq 'refresh')) {
delete $session{'Attachments'};
}
@@ -432,6 +440,9 @@ my $skip_create = 0;
$m->callback( CallbackName => 'BeforeCreate', ARGSRef => \%ARGS, skip_create => \$skip_create,
checks_failure => $checks_failure, results => \@results );
+$m->comp( '/Articles/Elements/CheckSkipCreate', ARGSRef => \%ARGS, skip_create => \$skip_create,
+ checks_failure => $checks_failure, results => \@results );
+
if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} eq 'new')) { # new ticket?
if ( $ValidCFs && !$checks_failure && !$skip_create ) {
# CREATE THE TICKET.
@@ -457,15 +468,8 @@ if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} e
}
}
}
-
-my $actions = {
- A => {
- html => q[<a href="#basics" onclick="return switchVisibility('Ticket-Create-basics','Ticket-Create-details');">] . loc('Show basics') . q[</a>],
- },
- B => {
- html => q[<a href="#details" onclick="return switchVisibility('Ticket-Create-details','Ticket-Create-basics');">] . loc('Show details') . q[</a>],
- },
-};
+PageMenu->child( basics => raw_html => q[<a href="#basics" onclick="return switchVisibility('Ticket-Create-basics','Ticket-Create-details');">] . loc('Basics') . q[</a>]);
+PageMenu->child( details => raw_html => q[<a href="#details" onclick="return switchVisibility('Ticket-Create-details','Ticket-Create-basics');">] . loc('Details') . q[</a>]);
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Ticket/Display.html b/rt/share/html/Ticket/Display.html
index 59adbd68d..0a29c9763 100755
--- a/rt/share/html/Ticket/Display.html
+++ b/rt/share/html/Ticket/Display.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,19 +46,16 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header,
- Title => loc("Ticket #[_1]: [_2]", $TicketObj->Id, $TicketObj->Subject),
+ Title => $title,
LinkRel => \%link_rel &>
-<& /Ticket/Elements/Tabs,
- Ticket => $TicketObj,
- current_tab => 'Ticket/Display.html?id='.$TicketObj->id,
- Title => loc("Ticket #[_1]: [_2]", $TicketObj->Id, $TicketObj->Subject) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', %ARGS, Actions => \@Actions, ARGSRef => \%ARGS, Ticket => $TicketObj);
<& /Elements/ListActions, actions => \@Actions &>
<& Elements/ShowUpdateStatus, Ticket => $TicketObj &>
-% $m->callback( %ARGS, Ticket => $TicketObj, CallbackName => 'BeforeShowSummary' );
+% $m->callback( %ARGS, Ticket => $TicketObj, Transactions => $transactions, Attachments => $attachments, CallbackName => 'BeforeShowSummary' );
<div class="summary">
<&| /Widgets/TitleBox, title => loc('Ticket metadata') &>
<& /Ticket/Elements/ShowSummary, Ticket => $TicketObj, Attachments => $attachments &>
@@ -66,20 +63,28 @@
</div>
<br />
-% $m->callback( Ticket => $TicketObj, %ARGS, CallbackName => 'BeforeShowHistory' );
-
-<& /Ticket/Elements/ShowHistory ,
- Ticket => $TicketObj,
- Tickets => $Tickets,
- Collapsed => $ARGS{'Collapsed'},
- ShowHeaders => $ARGS{'ShowHeaders'},
- Attachments => $attachments,
- AttachmentContent => $attachment_content
-&>
+% $m->callback( Ticket => $TicketObj, %ARGS, Transactions => $transactions, Attachments => $attachments, CallbackName => 'BeforeShowHistory' );
+
+% if (not $ForceShowHistory and RT->Config->Get( 'DeferTransactionLoading', $session{'CurrentUser'} )) {
+ <& /Ticket/Elements/ClickToShowHistory,
+ Ticket => $TicketObj,
+ &>
+% } else {
+ <& /Ticket/Elements/ShowHistory ,
+ Ticket => $TicketObj,
+ Tickets => $Tickets,
+ Transactions => $transactions,
+ Collapsed => $ARGS{'Collapsed'},
+ ShowHeaders => $ARGS{'ShowHeaders'},
+ Attachments => $attachments,
+ AttachmentContent => $attachment_content
+ &>
+% }
% $m->callback( %ARGS,
% Ticket => $TicketObj,
-% current_tab => 'Ticket/Display.html?id=' . $TicketObj->id,
+% Transactions => $transactions,
+% Attachments => $attachments,
% CallbackName => 'AfterShowHistory',
% );
@@ -88,13 +93,21 @@ $id => undef
$TicketObj => undef
$ShowHeaders => 0
$Collapsed => undef
+$ForceShowHistory => 0
</%ARGS>
<%INIT>
$m->callback( TicketObj => $TicketObj, ARGSRef => \%ARGS, CallbackName => 'Initial' );
-my (@Actions, $Tickets);
+if ( ! $ARGS{'NoRedirect'} && RT::Interface::Web->MobileClient()) {
+ $id ||= $TicketObj->id if $TicketObj;
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL').'m/ticket/show?id='.$id);
+ $m->abort;
+}
+
+
+my (@Actions, $Tickets, $title);
unless ($id || $TicketObj) {
@@ -112,7 +125,7 @@ if ($ARGS{'id'} eq 'new') {
$ARGS{'new-MemberOf'} =
join(' ', $ARGS{'new-MemberOf'}, @cust_uris);
- my $Queue = new RT::Queue( $session{'CurrentUser'} );
+ my $Queue = RT::Queue->new( $session{'CurrentUser'} );
$Queue->Load($ARGS{'Queue'});
unless ( $Queue->id ) {
Abort('Queue not found');
@@ -129,89 +142,95 @@ if ($ARGS{'id'} eq 'new') {
unless ( $TicketObj->CurrentUserHasRight('ShowTicket') ) {
Abort("No permission to view newly created ticket #".$TicketObj->id.".");
}
- # }}}
} else {
$TicketObj ||= LoadTicket($ARGS{'id'});
+ $TicketObj->CurrentUser->PrincipalObj->HasRights( Object => $TicketObj );
+
+ my $SkipProcessing;
+
$m->callback( CallbackName => 'BeforeProcessArguments',
TicketObj => $TicketObj, Tickets => $Tickets,
- ActionsRef => \@Actions, ARGSRef => \%ARGS );
- if ( defined $ARGS{'Action'} ) {
- if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) {
- my $action = $1;
- my ($res, $msg) = $TicketObj->$action();
- push(@Actions, $msg);
+ ActionsRef => \@Actions, ARGSRef => \%ARGS,
+ SkipProcessing => \$SkipProcessing );
+
+ if ( !$SkipProcessing ) {
+ if ( defined $ARGS{'Action'} ) {
+ if ($ARGS{'Action'} =~ /^(Steal|Delete|Take|SetTold)$/) {
+ my $action = $1;
+ my ($res, $msg) = $TicketObj->$action();
+ push(@Actions, $msg);
+ }
}
- }
- $m->callback(CallbackName => 'ProcessArguments',
- Ticket => $TicketObj,
- ARGSRef => \%ARGS,
- Actions => \@Actions);
-
- $ARGS{UpdateAttachments} = $session{'Attachments'};
- push @Actions,
- ProcessUpdateMessage(
- ARGSRef => \%ARGS,
- Actions => \@Actions,
- TicketObj => $TicketObj,
- );
- delete $session{'Attachments'};
-
- #Process status updates
- push @Actions, ProcessTicketWatchers(ARGSRef => \%ARGS, TicketObj => $TicketObj );
- push @Actions, ProcessTicketBasics( ARGSRef => \%ARGS, TicketObj => $TicketObj );
- push @Actions, ProcessTicketLinks( ARGSRef => \%ARGS, TicketObj => $TicketObj );
- push @Actions, ProcessTicketDates( ARGSRef => \%ARGS, TicketObj => $TicketObj );
- push @Actions, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $TicketObj );
- # If this fails due to required fields being empty, it will set
- # notes('RedirectToBasics').
- push @Actions, ProcessTicketStatus( ARGSRef => \%ARGS, TicketObj => $TicketObj );
-
- # XXX: we shouldn't block actions here if user has no right to see the
- # ticket, but we should allow him to see actions he has done
- unless ($TicketObj->CurrentUserHasRight('ShowTicket')) {
- Abort("No permission to view ticket");
- }
- if ( $ARGS{'MarkAsSeen'} ) {
- $TicketObj->SetAttribute(
- Name => 'User-'. $TicketObj->CurrentUser->id .'-SeenUpTo',
- Content => $TicketObj->LastUpdated,
- );
- push @Actions, loc('Marked all messages as seen');
+ $m->callback(CallbackName => 'ProcessArguments',
+ Ticket => $TicketObj,
+ ARGSRef => \%ARGS,
+ Actions => \@Actions);
+
+ $ARGS{UpdateAttachments} = $session{'Attachments'};
+ push @Actions,
+ ProcessUpdateMessage(
+ ARGSRef => \%ARGS,
+ Actions => \@Actions,
+ TicketObj => $TicketObj,
+ );
+ delete $session{'Attachments'};
+
+ #Process status updates
+ push @Actions, ProcessTicketWatchers(ARGSRef => \%ARGS, TicketObj => $TicketObj );
+ push @Actions, ProcessTicketBasics( ARGSRef => \%ARGS, TicketObj => $TicketObj );
+ push @Actions, ProcessTicketLinks( ARGSRef => \%ARGS, TicketObj => $TicketObj );
+ push @Actions, ProcessTicketDates( ARGSRef => \%ARGS, TicketObj => $TicketObj );
+ push @Actions, ProcessTicketCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $TicketObj );
+ # If this fails due to required fields being empty, it will set
+ # notes('RedirectToBasics').
+ push @Actions, ProcessTicketStatus( ARGSRef => \%ARGS, TicketObj => $TicketObj );
+
+ push @Actions, ProcessTicketReminders( ARGSRef => \%ARGS, TicketObj => $TicketObj );
+
+ # XXX: we shouldn't block actions here if user has no right to see the ticket,
+ # but we should allow him to see actions he has done
+ unless ($TicketObj->CurrentUserHasRight('ShowTicket')) {
+ Abort("No permission to view ticket");
+ }
+ if ( $ARGS{'MarkAsSeen'} ) {
+ $TicketObj->SetAttribute(
+ Name => 'User-'. $TicketObj->CurrentUser->id .'-SeenUpTo',
+ Content => $TicketObj->LastUpdated,
+ );
+ push @Actions, loc('Marked all messages as seen');
+ }
}
}
+
+$title = loc("Ticket #[_1]: [_2]", $TicketObj->Id, $TicketObj->Subject || '');
+
$m->callback(
CallbackName => 'BeforeDisplay',
TicketObj => \$TicketObj,
Tickets => \$Tickets,
Actions => \@Actions,
+ title => \$title,
ARGSRef => \%ARGS,
);
# This code does automatic redirection if any updates happen.
+my $path = '/Ticket/'. ( $m->notes('RedirectToBasics') ? 'Modify.html'
+ : 'Display.html' );
+MaybeRedirectForResults(
+ Actions => \@Actions,
+ $TicketObj->Type eq 'approval' && RT->Config->Get('ForceApprovalsView')
+ ? (Path => "/Approvals/Display.html", Force => 1)
+ : (Path => $path)
+ ,
+ Anchor => $ARGS{'Anchor'},
+ Arguments => { id => $TicketObj->id },
+);
-if (@Actions) {
-
- # We've done something, so we need to clear the decks to avoid
- # resubmission on refresh.
- # But we need to store Actions somewhere too, so we don't lose them.
- my $key = Digest::MD5::md5_hex( rand(1024) );
- push @{ $session{"Actions"}->{$key} ||= [] }, @Actions;
- $session{'i'}++;
- my $url = RT->Config->Get('WebURL');
- if ( $m->notes('RedirectToBasics') ) {
- $url .= 'Ticket/Modify.html';
- }
- else {
- $url .= 'Ticket/Display.html';
- }
- $url .= '?id=' . $TicketObj->id . "&results=" . $key;
- $url .= '#' . $ARGS{Anchor} if $ARGS{Anchor};
- RT::Interface::Web::Redirect($url);
-}
-
+# Get the transactoins before the attachments, for great ACL justice
+my $transactions = $m->comp('Elements/FindTransactions',Ticket => $TicketObj, Tickets => $Tickets || undef);
my $attachments = $m->comp('Elements/FindAttachments', Ticket => $TicketObj, Tickets => $Tickets);
my $attachment_content = $m->comp('Elements/LoadTextAttachments', Ticket => $TicketObj);
diff --git a/rt/share/html/Ticket/Elements/AddAttachments b/rt/share/html/Ticket/Elements/AddAttachments
new file mode 100644
index 000000000..008685884
--- /dev/null
+++ b/rt/share/html/Ticket/Elements/AddAttachments
@@ -0,0 +1,61 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+% if (exists $session{'Attachments'}) {
+<tr><td class="label"><&|/l&>Attached file</&>:</td>
+<td>
+<&|/l&>Check box to delete</&><br />
+% foreach my $attach_name (keys %{$session{'Attachments'}}) {
+<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
+% } # end of foreach
+</td>
+</tr>
+% } # end of if
+
+<tr><td class="label"><&|/l&>Attach</&>:</td><td><input name="Attach" type="file" /><input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" /><input type="hidden" class="hidden" name="UpdateAttach" value="1" />
+</td></tr>
+% $m->callback( %ARGS, CallbackName => 'End' );
diff --git a/rt/share/html/Ticket/Elements/AddCustomers b/rt/share/html/Ticket/Elements/AddCustomers
index 09acdfd3f..3c2c82add 100644
--- a/rt/share/html/Ticket/Elements/AddCustomers
+++ b/rt/share/html/Ticket/Elements/AddCustomers
@@ -13,15 +13,25 @@
<BR>
<%$msg%><br>
-% if (@Customers) {
+% if (@Customers or @Services) {
-<br><i>(Check box to link)<i>
+<br><i>(Check box to link)</i>
<table>
% foreach my $customer (@Customers) {
<tr>
<td>
<input type="checkbox" name="Ticket-AddCustomer-<% $customer->{'custnum'} %>" VALUE="1" <% scalar(@Customers) == 1 ? 'CHECKED' : '' %>>
- <A HREF="<%$freeside_url%>/view/cust_main.cgi?<% $customer->{'custnum'} %>"><% &RT::URI::freeside::small_custview($customer->{'custnum'}, &RT::URI::freeside::FreesideGetConfig('countrydefault'), 1) |n %>
+ <& .small_custview, $customer &>
+ </td>
+</tr>
+% }
+%
+% foreach my $service (@Services) {
+<tr>
+ <td>
+ <input type="checkbox" name="Ticket-AddService-<% $service->{'svcnum'} %>" VALUE="1" <% scalar(@Services) == 1 ? 'CHECKED' : '' %>>
+ <& .small_custview, $service &>
+ <& .small_svcview, $service &>
</td>
</tr>
% }
@@ -29,11 +39,21 @@
% }
+<%once>
+my $freeside_url = &RT::URI::freeside::FreesideURL();
+
+</%once>
+<%def .small_custview>
+% my $cust = shift;
+<A HREF="<%$freeside_url%>/view/cust_main.cgi?<% $cust->{'custnum'}%>"><% &RT::URI::freeside::small_custview($cust->{'custnum'}, &RT::URI::freeside::FreesideGetConfig, 1) |n %></A>
+</%def>
+<%def .small_svcview>
+% my $svc = shift;
+<A HREF="<%$freeside_url%>/view/cust_svc.cgi?<% $svc->{'svcnum'}%>"><B><% $svc->{'label'} %></B></A>
+</%def>
<%INIT>
my ($msg);
-my $freeside_url = &RT::URI::freeside::FreesideURL();
-
my @Customers = ();
if ( $CustomerString ) {
@Customers = &RT::URI::freeside::smart_search(
@@ -43,8 +63,11 @@ if ( $CustomerString ) {
}
my @Services = ();
-if ($ServiceString) {
- @Services = (); #service_search();
+if ( $ServiceString
+ and $RT::URI::freeside::IntegrationType eq 'Internal' ) {
+ @Services = RT::URI::freeside::service_search(
+ 'search' => $ServiceString,
+ );
}
</%INIT>
diff --git a/rt/share/html/Ticket/Elements/AddWatchers b/rt/share/html/Ticket/Elements/AddWatchers
index b015f5c43..8590a2aef 100755
--- a/rt/share/html/Ticket/Elements/AddWatchers
+++ b/rt/share/html/Ticket/Elements/AddWatchers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/Bookmark b/rt/share/html/Ticket/Elements/Bookmark
index 28034c50e..30c9a4356 100644
--- a/rt/share/html/Ticket/Elements/Bookmark
+++ b/rt/share/html/Ticket/Elements/Bookmark
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -81,9 +81,9 @@ if ( $Toggle ) {
$id
$Toggle => 0
</%ARGS>
-<span id="toggle-<% $id %>" class="toggle-<% $id %>">
+<span class="toggle-bookmark-<% $id %>">
% my $url = RT->Config->Get('WebPath') ."/Helpers/Toggle/TicketBookmark?id=". $id;
-<a align="right" href="<% $url %>" onclick="toggleTicketBookmark('<% $id|n %>', '<% $url %>'); return false;">
+<a align="right" href="<% $url %>" onclick="jQuery('.toggle-bookmark-'+<% $id |n,j%>).load(<% $url |n,j %>); return false;" >
% if ( $bookmarked ) {
<img src="<% RT->Config->Get('WebPath') %>/NoAuth/images/star.gif" alt="<% loc('Remove Bookmark') %>" style="border-style: none" />
% } else {
diff --git a/rt/share/html/Ticket/Elements/BulkLinks b/rt/share/html/Ticket/Elements/BulkLinks
index 181fbed56..bae556cd1 100755
--- a/rt/share/html/Ticket/Elements/BulkLinks
+++ b/rt/share/html/Ticket/Elements/BulkLinks
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/NoAuth/css/3.4-compat/body.css b/rt/share/html/Ticket/Elements/ClickToShowHistory
index 287a4cc27..5a9a477e0 100644
--- a/rt/share/html/NoAuth/css/3.4-compat/body.css
+++ b/rt/share/html/Ticket/Elements/ClickToShowHistory
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,31 +45,16 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-#body {
- margin: 0.5em 0.5em 0 0.5em;
- float: left;
- width: 80%;
-}
-
-#body h1 { font-size: 1.5em; }
-#body h2 { font-size: 1.3em; }
-#body h3 { font-size: 1.1em; }
-#body h4 { font-size: 1em; }
-#body h5 { font-size: 0.9em; }
-#body h6 { font-size: 0.8em; }
-
-#body h1, #body h2, #body h3, #body h4, #body h5, #body h6 {
- font-weight: bold;
-}
-
-#body :link { color: black; }
-
-#body :link, #body :visited {
- font-weight: bold;
- text-decoration: none;
-}
-
-#body :link:hover, #body :visited:hover {
- text-decoration: underline;
-}
-
+<div id="deferred_ticket_history">
+ <& /Widgets/TitleBoxStart, title => 'History' &>
+ <a href="<% $display %>" onclick="jQuery('#deferred_ticket_history').text(<% loc('Loading...') |n,j%>).load(<% $url |n,j %>); return false;" ><% loc('Show ticket history') %></a>
+ <& /Widgets/TitleBoxEnd &>
+</div>
+<%ARGS>
+$Ticket
+</%ARGS>
+<%INIT>
+my $id = $Ticket->id;
+my $url = RT->Config->Get('WebPath') ."/Helpers/TicketHistory?id=". $id;
+my $display = RT->Config->Get('WebPath') ."/Ticket/Display.html?id=$id;ForceShowHistory=1";
+</%INIT>
diff --git a/rt/share/html/Ticket/Elements/EditBasics b/rt/share/html/Ticket/Elements/EditBasics
index b91329870..b428aab29 100755
--- a/rt/share/html/Ticket/Elements/EditBasics
+++ b/rt/share/html/Ticket/Elements/EditBasics
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,86 +45,100 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<table>
- <tr>
- <td class="label"><&|/l&>Subject</&>:</td>
- <td class="value"><input name="Subject" value="<%$TicketObj->Subject|h%>" size="50" /></td>
- </tr>
-
- <tr>
- <td class="label"><&|/l&>Status</&>:</td>
- <td class="value"><%$SelectStatus|n%></td>
- </tr>
- <tr>
- <td class="label"><&|/l&>Queue</&>:</td>
- <td class="value"><%$SelectQueue|n%></td>
- </tr>
- <tr>
- <td class="label"><&|/l&>Owner</&>:</td>
- <td class="value"><& /Elements/SelectOwner,
- Name => 'Owner',
- QueueObj => $TicketObj->QueueObj,
- TicketObj => $TicketObj,
- Default => $TicketObj->OwnerObj->Id,
- DefaultValue => 0,
- &></td>
- </tr>
-
- <tr>
- <td class="label"><&|/l&>Time Estimated</&>:</td>
- <td class="value">
- <& /Elements/EditTimeValue,
- Name => 'TimeEstimated',
- Default => $TicketObj->TimeEstimated,
- &>
- </td>
- </tr>
- <tr>
- <td class="label"><&|/l&>Time Worked</&>:</td>
- <td class="value">
- <& /Elements/EditTimeValue,
- Name => 'TimeWorked',
- Default => $TicketObj->TimeWorked,
- &>
- </td>
- </tr>
- <tr>
- <td class="label"><&|/l&>Time Left</&>:</td>
- <td class="value">
- <& /Elements/EditTimeValue,
- Name => 'TimeLeft',
- Default => $TicketObj->TimeLeft,
- &>
- </td>
- </tr>
-
- <tr>
- <td class="label"><&|/l&>Priority</&>:</td>
- <td class="value"><& /Elements/SelectPriority,
- Default => $TicketObj->Priority,
- &></td>
- </tr>
-
- <tr>
- <td class="label"><&|/l&>Final Priority</&>:</td>
- <td class="value"><& /Elements/SelectPriority,
- Name => "FinalPriority",
- Default => $TicketObj->FinalPriority,
- &></td>
- </tr>
+<%ARGS>
+$TicketObj => undef
+@fields => ()
+$InTable => 0
+%defaults => ()
+</%ARGS>
+<%INIT>
+unless ( @fields ) {
+ @fields = (
+ { name => 'Subject',
+ html => '<input name="Subject" value="'.$m->interp->apply_escapes( $defaults{'Subject'} || $TicketObj->Subject, 'h' ).'" />',
+ },
+ { name => 'Status',
+ comp => '/Elements/SelectStatus',
+ args => {
+ Name => 'Status',
+ DefaultLabel => loc("[_1] (Unchanged)",loc($TicketObj->Status)),
+ Default => $defaults{'Status'} || undef,
+ TicketObj => $TicketObj,
+ QueueObj => $TicketObj->QueueObj,
+ },
+ },
+ { name => 'Queue',
+ comp => '/Elements/SelectQueue',
+ args => {
+ Name => 'Queue',
+ Default => $defaults{'Queue'} || $TicketObj->QueueObj->Id,
+ ShowNullOption => 0,
+ }
+ },
+ { name => 'Owner',
+ comp => '/Elements/SelectOwner',
+ args => {
+ Name => 'Owner',
+ QueueObj => $TicketObj->QueueObj,
+ TicketObj => $TicketObj,
+ Default => $defaults{'Owner'} || $TicketObj->OwnerObj->Id,
+ DefaultValue => 0,
+ }
+ },
+ # Time Estimated, Worked, and Left
+ (
+ map {
+ (my $field = $_) =~ s/ //g;
+ {
+ name => $_,
+ comp => '/Elements/EditTimeValue',
+ args => {
+ Name => $field,
+ Default => $defaults{$field} || $TicketObj->$field,
+ }
+ }
+ } ('Time Estimated', 'Time Worked', 'Time Left')
+ ),
+ # Priority and Final Priority
+ (
+ map {
+ (my $field = $_) =~ s/ //g;
+ {
+ name => $_,
+ comp => '/Elements/SelectPriority',
+ args => {
+ Name => $field,
+ Default => $defaults{$field} || $TicketObj->$field,
+ }
+ }
+ } ('Priority', 'Final Priority')
+ ),
+ );
+}
+$m->callback( CallbackName => 'MassageFields', %ARGS, TicketObj => $TicketObj, Fields => \@fields );
+# Process the field list, skipping if html is provided and running the
+# components otherwise
+for my $field (@fields) {
+ next if defined $field->{'html'};
+ if ( $field->{'comp'} ) {
+ $field->{'html'} = $m->scomp($field->{'comp'}, %{$field->{'args'} || {}});
+ }
+}
+</%INIT>
-% $m->callback( CallbackName => 'EndOfList', TicketObj => $TicketObj, %ARGS );
+% unless ($InTable) {
+<table>
+% }
+% for my $field (@fields) {
+ <tr class="<% lc $field->{'name'} %>">\
+<td class="label"><&|/l&><% $field->{'name'} %></&>:</td>\
+<td class="value"><% $field->{'html'} |n %></td>\
+</tr>
+% }
+% $m->callback( CallbackName => 'EndOfList', TicketObj => $TicketObj, %ARGS, Fields => \@fields );
+% unless ($InTable) {
</table>
+% }
-<%INIT>
-#It's hard to do this inline, so we'll preload the html of the selectstatus in here.
-my $SelectStatus = $m->scomp("/Elements/SelectStatus", Name => 'Status', DefaultLabel => loc("[_1] (Unchanged)",loc($TicketObj->Status)));
-my $SelectQueue = $m->scomp("/Elements/SelectQueue", Name => 'Queue', Default =>$TicketObj->QueueObj->Id, ShowNullOption => 0);
-
-</%INIT>
-<%ARGS>
-
-$TicketObj => undef
-</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/EditCustomFields b/rt/share/html/Ticket/Elements/EditCustomFields
index ee55e996f..29ac95ad0 100755
--- a/rt/share/html/Ticket/Elements/EditCustomFields
+++ b/rt/share/html/Ticket/Elements/EditCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,22 +46,18 @@
%#
%# END BPS TAGGED BLOCK }}}
% $m->callback( %ARGS, CallbackName => 'BeforeCustomFields' );
-<table>
-% my $i = 0;
+% if ( $WRAP ) {
+<<% $WRAP %> class="edit-custom-fields">
+% }
% while ( my $CustomField = $CustomFields->Next ) {
% next unless $CustomField->CurrentUserHasRight('ModifyCustomField');
-% my $escaped_name = lc $CustomField->Name;
-% $escaped_name =~ s/[^a-z0-9_-]/_/g;
-% my $type = $CustomField->Type || 'Unknown';
-% $i++;
-% if ( $single_column || $i % 2 ) {
-<tr class="edit-custom-field">
-% }
- <td class="cflabel cftype-<% $type %> cfname-<% $escaped_name %>" id="<% $CFIDPrefix %>cflabel-<% $CustomField->Id %>" >
- <b><% loc($CustomField->Name) %></b><br />
- <i><% $CustomField->FriendlyType %></i>
- </td>
- <td class="entry cftype-<% $type %> cfname-<% $escaped_name %>" id="<% $CFIDPrefix %>cfentry-<% $CustomField->Id %>">
+% my $Type = $CustomField->Type || 'Unknown';
+ <<% $FIELD %> class="edit-custom-field cftype-<% $Type %>">
+ <<% $CELL %> class="cflabel">
+ <span class="name"><% loc($CustomField->Name) %></span><br />
+ <span class="type"><% $CustomField->FriendlyType %></span>
+ </<% $CELL %>>
+ <<% $CELL %> class="entry">
% my $default = $m->notes('Field-' . $CustomField->Id);
% $default ||= $ARGS{"CustomField-". $CustomField->Id };
<& /Elements/EditCustomField,
@@ -73,22 +69,15 @@
&>
% if (my $msg = $m->notes('InvalidField-' . $CustomField->Id)) {
<br />
- <span class="cfinvalidfield cftype-<% $type %> cfname-<% $escaped_name %>"><% $msg %></span>
+ <span class="cfinvalidfield"><% $msg %></span>
% }
- </td>
-
-% if ($single_column || not $i % 2 ) {
-</tr>
-% }
-
+ </<% $CELL %>>
+ </<% $FIELD %>>
% }
-%# close row if required
-% if ( !$single_column || $i % 2 ) {
-</tr>
+% if ( $WRAP ) {
+</<% $WRAP %>>
% }
-
-</table>
% $m->callback( %ARGS, CallbackName => 'AfterCustomFields', TicketObj => $TicketObj, QueueObj => $QueueObj );
<%INIT>
my $CustomFields;
@@ -103,7 +92,15 @@ if ($TicketObj && !$OnCreate) {
$m->callback( %ARGS, CallbackName => 'MassageCustomFields', CustomFields => $CustomFields );
-my $single_column = RT->Config->Get('EditCustomFieldsSingleColumn');
+$AsTable ||= $InTable;
+my $FIELD = $AsTable ? 'tr' : 'div';
+my $CELL = $AsTable ? 'td' : 'div';
+my $WRAP = '';
+if ( $AsTable ) {
+ $WRAP = 'table' unless $InTable;
+} else {
+ $WRAP = 'div';
+}
# show hints for missing required fields
if ( $TicketObj ) {
@@ -119,5 +116,6 @@ $TicketObj => undef
$QueueObj => undef
$OnCreate => undef
$DefaultsFromTopArguments => 1
-$CFIDPrefix => ''
+$AsTable => 0
+$InTable => 0
</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/EditCustomers b/rt/share/html/Ticket/Elements/EditCustomers
index 0ba6e447b..96207f4cc 100644
--- a/rt/share/html/Ticket/Elements/EditCustomers
+++ b/rt/share/html/Ticket/Elements/EditCustomers
@@ -12,7 +12,7 @@
%# General Public License for more details.
<TABLE width=100%>
<TR>
- <TD VALIGN=TOP WIDTH=50%>
+ <TD VALIGN=TOP WIDTH=50% ROWSPAN=3>
<h3><&|/l&>Current Customers</&></h3>
<table>
@@ -25,33 +25,40 @@
<INPUT TYPE=CHECKBOX NAME="DeleteLink--<%$link->Type%>-<%$link->Target%>">
%# <& ShowLink, URI => $link->TargetURI &><br>
- <A HREF="<% $link->TargetURI->Resolver->HREF %>"><% $link->TargetURI->Resolver->AsStringLong |n %></A>
- <BR>
+ <% $link->TargetURI->Resolver->AsStringLong |n %></A>
+ <BR><BR>
% }
</td>
</tr>
</table>
-
+
</TD>
-<TD VALIGN=TOP>
+<TD VALIGN=TOP WIDTH=50% COLSPAN=2>
<h3><&|/l&>New Customer Links</&></h3>
-<&|/l&>Find customer</&><BR>
-<input name="CustomerString">
-<input type=submit name="OnlySearchForCustomers" value="<&|/l&>Go!</&>">
-<br><i>cust #, name, company or phone</i>
-<BR>
-%#<BR>
-%#<&|/l&>Find service</&><BR>
-%#<input name="ServiceString">
-%#<input type=submit name="OnlySearchForServices" value="<&|/l&>Go!</&>">
-%#<br><i>username, username@domain, domain, or IP address</i>
-%#<BR>
-
+</TD>
+</TR>
+<TR VALIGN="top">
+%# rowspan
+ <td width=25%>
+ <&|/l&>Find customer</&><br>
+ <input name="CustomerString">
+ <input type=submit name="OnlySearchForCustomers" value="<&|/l&>Go!</&>">
+ <br><i>cust #, name, company or phone</i>
+ </td>
+ <td width=25%>
+ <&|/l&>Find service</&><br>
+ <input name="ServiceString">
+ <input type=submit name="OnlySearchForServices" value="<&|/l&>Go!</&>">
+ <br><i>user, email, ip, mac, phone</i>
+ </td>
+</TR>
+<TR>
+%#rowspan...
+<TD COLSPAN=2>
<& AddCustomers, Ticket => $Ticket,
CustomerString => $CustomerString,
- ServiceString => $ServiceString, &>
-
+ ServiceString => $ServiceString &>
</TD>
</TR>
</TABLE>
diff --git a/rt/share/html/Ticket/Elements/EditDates b/rt/share/html/Ticket/Elements/EditDates
index 4b9a93bb8..93ca4cc30 100755
--- a/rt/share/html/Ticket/Elements/EditDates
+++ b/rt/share/html/Ticket/Elements/EditDates
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/EditPeople b/rt/share/html/Ticket/Elements/EditPeople
index 980700ed0..09cf6f365 100755
--- a/rt/share/html/Ticket/Elements/EditPeople
+++ b/rt/share/html/Ticket/Elements/EditPeople
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/EditTransactionCustomFields b/rt/share/html/Ticket/Elements/EditTransactionCustomFields
index a4ade8721..e9a1bbb5c 100644
--- a/rt/share/html/Ticket/Elements/EditTransactionCustomFields
+++ b/rt/share/html/Ticket/Elements/EditTransactionCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,30 +46,36 @@
%#
%# END BPS TAGGED BLOCK }}}
% $m->callback( CallbackName => 'BeforeTransactionCustomFields', TicketObj => $TicketObj, QueueObj => $QueueObj, NamePrefix => $NamePrefix );
+% if ( $WRAP ) {
+<<% $WRAP %> class="edit-transaction-custom-fields">
+% }
% if ($CustomFields->Count) {
% while (my $CF = $CustomFields->Next()) {
% $CF->SetContextObject($TicketObj || $QueueObj);
% next unless $CF->CurrentUserHasRight('ModifyCustomField');
% next unless $CF->UILocation eq $UILocation;
-<tr>
-<td class="label">
-<% loc($CF->Name) %>:
-</td>
-<td>
+<<% $FIELD %>>
+<<% $CELL %> class="label cflabel">
+ <span class="name"><% loc($CF->Name) %>:</span><br />
+% if ( $CF->Type ne 'TimeValue' ) {
+ <span class="type"><% $CF->FriendlyType %></span>
+% }
+</<% $CELL %>>
+<<% $CELL %>>
<& /Elements/EditCustomField,
CustomField => $CF,
NamePrefix => $NamePrefix
&>
-% if ( $CF->Type ne 'TimeValue' ) {
-<em><% $CF->FriendlyType %></em>
-% }
-% if (my $msg = $m->notes('InvalidField-' . $CF->Id)) {
+% if (my $msg = $m->notes('InvalidField-' . $CF->Id)) {
<br />
<span class="cfinvalidfield"><% $msg %></span>
+% }
+</<% $CELL %>>
+</<% $FIELD %>>
% }
-</td>
-</td></tr>
% }
+% if ( $WRAP ) {
+</<% $WRAP %>>
% }
% $m->callback( CallbackName => 'AfterTransactionCustomFields', TicketObj => $TicketObj, QueueObj => $QueueObj, NamePrefix => $NamePrefix );
@@ -84,11 +90,23 @@ if ($TicketObj) {
$m->callback( CallbackName => 'MassageTransactionCustomFields', CustomFields => $CustomFields );
+$AsTable ||= $InTable;
+my $FIELD = $AsTable ? 'tr' : 'div';
+my $CELL = $AsTable ? 'td' : 'div';
+my $WRAP = '';
+if ( $AsTable ) {
+ $WRAP = 'table' unless $InTable;
+} else {
+ $WRAP = 'div';
+}
+
</%INIT>
<%ARGS>
$NamePrefix => "Object-RT::Transaction--CustomField-"
$TicketObj => undef
$QueueObj => undef
+$AsTable => 0
+$InTable => 0
$UILocation => ''
</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/EditWatchers b/rt/share/html/Ticket/Elements/EditWatchers
index 952a411ce..abfbf0096 100755
--- a/rt/share/html/Ticket/Elements/EditWatchers
+++ b/rt/share/html/Ticket/Elements/EditWatchers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -57,16 +57,23 @@
<li>
<input type="checkbox" class="checkbox" name="Ticket-DeleteWatcher-Type-<% $Watchers->Type %>-Principal-<% $watcher->MemberId %>" value="1" unchecked />
% if ( $member->isa( 'RT::User' ) ) {
+% if ( $session{CurrentUser}->HasRight( Right => 'AdminUsers', Object => $RT::System ) &&
+% $session{CurrentUser}->HasRight( Right => 'ShowConfigTab', Object =>$RT::System ) ) {
<a href="<% RT->Config->Get('WebPath') %>/Admin/Users/Modify.html?id=<% $watcher->MemberId %>">
-<& /Elements/ShowUser, User => $member &></a>
-% if ($TicketObj and grep { $_->Content eq $member->EmailAddress } $TicketObj->SquelchMailTo) {
-<b><&|/l&>(Will not be sent email)</&></b>
-% }
-
+<& /Elements/ShowUser, User => $member &></a> <& /Elements/ShowUserEmailFrequency, User => $member, Ticket => $TicketObj &>
% } else {
+<& /Elements/ShowUser, User => $member &> <& /Elements/ShowUserEmailFrequency, User => $member, Ticket => $TicketObj &>
+% } }
+% else {
+% if ( $session{CurrentUser}->HasRight( Right => 'AdminGroup', Object => $RT::System ) &&
+% $session{CurrentUser}->HasRight( Right => 'ShowConfigTab', Object =>$RT::System ) ) {
<a href="<% RT->Config->Get('WebPath') %>/Admin/Groups/Modify.html?id=<% $watcher->MemberId %>">
-<% $member->Name %></a>
-% }
+<% $member->Name %>
+</a>
+% } else {
+<% $member->Name %>
+% } }
+
</li>
% }
</ul>
diff --git a/rt/share/html/Ticket/Elements/FindAttachments b/rt/share/html/Ticket/Elements/FindAttachments
index 8c1d1f8a8..cb9975199 100644
--- a/rt/share/html/Ticket/Elements/FindAttachments
+++ b/rt/share/html/Ticket/Elements/FindAttachments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Dashboards/Elements/ShowSubscription b/rt/share/html/Ticket/Elements/FindTransactions
index c188853e4..6faf33ee1 100644
--- a/rt/share/html/Dashboards/Elements/ShowSubscription
+++ b/rt/share/html/Ticket/Elements/FindTransactions
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,31 +45,28 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<a href="<% $url %>"><% $frequency %></a>
-<%ARGS>
-$Dashboard => undef
-$Subscription => undef
-</%ARGS>
<%INIT>
-my $url = sprintf '%s/Dashboards/Subscription.html?DashboardId=%d',
- RT->Config->Get('WebPath'),
- $Dashboard->Id,;
-
-my $frequency = loc("None");
-
-if (defined $Subscription) {
- my $freq = $Subscription->SubValue('Frequency');
- my $hour = $Subscription->SubValue('Hour');
-
- if ($freq eq 'weekly') {
- my $day = $Subscription->SubValue('Dow');
- $frequency = loc("weekly (on [_1]) at [_2]", loc($day), $hour);
- }
- elsif ($freq eq 'monthly') {
- $frequency = loc("monthly (day [_1]) at [_2]", $Subscription->SubValue('Dom'), $hour);
- }
- elsif ($freq eq 'daily') {
- $frequency = loc("daily at [_1]", $hour);
+my $Transactions = RT::Transactions->new($session{'CurrentUser'});
+if ($Tickets) {
+ while (my $t = $Tickets->Next) {
+ $Transactions->LimitToTicket($t->id);
}
+} else {
+ $Transactions = $Ticket->Transactions;
}
+
+
+my $OldestFirst = RT->Config->Get( 'OldestTransactionsFirst', $session{'CurrentUser'} );
+my $SortOrder = $OldestFirst? 'ASC': 'DESC';
+$Transactions->OrderByCols( { FIELD => 'Created',
+ ORDER => $SortOrder },
+ { FIELD => 'id',
+ ORDER => $SortOrder },
+ );
+$Transactions->Next(); $Transactions->GotoFirstItem(); # actually do the search
+return ($Transactions);
</%INIT>
+<%ARGS>
+$Ticket => undef
+$Tickets => undef
+</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/FoldStanzaJS b/rt/share/html/Ticket/Elements/FoldStanzaJS
new file mode 100644
index 000000000..4b0b4c466
--- /dev/null
+++ b/rt/share/html/Ticket/Elements/FoldStanzaJS
@@ -0,0 +1,50 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<span
+ class="message-stanza-folder closed"
+ onclick="fold_message_stanza(this, <%loc('Show quoted text') |n,j%>, <%loc('Hide quoted text') |n,j%>);"><%loc('Show quoted text')%></span><br />\
diff --git a/rt/share/html/Ticket/Elements/LoadTextAttachments b/rt/share/html/Ticket/Elements/LoadTextAttachments
index e8f7e6b8f..b1ff5326a 100644
--- a/rt/share/html/Ticket/Elements/LoadTextAttachments
+++ b/rt/share/html/Ticket/Elements/LoadTextAttachments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/PreviewScrips b/rt/share/html/Ticket/Elements/PreviewScrips
index dcf85a558..75fbc4563 100755
--- a/rt/share/html/Ticket/Elements/PreviewScrips
+++ b/rt/share/html/Ticket/Elements/PreviewScrips
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,213 +47,73 @@
%# END BPS TAGGED BLOCK }}}
<%args>
$TicketObj => undef
-
</%args>
<%init>
-my %squelch = $m->comp('SELF:SquelchRecipients', %ARGS);
-my $Object = $squelch{'Object'};
-my @non_recipients = @{ $squelch{'EmailAddresses'} };
-
+my $Object = $m->notes("DryRun-".$TicketObj->Id) || $TicketObj->DryRun(%ARGS);
+my %recips = %{ $m->notes("DryRun-Recipients-".$TicketObj->Id) || {} };
+return unless $Object;
</%init>
-<h2><&|/l&>This message will be sent to...</&></h2>
-
-% if ( $Object and $Object->Scrips ) {
-<i><&|/l&>(Check boxes to disable notifications to the listed recipients)</&></i><br />
-
-% foreach my $scrip (@{$Object->Scrips->Prepared}) {
-% next unless $scrip->ActionObj->Action->isa('RT::Action::SendEmail');
-<b><% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %></b><br />
-<&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3]</&>
-<br />
-%foreach my $type (qw(To Cc Bcc)) {
-%my @addresses = $scrip->ActionObj->Action->$type();
-<ul>
-%foreach my $addr (@addresses) {
-<li>
- <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="Ticket-<%$TicketObj->id%>-SquelchMailTo" value="<%$addr->address%>" /> <%$addr->address%>
-
-% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
-</li>
-% }
-</ul>
-% }
-% if (RT->Config->Get('PreviewScripMessages')) {
-<textarea cols="80" rows="5">
-<%$scrip->ActionObj->TemplateObj->MIMEObj->as_string%>
-</textarea>
-% }
-% }
+<p>
+<&|/l, RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$TicketObj->Id,
+&>Uncheck boxes to disable notifications to the listed recipients <b>for this transaction only</b>; persistent squelching is managed on the <a href="[_1]">People page</a>.</&>
+</p>
+
+% if ( $Object->Scrips ) {
+% # Sort scrips with recipients before those without
+% my @scrips = map { $_->[0] }
+% sort { ($b->[1]?1:0) <=> ($a->[1]?1:0) }
+% map { [$_, $_->ActionObj->Action->To + $_->ActionObj->Action->Cc + $_->ActionObj->Action->Bcc] }
+% grep {$_->ActionObj->Action->isa('RT::Action::SendEmail')}
+% @{$Object->Scrips->Prepared};
+% for my $scrip (@scrips) {
+ <b><% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %></b><br />
+ <&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3]</&>
+ <br />
+% for my $type (qw(To Cc Bcc)) {
+% my @addresses = $scrip->ActionObj->Action->$type();
+% next unless @addresses;
+ <ul>
+% for my $addr (@addresses) {
+ <li>
+% my $checked = 1;
+% $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => $addr, Type => $type, Checked => \$checked);
+% $recips{$addr->address}++;
+ <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" />
+ <label for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
+% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
+ </li>
+% }
+ </ul>
+% }
+% if (RT->Config->Get('PreviewScripMessages')) {
+ <textarea cols="80" rows="5"><%$scrip->ActionObj->TemplateObj->MIMEObj->as_string%></textarea>
+% }
+ <br />
+% }
% }
-% if ( $Object and $Object->Rules ) {
-% for my $rule (@{$Object->Rules}) {
-% next unless $rule->{hints} && $rule->{hints}{class} eq 'SendEmail';
-<b><% $rule->Describe %></b>
-% my $data = $rule->{hints}{recipients};
-% foreach my $type (qw(To Cc Bcc)) {
-<ul>
-% foreach my $address (@{$data->{$type}}) {
-<li>
- <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="Ticket-<%$TicketObj->id%>-SquelchMailTo" value="<%$address%>" /> <%$address%>
-
-% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => Email::Address->parse($address), Type => $type);
-</li>
-% }
-</ul>
-
-% }
-% }
-% }
-<br />
-
-<h2><&|/l&>Messages about this ticket will not be sent to...</&></h2>
-<i><&|/l&>(Check boxes to enable notifications to the listed recipients)</&></i>
-<br />
-<ul>
-% foreach my $recipient (@non_recipients) {
-<li><input type="checkbox" class="checkbox" name="Ticket-<%$TicketObj->id%>-UnsquelchMailTo" value="<%$recipient->Content%>" />
-<% $recipient->Content %>
+% if ( $Object->Rules ) {
+% for my $rule (@{$Object->Rules}) {
+% next unless $rule->{hints} && $rule->{hints}{class} eq 'SendEmail';
+ <b><% $rule->Describe %></b>
+% my $data = $rule->{hints}{recipients};
+% for my $type (qw(To Cc Bcc)) {
+% next unless @{$data->{$type}};
+ <ul>
+% for my $address (@{$data->{$type}}) {
+ <li>
+% my $checked = 1;
+% $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => Email::Address->parse($address), Type => $type, Checked => \$checked);
+% $recips{$address}++;
+ <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$address%>" id="TxnSendMailTo-<% $address %>-<% $recips{$address} %>" />
+ <label for="TxnSendMailTo-<% $address %>-<% $recips{$address} %>"><%$address%></label>
+% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => Email::Address->parse($address), Type => $type);
+ </li>
+% }
+ </ul>
+% }
+ <br />
+% }
% }
-</ul>
-<& /Elements/Submit, Name => 'UpdatePreview', Value => 'UpdatePreview', Label => loc('Save Changes')&>
-
-<%METHOD SquelchRecipients>
-<%ARGS>
-$TicketObj => undef
-</%ARGS>
-<%INIT>
-my $arg = 'Ticket-'.$TicketObj->Id.'-SquelchMailTo';
-my @squelchto = ref($ARGS{$arg}) eq 'ARRAY' ? @{$ARGS{$arg}} : ($ARGS{$arg});
-
-foreach my $address (@squelchto) {
- $TicketObj->SquelchMailTo($address) if ($address);
-}
-
-
-$arg = 'Ticket-'.$TicketObj->Id.'-UnsquelchMailTo';
-my @unsquelchto = ref($ARGS{$arg}) eq 'ARRAY' ? @{$ARGS{$arg}} : ($ARGS{$arg});
-
-foreach my $address (@unsquelchto) {
- $TicketObj->UnsquelchMailTo($address) if ($address);
-}
-
-
-my $action;
-
-if (($ARGS{'UpdateType'} && $ARGS{'UpdateType'} eq 'response' ) || ($ARGS{'Action'} && $ARGS{'Action'} eq 'Respond' )) {
- $action = 'Correspond';
-}
-else {
- $action = 'Comment';
-}
-
-my $Message = MakeMIMEEntity(
- Subject => $ARGS{'UpdateSubject'},
- Body => $ARGS{'UpdateContent'},
-);
-
-my ( $Transaction, $Description, $Object ) = $TicketObj->$action(
- CcMessageTo => $ARGS{'UpdateCc'},
- BccMessageTo => $ARGS{'UpdateBcc'},
- MIMEObj => $Message,
- TimeTaken => $ARGS{'UpdateTimeWorked'},
- DryRun => 1
-);
-unless ( $Transaction ) {
- $RT::Logger->error("Coulfn't fire '$action' action: $Description");
-}
-
-
-return (Object => $Object, EmailAddresses => [$TicketObj->SquelchMailTo]);
-</%INIT>
-</%METHOD>
-
-<%METHOD GetRecipients>
-<%ARGS>
-$TicketObj
-</%ARGS>
-<%INIT>
-my $action;
-if ( ( $ARGS{'UpdateType'} && $ARGS{'UpdateType'} eq 'response' )
- || ( $ARGS{'Action'} && $ARGS{'Action'} eq 'Respond' ) )
-{
- $action = 'Correspond';
-}
-else {
- $action = 'Comment';
-}
-
-my $Message = MakeMIMEEntity(
- Subject => $ARGS{'UpdateSubject'},
- Body => $ARGS{'UpdateContent'},
-);
-
-my ( $id, $msg, $txn ) = $TicketObj->$action(
- CcMessageTo => $ARGS{'UpdateCc'},
- BccMessageTo => $ARGS{'UpdateBcc'},
- MIMEObj => $Message,
- TimeTaken => $ARGS{'UpdateTimeWorked'},
- DryRun => 1
-);
-unless ( $id && $txn ) {
- $RT::Logger->error("Couldn't fire '$action' action: $msg");
- return ();
-}
-
-my @recipients;
-foreach my $scrip ( @{ $txn->Scrips->Prepared } ) {
- my $action = $scrip->ActionObj->Action;
- next unless $action->isa('RT::Action::SendEmail');
-
- foreach my $type (qw(To Cc Bcc)) {
- push @recipients, $action->$type();
- }
-}
-return @recipients;
-</%INIT>
-</%METHOD>
-
-<%METHOD GetRecipientsOnCreate>
-<%INIT>
-my $action;
-my $Message = MakeMIMEEntity(
- Subject => $ARGS{'Subject'},
- Cc => $ARGS{'Cc'},
- Body => $ARGS{'Content'},
-);
-
-my $TicketObj = RT::Ticket->new( $session{'CurrentUser'} );
-my ( $id, $txn, $msg ) = $TicketObj->Create(
- Type => $ARGS{'Type'} || 'ticket',
- Queue => $ARGS{'Queue'},
- Owner => $ARGS{'Owner'},
- Requestor => $ARGS{'Requestors'},
- Cc => $ARGS{'Cc'},
- AdminCc => $ARGS{'AdminCc'},
- InitialPriority => $ARGS{'InitialPriority'},
- FinalPriority => $ARGS{'FinalPriority'},
- TimeLeft => $ARGS{'TimeLeft'},
- TimeEstimated => $ARGS{'TimeEstimated'},
- TimeWorked => $ARGS{'TimeWorked'},
- Subject => $ARGS{'Subject'},
- Status => $ARGS{'Status'},
- MIMEObj => $Message,
- DryRun => 1
-);
-unless ( $id && $txn ) {
- $RT::Logger->error("Couldn't fire '$action' action: $msg");
- return ();
-}
-
-my @recipients;
-foreach my $scrip ( @{ $txn->Scrips->Prepared } ) {
- my $action = $scrip->ActionObj->Action;
- next unless $action->isa('RT::Action::SendEmail');
- foreach my $type (qw(To Cc Bcc)) {
- push @recipients, $action->$type();
- }
-}
-return @recipients;
-</%INIT>
-</%METHOD>
+% $m->notes("DryRun-Recipients-".$TicketObj->Id, \%recips);
diff --git a/rt/share/html/Ticket/Elements/Reminders b/rt/share/html/Ticket/Elements/Reminders
index 8526da3c0..36d0d8e35 100644
--- a/rt/share/html/Ticket/Elements/Reminders
+++ b/rt/share/html/Ticket/Elements/Reminders
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -54,97 +54,82 @@ $Edit => 0
<%init>
$Ticket = LoadTicket($id) if ($id);
+my $resolve_status = $Ticket->QueueObj->Lifecycle->ReminderStatusOnResolve;
-my $request_args = $m->request_args();
-
-my $reminder_collection = $Ticket->Reminders->Collection;
-
-if ( $request_args->{'update-reminders'} ) {
- while ( my $reminder = $reminder_collection->Next ) {
- if ( $reminder->Status ne 'resolved' && $request_args->{ 'Complete-Reminder-' . $reminder->id } ) {
- $Ticket->Reminders->Resolve($reminder);
- }
- elsif ( $reminder->Status eq 'resolved' && !$request_args->{ 'Complete-Reminder-' . $reminder->id } ) {
- $Ticket->Reminders->Open($reminder);
- }
-
- if ( exists( $request_args->{ 'Reminder-Subject-' . $reminder->id } ) && ( $reminder->Subject ne $request_args->{ 'Reminder-Subject-' . $reminder->id } )) {
- $reminder->SetSubject( $request_args->{ 'Reminder-Subject-' . $reminder->id } ) ;
- }
-
- if ( exists( $request_args->{ 'Reminder-Owner-' . $reminder->id } ) && ( $reminder->Owner != $request_args->{ 'Reminder-Owner-' . $reminder->id } )) {
- $reminder->SetOwner( $request_args->{ 'Reminder-Owner-' . $reminder->id } , "Force" ) ;
- }
-
- if ( exists( $request_args->{ 'Reminder-Due-' . $reminder->id } ) && ( $reminder->DueObj->Date ne $request_args->{ 'Reminder-Due-' . $reminder->id } )) {
- $reminder->SetDue( $request_args->{ 'Reminder-Due-' . $reminder->id } ) ;
- }
- }
-}
-
-if ( $request_args->{'NewReminder-Subject'} ) {
- my $due_obj = RT::Date->new( $session{'CurrentUser'} );
- my $date = Time::ParseDate::parsedate(
- $request_args->{'NewReminder-Due'},
- UK => RT->Config->Get('DateDayBeforeMonth'),
- PREFER_PAST => 0,
- PREFER_FUTURE => 1
- );
- $due_obj->Set( Value => $date, Format => 'unix' );
- my ( $add_id, $msg, $txnid ) = $Ticket->Reminders->Add(
-
- Subject => $request_args->{'NewReminder-Subject'},
- Owner => $request_args->{'NewReminder-Owner'},
- Due => $due_obj->ISO
- );
+my $count_reminders = RT::Reminders->new($session{'CurrentUser'});
+$count_reminders->Ticket($Ticket->id);
+my $count_tickets = $count_reminders->Collection;
+if (!$ShowCompleted) {
+ # XXX: don't break encapsulation if we can avoid it
+ $count_tickets->FromSQL(q{Type = "reminder" AND RefersTo = "} . $Ticket->id . qq{" AND Status != "$resolve_status" });
}
+my $has_reminders = $count_tickets->Count;
# We've made changes, let's reload our search
-
-$reminder_collection = $Ticket->Reminders->Collection;
+my $reminder_collection = $count_reminders->Collection;
</%init>
<input type="hidden" class="hidden" name="id" value="<% $Ticket->id %>" />
<input type="hidden" class="hidden" name="update-reminders" value="1" />
-<div>
-% while (my $reminder = $reminder_collection->Next) {
-% if ($reminder->Status eq 'resolved' && !$ShowCompleted) {
+% if ($has_reminders) {
+<table border="0" cellpadding="1" cellspacing="0" class="collection-as-table"<% $Edit ? ' style="width: auto;"' : '' |n %>>
+<tr>
+% if ( $Edit ) {
+<th class="collection-as-table" colspan="5"><&|/l&>Reminders</&></th>
+% } else {
+<th class="collection-as-table"></th>
+<th class="collection-as-table"><&|/l&>Reminder</&></th>
+<th class="collection-as-table"><&|/l&>Due</&></th>
+<th class="collection-as-table"><&|/l&>Owner</&></th>
+% }
+</tr>
+% my $i = 0;
+% my $visible = 0;
+% while ( my $reminder = $reminder_collection->Next ) {
+% $i++;
+% if ( $reminder->Status eq $resolve_status && !$ShowCompleted ) {
+<tr class="hidden"><td><input type="hidden" class="hidden" name="Complete-Reminder-<% $reminder->id %>" value="1" /></td></tr>
+% $i++;
+% } elsif ($Edit) {
+<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
+% $visible++;
+% } else {
+<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &>
+% $visible++;
+% }
+% }
+</table>
+% if ( $visible > 0 ) {
+<i><&|/l&>(Check box to complete)</&></i><br /><br />
+% }
+% } else {
+
+%# we must always include resolved reminders due to the browser
+%# checkbox-with-false-value issue
+% while ( my $reminder = $reminder_collection->Next ) {
+% if ( $reminder->Status eq $resolve_status && !$ShowCompleted ) {
<input type="hidden" class="hidden" name="Complete-Reminder-<% $reminder->id %>" value="1" />
-% } elsif ($Edit) {
-<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket &>
-% } else {
-<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket &>
-% }
% }
-% if ($reminder_collection->Count) {
-<i><&|/l&>(Check box to delete)</&></i><br /><br />
% }
-</div>
-<div>
+% }
+
<&|/l&>New reminder:</&>
<& SELF:NewReminder, Ticket => $Ticket &>
-</div>
<%method NewReminder>
<%args>
$Ticket
</%args>
<table>
-<tr class="input-row">
-<td class="label"><label class="horizontal" for="NewReminder-Subject" ><&|/l&>Subject</&>:</label></td>
-<td class="value">
-<input type="text" size="15" name="NewReminder-Subject" id="NewReminder-Subject" />
-</td>
+<tr>
+<td class="label"><&|/l&>Subject</&>:</td>
+<td class="entry" colspan="3"><input type="text" size="50" name="NewReminder-Subject" id="NewReminder-Subject" /></td>
</tr>
-<tr class="input-row">
-<td class="label">
-<label class="horizontal" for="NewReminder-Owner" ><&|/l&>Owner</&>:</label></td><td class="value">
-<& /Elements/SelectOwner, Name => 'NewReminder-Owner', QueueObj => $Ticket->QueueObj, Default=>$session{'CurrentUser'}->id, DefaultValue => 0 &>
-</td>
+<tr>
+<td class="label"><&|/l&>Owner</&>:</td>
+<td class="entry"><& /Elements/SelectOwner, Name => 'NewReminder-Owner', QueueObj => $Ticket->QueueObj, Default=>$session{'CurrentUser'}->id, DefaultValue => 0 &></td>
</tr>
-<tr class="input-row">
-<td class="label"><label class="horizontal" for="NewReminder-Due" ><&|/l&>Due</&>:</label></td>
-<td class="value">
-<& /Elements/SelectDate, Name => "NewReminder-Due", Default => "" &>
-</td>
+<tr>
+<td class="label"><&|/l&>Due</&>:</td>
+<td class="entry"><& /Elements/SelectDate, Name => "NewReminder-Due", Default => "" &></td>
</tr>
</table>
</%method>
@@ -152,28 +137,33 @@ $Ticket
<%args>
$Reminder
$Ticket
+$Index
</%args>
-<input
- type="checkbox"
- name="Complete-Reminder-<%$Reminder->id%>"
- <% $Reminder->Status eq 'resolved' ? 'checked="checked"' : '' %>
-/>
- <input type="text" size="15" name="Reminder-Subject-<% $Reminder->id %>" value="<%$Reminder->Subject%>" /> &bull;
- <& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, Queue => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0 &>
- <& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id, Default => $Reminder->DueObj->Date &>
- (<%$Reminder->DueObj->Unix>0 ? $Reminder->DueObj->AgeAsString : '' %>)<br />
+<tr class="<% $Index%2 ? 'oddline' : 'evenline' %>">
+<td class="entry"><input type="checkbox" value="1" name="Complete-Reminder-<% $Reminder->id %>" <% $Reminder->Status eq $Reminder->QueueObj->Lifecycle->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %> /></td>
+<td class="label"><&|/l&>Subject</&>:</td>
+<td class="entry" colspan="3"><input type="text" size="50" name="Reminder-Subject-<% $Reminder->id %>" value="<% $Reminder->Subject %>" /></td>
+</tr>
+<tr class="<% $Index%2 ? 'oddline' : 'evenline' %>">
+<td class="entry">&nbsp;</td>
+<td class="label"><&|/l&>Owner</&>:</td>
+<td class="entry"><& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, QueueObj => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0 &></td>
+<td class="label"><&|/l&>Due</&>:</td>
+<td class="entry"><& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id &> (<% $Reminder->DueObj->AsString %>)</td>
+</tr>
</%method>
<%method ShowEntry>
<%args>
$Reminder
$Ticket
+$Index
</%args>
-<input
- type="checkbox"
- name="Complete-Reminder-<%$Reminder->id%>"
- <% $Reminder->Status eq 'resolved' ? 'checked="checked"' : '' %>
-/>
- <%$Reminder->Subject%> &bull;
- <& /Elements/ShowUser, User => $Reminder->OwnerObj &>
- <%$Reminder->DueObj->Unix>0 ? "&bull; ". $Reminder->DueObj->AgeAsString : '' |n%><br />
+% my $dueobj = $Reminder->DueObj;
+% my $overdue = $dueobj->Unix > 0 && $dueobj->Diff < 0 ? 1 : 0;
+<tr class="<% $Index%2 ? 'oddline' : 'evenline' %>">
+<td class="collection-as-table"><input type="checkbox" value="1" name="Complete-Reminder-<% $Reminder->id %>" <% $Reminder->Status eq $Reminder->QueueObj->Lifecycle->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %> /></td>
+<td class="collection-as-table"><% $Reminder->Subject %></td>
+<td class="collection-as-table"><% $overdue ? '<span class="overdue">' : '' |n %><% $dueobj->AgeAsString || loc('Not set') %><% $overdue ? '</span>' : '' |n %></td>
+<td class="collection-as-table"><& /Elements/ShowUser, User => $Reminder->OwnerObj &></td>
+</tr>
</%method>
diff --git a/rt/share/html/Ticket/Elements/ShowAttachments b/rt/share/html/Ticket/Elements/ShowAttachments
index c97a1ef12..12130e4de 100755
--- a/rt/share/html/Ticket/Elements/ShowAttachments
+++ b/rt/share/html/Ticket/Elements/ShowAttachments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -51,7 +51,7 @@
class => 'ticket-info-attachments',
color => "#336699" &>
-% foreach my $key (keys %documents) {
+% foreach my $key (sort { lc($a) cmp lc($b) } keys %documents) {
<%$key%><br />
<ul>
@@ -104,7 +104,7 @@ $Attachments ||= $m->comp('FindAttachments', Ticket => $Ticket);
my %documents;
while ( my $attach = $Attachments->Next() ) {
- next unless ($attach->Filename());
+ next unless defined $attach->Filename && length $attach->Filename;
unshift( @{ $documents{ $attach->Filename } }, $attach );
}
diff --git a/rt/share/html/Ticket/Elements/ShowBasics b/rt/share/html/Ticket/Elements/ShowBasics
index 0959f72e0..0ecb6d8ba 100755
--- a/rt/share/html/Ticket/Elements/ShowBasics
+++ b/rt/share/html/Ticket/Elements/ShowBasics
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,40 +46,43 @@
%#
%# END BPS TAGGED BLOCK }}}
<table>
- <tr>
- <td class="label id"><&|/l&>Id</&>:</td>
- <td class="value id"><%$Ticket->Id %></td>
+ <tr class="id">
+ <td class="label"><&|/l&>Id</&>:</td>
+ <td class="value"><%$Ticket->Id %></td>
</tr>
- <tr>
- <td class="label status"><&|/l&>Status</&>:</td>
- <td class="value status"><% loc($Ticket->Status) %></td>
+ <tr class="status">
+ <td class="label"><&|/l&>Status</&>:</td>
+ <td class="value"><% loc($Ticket->Status) %></td>
</tr>
% if ($Ticket->TimeEstimated) {
- <tr>
- <td class="label time estimated"><&|/l&>Estimated</&>:</td>
- <td class="value time estimated"><& ShowTime, minutes => $Ticket->TimeEstimated &></td>
+ <tr class="time estimated">
+ <td class="label"><&|/l&>Estimated</&>:</td>
+ <td class="value"><& ShowTime, minutes => $Ticket->TimeEstimated &></td>
</tr>
% }
% if ($Ticket->TimeWorked) {
- <tr>
- <td class="label time worked"><&|/l&>Worked</&>:</td>
- <td class="value time worked"><& ShowTime, minutes => $Ticket->TimeWorked &></td>
+ <tr class="time worked">
+ <td class="label"><&|/l&>Worked</&>:</td>
+ <td class="value"><& ShowTime, minutes => $Ticket->TimeWorked &></td>
</tr>
% }
% if ($Ticket->TimeLeft) {
- <tr>
- <td class="label time left"><&|/l&>Left</&>:</td>
- <td class="value time left"><& ShowTime, minutes => $Ticket->TimeLeft &></td>
+ <tr class="time left">
+ <td class="label"><&|/l&>Left</&>:</td>
+ <td class="value"><& ShowTime, minutes => $Ticket->TimeLeft &></td>
</tr>
% }
- <tr>
- <td class="label priority"><&|/l&>Priority</&>:</td>
- <td class="value priority"><& ShowPriority, Ticket => $Ticket &></td>
+ <tr class="priority">
+ <td class="label"><&|/l&>Priority</&>:</td>
+ <td class="value"><& ShowPriority, Ticket => $Ticket &></td>
</tr>
- <tr>
- <td class="label queue"><&|/l&>Queue</&>:</td>
- <td class="value queue"><& ShowQueue, QueueObj => $Ticket->QueueObj &></td>
+%# This will check SeeQueue at the ticket role level, queue level, and global level
+% if ($Ticket->CurrentUserHasRight('SeeQueue')) {
+ <tr class="queue">
+ <td class="label"><&|/l&>Queue</&>:</td>
+ <td class="value"><& ShowQueue, Ticket => $Ticket, QueueObj => $Ticket->QueueObj &></td>
</tr>
+% }
% $m->callback( %ARGS, CallbackName => 'EndOfList', TicketObj => $Ticket );
</table>
<%ARGS>
diff --git a/rt/share/html/Ticket/Elements/ShowCustomFields b/rt/share/html/Ticket/Elements/ShowCustomFields
index 3a2924d65..4a0604331 100755
--- a/rt/share/html/Ticket/Elements/ShowCustomFields
+++ b/rt/share/html/Ticket/Elements/ShowCustomFields
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowCustomers b/rt/share/html/Ticket/Elements/ShowCustomers
index 3acf92dd4..add562440 100644
--- a/rt/share/html/Ticket/Elements/ShowCustomers
+++ b/rt/share/html/Ticket/Elements/ShowCustomers
@@ -10,20 +10,19 @@
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%# General Public License for more details.
<table>
-% my $cust = 0;
-% foreach my $custResolver ( map { $_->TargetURI->Resolver }
-% @{ $Ticket->Customers->ItemsArrayRef }
-% )
-% {
-% $cust++;
-% my $cust_main = '';
+% my @cust = map { $_->TargetURI->Resolver }
+% @{ $Ticket->Customers->ItemsArrayRef };
+%
+% foreach my $custResolver ( @cust ) {
<tr>
<td class="value">
- <A HREF="<% $custResolver->HREF %>"><% $custResolver->AsStringLong |n %></A>
+ <% $custResolver->AsStringLong |n %>
+%# includes service label and view/svc_ link for cust_svc links
</td>
</tr>
% }
-% unless ( $cust ) {
+
+% unless ( @cust ) {
<tr>
<td class="labeltop">
<i>(none)<i>
diff --git a/rt/share/html/Ticket/Elements/ShowDates b/rt/share/html/Ticket/Elements/ShowDates
index 1df0f8084..c0d26f7c1 100755
--- a/rt/share/html/Ticket/Elements/ShowDates
+++ b/rt/share/html/Ticket/Elements/ShowDates
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,34 +46,34 @@
%#
%# END BPS TAGGED BLOCK }}}
<table>
- <tr>
- <td class="label date created"><&|/l&>Created</&>:</td>
- <td class="value date created"><% $Ticket->CreatedObj->AsString %></td>
+ <tr class="date created">
+ <td class="label"><&|/l&>Created</&>:</td>\
+ <td class="value"><% $Ticket->CreatedObj->AsString %></td>
</tr>
- <tr>
- <td class="label date starts"><&|/l&>Starts</&>:</td>
- <td class="value date starts"><% $Ticket->StartsObj->AsString %></td>
+ <tr class="date starts">
+ <td class="label"><&|/l&>Starts</&>:</td>\
+ <td class="value"><% $Ticket->StartsObj->AsString %></td>
</tr>
- <tr>
- <td class="label date started"><&|/l&>Started</&>:</td>
- <td class="value date started"><% $Ticket->StartedObj->AsString %></td>
+ <tr class="date started">
+ <td class="label"><&|/l&>Started</&>:</td>\
+ <td class="value"><% $Ticket->StartedObj->AsString %></td>
</tr>
- <tr>
- <td class="label date told"><a href="<% RT->Config->Get('WebPath') %>/Ticket/Display.html?id=<% $Ticket->id %>&Action=SetTold"><&|/l&>Last Contact</&></a>:</td>
- <td class="value date told"><% $Ticket->ToldObj->AsString %></td>
+ <tr class="date told">
+ <td class="label"><a href="<% RT->Config->Get('WebPath') %>/Ticket/Display.html?id=<% $Ticket->id %>&Action=SetTold"><&|/l&>Last Contact</&></a>:</td>\
+ <td class="value"><% $Ticket->ToldObj->AsString %></td>
</tr>
- <tr>
- <td class="label date due"><&|/l&>Due</&>:</td>
+ <tr class="date due">
+ <td class="label"><&|/l&>Due</&>:</td>\
% my $due = $Ticket->DueObj;
% if ( $due && $due->Unix > 0 && $due->Diff < 0 ) {
- <td class="value date due"><span class="overdue"><% $due->AsString %></span></td>
+ <td class="value"><span class="overdue"><% $due->AsString %></span></td>
% } else {
- <td class="value date due"><% $due->AsString %></td>
+ <td class="value"><% $due->AsString %></td>
% }
</tr>
- <tr>
- <td class="label date resolved"><&|/l&>Resolved</&>:</td>
- <td class="value date resolved"><% $Ticket->ResolvedObj->AsString %></td>
+ <tr class="date resolved">
+ <td class="label"><&|/l&>Resolved</&>:</td>\
+ <td class="value"><% $Ticket->ResolvedObj->AsString %></td>
</tr>
% my $willresolve = $Ticket->WillResolveObj;
% if ( $willresolve && $willresolve->Unix > 0 ) {
@@ -81,14 +81,13 @@
<td class="label date willresolve"><&|/l&>Will Resolve</&>:</td>
<td class="value date willresolve"><% $willresolve->AsString %></td>
</tr>
-% } # else don't display either of them
- <tr>
- <td class="label date updated"><&|/l&>Updated</&>:</td>
+% } # else don't display either of them <tr class="date updated">
+ <td class="label"><&|/l&>Updated</&>:</td>\
% my $UpdatedString = $Ticket->LastUpdated ? loc("[_1] by [_2]", $Ticket->LastUpdatedAsString, $m->scomp('/Elements/ShowUser', User => $Ticket->LastUpdatedByObj)) : loc("Never");
% if ($UpdatedLink) {
- <td class="value date updated"><a href="#lasttrans"><% $UpdatedString |n%></a></td>
+ <td class="value"><a href="#lasttrans"><% $UpdatedString | n %></a></td>
% } else {
- <td class="value date updated"><% $UpdatedString |n%></td>
+ <td class="value"><% $UpdatedString | n %></td>
% }
</tr>
% $m->callback( %ARGS, CallbackName => 'EndOfList', TicketObj => $Ticket );
diff --git a/rt/share/html/Ticket/Elements/ShowDependencies b/rt/share/html/Ticket/Elements/ShowDependencies
index b052c15c5..d56aa862c 100755
--- a/rt/share/html/Ticket/Elements/ShowDependencies
+++ b/rt/share/html/Ticket/Elements/ShowDependencies
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowGnuPGStatus b/rt/share/html/Ticket/Elements/ShowGnuPGStatus
index cd5426a1f..126f23b9e 100644
--- a/rt/share/html/Ticket/Elements/ShowGnuPGStatus
+++ b/rt/share/html/Ticket/Elements/ShowGnuPGStatus
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowGroupMembers b/rt/share/html/Ticket/Elements/ShowGroupMembers
index 97c7a9dcf..add377d74 100644
--- a/rt/share/html/Ticket/Elements/ShowGroupMembers
+++ b/rt/share/html/Ticket/Elements/ShowGroupMembers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowHistory b/rt/share/html/Ticket/Elements/ShowHistory
index 1833ecd51..909ea01ee 100755
--- a/rt/share/html/Ticket/Elements/ShowHistory
+++ b/rt/share/html/Ticket/Elements/ShowHistory
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -60,18 +60,22 @@ if ($ShowDisplayModes or $ShowTitle) {
if ($ShowDisplayModes) {
$titleright = '';
+ my $open_all = $m->interp->apply_escapes( loc("Show all quoted text"), 'j' );
+ my $open_html = $m->interp->apply_escapes( loc("Show all quoted text"), 'h' );
+ my $close_all = $m->interp->apply_escapes( loc("Hide all quoted text"), 'j' );
+ $titleright .= '<a href="#" data-direction="open" '
+ . qq{onclick="return toggle_all_folds(this, $open_all, $close_all);"}
+ . ">$open_html</a> &mdash; ";
+
if ($ShowHeaders) {
$titleright .= qq{<a href="$URIFile?id=} .
$Ticket->id.qq{">} .
- loc("Brief headers") .
- qq{</a> &mdash; };
- $titleright .= q[<span class="selected">] . loc("Full headers") . "</span>";
- }
- else {
- $titleright .= q[<span class="selected">] . loc("Brief headers") . "</span> &mdash; ";
+ loc("Show brief headers") .
+ qq{</a>};
+ } else {
$titleright .= qq{<a href="$URIFile?ShowHeaders=1;id=} .
$Ticket->id.qq{">} .
- loc("Full headers") .
+ loc("Show full headers") .
qq{</a>};
}
}
@@ -79,11 +83,18 @@ if ($ShowDisplayModes or $ShowTitle) {
<div class="history">
<& /Widgets/TitleBoxStart, title => $title, titleright_raw => $titleright &>
% }
-
<div id="ticket-history">
<%perl>
-my @attachments = @{$Attachments->ItemsArrayRef()};
-my @attachment_content = @{$AttachmentContent->ItemsArrayRef()};
+my $trans_content = {};
+my $trans_attachments = {};
+
+for my $content (@{$AttachmentContent->ItemsArrayRef()}) {
+ $trans_content->{$content->TransactionId}->{$content->Id} = $content;
+}
+
+for my $attachment (@{$Attachments->ItemsArrayRef()}) {
+ push (@{$trans_attachments->{$attachment->TransactionId}}, $attachment)
+}
while ( my $Transaction = $Transactions->Next ) {
my $skip = 0;
@@ -97,14 +108,8 @@ while ( my $Transaction = $Transactions->Next ) {
$i++;
- my @trans_attachments = grep { $_->TransactionId == $Transaction->Id } @attachments;
-
- my $trans_content = {};
- grep { ($_->TransactionId == $Transaction->Id ) && ($trans_content->{$_->Id} = $_) } @attachment_content;
-
-
my $IsLastTransaction = 0;
- if ( $OldestFirst ) {
+ if ( RT->Config->Get( 'OldestTransactionsFirst', $session{'CurrentUser'} )){
$IsLastTransaction = $Transactions->IsLast;
} else {
$IsLastTransaction = 1 if ( $i == 1 );
@@ -118,7 +123,7 @@ while ( my $Transaction = $Transactions->Next ) {
Transaction => $Transaction,
ShowHeaders => $ShowHeaders,
RowNum => $i,
- Attachments => \@trans_attachments,
+ Attachments => $trans_attachments->{$Transaction->id},
AttachmentContent => $trans_content,
LastTransaction => $IsLastTransaction
);
@@ -135,25 +140,9 @@ $m->flush_buffer();
</div>
% }
<%INIT>
-my $Transactions = new RT::Transactions($session{'CurrentUser'});
-if ($Tickets) {
- while (my $t = $Tickets->Next) {
- $Transactions->LimitToTicket($t->id);
- }
-} else {
- $Transactions = $Ticket->Transactions;
-}
-
-
-my $OldestFirst = RT->Config->Get( 'OldestTransactionsFirst', $session{'CurrentUser'} );
-my $SortOrder = $OldestFirst? 'ASC': 'DESC';
-$Transactions->OrderByCols( { FIELD => 'Created',
- ORDER => $SortOrder },
- { FIELD => 'id',
- ORDER => $SortOrder },
- );
my $i;
+$Transactions ||= $m->comp('/Ticket/Elements/FindTransactions',Ticket => $Ticket, Tickets => $Tickets || undef);
$Attachments ||= $m->comp('/Ticket/Elements/FindAttachments', Ticket => $Ticket, Tickets => $Tickets || undef);
$AttachmentContent ||= $m->comp('/Ticket/Elements/LoadTextAttachments', Ticket => $Ticket);
@@ -162,6 +151,7 @@ $AttachmentContent ||= $m->comp('/Ticket/Elements/LoadTextAttachments', Ticket =
$URIFile => RT->Config->Get('WebPath')."/Ticket/Display.html"
$Ticket => undef
$Tickets => undef
+$Transactions => undef
$Attachments => undef
$AttachmentContent => undef
$ShowHeaders => undef
diff --git a/rt/share/html/Ticket/Elements/ShowMembers b/rt/share/html/Ticket/Elements/ShowMembers
index 7e9ba492f..c17c6e7b8 100755
--- a/rt/share/html/Ticket/Elements/ShowMembers
+++ b/rt/share/html/Ticket/Elements/ShowMembers
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowMessageHeaders b/rt/share/html/Ticket/Elements/ShowMessageHeaders
index 943b567d2..3c86162b1 100755
--- a/rt/share/html/Ticket/Elements/ShowMessageHeaders
+++ b/rt/share/html/Ticket/Elements/ShowMessageHeaders
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowMessageStanza b/rt/share/html/Ticket/Elements/ShowMessageStanza
index 6f8875195..8a8544328 100755
--- a/rt/share/html/Ticket/Elements/ShowMessageStanza
+++ b/rt/share/html/Ticket/Elements/ShowMessageStanza
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,67 +45,144 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%perl>
-if ( ref $Message ) {
- $m->out('<pre>') if $plain_text_pre && !$Depth && !$plain_text_mono;
- $m->out( qq{<div class="message-stanza-depth-$Depth } .($plain_text_mono ? "plain-text-white-space" : "") .qq{">} );
+<%INIT>
+my $plain_text_pre
+ = RT->Config->Get( 'PlainTextPre', $session{'CurrentUser'} );
+my $plain_text_mono
+ = RT->Config->Get( 'PlainTextMono', $session{'CurrentUser'} );
+my $Depth = 0;
+
+my $ticket = $Transaction ? $Transaction->TicketObj : undef;
+
+my $print_content = sub {
+ my $ref = shift;
+ return unless defined $$ref && length $$ref;
+ $m->callback( content => $ref, %ARGS );
+ if ( $ContentType eq 'text/plain' ) {
+ $m->comp( '/Elements/MakeClicky',
+ content => $ref,
+ ticket => $ticket,
+ %ARGS
+ );
+
+ if ( defined $$ref && !$plain_text_pre && !$plain_text_mono ) {
+ $$ref =~ s{(\r?\n)}{<br />}g;
+ }
+ } else {
+ if ( defined $$ref ) {
+ $$ref =~ s/^[\r\n]+//g;
+ }
+ }
+ $m->out($$ref);
+};
+
+if ( ref $Message ) {
+ $m->out('<pre>')
+ if ( $ContentType eq 'text/plain'
+ && $plain_text_pre
+ && !$Depth
+ && !$plain_text_mono );
+ $m->out( '<div class="message-stanza'
+ . ( ($ContentType eq 'text/plain' && $plain_text_mono) ? ' plain-text-white-space' : '' ) . '"'
+ . '>' );
my @stack;
my $para = '';
- my $i = 0;
+ my $i = 0;
- AGAIN: foreach ( ; $i < @$Message; $i++ ) {
+AGAIN: foreach ( ; $i < @$Message; $i++ ) {
my $stanza = $Message->[$i];
if ( ref $stanza eq "HASH" ) {
- $para .= ( defined $stanza->{raw} ? $stanza->{raw} : '') ."\n";
+ # Fix message stanza nesting for Outlook's quoting styles
+ if ( $stanza->{raw}
+ and not $stanza->{_outlooked}
+ and $stanza->{raw} =~ /^ # start of an internal line
+ \s* # optional whitespace
+ (?:
+ -{3,} # at least three hyphens
+ \s* # whitespace varies between Outlook versions
+ # don't trigger on PGP signed message or signature blocks
+ (?!(?:BEGIN|END)\s+PGP)
+ \w # at least one word character
+ [\w\s]{3,}? # the rest of the word(s), totalling at least 5 characters,
+ # loose to get different languages
+ \w # at least one ending word character
+ \s* # whitespace varies between Outlook versions
+ -{3,} # at least three hyphens again
+ |
+ _{6,} # OR: six or more underscores
+ )
+ \s*$ # optional whitespace until the end of the line
+ /xm )
+ {
+ # There's content before the quoted message, but in the
+ # same stanza. Break it out!
+ if ( my $start = $-[0] ) {
+ my %preceding = %$stanza;
+
+ # We don't process $stanza->{text} because we don't use it
+ # and it isn't given to us by HTML::Quoted. If we ever
+ # need to, we can process it the same way as 'raw'.
+ $preceding{raw} = substr($stanza->{raw}, 0, $start, '');
+
+ # Replace the current stanza with the two we just created
+ splice @$Message, $i, 1, \%preceding, $stanza;
+
+ # Try it again from the top now that we've rejiggered our
+ # stanzas. We'll process the Outlook stanza again, and hit
+ # the else below this time.
+ redo;
+ } else {
+ # Nest the current stanza and everything that follows
+ $stanza->{_outlooked}++;
+ $stanza = $Message->[ $i ] = [ splice @$Message, $i ];
+ }
+ }
+ else {
+ $para .= ( defined $stanza->{raw} ? $stanza->{raw} : '' )."\n";
+ }
}
next unless ref $stanza eq "ARRAY";
- $print_content->( \$para ); $para = '';
+ $print_content->( \$para );
+ $para = '';
$Depth++;
- push @stack, [$Message, $i+1];
- ($Message, $i) = ($stanza, -1);
- $m->out( qq{<div class="message-stanza-depth-$Depth">} );
+ push @stack, [ $Message, $i + 1 ];
+ ( $Message, $i ) = ( $stanza, -1 );
+
+ if ( $Depth == 1 ) {
+ $m->comp('FoldStanzaJS');
+ }
+ my @classes = ('message-stanza');
+ push @classes, $Depth == 1 ? 'closed' : 'open';
+ $m->out( '<div class="' . join(" ", @classes) . '">' );
}
if ( length $para ) {
- $print_content->( \$para ); $para = '';
+ $print_content->( \$para );
+ $para = '';
}
- if ( @stack ) {
- ($Message, $i) = @{ pop @stack };
+ if (@stack) {
+ ( $Message, $i ) = @{ pop @stack };
$Depth--;
$m->out('</div>');
goto AGAIN;
}
$m->out('</div>');
- $m->out('</pre>') if $plain_text_pre && !$Depth && !$plain_text_mono;
+ $m->out('</pre>')
+ if ( $ContentType eq 'text/plain'
+ && $plain_text_pre
+ && !$Depth
+ && !$plain_text_mono );
} else {
- $print_content->( \$Message );
+ $print_content->( \$Message );
}
-</%perl>
-<%INIT>
-my $plain_text_pre = RT->Config->Get('PlainTextPre', $session{'CurrentUser'});
-my $plain_text_mono = RT->Config->Get('PlainTextMono', $session{'CurrentUser'});
-
-my $ticket = $Transaction ? $Transaction->TicketObj : undef;
-
-my $print_content = sub {
- my $ref = shift;
- return unless defined $$ref && length $$ref;
-
- $m->callback( content => $ref, %ARGS );
- $m->comp('/Elements/MakeClicky', content => $ref, ticket => $ticket, %ARGS);
- unless ( $plain_text_pre || $plain_text_mono ) {
- $$ref =~ s{(\r?\n)}{<br />}g if defined $$ref;
- }
- $m->out( $$ref );
-};
</%INIT>
<%ARGS>
$Message => undef
-$Depth => 0
$Transaction => undef
+$ContentType => 'text/plain'
</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/ShowParents b/rt/share/html/Ticket/Elements/ShowParents
index 74bd8e174..2a64cfce0 100644
--- a/rt/share/html/Ticket/Elements/ShowParents
+++ b/rt/share/html/Ticket/Elements/ShowParents
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowPeople b/rt/share/html/Ticket/Elements/ShowPeople
index cb5fb329c..8047aff85 100755
--- a/rt/share/html/Ticket/Elements/ShowPeople
+++ b/rt/share/html/Ticket/Elements/ShowPeople
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowPriority b/rt/share/html/Ticket/Elements/ShowPriority
index caf26fec3..7b6b361a1 100644
--- a/rt/share/html/Ticket/Elements/ShowPriority
+++ b/rt/share/html/Ticket/Elements/ShowPriority
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowQueue b/rt/share/html/Ticket/Elements/ShowQueue
index 6742d4a72..255225591 100644
--- a/rt/share/html/Ticket/Elements/ShowQueue
+++ b/rt/share/html/Ticket/Elements/ShowQueue
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,12 +45,20 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<% $QueueObj->Name %>
+<% $value %>
<%ARGS>
+$Ticket => undef
$QueueObj
</%ARGS>
<%INIT>
my $value = $QueueObj->Name;
+
+if ( $Ticket and $Ticket->CurrentUserHasRight('SeeQueue') ) {
+ # Grab the queue name anyway if the current user can
+ # see the queue based on his role for this ticket
+ $value = $QueueObj->__Value('Name');
+}
+
$value = '#'. $QueueObj->id
unless defined $value && length $value;
</%INIT>
diff --git a/rt/share/html/Ticket/Elements/ShowRequestor b/rt/share/html/Ticket/Elements/ShowRequestor
index b5d7c7dcb..8a8eef62c 100755
--- a/rt/share/html/Ticket/Elements/ShowRequestor
+++ b/rt/share/html/Ticket/Elements/ShowRequestor
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,61 +45,145 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<%PERL>
-# Unsure sane default
-unless ( @$conditions ) {
- foreach (RT::Queue->ActiveStatusArray()) {
- push @$conditions, { cond => "Status = '$_'", name => loc($_) };
- }
-}
-my $rows = 10;
-my $has_right_adminusers = $session{'CurrentUser'}->HasRight(
- Object => $RT::System, Right => 'AdminUsers'
-);
-$has_right_adminusers &&= $session{'CurrentUser'}->HasRight(
- Object => $RT::System, Right => 'ShowConfigTab'
-);
-my $people = $Ticket->Requestors->UserMembersObj;
-while ( my $requestor = $people->Next ) {
- next if $requestor->Privileged;
- my $name = $m->scomp('/Elements/ShowUser', User => $requestor);
+<script type="text/javascript">
+ jQuery(function() {
+ jQuery("#requestor-accordion").accordion({
+ active: <% $count == 1 ? 0 : 'false' %>,
+ collapsible: true,
+ autoHeight: false
+ });
- my $tickets = RT::Tickets->new( $session{'CurrentUser'} );
- $tickets->FromSQL( "Requestor.id = ". $requestor->id ." AND (".join( " OR ", map $_->{cond}, @$conditions).")" );
- $tickets->RowsPerPage( $rows );
- $tickets->OrderBy( FIELD => 'Priority', ORDER => 'DESC' );
-</%PERL>
+% if ($ShowTickets) {
+ jQuery(".more-about-requestor-tickets").tabs({
+ cache: true,
+ collapsible: true,
+ selected: <% $selected %>
+ });
+% }
+ });
+</script>
<&| /Widgets/TitleBox,
- title_href => $has_right_adminusers? RT->Config->Get('WebPath')."/Admin/Users/Modify.html?id=".$requestor->id: undef,
- title_raw => loc("More about [_1]", $name),
+ title_raw => loc("More about the requestors"),
class => 'ticket-info-requestor'
&>
+<div id="requestor-accordion">
+
+% while ( my $requestor = $people->Next ) {
+ <h3><a href="#"><& /Elements/ShowUser, User => $requestor &></a></h3>
+ <div class="details">
+
%# Additional information about this user. Empty by default.
% $m->callback( requestor => $requestor, %ARGS, CallbackName => 'AboutThisUser' );
+<& ShowRequestorExtraInfo, Requestor => $requestor &>
-<span class="label"><&|/l&>Comments about this user</&>:</span><br />
-<b class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></b><br />
+% if ( $ShowComments ) {
+<div class="comments-about-user">
+ <span class="label"><&|/l&>Comments about this user</&>:</span>
+ <span class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></span>
+</div>
+% }
+
+% if ( $ShowTickets ) {
+<div class="more-about-requestor-tickets ui-tabs" id="more-about-requestor-tickets-<%$requestor->Id%>">
+ <ul>
+% my $index = 1;
+% for my $status ( @$status_order ) {
+ <li>
+% if ( $status eq $DefaultTicketsTab ) {
+ <a href="#requestor-<%$requestor->Id%>-ticket-tab-default">\
+% } else {
+% my $url = RT->Config->Get('WebPath').'/Helpers/Toggle/ShowRequestor?'.
+% $m->comp('/Elements/QueryString', Requestor => $requestor->Id , Status => $status);
+ <a href="<% $url | n %>" title="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>">\
+% }
+<% $status_link_text->{$status} %></a>
+ </li>
+% }
+ </ul>
+% $index = 1;
+% for my $status (@$status_order) {
+% if ( $status eq $DefaultTicketsTab ) {
+ <div id="requestor-<%$requestor->Id%>-ticket-tab-default">
+ <& $TicketTemplate, Requestor => $requestor &>
+% } else {
+ <div id="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>" class="ui-tabs-hide">
+ <span class="label"><&|/l&>Loading...</&></span>
+% }
+ </div>
+% }
+</div>
+% }
-<span class="label"><&|/l, $rows &>This user's [_1] highest priority tickets</&>:</span>
-<ul>
-%while (my $w=$tickets->Next) {
-%my $uri = RT::URI->new( $session{'CurrentUser'} );
-%$uri->FromObject($w);
-<li class="value"><& /Elements/ShowLink, URI => $uri &></li>
-%}
-</ul>
+% my $grouplimit = RT->Config->Get('MoreAboutRequestorGroupsLimit');
+% if ( $ShowGroups and defined $grouplimit ) {
+<div class="more-about-user-groups">
+ <span class="label">
+ <&|/l&>Groups this user belongs to</&>
+
+% if ( $session{CurrentUser}->HasRight( Right => 'AdminUsers', Object => $RT::System ) &&
+% $session{CurrentUser}->HasRight( Right => 'ShowConfigTab', Object =>$RT::System ) ) {
+ [<a href=<% RT->Config->Get('WebPath') . '/Admin/Users/Memberships.html?id=' . $requestor->id %> ><&|/l&>Edit</&></a>]
+% }
+ </span>
+ <span class="value"><& /Elements/ShowMemberships, UserObj => $requestor, Limit => $grouplimit &></span>
+</div>
+% }
-<&|/l&>Groups this user belongs to</&>:<br />
+% if ( $has_right_adminusers ) {
+ <a class="modify-user" href="<% RT->Config->Get('WebPath')."/Admin/Users/Modify.html?id=".$requestor->id %>">Modify this user</a>
+% }
-<& /Elements/ShowMemberships, UserObj => $requestor &>
+%# end of individual requestor details <div>
+ </div>
+% }
+%# end of requestors loop
+</div>
</&>
+<%INIT>
+my $show_privileged = RT->Config->Get('ShowMoreAboutPrivilegedUsers');
-% }
+my $people = $Ticket->Requestors->UserMembersObj;
+$people->LimitToUnprivileged unless $show_privileged;
+
+my $count = $people->Count;
+return unless $count;
+
+my $has_right_adminusers = $session{'CurrentUser'}->HasRight(
+ Object => $RT::System, Right => 'AdminUsers'
+);
+$has_right_adminusers &&= $session{'CurrentUser'}->HasRight(
+ Object => $RT::System, Right => 'ShowConfigTab'
+);
+
+# Ticket list tabs
+my $selected = -1;
+$DefaultTicketsTab ||= RT->Config->Get('MoreAboutRequestorTicketList', $session{CurrentUser}) || 'Active';
+my $status_link_text = {Active => loc('Active Tickets'),
+ Inactive => loc('Inactive Tickets'),
+ All => loc('All Tickets')};
+my $status_order = [qw/Active Inactive All/];
+$m->callback( CallbackName => 'AddStatus', status_link_text => \$status_link_text, status_order => \$status_order );
+
+unless ( $DefaultTicketsTab eq 'None' ) {
+ for (0 .. (@$status_order - 1)) {
+ $selected = $_ && last
+ if $status_order->[$_] eq $DefaultTicketsTab;
+ }
+}
+
+my $TicketTemplate = "ShowRequestorTickets$DefaultTicketsTab";
+$TicketTemplate = "ShowRequestorTicketsActive"
+ unless RT::Interface::Web->ComponentPathIsSafe($TicketTemplate)
+ and $m->comp_exists($TicketTemplate);
+</%INIT>
<%ARGS>
$Ticket=>undef
-$DisplayPath => "/Ticket/Display.html"
-$conditions => []
+$DefaultTicketsTab => undef
+$ShowComments => 1
+$ShowTickets => 1
+$ShowGroups => 1
+$Title => 'More about [_1]'
</%ARGS>
diff --git a/rt/share/html/User/Elements/Tabs b/rt/share/html/Ticket/Elements/ShowRequestorExtraInfo
index 2bc8e88a2..a5989ab6b 100755..100644
--- a/rt/share/html/User/Elements/Tabs
+++ b/rt/share/html/Ticket/Elements/ShowRequestorExtraInfo
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,53 +45,45 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs,
- tabs => $tabs,
- current_toptab => 'Prefs/Other.html',
- current_tab => $current_tab,
- Title => $Title &>
-
+<div class="more-about-requestor-extra">
+% for my $column (@formats) {
+% my $title = $column->{title} || '';
+% my $attr = $column->{'attribute'} || $column->{'last_attribute'};
+% unless (defined $column->{title}) {
+% $title = $fetch_columnmap->($attr,'title',[$attr]);
+% }
+% $title = $m->comp('/Elements/ScrubHTML', Content => $title);
+<div class="more-about-requestor-extra-field <% $fetch_columnmap->($attr,'attribute',[$attr]) %>" >
+<span class="label"><% loc($title) %></span>
+% my @out;
+% foreach my $subcol ( @{ $column->{output} } ) {
+% my ($col) = ($subcol =~ /^__(.*?)__$/);
+% unless ( $col ) {
+% push @out, $subcol;
+% next;
+% }
+% push @out, $fetch_columnmap->($col, 'value', [$Requestor]);
+% }
+% @out = grep { defined $_ and length $_ } @out;
+<span class="value"><% join(' ',@out) %></span>
+</div>
+% }
+</div>
<%INIT>
-my $tabs = {
- a => {
- title => loc('Settings'),
- path => 'Prefs/Other.html',
- },
- b => {
- title => loc('About me'),
- path => 'User/Prefs.html',
- },
- g => {
- title => loc('Personal Groups'),
- path => 'User/Groups/',
- },
- h => {
- title => loc('Delegation'),
- path => 'User/Delegation.html',
- },
- f => {
- title => loc('Search options'),
- path => 'Prefs/SearchOptions.html',
- },
- r => {
- title => loc('RT at a glance'),
- path => 'Prefs/MyRT.html',
- },
-};
-
-# Now let callbacks add their extra tabs
-$m->callback( %ARGS, tabs => $tabs );
+my $format = RT->Config->Get('MoreAboutRequestorExtraInfo');
+my @formats = $m->comp('/Elements/CollectionAsTable/ParseFormat', Format => $format);
-foreach my $tab (values %$tabs) {
- next unless $tab->{'path'} eq $current_tab;
-
- $tab->{"subtabs"} = $subtabs;
- $tab->{"current_subtab"} = $current_subtab;
-}
+my $fetch_columnmap = sub {
+ my ($name, $attr, $arguments) = @_;
+ my $tmp = $m->comp( '/Elements/ColumnMap',
+ Class => $Class,
+ Name => $name,
+ Attr => $attr,
+ );
+ return ProcessColumnMapValue( $tmp, Arguments => $arguments, Escape => 0 );
+};
</%INIT>
<%ARGS>
-$subtabs => undef
-$current_tab => undef
-$current_subtab => undef
-$Title => undef
+$Requestor => undef
+$Class => 'RT__User';
</%ARGS>
diff --git a/rt/share/html/Tools/Elements/Tabs b/rt/share/html/Ticket/Elements/ShowRequestorTickets
index 644d58552..1dfd08ef6 100644
--- a/rt/share/html/Tools/Elements/Tabs
+++ b/rt/share/html/Ticket/Elements/ShowRequestorTickets
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,46 +45,35 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs,
- tabs => $tabs,
- current_toptab => 'Tools/index.html',
- current_tab => $current_tab,
- actions => $actions,
- Title => $Title &>
-
+<span class="label">
+ <a href="<% $url %>"><&|/l, $Rows, $Description &>This user's [_1] highest priority [_2] tickets</&>:</a>
+</span>
+<ul>
+%while (my $w=$tickets->Next) {
+%my $uri = RT::URI->new( $session{'CurrentUser'} );
+%$uri->FromObject($w);
+<li class="value"><& /Elements/ShowLink, URI => $uri &></li>
+%}
+</ul>
<%INIT>
-my $tabs = {
- a => {
- title => loc('Dashboards'),
- path => 'Dashboards/index.html',
- },
- b => {
- title => loc('Offline'),
- path => 'Tools/Offline.html',
- },
- c => {
- title => loc('Reports'),
- path => 'Tools/Reports/index.html',
- },
- d => {
- title => loc('My Day'),
- path => 'Tools/MyDay.html',
- },
-};
-
-$m->callback( %ARGS, tabs => $tabs );
-
-foreach my $tab ( sort keys %{$tabs} ) {
- if ( $tabs->{$tab}->{'path'} eq $current_tab ) {
- $tabs->{$tab}->{"subtabs"} = $subtabs;
- $tabs->{$tab}->{"current_subtab"} = $current_subtab;
- }
+my $sql = "Requestor.id = ". $Requestor->id;
+if (@$conditions) {
+ $sql .= " AND (".join( " OR ", map $_->{cond}, @$conditions).")";
}
+my $tickets = RT::Tickets->new( $session{'CurrentUser'} );
+$tickets->FromSQL( $sql );
+$tickets->RowsPerPage( $Rows );
+$tickets->OrderBy( FIELD => 'Priority', ORDER => 'DESC' );
+
+my $url = RT->Config->Get('WebPath') . '/Search/Results.html?';
+ $url .= $m->comp('/Elements/QueryString',
+ Query => $sql,
+ OrderBy => 'Priority',
+ Order => 'DESC' );
</%INIT>
<%ARGS>
-$subtabs => undef
-$current_tab => undef
-$current_subtab => undef
-$actions => undef
-$Title => undef
+$Requestor => undef
+$conditions
+$Rows => 10
+$Description => ''
</%ARGS>
diff --git a/rt/share/html/Elements/Logout b/rt/share/html/Ticket/Elements/ShowRequestorTicketsActive
index da01dc10d..ba89988f3 100644
--- a/rt/share/html/Elements/Logout
+++ b/rt/share/html/Ticket/Elements/ShowRequestorTicketsActive
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,18 +45,16 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
- | <a href="<% RT->Config->Get('WebPath') %>/NoAuth/Logout.html"><&|/l&>Logout</&></a>
+<& ShowRequestorTickets, %ARGS, Description => loc('active'), conditions => $conditions, Rows => $Rows &>
<%INIT>
-my $show = 0;
-if ( $session{'CurrentUser'}->Name
- && ( !RT->Config->Get('WebExternalAuth')
- || RT->Config->Get('WebFallbackToInternalAuth')
- )
-) {
- $show = 1;
+unless ( @$conditions ) {
+ foreach (RT::Queue->ActiveStatusArray()) {
+ push @$conditions, { cond => "Status = '$_'", name => loc($_) };
+ }
}
-
-$m->callback( %ARGS, show => \$show );
-
-return unless $show;
</%INIT>
+<%ARGS>
+$Requestor => undef
+$conditions => []
+$Rows => 10
+</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/ShowRequestorTicketsAll b/rt/share/html/Ticket/Elements/ShowRequestorTicketsAll
new file mode 100644
index 000000000..772cd6899
--- /dev/null
+++ b/rt/share/html/Ticket/Elements/ShowRequestorTicketsAll
@@ -0,0 +1,53 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& ShowRequestorTickets, %ARGS, conditions => $conditions, Rows => $Rows &>
+<%ARGS>
+$Requestor => undef
+$conditions => []
+$Rows => 10
+</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/ShowRequestorTicketsInactive b/rt/share/html/Ticket/Elements/ShowRequestorTicketsInactive
new file mode 100644
index 000000000..968968c68
--- /dev/null
+++ b/rt/share/html/Ticket/Elements/ShowRequestorTicketsInactive
@@ -0,0 +1,60 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& ShowRequestorTickets, %ARGS, Description => loc('inactive'), conditions => $conditions, Rows => $Rows &>
+<%INIT>
+unless ( @$conditions ) {
+ foreach (RT::Queue->InactiveStatusArray()) {
+ push @$conditions, { cond => "Status = '$_'", name => loc($_) };
+ }
+}
+</%INIT>
+<%ARGS>
+$Requestor => undef
+$conditions => []
+$Rows => 10
+</%ARGS>
diff --git a/rt/share/html/Ticket/Elements/ShowSimplifiedRecipients b/rt/share/html/Ticket/Elements/ShowSimplifiedRecipients
new file mode 100644
index 000000000..590006b53
--- /dev/null
+++ b/rt/share/html/Ticket/Elements/ShowSimplifiedRecipients
@@ -0,0 +1,100 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%args>
+$TicketObj
+</%args>
+<%init>
+return unless RT->Config->Get('SimplifiedRecipients', $session{'CurrentUser'});
+
+my $Object = $m->notes("DryRun-".$TicketObj->Id) || $TicketObj->DryRun(%ARGS);
+$m->notes("DryRun-".$TicketObj->Id, $Object);
+return unless $Object;
+
+my %headers = (To => {}, Cc => {}, Bcc => {});
+if ($Object->Scrips) {
+ for my $scrip (grep $_->ActionObj->Action->isa('RT::Action::SendEmail'), @{$Object->Scrips->Prepared}) {
+ for my $type (qw(To Cc Bcc)) {
+ $headers{$type}{$_->address} = $_
+ for $scrip->ActionObj->Action->$type();
+ }
+ }
+}
+if ($Object->Rules) {
+ for my $rule (grep {$_->{hints} and $_->{hints}{class} eq "SendEmail"} @{$Object->Rules}) {
+ for my $type (qw(To Cc Bcc)) {
+ $headers{$type}{$_} ||= @{[Email::Address->parse($_)]}[0] # Hate list context
+ for @{$rule->{hints}{recipients}{$type}};
+ }
+ }
+}
+my %recips;
+</%init>
+<&|/Widgets/TitleBox, title => loc('Recipients'), id => 'recipients' &>
+<table>
+<tr>
+% for my $type (qw(To Cc Bcc)) {
+% next unless keys %{$headers{$type}};
+<td valign="top"><% $type %>:</td>
+<td valign="top">
+% for my $addr (sort {$a->address cmp $b->address} values %{$headers{$type}}) {
+% my $checked = 1;
+% $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => $addr, Type => $type, Checked => \$checked);
+% $recips{$addr->address}++;
+<input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" />
+<label for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
+% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
+<br />
+% }
+</td></tr>
+% }
+</table>
+<i>(Uncheck boxes to disable notifications to the listed
+recipients. Does <b>not</b> change who will receive future
+updates.)</i>
+</&>
+% $m->notes("DryRun-Recipients-".$TicketObj->Id, \%recips);
diff --git a/rt/share/html/Ticket/Elements/ShowSummary b/rt/share/html/Ticket/Elements/ShowSummary
index ef5960e01..a1d1610dc 100755
--- a/rt/share/html/Ticket/Elements/ShowSummary
+++ b/rt/share/html/Ticket/Elements/ShowSummary
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -49,81 +49,58 @@
<tr>
<td valign="top" class="boxcontainer">
% $m->callback( %ARGS, CallbackName => 'LeftColumnTop' );
-
<&| /Widgets/TitleBox, title => loc('The Basics'),
- title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id,
+ (($can_modify || $can_modify_cf) ? (title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id) : ()),
class => 'ticket-info-basics',
- &>
- <& /Ticket/Elements/ShowBasics, Ticket => $Ticket &>
- </&>
-
-% if ($Ticket->CustomFields->First) {
+ &><& /Ticket/Elements/ShowBasics, Ticket => $Ticket &></&>
<&| /Widgets/TitleBox, title => loc('Custom Fields'),
- title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id,
+ (($can_modify || $can_modify_cf) ? (title_href => RT->Config->Get('WebPath')."/Ticket/Modify.html?id=".$Ticket->Id) : ()),
class => 'ticket-info-cfs',
- &>
- <& /Ticket/Elements/ShowCustomFields, Ticket => $Ticket &>
- </&>
-% }
+ hide_empty => 1,
+ &><& /Ticket/Elements/ShowCustomFields, Ticket => $Ticket &></&>
- <&| /Widgets/TitleBox, title => loc('Customers'),
- title_href => RT->Config->Get('WebPath')."/Ticket/ModifyCustomers.html?id=".$Ticket->Id,
- class => 'ticket-info-customers'
- &>
- <& /Ticket/Elements/ShowCustomers, Ticket => $Ticket &>
- </&>
+ <&| /Widgets/TitleBox, title => loc('Customers'),
+ #$can_modify_customers?
+ ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyCustomers.html?id=".$Ticket->Id) : ()),
+ class => 'ticket-info-customers',
+ &><& /Ticket/Elements/ShowCustomers, Ticket => $Ticket &></&>
<&| /Widgets/TitleBox, title => loc('People'),
- title_href => RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$Ticket->Id,
+ (($can_modify || $can_modify_owner) ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$Ticket->Id) : ()),
class => 'ticket-info-people',
- &>
- <& /Ticket/Elements/ShowPeople, Ticket => $Ticket &>
- </&>
-
+ &><& /Ticket/Elements/ShowPeople, Ticket => $Ticket &></&>
<& /Ticket/Elements/ShowAttachments, Ticket => $Ticket, Attachments => $Attachments &>
-
<& /Ticket/Elements/ShowRequestor, Ticket => $Ticket &>
-
% $m->callback( %ARGS, CallbackName => 'LeftColumn' );
-
</td>
<td valign="top" class="boxcontainer">
-
% $m->callback( %ARGS, CallbackName => 'RightColumnTop' );
-
% if ( RT->Config->Get('EnableReminders') ) {
<&|/Widgets/TitleBox, title => loc("Reminders"),
title_href => RT->Config->Get('WebPath')."/Ticket/Reminders.html?id=".$Ticket->Id,
class => 'ticket-info-reminders',
&>
<table><tr><td>
- <form action="<%RT->Config->Get('WebPath')%>/Ticket/Display.html" method="post">
+ <form action="<%RT->Config->Get('WebPath')%>/Ticket/Display.html" name="UpdateReminders" id="UpdateReminders" method="post">
<& /Ticket/Elements/Reminders, Ticket => $Ticket, ShowCompleted => 0 &>
<div align="right"><input type="submit" class="button" value="<&|/l&>Save</&>" /></div>
</form>
</td></tr></table>
</&>
% }
-
<&| /Widgets/TitleBox, title => loc("Dates"),
- title_href => RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id,
+ ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyDates.html?id=".$Ticket->Id) : ()),
class => 'ticket-info-dates',
- &>
- <& /Ticket/Elements/ShowDates, Ticket => $Ticket &>
- </&>
-
+ &><& /Ticket/Elements/ShowDates, Ticket => $Ticket &></&>
% my (@extra);
% push @extra, titleright_raw => '<a href="'. RT->Config->Get('WebPath'). '/Ticket/Graphs/index.html?id='.$Ticket->id.'">'.loc('Graph').'</a>' unless RT->Config->Get('DisableGraphViz');
+% $m->callback( %ARGS, CallbackName => 'LinksExtra', extra => \@extra );
<&| /Widgets/TitleBox, title => loc('Links'),
- title_href => RT->Config->Get('WebPath')."/Ticket/ModifyLinks.html?id=".$Ticket->Id,
+ ($can_modify ? (title_href => RT->Config->Get('WebPath')."/Ticket/ModifyLinks.html?id=".$Ticket->Id) : ()),
class => 'ticket-info-links',
@extra,
- &>
- <& /Elements/ShowLinks, Ticket => $Ticket &>
- </&>
-
+ &><& /Elements/ShowLinks, Ticket => $Ticket &></&>
% $m->callback( %ARGS, CallbackName => 'RightColumn' );
-
</td>
</tr>
</table>
@@ -131,3 +108,10 @@
$Ticket => undef
$Attachments => undef
</%ARGS>
+<%INIT>
+my $can_modify = $Ticket->CurrentUserHasRight('ModifyTicket');
+my $can_modify_cf = $Ticket->CurrentUserHasRight('ModifyCustomField');
+my $can_modify_owner = $Ticket->CurrentUserHasRight('OwnTicket')
+ || $Ticket->CurrentUserHasRight('TakeTicket')
+ || $Ticket->CurrentUserHasRight('StealTicket');
+</%INIT>
diff --git a/rt/share/html/Ticket/Elements/ShowTime b/rt/share/html/Ticket/Elements/ShowTime
index 4ccc7908b..fc678c2d5 100644
--- a/rt/share/html/Ticket/Elements/ShowTime
+++ b/rt/share/html/Ticket/Elements/ShowTime
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/ShowTransaction b/rt/share/html/Ticket/Elements/ShowTransaction
index e76e00495..2e0acd39e 100755
--- a/rt/share/html/Ticket/Elements/ShowTransaction
+++ b/rt/share/html/Ticket/Elements/ShowTransaction
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,37 +47,33 @@
%# END BPS TAGGED BLOCK }}}
<div class="ticket-transaction <% $type_class %> <%$type%> <% $RowNum % 2 ? 'odd' : 'even' %>">
% $m->callback( titlebar_cmd => \$titlebar_commands, Transaction => $Transaction, %ARGS, CallbackName => 'ModifyDisplay' );
-
<div class="ticket-transaction">
% $m->callback( titlebar_cmd => \$titlebar_commands, Transaction => $Transaction, %ARGS, CallbackName => 'ModifyCommand' );
<div class="metadata">
<span class="type">
- <a name="txn-<% $Transaction->Id %>" href="<% $DisplayPath %>#txn-<% $Transaction->Id %>">#</a>
+ <a name="txn-<% $Transaction->Id %>" href="<% $DisplayPath %>#txn-<% $Transaction->Id %>">#</a>\
<% $LastTransaction ? '<a id="lasttrans" name="lasttrans"></a>' : ''|n %>
</span>
% $m->callback( Transaction => $Transaction, %ARGS, CallbackName => 'AfterAnchor' );
<span class="date"><% $transdate|n %></span>
% my $desc = $Transaction->BriefDescription;
% $m->callback( text => \$desc, Transaction => $Transaction, %ARGS, CallbackName => 'ModifyDisplay' );
- <span class="description">
- <& /Elements/ShowUser, User => $Transaction->CreatorObj &> - <% $TicketString %> <% $desc %>
+ <span class="description">\
+<& /Elements/ShowUser, User => $Transaction->CreatorObj &> - <% $TicketString %> <% $desc %>\
% $m->callback( Transaction => $Transaction, %ARGS, CallbackName => 'AfterDescription' );
- </span>
+</span>
% $m->callback( TimeTaken => \$TimeTaken, Transaction => $Transaction, %ARGS, CallbackName => 'ModifyTimeTaken' );
- <span class="time-taken"><% $TimeTaken %></span>
+ <span class="time-taken"><% $TimeTaken %></span>\
<span class="actions<% $titlebar_commands ? '': ' hidden'%>"><% $titlebar_commands |n %></span>
</div>
-
<div class="content">
-% if ( $Transaction->CustomFieldValues->Count ) {
+% if ( $type_class eq 'message' ) {
<& /Elements/ShowCustomFields, Object => $Transaction &>
% }
% $m->comp('ShowTransactionAttachments', %ARGS, Parent => 0) unless ($Collapsed ||!$ShowBody);
</div>
-
</div>
</div>
-
<%ARGS>
$Ticket => undef
$Transaction => undef
@@ -100,7 +96,6 @@ $WarnUnsigned => undef
<%ONCE>
my %class = (
- Create => 'message',
Correspond => 'message',
Comment => 'message',
@@ -124,6 +119,9 @@ $transdate =~ s/\s/&nbsp;/g;
my ($type, $field) = ($Transaction->Type, $Transaction->Field || '');
my $type_class = $class{ $type };
+if ( $type eq 'Create' && $Transaction->ObjectType eq 'RT::Ticket' ) {
+ $type_class = 'message';
+}
unless ( $type_class ) {
if ( $field eq 'Owner' ) {
@@ -194,28 +192,35 @@ else {
my $can_modify = $ticket->CurrentUserHasRight('ModifyTicket');
if ( $can_modify || $ticket->CurrentUserHasRight('ReplyToTicket') ) {
$titlebar_commands .=
- "[<a href=\"".$UpdatePath
+ "[<a href=\"" . $UpdatePath
. "?id=" . $Transaction->Ticket
. "&QuoteTransaction=" . $Transaction->Id
- . "&Action=Respond\">"
+ . "&Action=Respond\" "
+ . "class=\"reply-link\""
+ . ">"
. loc('Reply')
. "</a>]&nbsp;";
}
if ( $can_modify || $ticket->CurrentUserHasRight('CommentOnTicket') ) {
$titlebar_commands .=
- "[<a href=\"".$UpdatePath."?id="
- . $Transaction->Ticket
- . "&QuoteTransaction="
- . $Transaction->Id
- . "&Action=Comment\">"
- . loc('Comment') . "</a>]";
+ "[<a href=\"" . $UpdatePath
+ . "?id=" . $Transaction->Ticket
+ . "&QuoteTransaction=" . $Transaction->Id
+ . "&Action=Comment\" "
+ . "class=\"comment-link\""
+ . ">"
+ . loc('Comment')
+ . "</a>]";
}
if ( $ticket->CurrentUserHasRight('ForwardMessage') ) {
$titlebar_commands .=
- "[<a href=\"". $ForwardPath
- . "?id=". $Transaction->Ticket
- . "&QuoteTransaction=". $Transaction->Id
- . "\">". loc('Forward') . "</a>]";
+ "[<a href=\"" . $ForwardPath
+ . "?id=" . $Transaction->Ticket
+ . "&QuoteTransaction=" . $Transaction->Id ."\" "
+ . "class=\"forward-link\""
+ . ">"
+ . loc('Forward')
+ . "</a>]";
}
if ( $can_modify
&& RT->Config->Get('GnuPG')->{'Enable'}
@@ -223,9 +228,12 @@ else {
&& $ticket->CurrentUserHasRight('ForwardMessage')
) {
$titlebar_commands .=
- "[<a href=\"". $EncryptionPath
- . "?id=". $Transaction->Id
- . "\">". loc('Encrypt/Decrypt') . "</a>]";
+ "[<a href=\"" . $EncryptionPath
+ . "?id=" . $Transaction->Id ."\" "
+ . "class=\"gpg-link\""
+ . ">"
+ . loc('Encrypt/Decrypt')
+ . "</a>]";
}
}
}
diff --git a/rt/share/html/Ticket/Elements/ShowTransactionAttachments b/rt/share/html/Ticket/Elements/ShowTransactionAttachments
index 625e124f8..877201f55 100644
--- a/rt/share/html/Ticket/Elements/ShowTransactionAttachments
+++ b/rt/share/html/Ticket/Elements/ShowTransactionAttachments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -60,21 +60,19 @@ foreach my $message ( grep $_->__Value('Parent') == $Parent, @$Attachments ) {
);
my $size = $message->ContentLength;
+ my $name = defined $message->Filename && length $message->Filename ? $message->Filename : '';
if ( $size ) {
</%PERL>
<div class="downloadattachment">
-<a href="<% $AttachPath %>/<% $Transaction->Id %>/<% $message->Id %>/<% ($message->Filename ||'')| u%>"><&|/l&>Download</&> <% $message->Filename || loc('(untitled)') %></a>
-% if ( $DownloadableHeaders && !$message->Filename && $message->ContentType =~ /text/ ) {
+<a href="<% $AttachPath %>/<% $Transaction->Id %>/<% $message->Id %>/<% $name | u%>"><&|/l&>Download</&> <% length $name ? $name : loc('(untitled)') %></a>\
+% if ( $DownloadableHeaders && ! length $name && $message->ContentType =~ /text/ ) {
/ <a href="<% $AttachPath %>/WithHeaders/<% $message->Id %>"><% loc('with headers') %></a>
% }
-
% $m->callback(CallbackName => 'AfterDownloadLinks', ARGSRef => \%ARGS, Ticket => $Ticket, Transaction => $Transaction, Attachment => $message);
-
<br />
<span class="downloadcontenttype"><% $message->ContentType %> <% $size_to_str->( $size ) %></span>
</div>
% }
-
%# If there is sub-messages, open a dedicated div
% if ( scalar ( grep $_->__Value('Parent') == $message->id, @$Attachments ) ) {
<div class="messageattachments">
@@ -125,6 +123,8 @@ elsif (!$ShowHeaders) {
push @DisplayHeaders, 'RT-Send-Bcc' if RT->Config->Get('ShowBccHeader');
}
+$m->callback(CallbackName => 'MassageDisplayHeaders', DisplayHeaders => \@DisplayHeaders, Transaction => $Transaction);
+
my $size_to_str = sub {
my $size = shift;
# show a download link
@@ -142,11 +142,13 @@ my $size_to_str = sub {
my $render_attachment = sub {
my $message = shift;
+ my $name = defined $message->Filename && length $message->Filename ? $message->Filename : '';
# if it has a content-disposition: attachment, don't show inline
my $disposition = $message->GetHeader('Content-Disposition');
- if ( $disposition && $disposition =~ /attachment/i && $disposition !~ /^\s*inline/ ) {
- $disposition = 'attachemnt';
+
+ if ( $disposition && $disposition =~ /^\s*attachment/i ) {
+ $disposition = 'attachment';
} else {
$disposition = 'inline';
}
@@ -154,16 +156,16 @@ my $render_attachment = sub {
# If it's text
if ( $message->ContentType =~ m{^(text|message)}i ) {
my $max_size = RT->Config->Get( 'MaxInlineBody', $session{'CurrentUser'} );
- if ( $message->Filename && RT->Config->Get('SuppressInlineTextFiles', $session{'CurrentUser'} ) ) {
- $m->out('<p>'. loc( 'Text file is not shown because it is disabled in preferences.' ) .'</p>');
+ if ( $disposition ne 'inline' ) {
+ $m->out('<p>'. loc( 'Message body is not shown because sender requested not to inline it.' ) .'</p>');
return;
}
- elsif ( $max_size && $message->ContentLength > $max_size ) {
- $m->out('<p>'. loc( 'Message body not shown because it is too large.' ) .'</p>');
+ elsif ( length $name && RT->Config->Get('SuppressInlineTextFiles', $session{'CurrentUser'} ) ) {
+ $m->out('<p>'. loc( 'Text file is not shown because it is disabled in preferences.' ) .'</p>');
return;
}
- elsif ( $disposition ne 'inline' ) {
- $m->out('<p>'. loc( 'Message body is not shown because sender requested not to inline it.' ) .'</p>');
+ elsif ( $max_size && $message->ContentLength > $max_size ) {
+ $m->out('<p>'. loc( 'Message body is not shown because it is too large.' ) .'</p>');
return;
}
@@ -185,45 +187,63 @@ my $render_attachment = sub {
&& ( $message->ContentType !~ m{^text/(?:html|enriched)$} )
)
)
- )
- {
+ ) {
my $content;
- if ( $AttachmentContent->{ $message->id } ) {
- $content = $AttachmentContent->{ $message->id }->Content;
+ # If we've cached the content, use it from there
+ if (my $x = $AttachmentContent->{ $Transaction->id }->{$message->id}) {
+ $content = $x->Content;
}
else {
$content = $message->Content;
}
+ my $content_type = lc $message->ContentType;
+ $RT::Logger->debug(
+ "Rendering attachment #". $message->id
+ ." of '$content_type' type"
+ );
+
# if it's a text/html clean the body and show it
- if ( $message->ContentType =~ m{^text/(?:html|enriched)$}i ) {
+ if ( $content_type eq 'text/html' ) {
+ $content = $m->comp( '/Elements/ScrubHTML', Content => $content );
+
+ $m->comp(
+ '/Elements/MakeClicky',
+ content => \$content,
+ html => 1,
+ ticket => $Ticket,
+ );
+
+ require HTML::Quoted;
+ $content = HTML::Quoted->extract($content) unless length $name;
+
+ $m->comp(
+ 'ShowMessageStanza',
+ Message => $content,
+ Transaction => $Transaction,
+ ContentType => 'text/html',
+ );
+ }
+
+ elsif ( $content_type eq 'text/enriched' ) {
$content = $m->comp( '/Elements/ScrubHTML', Content => $content );
- if ( $message->ContentType eq 'text/html' ) {
- $m->comp('/Elements/MakeClicky',
- content => \$content, html => 1,
- ticket => $Ticket );
- }
$m->out( $content );
}
# if it's a text/plain show the body
elsif ( $message->ContentType =~ m{^(text|message)}i ) {
- #don't want to use this even if it is installed, its
- #segfaulting on weird characters and silently truncating the
- #ticket history output
- #see:
- # r44838@pinglin: jesse | 2006-11-14 15:53:18 -0500
- # * Move Text::Quoted back to being a run-time require. So that it's possible to turn off the feature if it causes your perl to segfault. (Text::Tabs is...not robust in the face of perl bugs)
- #eval { require Text::Quoted; $content = Text::Quoted::extract($content); };
- #if ($@) { $RT::Logger->warning( "Text::Quoted failed: $@" ) }
+ unless ( length $name ) {
+ eval { require Text::Quoted; $content = Text::Quoted::extract($content); };
+ if ($@) { $RT::Logger->warning( "Text::Quoted failed: $@" ) }
+ }
$m->comp(
'ShowMessageStanza',
- Depth => 0,
Message => $content,
- Transaction => $Transaction
+ Transaction => $Transaction,
+ ContentType => 'text/plain',
);
}
}
@@ -236,7 +256,7 @@ my $render_attachment = sub {
return;
}
- my $filename = $message->Filename || loc('(untitled)');
+ my $filename = length $name ? $name : loc('(untitled)');
$m->out('<img'
. ' alt="'
. $filename
diff --git a/rt/share/html/Ticket/Elements/ShowUpdateStatus b/rt/share/html/Ticket/Elements/ShowUpdateStatus
index 16406bfbc..07a57e139 100644
--- a/rt/share/html/Ticket/Elements/ShowUpdateStatus
+++ b/rt/share/html/Ticket/Elements/ShowUpdateStatus
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,7 +47,7 @@
%# END BPS TAGGED BLOCK }}}
<div class="unread-messages">
<&| /Widgets/TitleBox, title => loc('New messages'), title_href => "#txn-". $txn->id &>
-<&|/l, &>There are unread messages on this ticket.</&>
+<&|/l&>There are unread messages on this ticket.</&>
<&|/l,
RT->Config->Get('WebPath') ."/Ticket/Display.html?id=". $Ticket->id. "#txn-".$txn->id,
RT->Config->Get('WebPath') ."/Ticket/Display.html?id=". $Ticket->id ."&MarkAsSeen=1&Anchor=txn-" . $txn->id
diff --git a/rt/share/html/Ticket/Elements/ShowUserEntry b/rt/share/html/Ticket/Elements/ShowUserEntry
index 6e78a8826..fe3d35f9e 100644
--- a/rt/share/html/Ticket/Elements/ShowUserEntry
+++ b/rt/share/html/Ticket/Elements/ShowUserEntry
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Elements/UpdateCc b/rt/share/html/Ticket/Elements/UpdateCc
index f30fdadd1..d062156c7 100644
--- a/rt/share/html/Ticket/Elements/UpdateCc
+++ b/rt/share/html/Ticket/Elements/UpdateCc
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,7 +45,9 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<tr><td class="label"><&|/l&>One-time Cc</&>:</td><td><& /Elements/EmailInput, Name => 'UpdateCc', Size => '60', Default => $ARGS{UpdateCc} &>
+% $m->callback(CallbackName => 'BeforeCc', ARGSRef => \%ARGS, Ticket => $TicketObj, one_time_Ccs => \@one_time_Ccs, txn_addresses => \%txn_addresses);
+
+<tr><td class="label"><&|/l&>One-time Cc</&>:</td><td><& /Elements/EmailInput, Name => 'UpdateCc', Size => undef, Default => $ARGS{UpdateCc} &>
<input type="hidden" id="UpdateIgnoreAddressCheckboxes" name="UpdateIgnoreAddressCheckboxes" value="0">
<br />
@@ -53,17 +55,17 @@
<i class="label">(<&|/l&>check to add</&>)</i>
%}
%foreach my $addr ( @one_time_Ccs ) {
-<input
-id="UpdateCc-<%$addr%>"
-name="UpdateCc-<%$addr%>"
- type="checkbox"
+<input
+ id="UpdateCc-<%$addr%>"
+ name="UpdateCc-<%$addr%>"
+ class="onetime onetimecc"
+ type="checkbox"
% my $clean_addr = $txn_addresses{$addr}->format;
-% $clean_addr =~ s/'/\\'/g;
- onClick="checkboxToInput('UpdateCc', 'UpdateCc-<%$addr%>','<%$clean_addr%>' ); $(UpdateIgnoreAddressCheckboxes).value=1"
+ onClick="checkboxToInput('UpdateCc', <% "UpdateCc-$addr" |n,j%>, <%$clean_addr|n,j%> );"
<% $ARGS{'UpdateCc-'.$addr} ? 'checked="checked"' : ''%> > <& /Elements/ShowUser, Address => $txn_addresses{$addr}&>
%}
</td></tr>
-<tr><td class="label"><&|/l&>One-time Bcc</&>:</td><td><& /Elements/EmailInput, Name => 'UpdateBcc', Size => '60', Default => $ARGS{UpdateBcc} &><br />
+<tr><td class="label"><&|/l&>One-time Bcc</&>:</td><td><& /Elements/EmailInput, Name => 'UpdateBcc', Size => undef, Default => $ARGS{UpdateBcc} &><br />
%if (scalar @one_time_Ccs) {
<i class="label">(<&|/l&>check to add</&>)</i>
%}
@@ -71,10 +73,10 @@ name="UpdateCc-<%$addr%>"
<input
id="UpdateBcc-<%$addr%>"
name="UpdateBcc-<%$addr%>"
- type="checkbox"
+ class="onetime onetimebcc"
+ type="checkbox"
% my $clean_addr = $txn_addresses{$addr}->format;
-% $clean_addr =~ s/'/\\'/g;
- onClick="checkboxToInput('UpdateBcc', 'UpdateBcc-<%$addr%>','<%$clean_addr%>' ); $(UpdateIgnoreAddressCheckboxes).value=1"
+ onClick="checkboxToInput('UpdateBcc', <% "UpdateBcc-$addr" |n,j%>, <%$clean_addr|n,j%> );"
<% $ARGS{'UpdateBcc-'.$addr} ? 'checked="checked"' : ''%>>
<& /Elements/ShowUser, Address => $txn_addresses{$addr}&>
%}
diff --git a/rt/share/html/Ticket/Forward.html b/rt/share/html/Ticket/Forward.html
index 87c2d0a3c..8aa75c7a8 100644
--- a/rt/share/html/Ticket/Forward.html
+++ b/rt/share/html/Ticket/Forward.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,32 +46,31 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $Title &>
-<& /Ticket/Elements/Tabs,
- Ticket => $TicketObj,
- Title => $Title,
-&>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $TicketObj);
<& /Elements/ListActions, actions => \@results &>
-<form action="Forward.html" name="ForwardMessage" method="post">
+<form action="Forward.html" id="ForwardMessage" name="ForwardMessage" method="post">
% $m->callback( CallbackName => 'FormStart', ARGSRef => \%ARGS );
<input type="hidden" class="hidden" name="id" value="<% $id %>" /><br />
-<input type="hidden" class="hidden" name="QuoteTransaction" value="<% $ARGS{'QuoteTransaction'} %>" />
+<input type="hidden" class="hidden" name="QuoteTransaction" value="<% $ARGS{'QuoteTransaction'} || '' %>" />
<table border="0">
+<tr><td align="right"><&|/l&>From</&>:</td>
+<td><% $from %></td></tr>
<tr><td align="right"><&|/l&>Subject</&>:</td>
-<td><% $TicketObj->Subject %></td></tr>
+<td><% $subject %></td></tr>
<tr><td align="right"><&|/l&>To</&>:</td>
-<td><input name="To" size="60" value="<% $ARGS{'To'} %>" /></td></tr>
+<td><input name="To" size="60" value="<% $ARGS{'To'} || '' %>" /></td></tr>
<tr><td align="right"><&|/l&>Cc</&>:</td>
-<td><input name="Cc" size="60" value="<% $ARGS{'Cc'} %>" /></td></tr>
+<td><input name="Cc" size="60" value="<% $ARGS{'Cc'} || '' %>" /></td></tr>
-<tr><td align="right"><&|/l&>BCc</&>:</td>
-<td><input name="Bcc" size="60" value="<% $ARGS{'Bcc'} %>" /></td></tr>
+<tr><td align="right"><&|/l&>Bcc</&>:</td>
+<td><input name="Bcc" size="60" value="<% $ARGS{'Bcc'} || '' %>" /></td></tr>
</table>
@@ -113,6 +112,13 @@ my $Title = $txn
? loc('Forward transaction #[_1]', $txn->id)
: loc('Forward ticket #[_1]', $TicketObj->id);
+my $from = RT::Interface::Email::GetForwardFrom(
+ $txn ? ( Transaction => $txn ) : ( Ticket => $TicketObj ) );
+
+my $subject = $TicketObj->Subject;
+$subject = RT::Interface::Email::AddSubjectTag( $subject, $TicketObj )
+ unless RT->Config->Get('ForwardFromUser');
+
</%INIT>
<%ARGS>
diff --git a/rt/share/html/Ticket/GnuPG.html b/rt/share/html/Ticket/GnuPG.html
index 5270d54ed..d15ce720a 100644
--- a/rt/share/html/Ticket/GnuPG.html
+++ b/rt/share/html/Ticket/GnuPG.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,16 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs,
- Ticket => $txn->TicketObj,
- current_tab => 'Ticket/Encrypt.html?id='. $id,
- Title => $title,
-&>
+<& /Elements/Tabs &>
% $m->callback( CallbackName => 'BeforeActionList', %ARGS, Actions => \@results, ARGSRef => \%ARGS );
<& /Elements/ListActions, actions => \@results &>
<form method="post" action="<% RT->Config->Get('WebPath') . $m->request_comp->path %>?id=<% $id %>">
-<a href="<% RT->Config->Get('WebURL') %>Ticket/Display.html?id=<% $txn->Ticket %>#txn-<% $id %>">
+<a href="<% RT->Config->Get('WebPath') %>/Ticket/Display.html?id=<% $txn->Ticket %>#txn-<% $id %>">
<% loc('Return back to the ticket') %>
</a>
<& /Elements/Submit,
diff --git a/rt/share/html/Ticket/Graphs/Elements/EditGraphProperties b/rt/share/html/Ticket/Graphs/Elements/EditGraphProperties
index beb67a299..c5479e3f0 100644
--- a/rt/share/html/Ticket/Graphs/Elements/EditGraphProperties
+++ b/rt/share/html/Ticket/Graphs/Elements/EditGraphProperties
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -151,7 +151,7 @@ my $class = '';
$class = 'class="hidden"' if $Level != 1 && !@Default;
</%INIT>
<% loc('Show Tickets Properties on [_1] level', $Level) %>
-(<small><a href="#" onclick="hideshow('<% $id %>'); return false;"><% loc('open/close') %></a></small>):
+(<small><a href="#" onclick="hideshow(<% $id |n,j%>); return false;"><% loc('open/close') %></a></small>):
<table id="<% $id %>" <% $class |n %>>
% while ( my ($group, $list) = (splice @Available, 0, 2) ) {
<tr><td><% loc($group) %>:</td><td>
diff --git a/rt/share/html/Ticket/Graphs/Elements/ShowGraph b/rt/share/html/Ticket/Graphs/Elements/ShowGraph
index 1d905c74a..2163b81a8 100644
--- a/rt/share/html/Ticket/Graphs/Elements/ShowGraph
+++ b/rt/share/html/Ticket/Graphs/Elements/ShowGraph
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -66,6 +66,7 @@ $ARGS{'id'} = $id = $ticket->id;
require RT::Graph::Tickets;
my $graph = RT::Graph::Tickets->TicketLinks(
%ARGS,
+ Graph => undef,
Ticket => $ticket,
);
</%INIT>
diff --git a/rt/share/html/Ticket/Graphs/Elements/ShowLegends b/rt/share/html/Ticket/Graphs/Elements/ShowLegends
index d0d109847..4c63d4b38 100644
--- a/rt/share/html/Ticket/Graphs/Elements/ShowLegends
+++ b/rt/share/html/Ticket/Graphs/Elements/ShowLegends
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Ticket/Graphs/dhandler b/rt/share/html/Ticket/Graphs/dhandler
index a1dfebec7..89b1f37e1 100644
--- a/rt/share/html/Ticket/Graphs/dhandler
+++ b/rt/share/html/Ticket/Graphs/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -65,6 +65,7 @@ unless ( $ticket->id ) {
require RT::Graph::Tickets;
my $graph = RT::Graph::Tickets->TicketLinks(
%ARGS,
+ Graph => undef,
Ticket => $ticket,
);
diff --git a/rt/share/html/Ticket/Graphs/index.html b/rt/share/html/Ticket/Graphs/index.html
index ca7bde2cc..80ec9f347 100644
--- a/rt/share/html/Ticket/Graphs/index.html
+++ b/rt/share/html/Ticket/Graphs/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs,
- Ticket => $ticket,
- Title => $title,
- current_tab => "Ticket/ModifyLinks.html?id=$id",
-&>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
diff --git a/rt/share/html/Ticket/History.html b/rt/share/html/Ticket/History.html
index e0e0462da..afc174fd6 100755
--- a/rt/share/html/Ticket/History.html
+++ b/rt/share/html/Ticket/History.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("Ticket History # [_1] [_2]", $Ticket->Id, $Ticket->Subject) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $Ticket, current_tab => 'Ticket/History.html?id='.$Ticket->id,
- Title => loc("Ticket History # [_1] [_2]", $Ticket->Id, $Ticket->Subject) &>
+<& /Elements/Tabs &>
% $m->callback( %ARGS, Ticket => $Ticket, CallbackName => 'BeforeActionList' );
@@ -63,7 +61,7 @@
AttachmentContent => $attachment_content
&>
-% $m->callback( %ARGS, CallbackName => 'AfterShowHistory', Ticket => $Ticket, current_tab => 'Ticket/History.html?id=' . $Ticket->id );
+% $m->callback( %ARGS, CallbackName => 'AfterShowHistory', Ticket => $Ticket );
<%ARGS>
$id => undef
diff --git a/rt/share/html/Ticket/Modify.html b/rt/share/html/Ticket/Modify.html
index 9f1a95932..372a84e23 100755
--- a/rt/share/html/Ticket/Modify.html
+++ b/rt/share/html/Ticket/Modify.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,14 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc('Modify ticket #[_1]', $TicketObj->Id) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $TicketObj, current_subtab => "Ticket/Modify.html?id=".$TicketObj->Id,
- Title => loc('Modify ticket #[_1]', $TicketObj->Id) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $TicketObj);
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="Modify.html" enctype="multipart/form-data">
+<form method="post" action="Modify.html" enctype="multipart/form-data" name="TicketModify" id="TicketModify">
% $m->callback( CallbackName => 'FormStart', ARGSRef => \%ARGS );
<input type="hidden" class="hidden" name="id" value="<% $TicketObj->Id %>" />
@@ -61,6 +59,7 @@
<& Elements/EditBasics, TicketObj => $TicketObj &>
<& Elements/EditCustomFields, TicketObj => $TicketObj, DefaultsFromTopArguments => 0 &>
</&>
+% $m->callback( CallbackName => 'AfterBasics', Ticket => $TicketObj );
<& /Elements/Submit, Name => 'SubmitTicket', Label => loc('Save Changes'), Caption => loc("If you've updated anything above, be sure to"), color => "#993333" &>
</form>
diff --git a/rt/share/html/Ticket/ModifyAll.html b/rt/share/html/Ticket/ModifyAll.html
index cd9bb3891..4ed393451 100755
--- a/rt/share/html/Ticket/ModifyAll.html
+++ b/rt/share/html/Ticket/ModifyAll.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,15 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("Ticket #[_1] Jumbo update: [_2]", $Ticket->Id, $Ticket->Subject) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $Ticket,
- current_tab => "Ticket/ModifyAll.html?id=".$Ticket->Id,
- Title => loc("Ticket #[_1] Jumbo update: [_2]", $Ticket->Id, $Ticket->Subject) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $Ticket);
<& /Elements/ListActions, actions => \@results &>
-<form method="post" action="ModifyAll.html" enctype="multipart/form-data">
+<form method="post" action="ModifyAll.html" name="TicketModifyAll" enctype="multipart/form-data">
% $m->callback( CallbackName => 'FormStart', ARGSRef => \%ARGS );
<input type="hidden" class="hidden" name="id" value="<%$Ticket->Id%>" />
@@ -63,6 +60,7 @@
<& Elements/EditCustomFields, TicketObj => $Ticket &>
</&>
+% $m->callback(CallbackName => 'AfterBasics', Ticket => $Ticket);
<br />
<&| /Widgets/TitleBox, title => loc('Dates'), class=>'ticket-info-dates'&>
@@ -106,40 +104,15 @@
% $m->callback( %ARGS, CallbackName => 'AfterSubject' );
</td>
</tr>
-% if (my $TxnCFs = $Ticket->TransactionCustomFields) {
-% while (my $CF = $TxnCFs->Next()) {
-<tr>
-<td class="label"><% loc($CF->Name) %>:</td>
-<td class="entry"><& /Elements/EditCustomField,
- CustomField => $CF,
- NamePrefix => "Object-RT::Transaction--CustomField-"
- &><em><% $CF->FriendlyType %></em>
-</td></tr>
-% } # end if while
-% } # end of if
-% if (exists $session{'Attachments'}) {
-<tr><td><&|/l&>Attached file</&>:</td>
-<td>
-<&|/l&>Check box to delete</&><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
-<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
-% } # end of foreach
-</td>
-</tr>
-% } # end of if
- <tr>
- <td class="label"><&|/l&>Attach</&>:</td>
- <td class="entry"><input name="Attach" type="file" />
- <input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" />
- <input type="hidden" class="hidden" name="UpdateAttach" value="1" />
-% $m->callback( %ARGS, CallbackName => 'AfterAttach' );
- </td>
- </tr>
+ <tr><td colspan="2"><& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $Ticket &></td></tr>
+
+<& /Ticket/Elements/AddAttachments, %ARGS, TicketObj => $Ticket &>
+
<tr>
<td class="labeltop"><&|/l&>Content</&>:</td>
<td class="entry">
-% if (defined $ARGS{UpdateContent} && length($ARGS{UpdateContent})) {
+% if (defined $ARGS{UpdateContent} && length($ARGS{UpdateContent} && !grep { /Message recorded/ } @results )) {
<& /Elements/MessageBox, Name=>"UpdateContent", Default=>$ARGS{UpdateContent}, IncludeSignature => 0 &>
% } else {
<& /Elements/MessageBox, Name=>"UpdateContent", QuoteTransaction=>$ARGS{QuoteTransaction} &>
@@ -179,17 +152,16 @@ $CanRespond = 1 if ( $Ticket->CurrentUserHasRight('ReplyToTicket') or
$CanComment = 1 if ( $Ticket->CurrentUserHasRight('CommentOnTicket') or
$Ticket->CurrentUserHasRight('ModifyTicket') );
-# {{{ deal with deleting uploaded attachments
+# deal with deleting uploaded attachments
foreach my $key (keys %ARGS) {
if ($key =~ m/^DeleteAttach-(.+)$/) {
delete $session{'Attachments'}{$1};
}
$session{'Attachments'} = { %{$session{'Attachments'} || {}} };
}
-# }}}
-# {{{ store the uploaded attachment in session
-if ($ARGS{'Attach'}) { # attachment?
+# store the uploaded attachment in session
+if ( defined $ARGS{'Attach'} && length $ARGS{'Attach'} ) { # attachment?
my $attachment = MakeMIMEEntity(
AttachmentFieldName => 'Attach'
);
@@ -200,13 +172,11 @@ if ($ARGS{'Attach'}) { # attachment?
$file_path => $attachment,
};
}
-# }}}
# delete temporary storage entry to make WebUI clean
unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) {
delete $session{'Attachments'};
}
-# }}}
$m->callback( TicketObj => $Ticket, ARGSRef => \%ARGS );
@@ -218,7 +188,12 @@ unless ($OnlySearchForPeople or $OnlySearchForGroup or $ARGS{'AddMoreAttach'} )
my @owners =@{$ARGS{'Owner'}};
delete $ARGS{'Owner'};
foreach my $owner(@owners){
- $ARGS{'Owner'} = $owner unless ($Ticket->OwnerObj->id == $owner);
+ if (defined($owner) && $owner =~ /\D/) {
+ $ARGS{'Owner'} = $owner unless ($Ticket->OwnerObj->Name eq $owner);
+ }
+ elsif (length $owner) {
+ $ARGS{'Owner'} = $owner unless ($Ticket->OwnerObj->id == $owner);
+ }
}
}
diff --git a/rt/share/html/Ticket/ModifyDates.html b/rt/share/html/Ticket/ModifyDates.html
index 461283a9c..c85d2f425 100755
--- a/rt/share/html/Ticket/ModifyDates.html
+++ b/rt/share/html/Ticket/ModifyDates.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc('Modify dates for #[_1]', $TicketObj->Id) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $TicketObj,
- current_tab => "Ticket/ModifyDates.html?id=".$TicketObj->Id,
- Title => loc('Modify dates for #[_1]', $TicketObj->Id) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $TicketObj);
<& /Elements/ListActions, actions => \@results &>
diff --git a/rt/share/html/Ticket/ModifyLinks.html b/rt/share/html/Ticket/ModifyLinks.html
index 09a7a4687..9dceb2a7a 100755
--- a/rt/share/html/Ticket/ModifyLinks.html
+++ b/rt/share/html/Ticket/ModifyLinks.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,15 +46,12 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("Link ticket #[_1]", $Ticket->Id) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $Ticket,
- current_tab => "Ticket/ModifyLinks.html?id=".$Ticket->Id,
- Title => loc("Link ticket #[_1]", $Ticket->Id) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $Ticket);
<& /Elements/ListActions, actions => \@results &>
-<form action="ModifyLinks.html" method="post">
+<form action="ModifyLinks.html" name="ModifyLinks" method="post">
<input type="hidden" class="hidden" name="id" value="<%$Ticket->id%>" />
% $m->callback( CallbackName => 'FormStart', ARGSRef => \%ARGS );
% my (@extra);
diff --git a/rt/share/html/Ticket/ModifyPeople.html b/rt/share/html/Ticket/ModifyPeople.html
index 7ccd875ff..56db2bb0c 100755
--- a/rt/share/html/Ticket/ModifyPeople.html
+++ b/rt/share/html/Ticket/ModifyPeople.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,10 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc('Modify people related to ticket #[_1]', $Ticket->id) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $Ticket,
- current_tab => "Ticket/ModifyPeople.html?id=".$Ticket->Id,
- Title => loc('Modify people related to ticket #[_1]', $Ticket->id) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', Actions => \@results, ARGSRef => \%ARGS, Ticket => $Ticket);
<& /Elements/ListActions, actions => \@results &>
@@ -60,6 +57,22 @@
<&| /Widgets/TitleBox, title => loc('Modify people related to ticket #[_1]', $Ticket->Id), width => "100%", color=> "#333399", class=>'ticket-info-people' &>
<& Elements/EditPeople, Ticket => $Ticket, UserField => $UserField, UserString => $UserString, UserOp => $UserOp, GroupString => $GroupString, GroupOp => $GroupOp, GroupField => $GroupField &>
</&>
+<&| /Widgets/TitleBox, title => loc("Modify who receives mail for ticket #[_1]", $Ticket->Id), width => "100%", color=> "#333399", class=>'ticket-info-squelch' &>
+<p>
+ The checked users may receive email related to this ticket depending on the
+ action taken. Uncheck users to stop sending email to them about this ticket.
+</p>
+
+<ul>
+% for my $addr (sort keys %recips) {
+ <li>
+ <input type="hidden" name="autorecipient" value="<% $addr %>">
+ <input type="checkbox" name="checked_recipient" id="checked_recipient_<%$addr%>" value="<%$addr%>" <% $recips{$addr} ? "checked" : "" %>>
+ <label for="checked_recipient_<%$addr%>"><& /Elements/ShowUser, Address => Email::Address->parse($addr) &></label>
+ </li>
+% }
+</ul>
+</&>
<& /Elements/Submit, Name => 'SubmitTicket', Label => loc('Save Changes'), Caption => loc("If you've updated anything above, be sure to"), color => "#333399" &>
</form>
@@ -70,12 +83,44 @@ my @results;
my $Ticket = LoadTicket($id);
$m->callback( TicketObj => $Ticket, ARGSRef => \%ARGS );
+# Update the squelch list
+my %squelched = map {$_->Content => 1} $Ticket->SquelchMailTo;
+my %checked = map {$_ => 1} grep {defined}
+ (ref $ARGS{'checked_recipient'} eq "ARRAY" ? @{$ARGS{'checked_recipient'}}
+ : defined $ARGS{'checked_recipient'} ? ($ARGS{'checked_recipient'}) : ());
+my @all = grep {defined}
+ (ref $ARGS{'autorecipient'} eq "ARRAY" ? @{$ARGS{'autorecipient'}}
+ : defined $ARGS{'autorecipient'} ? ($ARGS{'autorecipient'}) : ());
+$Ticket->UnsquelchMailTo($_)
+ for grep {$squelched{$_}} keys %checked;
+$Ticket->SquelchMailTo($_)
+ for grep {!$squelched{$_} and !$checked{$_}} @all;
+
# if we're trying to search for watchers and nothing else
unless ($OnlySearchForPeople or $OnlySearchForGroup) {
push @results, ProcessTicketBasics( TicketObj => $Ticket, ARGSRef => \%ARGS);
push @results, ProcessTicketWatchers( TicketObj => $Ticket, ARGSRef => \%ARGS);
$Ticket->ApplyTransactionBatch;
}
+
+# Use the ticket's scrips to figure out the new list of recipients.
+my @txns = grep {defined} map {$Ticket->DryRun( Action => $_ )} qw/comment respond/;
+my %recips=();
+for my $scrip (map {@{$_->Scrips->Prepared}} @txns) {
+ next unless $scrip->ActionObj->Action->isa('RT::Action::SendEmail');
+ for my $type (qw(To Cc Bcc)) {
+ $recips{$_->address} = 1 for $scrip->ActionObj->Action->$type();
+ }
+}
+for my $rule (map {@{$_->Rules}} @txns) {
+ next unless $rule->{hints} && $rule->{hints}{class} eq "SendEmail";
+ for my $type (qw(To Cc Bcc)) {
+ $recips{$_} = 1 for @{$rule->{hints}{recips}{$type}};
+ }
+}
+
+# Use tkt squelch list to get recipients who will NOT get mail:
+$recips{$_->Content} = 0 for $Ticket->SquelchMailTo;
</%INIT>
diff --git a/rt/share/html/Ticket/Reminders.html b/rt/share/html/Ticket/Reminders.html
index 0bbd87e9a..8461efe44 100755
--- a/rt/share/html/Ticket/Reminders.html
+++ b/rt/share/html/Ticket/Reminders.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,29 +45,27 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => loc("Reminder ticket #[_1]", $Ticket->Id) &>
-<& /Ticket/Elements/Tabs,
- Ticket => $Ticket,
- current_tab => "Ticket/Reminders.html?id=".$Ticket->Id,
- Title => loc("Reminders for ticket #[_1]", $Ticket->Id) &>
+<& /Elements/Header, Title => loc("Reminders for ticket #[_1]", $Ticket->Id) &>
+<& /Elements/Tabs &>
% $m->callback(CallbackName => 'BeforeActionList', ARGSRef => \%ARGS, Ticket => $Ticket);
-<form action="<%RT->Config->Get('WebPath')%>/Ticket/Reminders.html" method="post">
+<form action="<%RT->Config->Get('WebPath')%>/Ticket/Reminders.html" name="UpdateReminders" id="UpdateReminders" method="post">
<&|/Widgets/TitleBox, title => loc("Reminders"),
class=>'ticket-info-reminders'
&>
<& /Ticket/Elements/Reminders, Ticket => $Ticket, ShowCompleted => 1, Edit => 1 &>
</&>
-<& /Elements/Submit, Label => loc('Save') &>
+<& /Elements/Submit,
+ Label => loc('Save Changes') &>
</form>
<%INIT>
-
my $Ticket = LoadTicket($id);
-
+
+ProcessTicketReminders( TicketObj => $Ticket, ARGSRef => \%ARGS );
</%INIT>
<%ARGS>
$id => undef
diff --git a/rt/share/html/Ticket/ShowEmailRecord.html b/rt/share/html/Ticket/ShowEmailRecord.html
index 77f0f5966..55ee82338 100644
--- a/rt/share/html/Ticket/ShowEmailRecord.html
+++ b/rt/share/html/Ticket/ShowEmailRecord.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -79,7 +79,7 @@ $show = sub {
$m->out( '</pre></div>' );
};
-my $AttachmentObj = new RT::Attachment($session{'CurrentUser'});
+my $AttachmentObj = RT::Attachment->new($session{'CurrentUser'});
$AttachmentObj->Load($Attachment) || Abort(loc("Attachment '[_1]' could not be loaded", $Attachment));
unless ( $AttachmentObj->id ) {
Abort(loc("Attachment '[_1]' could not be loaded", $Attachment));
diff --git a/rt/share/html/Ticket/Update.html b/rt/share/html/Ticket/Update.html
index 0d4e3b223..64bd531cf 100755
--- a/rt/share/html/Ticket/Update.html
+++ b/rt/share/html/Ticket/Update.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,11 +45,9 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => $title &>
-<& /Ticket/Elements/Tabs,
- Ticket => $TicketObj,
- Title=> $title &>
-
+<& /Elements/Header, Title => $title &>
+<& /Elements/Tabs &>
+
% $m->callback(CallbackName => 'BeforeActionList', ARGSRef => \%ARGS, Ticket => $TicketObj);
<& /Elements/ListActions, actions => \@results &>
@@ -62,79 +60,24 @@
<& /Elements/GnuPG/SignEncryptWidget:ShowIssues, self => $gnupg_widget &>
+<div id="ticket-update-metadata">
+ <&|/Widgets/TitleBox, title => loc('Ticket and Transaction') &>
<table width="100%" border="0">
% $m->callback(CallbackName => 'AfterTableOpens', ARGSRef => \%ARGS, Ticket => $TicketObj);
-<tr><td valign="baseline" class="label"><&|/l&>Status</&>:</td>
-<td valign="baseline">
-<script type="text/javascript">
-function changeStatus() {
- var Status_select = document.getElementById('Status');
- var x = Status_select.options[Status_select.selectedIndex].value;
- var text = document.getElementById('WillResolve_Date');
- var button = document.getElementById('WillResolve_Date_date_button');
- if (x == 'resolved' || x == 'rejected' || x == 'deleted') {
- text.disabled = true;
- button.style.display = 'none';
- }
- else {
- text.disabled = false;
- button.style.display = 'inline';
- }
-}
-</script>
-<& /Elements/SelectStatus,
- Name=>"Status",
- DefaultLabel => loc("[_1] (Unchanged)", loc($TicketObj->Status)),
- Default => $ARGS{'Status'}
- || ($TicketObj->Status eq $DefaultStatus ? undef : $DefaultStatus,
- onchange => 'changeStatus()'
-)&>
-<span class="label"><&|/l&>Resolve this Ticket on</&>:</span>
-<& /Elements/SelectDate,
- menu_prefix => 'WillResolve',
- current => 0,
- ShowTime => 0,
-&>
-% if ( $TicketObj->WillResolve ) {
-<span class="label"> (<% $TicketObj->WillResolveObj->AsString %>)</span>
-% }
-<script type="text/javascript">
-changeStatus();
-</script>
-</td>
-<td rowspan=4 valign="top">
-<table style="float:right;">
-<tr>
-<td class="label"><&|/l&>Worked</&>:</td>
-<td><& /Elements/EditTimeValue,
- Name => 'UpdateTimeWorked',
- Default => $ARGS{UpdateTimeWorked}||'',
- InUnits => $ARGS{'UpdateTimeWorked-TimeUnits'}||'minutes',
-&>
-</td></tr>
<& /Ticket/Elements/EditTransactionCustomFields,
%ARGS,
TicketObj => $TicketObj,
UILocation => 'TimeWorked',
&>
-</table></td></tr>
+
% my $skip;
% $m->callback( %ARGS, CallbackName => 'BeforeUpdateType', skip => \$skip );
% if (!$skip) {
<input type="hidden" class="hidden" name="id" value="<%$TicketObj->Id%>" /><br />
% }
-<tr><td class="label"><&|/l&>Owner</&>:</td>
-<td><& /Elements/SelectOwner,
- Name => "Owner",
- TicketObj => $TicketObj,
- QueueObj => $TicketObj->QueueObj,
- DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)),
- Default => $ARGS{'Owner'}
-&></td>
-</tr>
<tr><td class="label"><&|/l&>Update Type</&>:</td>
-<td><select name="UpdateType">
+<td><select name="UpdateType" id="UpdateType">
% if ($CanComment) {
<option value="private" <% ($ARGS{'UpdateType'} && $ARGS{'UpdateType'} eq "private") ? qq[ selected="selected"] : !$ARGS{'UpdateType'}&&$CommentDefault |n %>><&|/l&>Comments (Not sent to requestors)</&></option>
% }
@@ -142,29 +85,105 @@ changeStatus();
<option value="response" <% ($ARGS{'UpdateType'} && $ARGS{'UpdateType'} eq "response") ? qq[ selected="selected"] : !$ARGS{'UpdateType'}&&$ResponseDefault |n %>><&|/l&>Reply to requestors</&></option>
% }
</select>
+
+<script type="text/javascript">
+ jQuery(function() {
+ jQuery("#UpdateType").change(function(ev) {
+ jQuery(".messagebox-container")
+ .removeClass("action-response action-private")
+ .addClass("action-"+ev.target.value);
+ });
+ });
+ jQuery(function() {
+ jQuery("input[name=TxnSendMailTo]").change(function(ev) {
+ jQuery("input[name=TxnSendMailTo][value="+ev.target.value+"]")
+ .attr("checked",jQuery(ev.target).attr('checked'));
+ });
+ });
+</script>
+
% $m->callback( %ARGS, CallbackName => 'AfterUpdateType' );
</td></tr>
-<tr><td class="label"><&|/l&>Subject</&>:</td><td> <input name="UpdateSubject" size="60" value="<% $ARGS{UpdateSubject} || $TicketObj->Subject()%>" />
-% $m->callback( %ARGS, CallbackName => 'AfterSubject' );
-</td></tr>
-<& /Ticket/Elements/UpdateCc, %ARGS, TicketObj => $TicketObj &>
+<script type="text/javascript">
+function changeStatus() {
+ var Status_select = document.getElementById('Status');
+ var x = Status_select.options[Status_select.selectedIndex].value;
+ var text = document.getElementById('WillResolve_Date');
+ var button = document.getElementById('WillResolve_Date_date_button');
+ if (x == 'resolved' || x == 'rejected' || x == 'deleted') {
+ text.disabled = true;
+ button.style.display = 'none';
+ }
+ else {
+ text.disabled = false;
+ button.style.display = 'inline';
+ }
+}
+</script>
-<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $TicketObj &>
+<& /Ticket/Elements/EditBasics,
+ TicketObj => $TicketObj,
+ InTable => 1,
+ fields => [
+ { name => 'Status',
+ comp => '/Elements/SelectStatus',
+ args => {
+ Name => 'Status',
+ DefaultLabel => loc("[_1] (Unchanged)", loc($TicketObj->Status)),
+ Default => $ARGS{'Status'} || ($TicketObj->Status eq $DefaultStatus ? undef : $DefaultStatus),
+ TicketObj => $TicketObj,
+ QueueObj => $TicketObj->QueueObj,
+ onchange => 'changeStatus()'
+ },
+ },
+ { name => 'Resolve this Ticket on',
+ comp => '/Elements/SelectDate',
+ args => {
+ menu_prefix => 'WillResolve',
+ current => 0,
+ ShowTime => 0,
+ },
+ },
+ { name => 'Owner',
+ comp => '/Elements/SelectOwner',
+ args => {
+ Name => "Owner",
+ TicketObj => $TicketObj,
+ QueueObj => $TicketObj->QueueObj,
+ DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)),
+ Default => $ARGS{'Owner'}
+ }
+ },
+ { name => 'Worked',
+ comp => '/Elements/EditTimeValue',
+ args => {
+ Name => 'UpdateTimeWorked',
+ Default => $ARGS{UpdateTimeWorked}||'',
+ InUnits => $ARGS{'UpdateTimeWorked-TimeUnits'}||'minutes',
+ }
+ },
+ ]
+&>
-% if (exists $session{'Attachments'}) {
-<tr><td><&|/l&>Attached file</&>:</td>
-<td>
-<&|/l&>Check box to delete</&><br />
-% foreach my $attach_name (keys %{$session{'Attachments'}}) {
-<input type="checkbox" class="checkbox" name="DeleteAttach-<%$attach_name%>" value="1" /><%$attach_name%><br />
-% } # end of foreach
-</td>
-</tr>
-% } # end of if
+<script type="text/javascript">
+changeStatus();
+</script>
-<tr><td class="label"><&|/l&>Attach</&>:</td><td><input name="Attach" type="file" /><input type="submit" class="button" name="AddMoreAttach" value="<&|/l&>Add More Files</&>" /><input type="hidden" class="hidden" name="UpdateAttach" value="1" />
-</td></tr>
+% $m->callback( %ARGS, CallbackName => 'AfterWorked', Ticket => $TicketObj );
+
+<& /Ticket/Elements/EditTransactionCustomFields, %ARGS, TicketObj => $TicketObj, AsTable => 1 &>
+
+ <!--</table>-->
+ </&>
+</div>
+
+<div id="ticket-update-message">
+ <& /Ticket/Elements/ShowSimplifiedRecipients, TicketObj => $TicketObj, %ARGS &>
+
+ <&|/Widgets/TitleBox, title => loc('Message'), class => 'messagedetails' &>
+ <table width="100%" border="0">
+<& /Ticket/Elements/UpdateCc, %ARGS, TicketObj => $TicketObj &>
% if ( $gnupg_widget ) {
<tr><td>&nbsp;</td><td>
@@ -176,7 +195,13 @@ changeStatus();
% }
% $m->callback( %ARGS, CallbackName => 'AfterGnuPG' );
-<tr><td class="label" valign="top"><&|/l&>Message</&>:</td><td colspan=2>
+<tr><td class="label"><&|/l&>Subject</&>:</td><td> <input type="text" name="UpdateSubject" value="<% $ARGS{UpdateSubject} || $TicketObj->Subject || '' %>" />
+% $m->callback( %ARGS, CallbackName => 'AfterSubject' );
+</td></tr>
+
+<tr><td class="label" valign="top"><&|/l&>Message</&>:</td>
+<td class="messagebox-container action-<% $type %>">
+<& /Articles/Elements/BeforeMessageBox, %ARGS &>
% $m->callback( %ARGS, CallbackName => 'BeforeMessageBox' );
% if (exists $ARGS{UpdateContent}) {
% # preserve QuoteTransaction so we can use it to set up sane references/in/reply to
@@ -189,25 +214,32 @@ changeStatus();
% $IncludeSignature = 0 if $Action ne 'Respond' && !RT->Config->Get('MessageBoxIncludeSignatureOnComment');
<& /Elements/MessageBox, Name=>"UpdateContent", IncludeSignature => $IncludeSignature, %ARGS &>
% }
+% $m->callback( %ARGS, CallbackName => 'AfterMessageBox' );
</td></tr>
-</table>
-
+ <& /Ticket/Elements/AddAttachments, %ARGS, TicketObj => $TicketObj &>
+ </table>
+</&>
+ <& /Elements/Submit, Label => loc('Update Ticket'), Name => 'SubmitTicket', id => 'SubmitTicket' &>
-<& /Elements/Submit, Label => loc('Update Ticket'), Name => 'SubmitTicket' &>
% if ($TicketObj->CurrentUserHasRight('ShowOutgoingEmail')) {
-<&|/Widgets/TitleBox, title => loc('Scrips and Recipients') &>
-<& /Ticket/Elements/PreviewScrips, TicketObj => $TicketObj, %ARGS &>
-</&>
+ <&|/Widgets/TitleBox, title => loc('Scrips and Recipients'), id => 'previewscrips', rolledup => RT->Config->Get('SimplifiedRecipients', $session{'CurrentUser'}) &>
+ <& /Ticket/Elements/PreviewScrips, TicketObj => $TicketObj, %ARGS &>
+ </&>
+% }
+</div>
+% if (my $recips = $m->notes("DryRun-Recipients-".$TicketObj->Id)) {
+<input type="hidden" name="TxnRecipients" value="<% join ",",sort keys %{$recips} %>" />
% }
+
</form>
+<hr class="clear" />
<%INIT>
my $CanRespond = 0;
my $CanComment = 0;
my $checks_failure = 0;
-my $title;
my $TicketObj = LoadTicket($id);
@@ -219,17 +251,7 @@ unless($DefaultStatus){
$DefaultStatus=($ARGS{'Status'} ||$TicketObj->Status());
}
-unless (RT->Config->Get('SuppressAutoOpenOnUpdate', $session{'CurrentUser'})) {
- if ($DefaultStatus eq 'new') {
- $DefaultStatus = 'open';
- }
-}
-
-if ($DefaultStatus eq 'resolved') {
- $title = loc("Resolve ticket #[_1] ([_2])", $TicketObj->id, $TicketObj->Subject);
-} else {
- $title = loc("Update ticket #[_1] ([_2])", $TicketObj->id, $TicketObj->Subject);
-}
+my $title = loc("Update ticket #[_1] ([_2])", $TicketObj->id, $TicketObj->Subject||'');
# Things needed in the template - we'll do the processing here, just
# for the convenience:
@@ -243,6 +265,10 @@ if ($Action ne 'Respond') {
$ResponseDefault = qq[ selected="selected"];
}
+my $type = $ARGS{'UpdateType'} ? $ARGS{'UpdateType'} :
+ lc $ARGS{'Action'} eq 'respond' ? 'response' :
+ lc $ARGS{'Action'} eq 'comment' ? 'private' :
+ 'none' ;
$CanRespond = 1 if ( $TicketObj->CurrentUserHasRight('ReplyToTicket') or
@@ -252,17 +278,16 @@ $CanComment = 1 if ( $TicketObj->CurrentUserHasRight('CommentOnTicket') or
$TicketObj->CurrentUserHasRight('ModifyTicket') );
-# {{{ deal with deleting uploaded attachments
+# deal with deleting uploaded attachments
foreach my $key (keys %ARGS) {
if ($key =~ m/^DeleteAttach-(.+)$/) {
delete $session{'Attachments'}{$1};
}
$session{'Attachments'} = { %{$session{'Attachments'} || {}} };
}
-# }}}
-# {{{ store the uploaded attachment in session
-if ($ARGS{'Attach'}) { # attachment?
+# store the uploaded attachment in session
+if ( defined $ARGS{'Attach'} && length $ARGS{'Attach'} ) { # attachment?
my $attachment = MakeMIMEEntity(
AttachmentFieldName => 'Attach'
);
@@ -273,13 +298,11 @@ if ($ARGS{'Attach'}) { # attachment?
$file_path => $attachment,
};
}
-# }}}
# delete temporary storage entry to make WebUI clean
unless (keys %{$session{'Attachments'}} and $ARGS{'UpdateAttach'}) {
delete $session{'Attachments'};
}
-# }}}
my $gnupg_widget = $m->comp('/Elements/GnuPG/SignEncryptWidget:new', Arguments => \%ARGS );
$m->comp( '/Elements/GnuPG/SignEncryptWidget:Process',
@@ -288,6 +311,14 @@ $m->comp( '/Elements/GnuPG/SignEncryptWidget:Process',
);
if ( $ARGS{'SubmitTicket'} ) {
+
+ my %checked = map {$_ => 1} grep {defined}
+ (ref $ARGS{'TxnSendMailTo'} eq "ARRAY" ? @{$ARGS{'TxnSendMailTo'}}
+ : defined $ARGS{'TxnSendMailTo'} ? ($ARGS{'TxnSendMailTo'}) : ());
+
+ my @squelchlist = grep {not $checked{$_}} split /,/, ($ARGS{'TxnRecipients'}||'');
+ $ARGS{'SquelchMailTo'} = \@squelchlist if @squelchlist;
+
my $CFs = $TicketObj->TransactionCustomFields;
my $ValidCFs = $m->comp(
'/Elements/ValidateCustomFields',
diff --git a/rt/share/html/Ticket/autohandler b/rt/share/html/Ticket/autohandler
new file mode 100644
index 000000000..47f87766f
--- /dev/null
+++ b/rt/share/html/Ticket/autohandler
@@ -0,0 +1,20 @@
+<%init>
+# Redirect to the approvals view if we're trying to get an approvals ticket
+# Exceptions:
+# - Display handles redirecting for approvals itself after mobile redirect/processing
+# - Create doesn't have an existing ticket
+# - Forward and ShowEmailRecord are used by the approvals view
+# - anything not ending in a .html
+my $whitelist = qr{
+ (?:/(?:Display|Create|Forward|ShowEmailRecord)\.html
+ |(?<!\.html))
+ $
+}ix;
+
+MaybeRedirectToApproval(
+ Whitelist => $whitelist,
+ ARGSRef => \%ARGS,
+);
+
+$m->call_next;
+</%init>
diff --git a/rt/share/html/Tools/MyDay.html b/rt/share/html/Tools/MyDay.html
index 96d109096..cf7cbf9cd 100644
--- a/rt/share/html/Tools/MyDay.html
+++ b/rt/share/html/Tools/MyDay.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,11 +46,11 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => $title &>
-<& /Tools/Elements/Tabs, current_tab => "Tools/MyDay.html", Title => $title &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
-<h2><&|/l, $session{'CurrentUser'}->Name &>New and open tickets for [_1]</&></h2>
+<h2><&|/l, $session{'CurrentUser'}->Name &>Active tickets for [_1]</&></h2>
<form method="post" action="MyDay.html">
<table width="100%" cellpadding="0" cellspacing="0" class="myday">
% while ( my $Ticket = $Tickets->Next()) {
@@ -64,7 +64,7 @@ href="<%RT->Config->Get('WebPath')%>/Ticket/Display.html?id=<%$Ticket->Id%>"><%$
<td rowspan="2"><span class="label"><&|/l&>Comments</&>:<br /></span><textarea name="UpdateContent-<%$Ticket->Id%>" rows="5"
cols="60"></textarea></td></tr>
<tr <%$class|n%>>
-<td><span class="label"><&|/l&>Status</&>:</span> <& /Elements/SelectStatus, Name=> 'UpdateStatus-'.$Ticket->Id,
+<td><span class="label"><&|/l&>Status</&>:</span> <& /Elements/SelectStatus, Name=> 'UpdateStatus-'.$Ticket->Id, TicketObj => $Ticket,
DefaultLabel => loc("[_1] (Unchanged)",loc($Ticket->Status())) &></td>
</tr>
@@ -106,8 +106,7 @@ foreach my $arg ( keys %ARGS ) {
my $Tickets = RT::Tickets->new($session{'CurrentUser'});
$Tickets->LimitOwner(VALUE => $session{'CurrentUser'}->Id);
-$Tickets->LimitStatus( VALUE => 'open' );
-$Tickets->LimitStatus ( VALUE => 'new');
+$Tickets->LimitStatus( VALUE => $_ ) foreach RT::Queue->ActiveStatusArray;
$Tickets->OrderBy ( FIELD => 'Priority', ORDER => 'DESC');
diff --git a/rt/share/html/Tools/MyReminders.html b/rt/share/html/Tools/MyReminders.html
new file mode 100644
index 000000000..ff922791e
--- /dev/null
+++ b/rt/share/html/Tools/MyReminders.html
@@ -0,0 +1,55 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<& /Elements/Header, Title => loc('My reminders') &>
+<& /Elements/Tabs &>
+
+<& /Elements/ShowReminders, OnlyOverdue => 0 &>
+
+<%INIT>
+return unless RT->Config->Get('EnableReminders');
+</%INIT>
diff --git a/rt/share/html/Tools/Offline.html b/rt/share/html/Tools/Offline.html
index 70aa9a518..b7cae7c70 100644
--- a/rt/share/html/Tools/Offline.html
+++ b/rt/share/html/Tools/Offline.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("Offline upload") &>
-<& Elements/Tabs,
- current_tab => "Tools/Offline.html",
- Title => loc("Offline edits") &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
diff --git a/rt/share/html/Tools/Reports/CreatedByDates.html b/rt/share/html/Tools/Reports/CreatedByDates.html
deleted file mode 100644
index 588da0627..000000000
--- a/rt/share/html/Tools/Reports/CreatedByDates.html
+++ /dev/null
@@ -1,94 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%args>
-$Queue => undef
-$CreatedBefore => undef
-$CreatedAfter => undef
-</%args>
-<%init>
-my $title = loc("Created tickets in period, grouped by status");
-my $q = RT::Queue->new($session{'CurrentUser'});
-my $before = RT::Date->new($session{'CurrentUser'});
-my $after = RT::Date->new($session{'CurrentUser'});
-my $query = 'Status != "deleted" ';
-
-
-if ($CreatedAfter) {
- $after->Set(Format => 'unknown', Value => $CreatedAfter);
- $CreatedAfter = $after->AsString;
-}
-if ($CreatedBefore) {
- $before->Set(Format => 'unknown', Value => $CreatedBefore);
- $CreatedBefore = $before->AsString;
-}
-
-
-$q->LoadByCols(Name => $Queue);
-</%init>
-<& /Elements/Header, Title => $title &>
-<& /Tools/Reports/Elements/Tabs, current_tab => 'Tools/Reports/CreatedByDates.html', Title => $title &>
-<form method="post" action="CreatedByDates.html">
-% if ($Queue|| $CreatedBefore ||$CreatedAfter) {
-% # if we have a queue, do the search
-% if ($Queue) { $query .= " AND Queue = '$Queue'"}
-% if ($CreatedBefore) { $query .= " AND Created < '".$before->ISO(Timezone => 'user') ."'"; }
-% if ($CreatedAfter) { $query .= " AND Created > '".$after->ISO(Timezone => 'user')."'"}
-% my $groupby = 'Status';
-<& /Search/Elements/Chart, Query => $query, PrimaryGroupBy => $groupby &>
-% }
-
-<hr />
-
-<br /><&|/l&>Queue</&>: <& /Elements/SelectQueue, Name => 'Queue', NamedValues => 1, Default => $q->id &>
-<br /><&|/l&>Tickets created after</&>:
-<& /Elements/SelectDate, Name => 'CreatedAfter', Default => ($CreatedAfter) ? $after->ISO(Timezone => 'user') : ''&>
-<br /><&|/l&>Tickets created before</&>:
-<& /Elements/SelectDate, Name => 'CreatedBefore', Default => ($CreatedBefore) ? $before->ISO(Timezone => 'user') : ''&>
-
-<& /Elements/Submit&>
-</form>
diff --git a/rt/share/html/Tools/Reports/ResolvedByDates.html b/rt/share/html/Tools/Reports/ResolvedByDates.html
deleted file mode 100644
index c23e2384c..000000000
--- a/rt/share/html/Tools/Reports/ResolvedByDates.html
+++ /dev/null
@@ -1,95 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%args>
-$Queue => undef
-$ResolvedBefore => undef
-$ResolvedAfter => undef
-</%args>
-<%init>
-my $title = loc("Resolved tickets in period, grouped by owner");
-my $q = RT::Queue->new($session{'CurrentUser'});
-my $before = RT::Date->new($session{'CurrentUser'});
-my $after = RT::Date->new($session{'CurrentUser'});
-my $query = '';
-
-
-if ($ResolvedAfter) {
- $after->Set(Format => 'unknown', Value => $ResolvedAfter);
- $ResolvedAfter = $after->AsString;
-}
-if ($ResolvedBefore) {
- $before->Set(Format => 'unknown', Value => $ResolvedBefore);
- $ResolvedBefore = $before->AsString;
-}
-
-
-$q->LoadByCols(Name => $Queue);
-</%init>
-<& /Elements/Header, Title => $title &>
-<& /Tools/Reports/Elements/Tabs, current_tab => 'Tools/Reports/ResolvedByDates.html', Title => $title &>
-<form method="post" action="ResolvedByDates.html">
-% if ($Queue|| $ResolvedBefore ||$ResolvedAfter) {
-% # if we have a queue, do the search
-% $query = "Status = 'resolved'";
-% if ($Queue) { $query .= " AND Queue = '$Queue'"}
-% if ($ResolvedBefore) { $query .= " AND Resolved < '".$before->ISO(Timezone => 'user')."'"; }
-% if ($ResolvedAfter) { $query .= " AND Resolved > '".$after->ISO(Timezone => 'user')."'"}
-% my $groupby = 'Owner.Name';
-<& /Search/Elements/Chart, Query => $query, PrimaryGroupBy => $groupby &>
-% }
-
-<hr />
-
-<br /><&|/l&>Queue</&>: <& /Elements/SelectQueue, Name => 'Queue', NamedValues => 1, Default => $q->id &>
-<br /><&|/l&>Tickets resolved after</&>:
-<& /Elements/SelectDate, Name => 'ResolvedAfter', Default => ($ResolvedAfter) ? $after->ISO(Timezone => 'user') : ''&>
-<br /><&|/l&>Tickets resolved before</&>:
-<& /Elements/SelectDate, Name => 'ResolvedBefore', Default => ($ResolvedBefore) ? $before->ISO(Timezone => 'user') : ''&>
-
-<& /Elements/Submit&>
-</form>
diff --git a/rt/share/html/Tools/Reports/index.html b/rt/share/html/Tools/Reports/index.html
deleted file mode 100644
index fa6595193..000000000
--- a/rt/share/html/Tools/Reports/index.html
+++ /dev/null
@@ -1,76 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => loc('Reports') &>
-<& /Tools/Reports/Elements/Tabs, Title => loc('Reports') &>
-<& /Elements/ListMenu, items => $tabs &>
-
-% $m->callback;
-
-<%init>
-
-my $tabs = {
- A => {
- title => loc('Resolved by owner'),
- path => '/Tools/Reports/ResolvedByOwner.html',
- description => loc('Examine tickets resolved in a queue, grouped by owner'),
- },
- B => {
- title => loc('Resolved in date range'),
- path => '/Tools/Reports/ResolvedByDates.html',
- description => loc('Examine tickets resolved in a queue between two dates'),
- },
- C => {
- title => loc('Created in a date range'),
- path => '/Tools/Reports/CreatedByDates.html',
- description => loc('Examine tickets created in a queue between two dates'),
- },
-};
-
-$m->callback( CallbackName => 'ListReports', %ARGS, tabs => $tabs );
-
-</%init>
diff --git a/rt/share/html/Tools/index.html b/rt/share/html/Tools/index.html
index f507a075f..78e145264 100644
--- a/rt/share/html/Tools/index.html
+++ b/rt/share/html/Tools/index.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,36 +46,5 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title => loc("Tools") &>
-<& Elements/Tabs,
- current_tab => "Tools/index.html",
- Title => loc("Tools") &>
-<& /Elements/ListMenu, items => $tabs &>
-
-<%init>
-
-my $tabs = {
- A => {
- title => loc('Dashboards'),
- path => '/Dashboards/index.html',
- description => loc('Named, shared collection of portlets'),
- },
- B => {
- title => loc('Offline'),
- path => '/Tools/Offline.html',
- description => loc('Create tickets offline'),
- },
- C => {
- title => loc('Reports'),
- path => '/Tools/Reports/index.html',
- description => loc('Various RT reports'),
- },
- D => {
- title => loc('My Day'),
- path => '/Tools/MyDay.html',
- description => loc('Easy updating of your open tickets'),
- },
-};
-
-$m->callback( %ARGS, tabs => $tabs );
-
-</%init>
+<& /Elements/Tabs &>
+<& /Elements/ListMenu, menu => Menu()->child('tools') &>
diff --git a/rt/share/html/User/Delegation.html b/rt/share/html/User/Delegation.html
deleted file mode 100755
index bae3393e1..000000000
--- a/rt/share/html/User/Delegation.html
+++ /dev/null
@@ -1,107 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => loc("Delegate rights") &>
-<& /User/Elements/Tabs,
- current_tab => 'User/Delegation.html',
- Title => loc("Delegate rights") &>
-
-<& /Elements/ListActions, actions => \@results &>
-
-<form method="post">
-<& Elements/DelegateRights, personalgroups => $personalgroups, objects => $objects, ObjectType => 'RT::System' &>
-<& Elements/DelegateRights, personalgroups => $personalgroups, objects => $objects, ObjectType => 'RT::Queue' &>
-<& Elements/DelegateRights, personalgroups => $personalgroups, objects => $objects, ObjectType => 'RT::Group' &>
-
-<& /Elements/Submit, Label => loc('Modify Rights') &>
-</form>
-<%INIT>
-
-my (@results, $arg);
-foreach $arg (keys %ARGS) {
- next unless ($arg =~ /^Delegate-Existing-ACE-(\d+)-to-(\d+)-as-(\d+)$/);
- my $parent = $1;
- my $principal = $2;
- my $delegation = $3;
- unless ($ARGS{"Delegate-ACE-$1-to-$2"}) {
- my $ace_to_del = RT::ACE->new($session{'CurrentUser'});
- $ace_to_del->Load($delegation);
- my ($delval, $delmsg) = $ace_to_del->Delete();
- push (@results, $delmsg);
- }
-}
-
-foreach $arg (keys %ARGS) {
- next unless ($arg =~ /^Delegate-ACE-(\d+)-to-(\d+)$/);
- my $parent = $1;
- my $principal = $2;
- # if we already delegate it, we just don't care
- next if (grep /^Delegate-Existing-ACE-$parent-to-$principal-/, keys %ARGS);
- my $ace = RT::ACE->new($session{'CurrentUser'});
- $ace->Load($1);
- unless ($ace->Id) {
- push (@results, loc('Right not found'));
- next;
- }
- my ($delid, $delmsg) = $ace->Delegate(PrincipalId => $principal);
- push (@results, $delmsg);
-}
-
-my $personalgroups = RT::Groups->new($session{'CurrentUser'});
-$personalgroups->LimitToPersonalGroupsFor($session{'CurrentUser'}->PrincipalId);
-
-my $objects;
-my $acl = RT::ACL->new ($session{'CurrentUser'});
-$acl->ExcludeDelegatedRights();
-$acl->LimitToPrincipal(Id => $session{'CurrentUser'}->PrincipalId,
- IncludeGroupMembership => 1
- );
-
-while(my $right = $acl->Next) {
- push @{$objects->{$right->ObjectType}{$right->ObjectId}},$right;
-}
-</%INIT>
diff --git a/rt/share/html/User/Groups/Members.html b/rt/share/html/User/Groups/Members.html
deleted file mode 100755
index c128e3b2d..000000000
--- a/rt/share/html/User/Groups/Members.html
+++ /dev/null
@@ -1,160 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => $title &>
-<& /User/Elements/GroupTabs,
- GroupObj => $Group,
- current_subtab => "User/Groups/Members.html?id=".$Group->id,
- Title => $title &>
-<& /Elements/ListActions, actions => \@results &>
-
-
-
-<form action="<%RT->Config->Get('WebPath')%>/User/Groups/Members.html" method="post">
-<input type="hidden" class="hidden" name="id" value="<%$Group->Id%>" />
-<table width="100%">
-<tr>
-<td>
-<&|/l&>Add members</&>
-</td>
-<td>
-<&|/l&>Current members</&>
-</td>
-</tr>
-
-<tr>
-<td valign="top">
-<& /Admin/Elements/SelectNewGroupMembers, Name => "AddMembers", Group => $Group &>
-</td>
-<td valign="top">
-
-% if ($Group->MembersObj->Count == 0 ) {
-<em><&|/l&>(No members)</&></em>
-% } else {
-<em><&|/l&>(Check box to delete)</&></em>
-<br />
-<br />
-<&|/l&>Users</&>
-% my $UserMembers = $Group->MembersObj;
-% $UserMembers->LimitToUsers();
-<ul>
-% while (my $member = $UserMembers->Next()) {
-<li><input type="checkbox" class="checkbox" name="DeleteMember-<%$member->MemberId%>" value="1" />
-<& /Elements/ShowUser, User => $member->MemberObj->Object &>
-% }
-</ul>
-<&|/l&>Groups</&>
-<ul>
-% my $GroupMembers = $Group->MembersObj;
-% $GroupMembers->LimitToGroups();
-% while (my $member = $GroupMembers->Next()) {
-<li><input type="checkbox" class="checkbox" name="DeleteMember-<%$member->MemberId%>" value="1" />
-<%$member->MemberObj->Object->Name%>
-% }
-</ul>
-% }
-</td>
-</tr>
-</table>
-<& /Elements/Submit, Label => loc('Modify Members') &>
-</form>
-
-
-<%INIT>
-
-my $Group = new RT::Group($session{'CurrentUser'});
-$Group->Load($id) ;
-
-unless ($Group->id) {
- Abort(loc('Could not load group'));
-}
-
-my (@results);
-
-foreach my $key (keys %ARGS) {
-
-if ($key =~ /^DeleteMember-(\d+)$/) {
- my $mem_id = $1;
- my ($val,$msg) = $Group->DeleteMember($mem_id);
- push (@results, $msg);
-}
-}
-
-# Make sure AddMembers is always an array
-my @AddMembersUsers = (ref $AddMembersUsers eq 'ARRAY') ? @{$AddMembersUsers} : ($AddMembersUsers);
-my @AddMembersGroups = (ref $AddMembersGroups eq 'ARRAY') ? @{$AddMembersGroups} : ($AddMembersGroups);
-
-foreach my $member (@AddMembersUsers, @AddMembersGroups) {
- next unless ($member);
-
- my $principal;
-
- if ($member =~ /^Group-(\d+)$/) {
- $principal = RT::Group->new($session{'CurrentUser'});
- $principal->Load($1);
- } elsif ($member =~ /^User-(\d+)$/) {
- $principal = RT::User->new($session{'CurrentUser'});
- $principal->Load($1);
- } else {
- next;
- }
-
-
- my ($val, $msg) = $Group->AddMember($principal->PrincipalId);
- push (@results, $msg);
-}
-
-
-my $title = loc('Editing membership for personal group [_1]', $Group->Name);
-
-</%INIT>
-
-<%ARGS>
-$AddMembersUsers => undef
-$AddMembersGroups => undef
-$id => undef
-</%ARGS>
diff --git a/rt/share/html/User/Groups/Modify.html b/rt/share/html/User/Groups/Modify.html
deleted file mode 100755
index a33dcf923..000000000
--- a/rt/share/html/User/Groups/Modify.html
+++ /dev/null
@@ -1,157 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
-%# <sales@bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<& /Elements/Header, Title => $title &>
-
-<& /User/Elements/GroupTabs,
- GroupObj => $Group,
- current_subtab => $current_tab,
- Title => $title &>
-
-<& /Elements/ListActions, actions => \@results &>
-
-
-<form action="<%RT->Config->Get('WebPath')%>/User/Groups/Modify.html" method="post">
-
-%unless ($Group->Id) {
-<input type="hidden" class="hidden" name="id" value="new" />
-% } else {
-<input type="hidden" class="hidden" name="id" value="<%$Group->Id%>" />
-% }
-<table>
-<tr><td align="right">
-<&|/l&>Name</&>:
-</td>
-<td><input name="Name" value="<%$Group->Name%>" /></td>
-</tr><tr>
-<td align="right">
-<&|/l&>Description</&>:</td><td colspan="3"><input name="Description" value="<%$Group->Description%>" size="60" /></td>
-</tr><tr>
-<td colspan="2">
-<input type="hidden" class="hidden" name="SetEnabled" value="1" />
-<input type="checkbox" class="checkbox" name="Enabled" value="1" <%$EnabledChecked%> /> <&|/l&>Enabled (Unchecking this box disables this group)</&><br />
-</tr>
-</table>
-<& /Elements/Submit, Label => loc('Save Changes'), Reset => 1 &>
-</form>
-<%INIT>
-
-my $current_tab;
-my ($title, @results, $Disabled, $EnabledChecked);
-
-my $Group = RT::Group->new($session{'CurrentUser'});
-
-if ($Create) {
- $current_tab = 'User/Groups/Modify.html?Create=1';
- $title = loc("Create a new personal group");
-}
-else {
- if ( defined ($id) && $id eq 'new' ) {
-
- my ( $id, $msg ) = $Group->CreatePersonalGroup(
- Name => "$Name",
- PrincipalId => $session{'CurrentUser'}->PrincipalId
- );
- unless ($id) {
- Abort( loc("Could not create group") );
- }
- $id = $Group->Id;
- }
- else {
- $Group->Load($id) || Abort( loc('Could not load group') );
- }
-
- if ($id) {
- $title = loc( "Modify the group [_1]", $Group->Name );
-
- }
-
- # If the create failed
- else {
- $title = loc("Create a new personal group");
- $Create = 1;
- }
-
- $current_tab = 'User/Groups/Modify.html?id=' . $Group->Id;
-}
-
-if ($id) {
-
- my @fields = qw(Description Name );
- my @fieldresults = UpdateRecordObject ( AttributesRef => \@fields,
- Object => $Group,
- ARGSRef => \%ARGS );
- push (@results,@fieldresults);
-}
-
-#we're asking about enabled on the web page but really care about disabled.
-if ($Enabled == 1) {
- $Disabled = 0;
-}
-else {
- $Disabled = 1;
-}
-if ( ($SetEnabled) and ( $Disabled != $Group->Disabled) ) {
- my ($code, $msg) = $Group->SetDisabled($Disabled);
- push @results, loc('Enabled status [_1]', loc_fuzzy($msg));
-}
-
-unless ($Group->Disabled()) {
- $EnabledChecked = 'checked="checked"';
-}
-
-</%INIT>
-
-
-<%ARGS>
-$Create => undef
-$Name => undef
-$Description => undef
-$SetEnabled => undef
-$Enabled => undef
-$id => undef
-</%ARGS>
diff --git a/rt/share/html/User/Prefs.html b/rt/share/html/User/Prefs.html
index c62d8737c..c7e0720e1 100755
--- a/rt/share/html/User/Prefs.html
+++ b/rt/share/html/User/Prefs.html
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title=>loc("Ticketing Preferences") &>
-<& /User/Elements/Tabs,
- current_tab => 'User/Prefs.html',
- Title => loc("Preferences") &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
@@ -179,7 +177,7 @@
<tr><td colspan="2" valign="top" class="boxcontainer">
<&| /Widgets/TitleBox, title => loc('Secret authentication token'), id => "user-prefs-feeds" &>
-<&|/l&><p>All iCal feeds embed a secret token which authorizes you. If the URL one of your iCal feeds got exposed to the outside world, you can get a new secret, <b>breaking all existing iCal feeds</b> below.</p></&>
+<p><&|/l&>All iCal feeds embed a secret token which authorizes you. If the URL one of your iCal feeds got exposed to the outside world, you can get a new secret, <b>breaking all existing iCal feeds</b> below.</&></p>
<& /Elements/Submit, Label => loc('Reset secret authentication token'), Name => "ResetAuthToken" &>
</&>
@@ -211,54 +209,55 @@ $id = $UserObj->id;
my @results;
-my @fields = qw(
- Name Comments Signature EmailAddress FreeformContactInfo
- Organization RealName NickName Lang EmailEncoding WebEncoding
- ExternalContactInfoId ContactInfoSystem Gecos ExternalAuthId
- AuthSystem HomePhone WorkPhone MobilePhone PagerPhone Address1
- Address2 City State Zip Country Lang Timezone
-);
-
-$m->callback(
- CallbackName => 'UpdateLogic',
- fields => \@fields,
- results => \@results,
- UserObj => $UserObj,
- ARGSRef => \%ARGS,
-);
-
-push @results, UpdateRecordObject (
- AttributesRef => \@fields,
- Object => $UserObj,
- ARGSRef => \%ARGS,
-);
-
-push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj );
-
-if ( $Lang ) {
- $session{'CurrentUser'}->LanguageHandle($Lang);
- $session{'CurrentUser'} = $session{'CurrentUser'}; # force writeback
+if ( $ARGS{'ResetAuthToken'} ) {
+ my ($status, $msg) = $UserObj->GenerateAuthToken;
+ push @results, $msg;
}
+else {
+ my @fields = qw(
+ Name Comments Signature EmailAddress FreeformContactInfo
+ Organization RealName NickName Lang EmailEncoding WebEncoding
+ ExternalContactInfoId ContactInfoSystem Gecos ExternalAuthId
+ AuthSystem HomePhone WorkPhone MobilePhone PagerPhone Address1
+ Address2 City State Zip Country Timezone
+ );
-# Deal with special fields: Privileged, Enabled, and Password
-if ( $SetPrivileged and $Privileged != $UserObj->Privileged ) {
- my ($code, $msg) = $UserObj->SetPrivileged( $Privileged );
- push @results, loc('Privileged status: [_1]', loc_fuzzy($msg));
-}
+ $m->callback(
+ CallbackName => 'UpdateLogic',
+ fields => \@fields,
+ results => \@results,
+ UserObj => $UserObj,
+ ARGSRef => \%ARGS,
+ );
-my %password_cond = $UserObj->CurrentUserRequireToSetPassword;
-if (defined $Pass1 && length $Pass1 ) {
- my ($status, $msg) = $UserObj->SafeSetPassword(
- Current => $CurrentPass,
- New => $Pass1,
- Confirmation => $Pass2,
+ push @results, UpdateRecordObject (
+ AttributesRef => \@fields,
+ Object => $UserObj,
+ ARGSRef => \%ARGS,
);
- push @results, loc("Password: [_1]", $msg);
-}
-if ( $ARGS{'ResetAuthToken'} ) {
- my ($status, $msg) = $UserObj->GenerateAuthToken;
- push @results, $msg;
+ push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj );
+
+ if ( $Lang ) {
+ $session{'CurrentUser'}->LanguageHandle($Lang);
+ $session{'CurrentUser'} = $session{'CurrentUser'}; # force writeback
+ }
+
+ # Deal with special fields: Privileged, Enabled, and Password
+ if ( $SetPrivileged and $Privileged != $UserObj->Privileged ) {
+ my ($code, $msg) = $UserObj->SetPrivileged( $Privileged );
+ push @results, loc('Privileged status: [_1]', loc_fuzzy($msg));
+ }
+
+ my %password_cond = $UserObj->CurrentUserRequireToSetPassword;
+ if (defined $Pass1 && length $Pass1 ) {
+ my ($status, $msg) = $UserObj->SafeSetPassword(
+ Current => $CurrentPass,
+ New => $Pass1,
+ Confirmation => $Pass2,
+ );
+ push @results, loc("Password: [_1]", $msg);
+ }
}
</%INIT>
diff --git a/rt/share/html/Widgets/BulkEdit b/rt/share/html/Widgets/BulkEdit
index 47388e280..de6126ac2 100644
--- a/rt/share/html/Widgets/BulkEdit
+++ b/rt/share/html/Widgets/BulkEdit
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Widgets/BulkProcess b/rt/share/html/Widgets/BulkProcess
index e7881e60b..2a2689086 100644
--- a/rt/share/html/Widgets/BulkProcess
+++ b/rt/share/html/Widgets/BulkProcess
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Widgets/ComboBox b/rt/share/html/Widgets/ComboBox
index 6d4e9f75f..69ac0793b 100644
--- a/rt/share/html/Widgets/ComboBox
+++ b/rt/share/html/Widgets/ComboBox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -56,7 +56,7 @@ my $z_index = 9999;
<div id="<% $Name %>_Container" class="combobox <%$Class%>" style="z-index: <%$z_index--%>">
<input name="<% $Name %>" id="<% $Name %>" class="combo-text" value="<% $Default || '' %>" type="text" <% $Size ? "size='$Size'" : '' |n %> autocomplete="off" />
-<br style="display: none" /><span id="<% $Name %>_Button" class="combo-button">&#9660;</span><select name="List-<% $Name %>" id="<% $Name %>_List" class="combo-list" onchange="ComboBox_SimpleAttach(this, this.form['<% $Name %>']); " size="<% $Rows %>">
+<br style="display: none" /><span id="<% $Name %>_Button" class="combo-button">&#9660;</span><select name="List-<% $Name %>" id="<% $Name %>_List" class="combo-list" onchange="ComboBox_SimpleAttach(this, this.form[<% $Name |n,j%>]); " size="<% $Rows %>">
<option style="display: none" value="">-</option>
% foreach my $value (@Values) {
<option value="<%$value%>"><% $value%></option>
@@ -64,7 +64,7 @@ my $z_index = 9999;
</select>
</div>
<script language="javascript"><!--
-ComboBox_InitWith('<% $Name %>');
+ComboBox_InitWith(<% $Name |n,j %>);
//--></script>
</nobr>
<%ARGS>
diff --git a/rt/share/html/Widgets/FinalizeWidgetArguments b/rt/share/html/Widgets/FinalizeWidgetArguments
index 00fa82ebe..39cea5cfc 100644
--- a/rt/share/html/Widgets/FinalizeWidgetArguments
+++ b/rt/share/html/Widgets/FinalizeWidgetArguments
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,9 +52,10 @@
$args{'Description'} = loc( $args{'Description'} ) if $args{'Description'};
$args{'Hints'} = loc( $args{'Hints'} ) if $args{'Hints'};
if ( $args{'ValuesLabel'} ) {
- while (my ($k, $v) = each %{ $args{'ValuesLabel'} } ) {
- $args{'ValuesLabel'}->{$k} = loc( $args{'ValuesLabel'}->{$k} );
- }
+ my %labels;
+ $labels{$_} = loc( $args{'ValuesLabel'}->{$_} )
+ for keys %{$args{'ValuesLabel'}};
+ $args{'ValuesLabel'} = \%labels;
}
return \%args;
</%init>
diff --git a/rt/share/html/Widgets/Form/Boolean b/rt/share/html/Widgets/Form/Boolean
index 1d6c8821d..62890df0a 100644
--- a/rt/share/html/Widgets/Form/Boolean
+++ b/rt/share/html/Widgets/Form/Boolean
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<%DOC>
-see docs/using_forms_widgets.pod
+see docs/extending/using_forms_widgets.pod
</%DOC>
<div id="form-box-<% lc $Name %>" class="widget">
<span class="label description"><% $Description %></span>
diff --git a/rt/share/html/Widgets/Form/Integer b/rt/share/html/Widgets/Form/Integer
index ac349e866..b8d8f90bf 100644
--- a/rt/share/html/Widgets/Form/Integer
+++ b/rt/share/html/Widgets/Form/Integer
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<%DOC>
-see docs/using_forms_widgets.pod
+see docs/extending/using_forms_widgets.pod
</%DOC>
<div id="form-box-<% lc $Name %>" class="widget">
<span class="label description"><% $Description %></span>
@@ -57,6 +57,8 @@ see docs/using_forms_widgets.pod
<span class="hints"><% $Hints %></span>
</div>
<%INIT>
+$_ = '' foreach grep !defined, $CurrentValue, $DefaultValue;
+$DefaultLabel ||= loc( 'Default: [_1]', $DefaultValue );
</%INIT>
<%ARGS>
$Name
@@ -68,15 +70,18 @@ $CurrentValue => '',
$Default => 0,
$DefaultValue => 0,
-$DefaultLabel => loc( 'Default: [_1]', $DefaultValue ),
+$DefaultLabel => undef
</%ARGS>
<%METHOD InputOnly>
-<input type="text" name="<% $Name %>" value="<% $CurrentValue || '' %>" />\
+<input type="text" name="<% $Name %>" value="<% $CurrentValue %>" />\
<%ARGS>
$Name
$CurrentValue => '',
</%ARGS>
+<%INIT>
+$CurrentValue = '' unless defined $CurrentValue;
+</%INIT>
</%METHOD>
<%METHOD Process>
diff --git a/rt/share/html/Widgets/Form/Select b/rt/share/html/Widgets/Form/Select
index 626ee2bd1..438f9ccd7 100644
--- a/rt/share/html/Widgets/Form/Select
+++ b/rt/share/html/Widgets/Form/Select
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,17 +46,19 @@
%#
%# END BPS TAGGED BLOCK }}}
<%DOC>
-see docs/using_forms_widgets.pod
+see docs/extending/using_forms_widgets.pod
</%DOC>
<div id="form-box-<% lc $Name %>" class="widget">
% if ( $Description ) {
<span class="label"><% $Description %></span>
% }
<span class="value"><& SELF:InputOnly, %ARGS &></span>
+<span class="hints"><% $Hints %></span>
</div>
<%ARGS>
$Name
$Description => undef,
+$Hints => ''
</%ARGS>
<%METHOD InputOnly>
diff --git a/rt/share/html/Widgets/Form/String b/rt/share/html/Widgets/Form/String
index 4a7c60fce..a5b3c6c22 100644
--- a/rt/share/html/Widgets/Form/String
+++ b/rt/share/html/Widgets/Form/String
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<%DOC>
-see docs/using_forms_widgets.pod
+see docs/extending/using_forms_widgets.pod
</%DOC>
<div id="form-box-<% lc $Name %>" class="widget">
<span class="description label"><% $Description %></span>
diff --git a/rt/share/html/Widgets/SavedSearch b/rt/share/html/Widgets/SavedSearch
index fe75a75b3..5d3a828e3 100644
--- a/rt/share/html/Widgets/SavedSearch
+++ b/rt/share/html/Widgets/SavedSearch
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -55,10 +55,6 @@ return \%ARGS;
<%init>
my @actions;
-my @Objects = RT::SavedSearches->new( $session{CurrentUser} )->_PrivacyObjects;
-push @Objects, RT::System->new($session{'CurrentUser'})
- if $session{'CurrentUser'}->HasRight( Object=> $RT::System,
- Right => 'SuperUser' );
$self->{SearchId} ||= $args->{'SavedChartSearchId'} || 'new';
my $SearchParams = { map { $_ => $args->{$_} } @{$self->{SearchFields}} };
@@ -90,6 +86,10 @@ if ( my ( $container_object, $search_id ) = _parse_saved_search(
# look for the current one in the available saved searches
if ($self->{SearchId} eq 'new') {
+ my @Objects = RT::SavedSearch->new( $session{CurrentUser} )->ObjectsForLoading;
+ push @Objects, RT::System->new($session{'CurrentUser'})
+ if $session{'CurrentUser'}->HasRight( Object=> $RT::System,
+ Right => 'SuperUser' );
for my $obj (@Objects) {
for ( $m->comp( "/Search/Elements/SearchesForObject", Object => $obj ) ) {
my ( $desc, $search ) = @$_;
diff --git a/rt/share/html/Widgets/SelectionBox b/rt/share/html/Widgets/SelectionBox
index b4e275638..979adc927 100644
--- a/rt/share/html/Widgets/SelectionBox
+++ b/rt/share/html/Widgets/SelectionBox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Widgets/TitleBox b/rt/share/html/Widgets/TitleBox
index 703e2a82d..3c044b698 100644
--- a/rt/share/html/Widgets/TitleBox
+++ b/rt/share/html/Widgets/TitleBox
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,9 +46,13 @@
%#
%# END BPS TAGGED BLOCK }}}
<div class="<% $class %>">
- <& TitleBoxStart, %ARGS &><% $m->content | n %><& TitleBoxEnd &>
+ <& TitleBoxStart, %ARGS &><% $content | n %><& TitleBoxEnd &>
</div>
<%ARGS>
$class => ''
+$hide_empty => 0
</%ARGS>
-
+<%INIT>
+my $content = $m->content;
+return if $hide_empty && $content =~ /^\s*$/s;
+</%INIT>
diff --git a/rt/share/html/Widgets/TitleBoxEnd b/rt/share/html/Widgets/TitleBoxEnd
index d39512042..009717e61 100755
--- a/rt/share/html/Widgets/TitleBoxEnd
+++ b/rt/share/html/Widgets/TitleBoxEnd
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
diff --git a/rt/share/html/Widgets/TitleBoxStart b/rt/share/html/Widgets/TitleBoxStart
index 492cfab0b..cbcc5c3d5 100755
--- a/rt/share/html/Widgets/TitleBoxStart
+++ b/rt/share/html/Widgets/TitleBoxStart
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -45,24 +45,20 @@
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<div class="titlebox<% $class ? " $class " : '' %>" id="<% $id %>">
+<div class="titlebox<% $class ? " $class " : '' %><% $rolledup ? " rolled-up" : ""%>" id="<% $id %>">
<div class="titlebox-title<% $title_class ? " $title_class" : ''%>">
% if ($hideable) {
- <span class="widget"><a href="#"
- onclick="return rollup('<%$tid%>');"
- title="Toggle visibility"></a>
- </span>
+ <span class="widget"><a href="#" onclick="return rollup(<%$tid|n,j%>);" title="Toggle visibility"></a></span>
% }
- <span class="left">
- <% $title_href ? qq[<a href="$title_href">] : '' | n
+ <span class="left"><%
+ $title_href ? qq[<a href="$title_href">] : '' | n
%><% $title %><% $title_raw |n %><% $title_href ? "</a>" : '' |n%></span>
- <span class="right<%($titleright_href || $titleright || $titleright_raw) ? '' : '-empty' %>">
- <% $titleright_href ? qq[<a href="$titleright_href">] : '' | n %>
- <% $titleright %><% $titleright_raw |n%><% $titleright_href ? "</a>" : '' |n%>
+ <span class="right<%($titleright_href || $titleright || $titleright_raw) ? '' : '-empty' %>">\
+ <% $titleright_href ? qq[<a href="$titleright_href">] : '' | n %>\
+ <% $titleright %><% $titleright_raw |n%><% $titleright_href ? "</a>" : '' |n%>\
</span>
</div>
- <div class="titlebox-content <% $bodyclass %>" id="<% $tid %>">
-
+ <div class="titlebox-content <% $bodyclass %><% $rolledup ? " hidden" : ""%>" id="<% $tid %>">
<%ARGS>
$class => ''
$bodyclass => ''
@@ -75,9 +71,11 @@ $titleright => ''
$titleright_raw => ''
$id => ''
$hideable => 1
+$rolledup => 0
</%ARGS>
<%init>
+$hideable = 1 if $rolledup;
#
# This should be pretty bulletproof
#
@@ -88,7 +86,8 @@ my $title_b64 = MIME::Base64::encode_base64(Encode::encode_utf8($title), '');
my $tid = "TitleBox--$page--" .
join '--', ($class, $bodyclass, $title_b64, $id);
-$tid =~ s{[^A-Za-z0-9\-_:\.]+}{_}g;
+# Replace anything that ISN'T alphanumeric, a hyphen, or an underscore
+$tid =~ s{[^A-Za-z0-9\-_]}{_}g;
my $i = 0;
$i++ while $m->notes("$tid-$i");
diff --git a/rt/share/html/autohandler b/rt/share/html/autohandler
index 5a618fbb1..5f1c55d7e 100755
--- a/rt/share/html/autohandler
+++ b/rt/share/html/autohandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -52,8 +52,9 @@ $m->callback( ARGSRef => \%ARGS, CallbackName => 'Init', CallbackPage => '/autoh
RT::Interface::Web::HandleRequest(\%ARGS);
-$m->comp( '/Elements/Footer', %ARGS )
- unless $r->content_type =~ qr<^(text|application)/(x-)?(css|javascript)>;
+#RT4 doesn't call this?
+#$m->comp( '/Elements/Footer', %ARGS )
+# unless $r->content_type =~ qr<^(text|application)/(x-)?(css|javascript)>;
</%INIT>
<%ARGS>
diff --git a/rt/share/html/dhandler b/rt/share/html/dhandler
index d15e61d62..ec9802ae9 100644
--- a/rt/share/html/dhandler
+++ b/rt/share/html/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, Title=>loc("Page not found")&>
-<& /Elements/Tabs, Title=>loc("Page not found"), &>
+<& /Elements/Tabs &>
<h1><&|/l&>The page you requested could not be found</&></h1>
<&|/l&>Please check the URL and try again.</&>
<%init>
diff --git a/rt/share/html/index.html b/rt/share/html/index.html
index 0a570e5c3..d6e0b79b5 100755
--- a/rt/share/html/index.html
+++ b/rt/share/html/index.html
@@ -1,9 +1,7 @@
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!DOCTYPE html>
<!--
% $m->out('--'.'>');
-% $m->comp('/Elements/Header', Title=>loc("RT at a glance"), Refresh => $session{'home_refresh_interval'}||RT->Config->Get('HomePageRefreshInterval', $session{'CurrentUser'} ));
+% $m->comp('/Elements/Header', Title=>loc("RT at a glance"), Refresh => $session{'home_refresh_interval'}||RT->Config->Get('HomePageRefreshInterval', $session{'CurrentUser'}), SkipDoctype => 1 );
% if (0) {
%# -->
<html><head>
@@ -20,7 +18,7 @@ You appear to have installed RT's web interface correctly, but haven't yet confi
server to "run" the RT server which powers the web interface.
The next step is to edit your webserver's configuration file to instruct it to use
-RT's <strong>mod_perl</strong>, <strong>FastCGI</strong> or <strong>SpeedyCGI</strong> handler.
+RT's <strong>mod_perl</strong> or <strong>FastCGI</strong> handler.
If you need commercial support, please contact us at sales@bestpractical.com.
@@ -32,7 +30,7 @@ If you need commercial support, please contact us at sales@bestpractical.com.
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -75,17 +73,16 @@ If you need commercial support, please contact us at sales@bestpractical.com.
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
-<& /Elements/Tabs,
- Title => loc("RT at a glance"),
- current_tab => 'index.html',
- current_toptab => 'index.html',
- tabs => $tabs,
- actions => $actions,
- &>
+<& /Elements/Tabs &>
<& /Elements/ListActions, actions => \@results &>
<& /Elements/MyRT &>
<%init>
+if ( RT::Interface::Web->MobileClient()) {
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL') ."m/");
+ $m->abort();
+}
+
my @results;
my $skip_create = 0;
@@ -93,7 +90,7 @@ $m->callback( ARGSRef => \%ARGS, results => \@results, CallbackName => 'Initial'
skip_create => \$skip_create );
if ( $ARGS{'QuickCreate'} ) {
- my $QueueObj = new RT::Queue($session{'CurrentUser'});
+ my $QueueObj = RT::Queue->new($session{'CurrentUser'});
$QueueObj->Load($ARGS{Queue}) or Abort(loc("Queue could not be loaded."));
my $CFs = $QueueObj->TicketCustomFields();
@@ -129,19 +126,9 @@ if ( $ARGS{'QuickCreate'} ) {
if ( $ARGS{'q'} ) {
- RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Search/Simple.html?q=".$m->interp->apply_escapes($ARGS{q}));
-}
-
-my $actions;
-if ($session{'CurrentUser'}->HasRight(Right => 'ModifySelf', Object => $RT::System)) {
- $actions = {
- A => { title => loc('Edit'),
- path => 'Prefs/MyRT.html',
- },
- };
+ RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Search/Simple.html?q=".$m->interp->apply_escapes($ARGS{q}, 'u'));
}
-my $tabs = $m->comp("/Elements/DashboardTabs");
</%init>
%# --></body></html>
diff --git a/rt/share/html/l b/rt/share/html/l
index 771c5a8e5..9f1b34365 100755
--- a/rt/share/html/l
+++ b/rt/share/html/l
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,6 +47,6 @@
%# END BPS TAGGED BLOCK }}}
<%init>
my $hand = ($session{'CurrentUser'} ||= RT::CurrentUser->new)->LanguageHandle;
- $m->print($hand->maketext($m->content,@_));
+ $m->print($hand->maketext($m->content,map { $m->interp->apply_escapes($_, 'h') } @_));
return(1);
</%init>
diff --git a/rt/share/html/l_unsafe b/rt/share/html/l_unsafe
new file mode 100644
index 000000000..6396bc640
--- /dev/null
+++ b/rt/share/html/l_unsafe
@@ -0,0 +1,52 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%init>
+ my $hand = ($session{'CurrentUser'} ||= RT::CurrentUser->new)->LanguageHandle;
+ $m->print($hand->maketext($m->content,@_));
+ return(1);
+</%init>
diff --git a/rt/share/html/m/_elements/footer b/rt/share/html/m/_elements/footer
index f3e0837cc..e0c023c9a 100644
--- a/rt/share/html/m/_elements/footer
+++ b/rt/share/html/m/_elements/footer
@@ -1,11 +1 @@
<& /elements/footer.html &>
-% if ( 0 ) {
- <div id="bpscredits">
- <& /Elements/Logo, ShowName => 0 &>
- <div id="copyright">
-<&|/l, '', '', '2010', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>', &>[_1] RT [_2] Copyright 1996-[_3] [_4].</&>
-</div>
-</div>
-</body>
-</html>
-% }
diff --git a/rt/share/html/m/ticket/autohandler b/rt/share/html/m/ticket/autohandler
new file mode 100644
index 000000000..ac24959a1
--- /dev/null
+++ b/rt/share/html/m/ticket/autohandler
@@ -0,0 +1,8 @@
+<%init>
+# Redirect to the approvals view if we're trying to get an approvals ticket
+MaybeRedirectToApproval(
+ Whitelist => qr{/(?:create|select_create_queue)$}i,
+ ARGSRef => \%ARGS,
+);
+$m->call_next;
+</%init>
diff --git a/rt/share/html/m/ticket/create b/rt/share/html/m/ticket/create
index 7c23194c4..052a1a55f 100644
--- a/rt/share/html/m/ticket/create
+++ b/rt/share/html/m/ticket/create
@@ -6,6 +6,7 @@ $CloneTicket => undef
$m->callback( CallbackName => "Init", ARGSRef => \%ARGS );
my $Queue = $ARGS{Queue};
+my $escape = sub { $m->interp->apply_escapes(shift, 'h') };
my $showrows = sub {
my @pairs = @_;
@@ -45,41 +46,30 @@ if ($CloneTicket) {
my $members = $CloneTicketObj->Members;
my ( @members, @members_of, @refers, @refers_by, @depends, @depends_by );
my $refers = $CloneTicketObj->RefersTo;
+ my $get_link_value = sub {
+ my ($link, $type) = @_;
+ my $uri_method = $type . 'URI';
+ my $local_method = 'Local' . $type;
+ my $uri = $link->$uri_method;
+ return if $uri->IsLocal and
+ $uri->Object and
+ $uri->Object->isa('RT::Ticket') and
+ $uri->Object->Type eq 'reminder';
+
+ return $link->$local_method || $uri->URI;
+ };
while ( my $refer = $refers->Next ) {
- push @refers, $refer->LocalTarget;
+ my $refer_value = $get_link_value->($refer, 'Target');
+ push @refers, $refer_value if defined $refer_value;
}
$clone->{'new-RefersTo'} = join ' ', @refers;
my $refers_by = $CloneTicketObj->ReferredToBy;
while ( my $refer_by = $refers_by->Next ) {
- push @refers_by, $refer_by->LocalBase;
+ my $refer_by_value = $get_link_value->($refer_by, 'Base');
+ push @refers_by, $refer_by_value if defined $refer_by_value;
}
$clone->{'RefersTo-new'} = join ' ', @refers_by;
- if (0) { # Temporarily disabled
- my $depends = $CloneTicketObj->DependsOn;
- while ( my $depend = $depends->Next ) {
- push @depends, $depend->LocalTarget;
- }
- $clone->{'new-DependsOn'} = join ' ', @depends;
-
- my $depends_by = $CloneTicketObj->DependedOnBy;
- while ( my $depend_by = $depends_by->Next ) {
- push @depends_by, $depend_by->LocalBase;
- }
- $clone->{'DependsOn-new'} = join ' ', @depends_by;
-
- while ( my $member = $members->Next ) {
- push @members, $member->LocalBase;
- }
- $clone->{'MemberOf-new'} = join ' ', @members;
-
- my $members_of = $CloneTicketObj->MemberOf;
- while ( my $member_of = $members_of->Next ) {
- push @members_of, $member_of->LocalTarget;
- }
- $clone->{'new-MemberOf'} = join ' ', @members_of;
-
- }
my $cfs = $CloneTicketObj->QueueObj->TicketCustomFields();
while ( my $cf = $cfs->Next ) {
@@ -218,7 +208,7 @@ if ((!exists $ARGS{'AddMoreAttach'}) and (defined($ARGS{'id'}) and $ARGS{'id'} e
<%perl>
$showrows->(
- loc("Subject") => '<input name="Subject" size="30" maxsize="200" value="'.($ARGS{Subject} || '').'" />');
+ loc("Subject") => '<input name="Subject" size="30" maxsize="200" value="'.$escape->($ARGS{Subject} || '').'" />');
</%perl>
<span class="content-label label"><%loc("Describe the issue below")%></span>
<& /Elements/MessageBox, exists $ARGS{Content} ? (Default => $ARGS{Content}, IncludeSignature => 0 ) : ( QuoteTransaction => $QuoteTransaction ), Height => 5 &>
@@ -382,12 +372,12 @@ $showrows->(
<%perl>
$showrows->(
- loc("Depends on") => '<input size="10" name="new-DependsOn" value="' . ($ARGS{'new-DependsOn'} || '' ). '" />',
- loc("Depended on by") => '<input size="10" name="DependsOn-new" value="' . ($ARGS{'DependsOn-new'} || '' ) . '" />',
- loc("Parents") => '<input size="10" name="new-MemberOf" value="' . ($ARGS{'new-MemberOf'} || '') . '" />',
- loc("Children") => '<input size="10" name="MemberOf-new" value="' . ($ARGS{'MemberOf-new'} || '') . '" />',
- loc("Refers to") => '<input size="10" name="new-RefersTo" value="' . ($ARGS{'new-RefersTo'} || '') . '" />',
- loc("Referred to by") => '<input size="10" name="RefersTo-new" value="' . ($ARGS{'RefersTo-new'} || ''). '" />'
+ loc("Depends on") => '<input type="text" size="10" name="new-DependsOn" value="' . $escape->($ARGS{'new-DependsOn'} || '' ). '" />',
+ loc("Depended on by") => '<input type="text" size="10" name="DependsOn-new" value="' . $escape->($ARGS{'DependsOn-new'} || '' ) . '" />',
+ loc("Parents") => '<input type="text" size="10" name="new-MemberOf" value="' . $escape->($ARGS{'new-MemberOf'} || '') . '" />',
+ loc("Children") => '<input type="text" size="10" name="MemberOf-new" value="' . $escape->($ARGS{'MemberOf-new'} || '') . '" />',
+ loc("Refers to") => '<input type="text" size="10" name="new-RefersTo" value="' . $escape->($ARGS{'new-RefersTo'} || '') . '" />',
+ loc("Referred to by") => '<input type="text" size="10" name="RefersTo-new" value="' . $escape->($ARGS{'RefersTo-new'} || ''). '" />'
);
</%perl>
diff --git a/rt/share/html/m/ticket/show b/rt/share/html/m/ticket/show
index e979da3e6..4190bd349 100644
--- a/rt/share/html/m/ticket/show
+++ b/rt/share/html/m/ticket/show
@@ -145,18 +145,18 @@ my $print_value = sub {
}
$m->out('</a>') if defined $linked && length $linked;
- # This section automatically populates a<div with the "IncludeContentForValue" for this custom
+ # This section automatically populates a div with the "IncludeContentForValue" for this custom
# field if it's been defined
if ( $cf->IncludeContentForValue ) {
my $vid = $value->id;
$m->out( '<div class="object_cf_value_include" id="object_cf_value_'. $vid .'">' );
$m->print( loc("See also:") );
- $m->out( '<a href="'. $value->IncludeContentForValue .'">' );
- $m->print( $value->IncludeContentForValue );
+ $m->out( '<a href="'. $m->interp->apply_escapes($value->IncludeContentForValue, 'h') .'">' );
+ $m->out( $m->interp->apply_escapes($value->IncludeContentForValue, 'h') );
$m->out( qq{</a></div>\n} );
- $m->out( qq{<script><!--\nahah('} );
- $m->print( $value->IncludeContentForValue );
- $m->out( qq{', 'object_cf_value_$vid');\n--></script>\n} );
+ $m->out( qq{<script><!--\njQuery('#object_cf_value_$vid').load(} );
+ $m->out( $m->interp->apply_escapes($value->IncludeContentForValue, 'j') );
+ $m->out( qq{);\n--></script>\n} );
}
};
diff --git a/rt/share/html/m/tickets/search b/rt/share/html/m/tickets/search
index 16864b4d3..e688ea821 100644
--- a/rt/share/html/m/tickets/search
+++ b/rt/share/html/m/tickets/search
@@ -31,7 +31,7 @@ my $search;
if ( $custom->Description eq $name ) { $search = $custom; last }
}
unless ( $search && $search->id ) {
- $m->out("Predefined search $name not found");
+ $m->out(loc("Predefined search [_1] not found", $m->interp->apply_escapes($name, 'h')));
return;
}
}